reynforce

Three steps to connect an agent

Last updated

Point your MCP client at your workspace's endpoint, send the key as a bearer token, and call check_action before the agent promises anything. Nothing to install, no change to how your agent is orchestrated, and the tool list you are shown is decided by what the key is rather than by anything you configure.

Step one — get a key

POST /request-access with your company's web address and the email of the person responsible for the agent. That person is emailed, and following the email is what makes them the owner — there is no link that grants ownership to whoever holds it, because a link like that can be pasted into a chat or a log and whoever read it next would own your company's register.

An owner issues the key on their own workspace's keys screen. It is shown once, and revoking it is on the same page.

Step two — point your client at the endpoint

<!-- endpoint:start — generated by website/build.py; do not hand-edit -->

<!-- endpoint:end — generated by website/build.py; do not hand-edit -->

That is the whole connection. Every MCP client already sends a bearer token, so there is nothing here your client does not do.

Step three — read a claim's state, then ask before you promise

<!-- tools:start — generated by website/build.py; do not hand-edit --> Your key holds register:read and check, and the tool list you get back is decided by that rather than by anything you configure:

A signed-in person is additionally shown propose_claims, assign_owner, accept_claim, confirm_claim, raise_contest, start_agent_draft, update_agent_draft, agent_draft, finish_link, setup_instructions — every one of them changes what the company stands behind, and only a person can do that. An agent key cannot hold the scope they need, so there is nothing to switch on. <!-- tools:end — generated by website/build.py; do not hand-edit -->

Read the state before citing a claim. One that is overdue, unowned or disputed is unusable, and repeating it anyway is the failure this exists to prevent — so escalate and tell the buyer rather than answering around it.

The record is a side effect of the check, not something you send. There is no tool that files a commitment, so you can be wrong about your own action and still cannot be wrong about the record. There is deliberately no way to ask without leaving a trace: an agent that can ask would this be allowed with nothing written down can ask until the answer is yes.

Every answer carries observation_only: true today. It records; it does not block. That travels in the answer rather than on this page, so an agent honouring it now keeps working unchanged the day it becomes false.

Before you have a key

There is a register you can read without one, belonging to an invented company — see /demo.html, and /docs.html for the longer account of the connection, the two tools and what an answer carries.

If you are not speaking MCP

/openapi.json is the HTTP door's description, generated from the schema a request is validated against. No host answers that door today: a deployment serves the register screen and /mcp, and the document says so rather than naming a host that would answer nothing.