Hyperstruck
Use it

MCP server

Connect any MCP host, like Claude Code, to Hyperstruck so your agent gets the learnings and claims that fit each task, and can ask questions of its claims.

In short

Add Hyperstruck's hosted MCP server to a host such as Claude Code or Cursor, and your agent can pull what it has learned before a task, report back when it finishes, and look up or ask about its claims. There is nothing to install: one server address and your API key.

What the server gives your agent

Hyperstruck runs an MCP server at https://mcp.hyperstruck.com/mcp/. Once a host is connected, your agent has tools in four groups.

The learning loop. These two are the heart of it:

ToolWhen to call itWhat it does
resolveAt the start of a task, with the goalReturns a run_id, the learnings that fit the goal, and the claims about the people and things it names
complete_runAt the end of the task, with the run_idRecords whether it succeeded, credits the learnings that helped, and captures new ones from how the run went

Your agent resolves before it acts, so it starts from what worked last time, and completes the run afterwards, so the next similar task goes better. The server's own instructions tell the host when to call each one.

Claims. To look up and search what your agent knows:

ToolWhat it does
search_claimsSearches the claims with a question and gets back the ones nearest it, as text and as items you can cite. The same as Claims search
find_entityFinds a person, company or thing by name, to get the id the other claims tools take
claimsLists claims, filtered by entity, state, kind, who owes it or due date, like List claims
dossierEverything held about one entity
changes_sinceWhat changed on one entity between two times
settleSettles a conflict between two claims
correctCorrects a claim, adds one, or closes an obligation
list_learning_claimsThe claims a learning uses

Learnings. To manage learnings directly: list_agents, list_learnings, search_learnings, get_learning, store_learning, reinforce_learning, and distill to turn documents into learnings. They match the Learnings API. Each distill item states a channel, how the content reached you (email for a pasted thread, meeting for a transcript), and the tool lists every accepted value. An item that states none is sent as unknown.

Agent value. To record and read what an agent is worth, as described in Agent value:

ToolWhat it does
get_agent_valueReads one agent's lifetime value: measured and estimated dollars (never added together), time saved, value by category and rate-card unit, and the learnings that earned the most. Takes the agent's agent_id and an optional window: all_time (the default), last_7_days, last_30_days, last_90_days or last_365_days
record_valueRecords an outcome on the agent's value ledger. Takes agent_id, an idempotency_key naming the outcome, and one figure: unit_key with quantity, amount_usd with a baseline, or time_saved_minutes. Optional: run_id, learning_ids, category, note and evidence_url

list_agents also returns each agent's value block and takes sort=value_desc, value_asc or estimated_value_desc. The block's guidance says whether the agent tracks value and which rate-card units exist, so an agent reads it before recording. Use record_value when an outcome lands after the run closed; for an outcome known at the end of a run, pass value to complete_run instead, with one figure in the same forms. The answer then carries a value_status saying whether it was recorded. note and baseline pass through the same redaction as other text the server stores, so a name or secret in them can come back as a placeholder.

A successful call returns status accepted with the same body as the Agent value API under data. When the platform refuses a call, the answer carries the HTTP status in http_status and the API's response body as detail, so the code that page lists is at detail.detail.code. status is then invalid_request (for 400 and 422), unauthenticated (401), forbidden (403), not_found (404), rate_limited (429) or platform_error (anything else, including 409 and 503).

The server can also refuse a call before it reaches the platform. Those answers carry status alone, with no detail and no http_status:

  • unauthenticated, rate_limited or forbidden: the key is missing or not recognized, is over its rate, or lacks the tool's scope.
  • redaction_unavailable: record_value carried a note or baseline and redaction could not run.
  • retry_advised: the platform could not be reached. Send the same call again with the same idempotency_key; a retry that replays an earlier entry returns accepted with the original entry.

Accounts with watched pages or insights turned on also see tools for those.

Give it time to learn

A new learning is extracted in the background after complete_run, so it is not available the instant a run finishes. By the time your agent picks up a similar task later, resolve offers it.

Connect from Claude Code

Add it as a remote server, authenticated with your Hyperstruck API key:

claude mcp add --transport http hyperstruck \
  https://mcp.hyperstruck.com/mcp/ \
  --header "Authorization: Bearer <YOUR_HYPERSTRUCK_API_KEY>" \
  --scope user

--scope user makes it available in every project; use --scope local for just the current one. Check it connected with claude mcp list, and run /mcp inside a session to see the tools.

Connect from other hosts

Any host that supports remote MCP servers with an authorization header can use the same address. Point it at https://mcp.hyperstruck.com/mcp/ and set the header Authorization: Bearer <YOUR_HYPERSTRUCK_API_KEY>. Hosts that cannot send a custom header to a remote server are not supported.

Which agent the tools use

The tools name an agent in one of two ways:

  • resolve, complete_run and distill use the agent's name, from the X-Hyperstruck-Agent-Name header, or default when you send none. An agent with a new name is created the first time it is used.
  • Every other tool takes the agent's id as agent_id. Call list_agents to find it.

Authentication

The server uses a standard Hyperstruck API key, the same one you use for the REST API. The key needs an active subscription and the scopes for the tools you call:

ToScope
Connectagents:read or agents:write
Call resolve, read learnings, or call get_agent_valueagents:read
Call complete_run, distill, store_learning, reinforce_learning or record_valueagents:write
Call search_claims, find_entity, claims, dossier, changes_since or list_learning_claimsclaims:read
Call settle or correctclaims:correct

For the learning loop, use a key with agents:write, which includes agents:read. The key's spaces decide which agents, learnings and claims it can reach, exactly as over REST. See Access control for scopes and spaces.

The server passes your key on to Hyperstruck, which checks it on every call.

Personal details in what you send

Before a tool sends free text, such as a goal to resolve, a question to search_claims or the steps of a finished run, the server replaces secrets and structured personal details, such as email addresses and phone numbers, with placeholders. Accounts with the compliance add-on also have names and addresses replaced. Because of this, the same question can find different claims through MCP than through the API.

How it fits with the rest of Hyperstruck

The MCP server is another way into the same learnings and claims, not a separate store. A run completed through MCP is recorded the same way as one the Claude Code hook reports, and resolve reads the same learnings and claims. To have Hyperstruck work inside Claude Code without your agent calling a tool, use the Claude Code hook. To build your own integration, use the REST API or the framework integrations.