[{"data":1,"prerenderedAt":307},["ShallowReactive",2],{"navigation_docs":3,"-docs-changelog":114,"-docs-changelog-surround":304},[4,8,12,16,20,24,28,32,36,40,44,82,86,90,94,98,102,106,110],{"title":5,"path":6,"stem":7},"Overview","\u002Fdocs","docs\u002Findex",{"title":9,"path":10,"stem":11},"Quickstart","\u002Fdocs\u002Fquickstart","docs\u002F01.quickstart",{"title":13,"path":14,"stem":15},"Authentication and keys","\u002Fdocs\u002Fauthentication","docs\u002F02.authentication",{"title":17,"path":18,"stem":19},"Images","\u002Fdocs\u002Fimages","docs\u002F03.images",{"title":21,"path":22,"stem":23},"Texts","\u002Fdocs\u002Ftexts","docs\u002F04.texts",{"title":25,"path":26,"stem":27},"Migrating from SightEngine","\u002Fdocs\u002Fmigrating-from-sightengine","docs\u002F05.migrating-from-sightengine",{"title":29,"path":30,"stem":31},"Workflows","\u002Fdocs\u002Fworkflows","docs\u002F06.workflows",{"title":33,"path":34,"stem":35},"Responses and errors","\u002Fdocs\u002Fresponses-and-errors","docs\u002F07.responses-and-errors",{"title":37,"path":38,"stem":39},"Limits and quotas","\u002Fdocs\u002Flimits-and-quotas","docs\u002F08.limits-and-quotas",{"title":41,"path":42,"stem":43},"The journal and ref","\u002Fdocs\u002Fjournal-and-ref","docs\u002F09.journal-and-ref",{"title":45,"path":46,"stem":47,"children":48,"page":81},"Integration guides","\u002Fdocs\u002Fintegration-guides","docs\u002F10.integration-guides",[49,53,57,61,65,69,73,77],{"title":50,"path":51,"stem":52},"Node.js and TypeScript","\u002Fdocs\u002Fintegration-guides\u002Fnodejs","docs\u002F10.integration-guides\u002F1.nodejs",{"title":54,"path":55,"stem":56},"Python","\u002Fdocs\u002Fintegration-guides\u002Fpython","docs\u002F10.integration-guides\u002F2.python",{"title":58,"path":59,"stem":60},"PHP","\u002Fdocs\u002Fintegration-guides\u002Fphp","docs\u002F10.integration-guides\u002F3.php",{"title":62,"path":63,"stem":64},"Go","\u002Fdocs\u002Fintegration-guides\u002Fgo","docs\u002F10.integration-guides\u002F4.go",{"title":66,"path":67,"stem":68},"Supabase Edge Functions","\u002Fdocs\u002Fintegration-guides\u002Fsupabase-edge-functions","docs\u002F10.integration-guides\u002F5.supabase-edge-functions",{"title":70,"path":71,"stem":72},"Cloudflare Workers","\u002Fdocs\u002Fintegration-guides\u002Fcloudflare-workers","docs\u002F10.integration-guides\u002F6.cloudflare-workers",{"title":74,"path":75,"stem":76},"Nuxt and Next","\u002Fdocs\u002Fintegration-guides\u002Fnuxt-and-next","docs\u002F10.integration-guides\u002F7.nuxt-and-next",{"title":78,"path":79,"stem":80},"Moderate an AI agent","\u002Fdocs\u002Fintegration-guides\u002Fmoderate-ai-agents","docs\u002F10.integration-guides\u002F8.moderate-ai-agents",false,{"title":83,"path":84,"stem":85},"AI coding agents","\u002Fdocs\u002Fai-agents","docs\u002F11.ai-agents",{"title":87,"path":88,"stem":89},"Best practices","\u002Fdocs\u002Fbest-practices","docs\u002F12.best-practices",{"title":91,"path":92,"stem":93},"Privacy and data","\u002Fdocs\u002Fprivacy-and-data","docs\u002F13.privacy-and-data",{"title":95,"path":96,"stem":97},"API reference","\u002Fdocs\u002Fapi-reference","docs\u002F14.api-reference",{"title":99,"path":100,"stem":101},"Fraud prevention","\u002Fdocs\u002Ffraud-prevention","docs\u002F16.fraud-prevention",{"title":103,"path":104,"stem":105},"Device token and challenges","\u002Fdocs\u002Fdevice-and-challenges","docs\u002F17.device-and-challenges",{"title":107,"path":108,"stem":109},"MCP server","\u002Fdocs\u002Fmcp-server","docs\u002F18.mcp-server",{"title":111,"path":112,"stem":113},"Changelog","\u002Fdocs\u002Fchangelog","docs\u002F99.changelog",{"id":115,"title":111,"body":116,"description":297,"extension":298,"links":299,"meta":300,"navigation":301,"path":112,"seo":302,"stem":113,"__hash__":303},"docs\u002Fdocs\u002F99.changelog.md",{"type":117,"value":118,"toc":288},"minimark",[119,131,136,139,142,164,168,170,173,184,188,190,193,204,208,211,214,252,256,259,262],[120,121,122,123,130],"p",{},"New features and changes to the API and the dashboard, newest first. The same list is on the ",[124,125,129],"a",{"href":126,"rel":127},"https:\u002F\u002Fopenshield.dev\u002Fchangelog",[128],"nofollow","changelog page"," of the site.",[132,133,135],"h2",{"id":134},"mcp-server-for-ai-agents","MCP server for AI agents",[120,137,138],{},"October 25, 2026",[120,140,141],{},"Connect Claude, Cursor, VS Code or your own agent to your organization at mcp.openshield.dev\u002Fmcp, under your own role.",[143,144,145,149,152,155,158,161],"ul",{},[146,147,148],"li",{},"Sign in from the agent with OAuth, pick the organization and approve what it may do: read, moderate, or change fraud data, one scope at a time.",[146,150,151],{},"Tools to read the organization, usage, decisions, keys, workflows, fraud cases, rules and lists, and to search the docs.",[146,153,154],{},"Moderate a text or an image from the agent, billed like any check.",[146,156,157],{},"With writes allowed, resolve a fraud case, edit list items and snooze rules; each action is in the audit log.",[146,159,160],{},"The AI agents page: the address and setup for each client, who may connect, the connected agents with a disconnect button, and the call log.",[146,162,163],{},"API keys take an MCP server scope, for an agent that cannot sign in through a browser. Such a key only reads.",[132,165,167],{"id":166},"key-activity-and-status","Key activity and status",[120,169,138],{},[120,171,172],{},"See what an API key does right now, what it used, its last calls, and what needs attention.",[143,174,175,178,181],{},[146,176,177],{},"Open a key's activity from the dashboard: its requests this minute, and your organization's requests, running checks and quota against its limits.",[146,179,180],{},"The key's checks, fraud calls and cost this hour, over 24 hours and over 30 days, and its last calls from the journal.",[146,182,183],{},"The key list flags a key that expires within 14 days, one in a rotation's grace period, one never used, and one idle for 30 days.",[132,185,187],{"id":186},"edit-an-api-key","Edit an API key",[120,189,138],{},[120,191,192],{},"Change an active key's name, scopes, workflows or expiry without replacing it.",[143,194,195,198,201],{},[146,196,197],{},"Edit an active key from the dashboard: its name, its scopes, the workflows it may use and its expiry. The key itself does not change, and the new access applies within seconds.",[146,199,200],{},"A key stays in its environment, and an expired or revoked key cannot be edited.",[146,202,203],{},"Owners and admins edit any key; developers edit the keys they created. Each edit is in the audit log.",[132,205,207],{"id":206},"fraud-prevention-beta","Fraud prevention (beta)",[120,209,210],{},"October 21, 2026",[120,212,213],{},"A second product: score sign-ups, logins and payments with your own openfraud instance, under \u002Ffraud\u002Fv1, with the same API keys.",[143,215,216,219,222,225,228,231,234,237,240,243,246,249],{},[146,217,218],{},"Turn fraud prevention on in the dashboard: your organization gets an openfraud instance of its own, and its data never mixes with anyone else's.",[146,220,221],{},"POST \u002Ffraud\u002Fv1\u002Fdecide before a sensitive action, and \u002Ffraud\u002Fv1\u002Fevents to report what happened. A decision costs EUR 0.001 and an event EUR 0.0002, from the same balance.",[146,223,224],{},"API keys take a fraud scope: the whole fraud API, or decide and events only.",[146,226,227],{},"Rule packs for free tiers and trials, cards and payments, messaging, marketplaces, APIs and hosting. Every pack rule starts in shadow until a person promotes it.",[146,229,230],{},"From your first top-up, the network data: the operator and country of each address, and the lists of disposable email domains, Tor exits, data centres and VPNs.",[146,232,233],{},"Webhooks for decisions and cases, signed with the Standard Webhooks scheme under a secret of your own.",[146,235,236],{},"A free organization's instance is paused after 30 days without a call; the next call or a click in the dashboard resumes it.",[146,238,239],{},"An attempt before sign-in (a failed login, a password reset) never acts on the account its email address belongs to, and an event your page reports is marked \"reported_by\": \"client\" so it names no account. Challenge outcomes count only from your server.",[146,241,242],{},"Your instance keeps events, decisions and cases 30 days until your first top-up and 90 days after; the sandbox keeps them 30 days. Each instance gets the memory its options need, so turning on the network data or activity bursts never slows it down.",[146,244,245],{},"Fraud lists are read item by item in the dashboard and the API; the CSV export of a whole list is withdrawn.",[146,247,248],{},"The network data and the activity bursts now add to the price of a decision while they are on (EUR 0.0002 and EUR 0.0005): they hold more in your instance's memory. The dashboard shows the surcharge next to each one.",[146,250,251],{},"The overview shows your limits and what the next top-up raises, instead of a plan: there are no plans any more, only a balance. The key and workflow limits still follow what you topped up in 30 days. Billing lists every limit level, what unlocks it and how much more reaches the next one.",[132,253,255],{"id":254},"beta-preview","Beta preview",[120,257,258],{},"October 20, 2026",[120,260,261],{},"The first version of openshield, ready to try.",[143,263,264,267,270,273,276,279,282,285],{},[146,265,266],{},"Prepaid use, with no subscription: top up a balance from EUR 5 and each check costs the components its workflow uses. Every account gets EUR 2.00 of free use each month. Automatic top-ups, a monthly limit on them, and email alerts on a low balance or a month's use.",[146,268,269],{},"An advanced reading once you have topped up: a text sent to review gets a second, deeper reading, with the context you send.",[146,271,272],{},"Check images and texts with POST \u002Fv1\u002Fimage and POST \u002Fv1\u002Ftext. The SightEngine workflow paths are there too, to make a migration easy.",[146,274,275],{},"Every account gets the full answer: the decision, the reasons, and the score and threshold of each.",[146,277,278],{},"Workflows set a review and a reject threshold per category. Add categories of your own and compare versions. Each workflow shows what it costs per image and per text before you save it.",[146,280,281],{},"A decision journal with filters, details and export, and usage charts by day, key and workflow.",[146,283,284],{},"Request limits rise with your top-ups, and every top-up has its invoice in the dashboard.",[146,286,287],{},"Teams with roles, and two-factor authentication with an authenticator app, which owners turn on before their first top-up.",{"title":289,"searchDepth":290,"depth":290,"links":291},"",2,[292,293,294,295,296],{"id":134,"depth":290,"text":135},{"id":166,"depth":290,"text":167},{"id":186,"depth":290,"text":187},{"id":206,"depth":290,"text":207},{"id":254,"depth":290,"text":255},"New features and changes to the openshield API and dashboard, newest first.","md",null,{},true,{"title":111,"description":297},"qvIbgwd3E46MXZ7GkmMcZ7VkZh7Nc2jlza1Ztq24cMA",[305,299],{"title":107,"path":108,"stem":109,"description":306,"children":-1},"Connect Claude, Cursor, VS Code or your own agent to your openshield organization through the Model Context Protocol, with OAuth and your own role.",1792938463173]