Changelog
What changed
New features and changes to the API and the dashboard, newest first.
Progressive rate limits for fraud prevention
A limit that starts small for a new account and grows by itself as the account ages, so you stop choosing between throttling your best customers and letting a sign-up from a minute ago send in bulk.
- A new rule pack, progressive-limits, adds nine limits on the actions a young account abuses first: creations, sends, recipients, test sends, API keys, invitations, posts, reports and follows. Switch it on in the fraud settings.
- The allowance grows with the age of the account. A paid account, or one in a paid workspace, gets several times more, and an account that once scored high gets half. You set nothing per user.
- Every limit starts in shadow: the decision answer carries a limits field with the allowance and what the account has used, and lists what a limit would have refused, but nothing is refused yet.
- A limit that acts answers block with the rule limit_<name>, no case and no statement of reasons. Answer it like a rate limit, with HTTP 429. Attempts that were refused do not use the allowance, so a client that retries cannot lock itself out.
- Limits appear in the Rules page next to your rules, with the events and accounts each one hit over 30 days. Start one, or put it back in shadow, with the same buttons.
- With automatic promotion on, a limit starts to act a month after the pack was switched on, and you are emailed. Hold and review promotion and manual promotion never start a limit by themselves, and a limit you put back in shadow stays there until you start it again.
- Your fraud instance moves to openfraud 0.14.1 with no action on your side.
Documentation inside the dashboard
The documentation opens beside the screen you are on, at the section that describes it.
- On a computer, the book icon in the header docks the documentation to the right of the dashboard. Drag its left edge to widen it.
- On a phone, the book in the bottom bar opens the documentation in a sheet, like the menu.
- The page follows you from screen to screen; a link to another docs page opens in the panel, and a back arrow returns to the screen's page.
Stricter advanced reading, a used-up balance told
A flagged text stays flagged whatever the model says, and an empty balance sends an email.
- The advanced reading of a text can raise a decision and never lower it: a text the rules flag for review is never accepted on the model's word, even when the text tells the model it is safe.
- An address that sends 20 requests in a row with a missing or refused key gets 429 rate_limited with Retry-After, and may try once every 2 seconds. Requests with a valid key never count.
- When a prepaid balance is used up and checks stop, the people who manage billing get an email, whatever alerts were set. It is sent once until the next top-up or the next month's free use.
Faster case reads, one sign-up pause
Fraud cases open without waiting, and a sign-up pause covers every way in.
- The fraud cases list, a case and an actor's page are read alongside the decisions being made, so they open at once even while events stream in.
- When new sign-ups are paused, no account is created by password, magic link, GitHub or Google, and the sign-in page says why. Existing accounts sign in as usual.
Fraud cases page by cursor
The fraud cases list keeps its place while new cases arrive.
- The cases list in the dashboard loads the next page from where the last one ended, so a case that changes in the meantime is neither shown twice nor skipped.
- The MCP tool list_fraud_cases returns a next cursor: pass it back as before to read the next page, until it is null.
Bigger top-ups, more free credit
Top-ups now add free credit in five steps.
- A top-up adds 5% free credit from EUR 50, 10% from EUR 100, 15% from EUR 250, 20% from EUR 500 and 25% from EUR 1,000. Automatic top-ups earn it too.
- The billing page shows each step with the credit it adds, and how much more to top up to reach the next one.
Hardening
Stricter limits and checks on the request path.
- Requests are checked against their key before their body is read, and large ones are refused sooner.
- Images with extreme proportions are handled in a bounded amount of memory.
- Words stretched on purpose are matched by the profanity and extremism rules.
- Fraud events: an event id only repeats the event that first used it, and the addresses of one IPv6 network count once.
- Changing your password, signing out the other sessions or signing out one session now also disconnects the AI agents connected through it.
- When you allow an AI agent, the organization shown on the consent page is the one it gets: if another tab switched organization in between, you are asked to reload.
- An organization being deleted can no longer be renamed, and its members, their roles and its invitations no longer change.
- An AI agent that asks for more than your organization allows, such as changing fraud data while writes are off, now connects with what is allowed, and the consent page lists what it leaves out.
Status page and lighter fraud instances
Follow the health of the API at status.openshield.dev, and fraud instances that hold the network data and the lists in less memory.
- status.openshield.dev shows the live health of the website, the dashboard, the moderation and fraud APIs and the MCP server, with a Status link in the footer of the site.
- The network data (operator and country of each address) is now shared by the instances of a server instead of loaded by each one: an instance with the network data needs a quarter less memory.
- The lists of disposable email domains, Tor exits, data centres, VPNs and abusive addresses take a third of the memory they took in your instance.
- Nothing changes in the API or in the decisions: the same data answers the same way.
MCP server for AI agents
Connect Claude, Cursor, VS Code or your own agent to your organization at mcp.openshield.dev/mcp, under your own role.
- 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.
- Tools to read the organization, usage, decisions, keys, workflows, fraud cases, rules and lists, and to search the docs.
- Moderate a text or an image from the agent, billed like any check.
- With writes allowed, resolve a fraud case, edit list items and snooze rules; each action is in the audit log.
- 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.
- API keys take an MCP server scope, for an agent that cannot sign in through a browser. Such a key only reads.
Key activity and status
See what an API key does right now, what it used, its last calls, and what needs attention.
- Open a key's activity from the dashboard: its requests this minute, and your organization's requests, running checks and quota against its limits.
- The key's checks, fraud calls and cost this hour, over 24 hours and over 30 days, and its last calls from the journal.
- 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.
Edit an API key
Change an active key's name, scopes, workflows or expiry without replacing it.
- 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.
- A key stays in its environment, and an expired or revoked key cannot be edited.
- Owners and admins edit any key; developers edit the keys they created. Each edit is in the audit log.
Fraud prevention (beta)
A second product: score sign-ups, logins and payments with your own openfraud instance, under /fraud/v1, with the same API keys.
- 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.
- POST /fraud/v1/decide before a sensitive action, and /fraud/v1/events to report what happened. A decision costs EUR 0.001 and an event EUR 0.0002, from the same balance.
- API keys take a fraud scope: the whole fraud API, or decide and events only.
- 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.
- 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.
- Webhooks for decisions and cases, signed with the Standard Webhooks scheme under a secret of your own.
- A free organization's instance is paused after 30 days without a call; the next call or a click in the dashboard resumes it.
- 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.
- 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.
- Fraud lists are read item by item in the dashboard and the API; the CSV export of a whole list is withdrawn.
- 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.
- 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.
Beta preview
The first version of openshield, ready to try.
- 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.
- An advanced reading once you have topped up: a text sent to review gets a second, deeper reading, with the context you send.
- Check images and texts with POST /v1/image and POST /v1/text. The SightEngine workflow paths are there too, to make a migration easy.
- Every account gets the full answer: the decision, the reasons, and the score and threshold of each.
- 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.
- A decision journal with filters, details and export, and usage charts by day, key and workflow.
- Request limits rise with your top-ups, and every top-up has its invoice in the dashboard.
- Teams with roles, and two-factor authentication with an authenticator app, which owners turn on before their first top-up.