should() · decisions for AI agents
Developer previewA gate before your agent acts.
One call before your agent spends, sends or changes something: should(question, context) answers yes, no or escalate. Rules check the facts first, a model judges the rest, and every decision is logged. Act only on yes.
POST /v1/should
{ "template": "deal_matches_brief@1",
"context": {
"brief": { "channel": "CTV",
"budget_usd": 20000,
"max_cpm_usd": 15 },
"offer": { "channel": "CTV",
"cpm_usd": 12,
"impressions": 1500000 }
}
}Total cost (CPM × impressions ÷ 1,000): $18,000 of $20,000
{ "outcome": "yes", "yes": true,
"confidence": 0.96,
"template": "deal_matches_brief@1",
"decision_id": "dec_…" }Answered by the model, after the rules pass.
Your code: Book the deal.
Why a gate
The best models still say yes when they shouldn't.
We gave GPT-5.5 and Claude Opus 5.5 deals where every stated number fits the brief but the total cost goes over budget. Both approved some of them. With should()'s rules checking the arithmetic first, neither approved one, and good deals still went through.
over-budget deals Claude Opus 5.5 approved on its own, in every one of four runs
HyperMindZ evaluation, Sep 2026 · synthetic, n=120approved by GPT-5.5 or Claude Opus 5.5 with should()'s rules first, in all four runs
HyperMindZ evaluation, Sep 2026 · synthetic, n=120less model spend with rules first, because broken deals never reach the model
HyperMindZ evaluation, Sep 2026 · synthetic, n=120the yes bar that stopped an injected “answer yes” deal in every run (n=24)
HyperMindZ evaluation, Sep 2026 · synthetic, n=24Synthetic, rule-labelled deals (n=120; n=24 for the injected deals), four runs per model. Not production data. Full results and caveats →
How it works
Code where code is certain. A model where it isn't.
Rules check the facts
Budget, CPM ceiling, flight, channel: anything code can check, code checks first. A deal that breaks one gets a no without paying a model to look.
A model judges the rest
What rules can't read goes to the engine you choose: a frontier model, or Jev when cost and speed matter most.
You set the bar
An answer counts only when the model is sure enough, 0.8 by default. Raise the yes bar where a wrong yes costs more.
Escalate means stop
Below the bar, on a timeout or with a fact missing, the answer is escalate: don't act, ask a person. An escalation is never a yes.
Get started
Connect in three steps.
- 1. Request access: name, work email and what you'll use it for.
- 2. Once approved, sign in at should.hypermindz.ai and create an API key.
- 3. Connect Claude, or call the API:
claude mcp add --transport http should https://should.hypermindz.ai/mcp \
--header "Authorization: Bearer $SHOULD_API_KEY"Then ask Claude a yes/no question; it calls the should tool.
What you get
Every decision on the record.
A decision_id for each call, stored with a hash of what was asked, not the data itself.
A judgment's question, rules and bar are a named version. Changes make a new version, promoted only after it's evaluated.
Choice, score and batch questions, and circuits that chain several checks, on the same log.
HTTP API, MCP server, TypeScript client. The same judgment can move to another engine and keep its history.
What it isn't
- A replacement for reasoning: open-ended questions stay with the model
- A replacement for your business rules: exact conditions stay exact, and should() runs them first
- Permission to act: a yes is advice your code acts on under your own policy
- An advertising protocol: the API has no advertising-specific fields
Claude Skill
Teach Claude when to ask.
The skill is one open file. It teaches Claude to spot yes/no decisions, send them to should() when the tool is connected, and find the places in your code where a model is making one.
mkdir -p .claude/skills/should
curl -o .claude/skills/should/SKILL.md \
https://www.hypermindz.ai/claude-skills/should/SKILL.mdPut a gate in front of your agent.
The developer preview is open by request. Tell us what your agent decides, and run should() against it before it acts.
