MCP reference
Use this page as the canonical reference for Orgonaut's remote MCP surface.
Plan availability: authenticated account MCP access is available on every plan, including trials, so an organisation saved from a guest draft can connect straight away. Anonymous guest modelling on the agent endpoint does not require a plan. Tenant-hosted OAuth metadata is plan-gated. Shared-host metadata, when enabled, is public and does not itself grant tenant access.
Use Connect MCP clients for OAuth and bearer-token setup, and use API reference for REST endpoints and OpenAPI contracts. /docs/api does not describe the MCP tool catalog.
What MCP is for
Orgonaut's MCP server is the agent-oriented semantic surface for the product.
In V1 it is:
- tenant-scoped
- read-first with governed scenario action planning and confirmation
- designed for org review, scenario review, settings review, operational status checks, and approved scenario-scoped change workflows
Canonical endpoint
The canonical authenticated MCP endpoint is:
/mcp/orgonaut
Example tenant-hosted URL:
https://acme.orgonaut.co/mcp/orgonaut
Shared-host OAuth for every MCP-entitled organisation uses
https://app.orgonaut.co/mcp/orgonaut. Consent binds each connection to one
explicitly selected organisation. The tools, resources, prompts and permission
checks are the same; ambient web organisation/scenario selections do not change
the connection. See Connect MCP clients
for availability and OAuth setup.
For OAuth-capable clients, the matching metadata endpoints are:
https://acme.orgonaut.co/.well-known/oauth-protected-resource/mcp/orgonauthttps://acme.orgonaut.co/.well-known/oauth-authorization-server/mcp/orgonaut
The canonical OAuth transport scope is:
mcp:use
Each connection can make up to 120 MCP requests per minute. Over the limit,
the server returns HTTP 429 with a Retry-After header; plan request quotas
still apply.
Agent entry point and guest tools
https://app.orgonaut.co/mcp/orgonaut-agent combines a core subset of the account
catalog with guest tools: 40 tools, listed on a single tools/list page. Some MCP hosts
load only a limited number of tools, so these detail and operations tools are only on
the full account server: business.capability.detail, ai.solution.deployments,
transformation.case.readiness, department.profile, initiative.list,
team.velocity, scenario.timeline, scenario.history,
tenant.settings, reference.list and operations.status.
initialize, tools/list and catalog discovery work anonymously.
Each tool declares its authentication requirements; account tools keep mcp:use
OAuth and tenant permissions. Account tool calls without valid credentials return
an MCP authentication challenge; resources containing account data require OAuth.
The exact agent resource has protected metadata at
/.well-known/oauth-protected-resource/mcp/orgonaut-agent, using the existing
shared issuer and S256 consent flow. Tokens remain bound to that exact resource.
Start with orgspec_guide when you are unsure of the OrgSpec format. Guest
writes return the new revision, a summary, a scenario index and the IDs they
changed; they never echo the whole model. Read the model with
get_guest_organisation.
| Tool | Inputs and result |
|---|---|
connection_status |
No arguments. Returns guest or authenticated mode and the selected tenant only when authenticated. |
orgspec_guide |
No arguments, no account needed. Returns the OrgSpec rules, a valid worked example and the edit operation shape. |
create_guest_organisation |
orgspec: the canonical OrgSpec 0.1 document as a JSON object (its schema is published in tools/list). The legacy orgspec_json string is still accepted. Returns the private guest_key, revision, summary, scenario index and expiry. |
get_guest_organisation |
guest_key, optional scenario_id. Without scenario_id, returns the Live document plus a scenario index (ID, name, source). With it, returns that scenario's document. Also returns revision, decline state and expiry. |
update_guest_organisation |
guest_key, revision, small operations (op, collection, id, optional record), optional scenario_id or Live organisation_name. Validated atomic edit; stale revision rejects with current_revision. Optional request_id makes retries safe. Returns the new revision and the changed IDs. |
validate_orgspec |
orgspec (or legacy orgspec_json). Validates schema and graph without creating an account or draft. A valid document also returns findings. |
analyse_organisation |
guest_key, optional scenario_id. Represented people/team counts, memberships, unit layers, explicit reporting spans and findings, with limitations. |
create_scenario |
guest_key, revision, name, operations, optional source_scenario_id. Frozen source plus independent target; Live is unchanged. Optional request_id makes retries safe. Returns scenario_id and the changed IDs. |
compare_scenarios |
guest_key, scenario_id, optional base: source (default, the frozen copy the scenario started from), live (the current Live model) or another scenario's ID to compare two options. Returns base, scenario, changes by ID, structural deltas and each side's analysis. |
create_claim_link |
guest_key. Short-lived fragment URL (30 minutes by default), safe preview summary and expiry. No account is created until authenticated browser claim. Once opened, that browser can finish saving for 24 hours, so email verification does not need a fresh link. Large organisations save in the background behind a progress page. |
guest_onboarding_event |
guest_key, action (presented, accepted, declined). Decline suppresses further invitations while modelling continues. |
discard_guest_organisation |
guest_key. Permanently deletes the draft, its scenarios and claim links when the user asks. Organisations already saved to an account are not affected. |
findings point out structural gaps the user can fill in: people not placed in
any unit, people with more than one primary placement, empty teams, teams or
departments without a lead, leads not placed in their own unit, several
top-level units, people reporting to more than one manager, managers with more
than eight direct reports, and fewer people represented than an estimated
headcount. Each finding has a code, a severity (warning or info), up to
20 record ids and a suggested question to ask. Findings describe the
records, not people's performance.
Guest tool failures are ordinary tool results with isError: true. The text
names what to fix, and structuredContent.error carries a stable code
(orgspec_invalid, invalid_arguments, not_found, conflict,
invalid_request, rate_limited, draft_claimed), a retryable flag and, where useful, a
hint. OrgSpec failures list up to 20 field paths, such as
$.placements[0].actor, with allowed values for enum fields. After a draft is
saved to an account, its guest_key stops working and the error says to connect
that account instead.
To retry an edit safely after a timeout, send the same request_id again. If
the first call already applied, the result comes back with replayed: true and
applied_revision instead of a conflict. Use a new request_id for every new
edit. create_guest_organisation is not replayed: a repeated create makes a
second temporary draft, which simply expires.
Guest limits apply per assistant user when the host sends an anonymised user ID
(ChatGPT's openai/subject), with per-IP and service-wide backstops. The
defaults are 120 calls per minute and 10 new drafts per hour per user, and
10 claim links per hour per draft. Only
successful drafts count toward the hourly limit, so correcting a rejected
document does not use it up. Over a limit, tool calls return an in-band
rate_limited error with retry_after seconds and a Retry-After header.
Guest updates can overwrite or remove existing temporary records, so
update_guest_organisation declares readOnlyHint: false and
destructiveHint: true. MCP clients can use these hints when requesting approval;
the server still validates the private guest key, current revision and resulting
model before applying an edit. These hints do not guarantee a client approval prompt.
Guest tools own only capability-protected temporary data and cannot read or edit an account tenant. They are unavailable on bearer-authenticated connections. Draft contents are encrypted at rest. The normal defaults are 7 days, 1,000 records per model, 512 KiB per model and 5 guest scenarios; deployments can adjust limits. Live discovery is authoritative for schemas and available tools.
Discovery flow
MCP-capable agents discover the live catalog from the server itself.
For the original authenticated endpoint, OAuth discovery and consent precede the first MCP session call. The mixed agent endpoint permits anonymous discovery and guest calls before account consent. After authentication, the normal sequence is:
- Call
initialize. - Call
tools/list. - Call
resources/list. - Call
resources/templates/list. - Call
prompts/list.
If you are evaluating a third-party agent builder, this is the key distinction: builders that support remote MCP should discover the catalog from the Orgonaut server directly, while builders that only ingest OpenAPI should use /docs/api instead.
Some MCP clients only surface tools in their UI even when they can authenticate successfully. For those clients, start with capability.list and capability.explain, then use org.review.guide or scenario.review.guide when the prompt catalog is not shown.
Tools
Tool discovery declares whether each operation reads or changes stored data, whether it can make destructive changes, and whether it can contact an external service. Read tools do not change organisation records. Action planning can contact an AI provider and save a proposal, while confirmation can update or archive scenario records. Required inputs are marked in each tool's schema; discover record IDs before calling tools that require them.
Discovery and tool-only compatibility
capability.listlists the shared Orgonaut capability catalog and maps each capability to the MCP tools, resources, and prompts that implement it.capability.explainexplains one capability key, tool name, prompt name, or resource URI and shows the mapped MCP surfaces for that capability.business.capability.listbrowses capability states and canonical IDs in Live or a scenario, with permission-filtered measures and costs.
Capability transformation review
business.capability.detailreads one capability's state, source-to-target delta, measures, mapped Work, matched solution deployments, evidence, and completeness findings.ai.solution.listbrowses governed AI solutions, versions and contextual deployments.ai.solution.deploymentsreads one governed AI solution and its deployments in Live or a selected scenario. Pricing is returned only with the separate case-cost permission.transformation.case.listbrowses cases using each case's persisted source and target contexts.transformation.case.readinessreads deterministic readiness, scope, and permission-filtered client-safe economics for one case.
These catalog and detail tools are read-only. They cannot change capability assessments, deployments, assumptions, economics authorization, recommendations, approval, or publication state.
Studio lists support page and per_page (maximum 100, default 50). Follow the returned pagination before claiming completeness. Cost and workforce permissions still apply.
Review guidance
org.review.guidereturns the same review guidance asorg-review, but as a read-only tool payload for tool-only clients.scenario.review.guidereturns the same review guidance asscenario-review, but as a read-only tool payload for tool-only clients.
Org model and structure
org.summaryreturns tenant-wide Live Baseline or scenario totals for headcount, FTE, monthly cost, and velocity.org.unit.treereturns an org-unit tree or subtree as a nested, machine-usable structure.org.unit.metricsreturns roll-up headcount, FTE, cost, and velocity metrics for a specific org unit.org.team.rosterreturns a team's active roster, placement context, and positions when available.entity.resolveresolves teams, departments, actors, or scenarios by name in the current tenant scope.department.listlists departments in the current live, scenario, or snapshot scope.team.listsearches teams in Live or one explicit scenario, returning canonical IDs and matching counts.team.summaryreads one team summary, including staffing, org path, and metrics when permitted.department.profilereads one department summary and direct roster in the current scope.actor.listsearches and paginates actors in Live or one explicit scenario; useactor.profilefor permitted placement and pay details.actor.profilereads one actor profile, including placement and compensation context when permitted.primary_teamis the team of the current primary placement (where the person works);seatis the position they hold and the team or department that owns it.seat_team_differsandseat_noteflag someone working in one team while holding another team's seat, for example after a scenario move that keeps the original seat.position.listlists positions in the current live, scenario, or snapshot scope.initiative.listlists initiatives and shows their Live and target scenario relationships.team.velocityreads selected sprint velocity and recent sprint history for a team.transfer.impactestimates read-only headcount changes if a stated number of people moved between two teams or departments.
Scenario and history review
scenario.listreturns active scenarios with planning metadata and their latest aggregate summary when requested. Archived scenarios and baseline snapshots are omitted unless you passstatus: "archived".scenario.deltaexplains how a scenario differs from its source state using Orgonaut's existing delta model.scenario.timelineshows a scenario's headcount, FTE, people cost and agent cost against its source, and the difference, on several dates. Withoutdatesit returns the yearly path from today to the year after the last dated change (at most five years); pass up to 12 comma-separatedYYYY-MM-DDdates to choose your own, andcompare: "baseline"to compare against the Live baseline. Future dates are projected from dated placements, pay and approved deployments. Money is monthly, in minor currency units. Archived scenarios and snapshots return an error; usescenario.deltafor them.scenario.historyreads scenario lifecycle history, including tasks, lineage, snapshots, and recent activity.
Governed scenario actions
scenario.createcreates a planning scenario as a copy of Live, or of another planning scenario withsource_scenario_id. Live never changes. The copy builds in the background, so checkscenario.listuntil it is no longerinitialising. An optionalrequest_idmakes retries return the same scenario. Needsscenarios.create.scenario.change.previewstages an exact change from IDs you already have, without an AI call:move_person(actor_id,to_org_unit_id, optionalallocation_pct) orcreate_team(name, optionalparent_org_unit_idandpurpose). It returns the same proposal asscenario.action.planand applies only throughscenario.action.confirm.scenario.action.plandrafts a governed scenario action proposal from a natural-language request and returns the same proposal envelope Astro uses in-product.scenario.action.confirmconfirms and executes one previously staged governed scenario action proposal byproposal_id.scenario.import.previewvalidates an OrgSpec document (orgspecobject) for import into a mutable planning scenario, counts its records and lists structural findings. It returns apreview_idthat expires after 30 minutes. Needsimports.manage.scenario.import.confirmstarts the approved import through the normal import pipeline. Calling it again with the samepreview_idreports progress and never imports twice. Records that match by OrgSpec source identity are updated, others are added, and nothing is deleted.
These tools preserve explicit confirmation. They can stage scenario-scoped actor, placement, compensation, cost-event, team, department, org-unit, position, initiative, and scenario lifecycle changes, and import into planning scenarios. Live Baseline writes, imports into Live, scenario promotion, snapshot restore, tenant taxonomy/settings changes (department types, team types, sprint periods, role types, currencies, AI pricing), tenant admin mutations, token management, and integration mutations remain unavailable. Read-only connections cannot use any of them.
Tenant settings and operational mutations remain unavailable over MCP even when the same status can be read through tenant.settings or operations.status.
Settings and operations
tenant.settingsreads tenant member, invitation, token, and AI model cost settings state.reference.listbrowses tenant department, team and role types. Department/team reads require their domain read permissions; role types requiresettings.manage. Taxonomy writes remain unavailable.operations.statusreads BambooHR integration health, recent import runs, and export availability.activity.recentreturns recent activity statements with classifications, narratives, and referenced entities.
Resources
orgonaut://baseline/summaryreturns the tenant-wide Live Baseline summary.orgonaut://tenant/settingsreturns a tenant settings snapshot for members, invitations, tokens, and AI costs.orgonaut://operations/statusreturns BambooHR, import, and export availability status.orgonaut://scenarios/{scenarioId}/summaryreturns a tenant-scoped scenario summary.orgonaut://scenarios/{scenarioId}/deltareturns a tenant-scoped scenario delta payload.orgonaut://scenarios/{scenarioId}/historyreturns a tenant-scoped scenario history payload.
Cost, velocity, and pay redaction
Read tools return cost, velocity, and pay fields only when the caller holds the matching permission. Orgonaut checks both your member role and the scopes on the access token in use, so a token created without costs.read never receives cost data, even if your role would allow it.
- Without
costs.read: monthly cost, people cost, and agent cost values and deltas are removed fromteam.summary,department.profile,actor.profile,position.list,scenario.list,scenario.delta,scenario.timeline,scenario.history,tenant.settings, and the matching resources.org.summaryandorg.unit.metricsrequirecosts.readand refuse the call without it.activity.recenthides the change text for compensation and cost statements and strips salary, rate, cost, and budget fields from other changes. - Without
org-metrics.read: velocity values and deltas are removed from the same payloads.
Redacted responses include a limitations list that says what was left out. To give an agent headcount and structure only, create its token without costs.read.
Prompts
org-reviewguides a client through reviewing the current live org or a scenario.scenario-reviewguides a client through analysing one scenario against its source state.
Response metadata
Tool and resource responses include structured metadata so agents can reason about freshness, provenance, and scope. Common fields include:
request_idtool_versionorresource_versioncapability_idsbaselineorscenario_idas_ofwhen applicablecomputed_atwhen applicable
Governed action tools also include:
ai_run_idproposal_idproposal_statusconfirmation_required
Errors
Every tool reports a failure as a normal tool result with isError: true, so the
agent can read the reason and correct its next call. The text says what went wrong
and what to do next. structuredContent.error carries:
code: a stable value such asinvalid_arguments,not_found,forbidden,unsupported,conflict,orgspec_invalid,rate_limitedortool_errormessageand, where useful,hintretryable:trueonly when repeating the same call later can succeedrequest_idon account tools, for support
forbidden means the member's role or the token's scopes do not allow the call;
retrying will not help. JSON-RPC protocol errors are reserved for malformed
requests, unknown tools and failed resource reads, and always echo the request's
id.
Typical first calls
For a Live Baseline organisational review:
- Call
capability.listif your client only shows tools or if you need the mapped capability catalog first. - Call
org.review.guidewhen the prompt catalog is hidden and you want the review flow as a tool response. - Call
org.summary. - Call
entity.resolveif you need canonical ids first. - Call
org.unit.tree. - Call
org.unit.metricsfor the nodes that matter most. - Call
activity.recent. - Call
tenant.settingsoroperations.statuswhen you need tenant setup or operational context.
For a scenario review:
- Call
scenario.review.guidewhen the prompt catalog is hidden and you want the review flow as a tool response. - Call
scenario.list. - Call
scenario.history. - Call
scenario.delta, thenscenario.timelineto see how the difference develops over the coming years. - Call
activity.recentwith the samescenario_id.
For a governed scenario mutation flow:
- If you need a new sandbox, call
scenario.createwith anameand arequest_id, then callscenario.listuntil it is no longerinitialising. - Call
scenario.change.previewfor an exact move or new team, orscenario.action.planwithscenario_idand a natural-language request. - Inspect
action.proposal.id,proposal_status, and the returned preview. - Call
scenario.action.confirmwith the samescenario_idandproposal_id. - Review the returned
action_resultpayload and cited follow-up links.
To import an OrgSpec document into a planning scenario:
- Call
scenario.import.previewwithscenario_idand the document asorgspec. Fix anyorgspec_invalidfield errors and preview again. - Show the user the record counts and
findings. - After they approve, call
scenario.import.confirmwith thepreview_id. Call it again to check progress until the run iscompletedorfailed. - Call
scenario.deltato review what changed.
Imports into Live are not available over MCP; use the Imports page in Orgonaut.
Validation checklist
If you want to verify that an environment's MCP surface is working correctly:
- Confirm the tenant-hosted OAuth metadata endpoints resolve successfully.
- Connect a client and confirm
initializereturns the Orgonaut server name and version. - Confirm
tools/list,resources/list,resources/templates/list, andprompts/listall return populated results. - Call
capability.listand confirm the compatibility note plus grouped capabilities are returned. - Call
org.summaryandscenario.listsuccessfully. - Call
scenario.action.planand verify that scenario-scoped proposals return aproposal_idand explicit confirmation state. - Call
tenant.settingsoroperations.statusto confirm the broader admin and operational surfaces are reachable.