Skip to content
Documentation

MCP server

Bayeto speaks the Model Context Protocol, so an agent can read your optimization decisions directly. What matters is not the transport but what survives the trip: every recommendation carries the deterministic decision block it was derived from, and every implementation packet carries a receipt you can verify without asking us.

Endpoint

URL
https://bayeto.ai/api/mcp
Transport
Streamable HTTP, JSON-RPC 2.0, stateless
Auth
Authorization: Bearer bay_… with the mcp:read scope, minted in your workspace settings

There are no sessions and no resumable stream: every request carries its own key. A key is scoped to one workspace, so it can never read another — the same boundary the web UI enforces, applied at the same layer rather than at each surface.

Tools

get_workspace
Identity and telemetry coverage of the workspace this API key belongs to.
get_briefing
Executive summary: run-rate, identified and actionable value, counts, the exclusions ledger (what left the fee basis and what it still contains that is never chargeable), and the ledger version every surface reconciles to.
list_recommendations
Paginated list of recommendations with their ledger state. Use the returned nextCursor to continue.
get_recommendation
One recommendation in full, with its deterministic decision block and decisionHash.
get_implementation_packet
The implementation packet for a recommendation. Carries packetReadiness; implementation steps are withheld unless readiness is 'executable'.
get_receipt
The signed receipt attesting that Bayeto issued this recommendation's implementation packet. Verify it offline against a pinned JWKS; its signature covers both decisionHash and packetHash, so verifying the receipt verifies those hashes transitively. Pass receiptId as well to ask whether a receipt you already hold is still current — offline verification proves the artifact, never its currency.
list_excluded_moves
Moves the engine examined and did NOT surface as recommendations — the two populations that never appear in list_recommendations. `ruledOutByObjective` were generated and priced, then refused by a constraint you declared; `examinedNotApplicable` were examined and did not apply. Their euro figures are theoretical and are counted in NO actionable, on-the-table, captured or fee-eligible total. An agent that reads only list_recommendations is reading a shortlist with an invisible exclusion.
get_validation_plan
What will be measured to decide whether this change worked, and the prediction it is graded against.
get_validation_status
Where this recommendation is in the measured loop: not_implemented, accepted (committed, not yet shipped), observing (with what it is still waiting on), validated, or regressed. Measured states are read from the implementation marks and their derived verdicts, never inferred from ledger lanes.

What is different over this transport

  • The decision is reproducible. Recommendations are produced by a deterministic engine with no model in the decision path. The same telemetry, graph and objective yield the same recommendation, and get_recommendation returns the decision block and its hash so you can check that rather than trust it.
  • The packet states its own readiness. get_implementation_packet carries a readiness value, and implementation steps are withheld unless it is executable. An agent can therefore tell an advisory packet from one it may act on, instead of inferring it from prose.
  • The receipt verifies offline. get_receipt returns a signed attestation that Bayeto issued a given packet. It checks against our published key with no call back to us — so it still verifies if we are down, and it still verifies if you no longer trust us.
  • The claim is graded later. get_validation_plan states what will be measured and the prediction it is graded against; get_validation_status reports where the change actually landed, including regressed. A projection that is never scored is a marketing figure.

Getting a key

Create a workspace, connect telemetry by upload or by pointing your proxy at the ingest API, then mint an mcp:read key in workspace settings. Keys are stored hashed and can be revoked individually.

Start with an Evidence Scan · How we handle telemetry

© 2026 Bayeto