Connect Reynforce to your agent platform
If your agent can make an HTTP request, it can use Reynforce. One endpoint, one bearer token, and no change to how your agent is orchestrated — we never run your agent.
The two values
| endpoint | https://app.reynforce.com/t/<your-workspace>/mcp |
| header | Authorization: Bearer <your agent key> |
That is an MCP server over Streamable HTTP. A platform that cannot speak MCP does not need to: the same check is one POST to /t/<your-workspace>/v1/observe, and examples/curl/check-action.sh is that request in full.
Behind an MCP gateway, it is one more server the gateway serves. Keep the gateway deciding which agents may reach which tools; Reynforce answers whether what the agent is about to tell a buyer is your company's to say. /reynforce-and-mcp-gateways.md says how the two fit together.
What an agent key can do, and what it cannot
| tool | |
search_claims | read the register. A claim's status comes back with it, so the agent can tell a current claim from a stale one |
check_action | ask whether an action is permitted |
An agent key cannot add a claim. propose_claims, assign_owner, accept_claim, confirm_claim and raise_contest need register:write, which only a signed-in person holds. An agent proposes and asks; a person accepts.
check_action writes a record, and that is not optional. The record is a side effect of the permission check rather than something the agent sends, so a caller can be wrong about its own action and still cannot be wrong about the record. There is deliberately no way to ask without leaving a trace: an agent that could would ask until the answer was yes. intent: "draft" is the honest version — the check is recorded and the touch is not, because nothing was touched.
The six platforms, and which of them anyone has tested
None of them. Not one. We have written down what to paste for all six, and nobody here has connected any of them to a real account yet.
Five of them we have read. Their documentation hosts refused us when this page was first written: eleven were measured on 11 October 2026, and all eleven refused the request. On 21 October 2026 we read Claude Code's documentation and CrewAI's from a GitHub runner instead, on 24 October Dust's, and on 25 October the README of LangChain's MCP adapters, which is how LangGraph reaches a server, and n8n's own source for its MCP Client Tool node. The steps in examples/clients/ for those five quote the vendors' own pages rather than our memory of them. For Clay we still have not read whether it speaks MCP, so its platform-side steps are marked untested.
| platform | status |
| Claude, and any MCP client | read for Claude Code, not run |
| Clay | [untested] |
| n8n | read, not run |
| CrewAI | read, not run |
| LangGraph | read, not run |
| Dust | read, not run |
A setup guide that looks right and has never met its client costs the same as an API adapter that has never met its service, and the person who pays it is you, following our instructions. So the notes in examples/clients/ say which single question is unanswered for each one, rather than filling it in plausibly.
One page rather than six. Six pages whose differing sixth is we have not read this would be six thin pages. When a platform's steps are read and written, its section is worth a page of its own and gets one.
The three things to check once it is connected
- The tool list. An agent key should see exactly
search_claimsandcheck_action. If it seespropose_claims, you have given it a person's key. not_checkedin the answer.allowedwith that list non-empty means something was never evaluated, and not evaluated is not passed. Triggers and budgets can both be in it.- A cited claim's status in the answer, not the one you sent. The register replaces it, because usability is derived and a caller does not grade its own citations.
What we store
The action's shape, the decision, and — where the action carried a promise — the sentence that promise was made in, up to 1,000 characters. Not the rest of the message. Data at rest sits on Fly's encrypted disks; the encryption is theirs, not ours. Records are kept for 24 months, an unclosed commitment is never deleted on age, and every deletion is itself recorded.