Detent secures agentic payments.
Verdicts. Receipts. Locks. Approvals. Alerts. Guards.
All of the assurance agents need*
* and the humans who own them. Non-custodial, no token, no model in the verdict path.
Live from the receipt log. Every card is a real verdict a real agent got.
Move at agent speed
Seven deterministic checks in the agent's own process. Engine time, p50, measured on the log behind this page. No network hop, no model, no waiting on us.
Every verdict leaves a signed, hash-chained receipt, refusals included. Anyone can rebuild it offline. That number is the log right now.
An MCP server for framework agents, a TypeScript SDK for everyone else, and the HTTP API underneath both. Same verdicts, same receipts.
Flows
Four things can happen to a payment an agent attempts. Each one is a flow, and each one ends in a receipt.
The payment stops at the checkpoint before any on-chain change. In about five milliseconds it is compared with what the owner actually signed.
ALLOW. The receipt is attached to the calldata and the lock module lets it through. Money moves, and the proof moves with it.
STEP-UP. A passkey on the owner's device signs the hash of the exact action. Change one field and the approval is void.
DENY. Never handed to the network. The watchdog writes the event back to the threat graph and the next matching action is caught sooner.
Control
Agents are keys. Mandates are what a human signed. Receipts are what happened. The three are linked by hashes, so an auditor can read the whole story without asking us.
See the agentsDevelopers
// claude_desktop_config.json · cursor · any mcp host
{
"mcpServers": {
"detent": { "command": "npx", "args": ["-y", "detent-mcp"] }
}
}
> detent_check({ amount: "4900", cap: "500" })
DENY · amount_exceeds_cap · receipt 502abb0c…