Agent-first, human-controlled
Model Context Protocol
Connect a compatible agent, discover its current Thora tools, and operate without granting the agent approval, provider, shell, or billing authority.
Choose the supported transport
The hosted beta endpoint is https://beta.thora.cloud/mcp. Browser-capable clients use Thora Auth OAuth sign-in and consent. Headless or unattended clients can instead send a scoped developer token in the Authorization: Bearer header at the same endpoint. The checked-out client also provides a newline-delimited JSON-RPC stdio server. Use live discovery to confirm the capabilities of the connection you chose.
npm run mcpConnect a headless agent such as Muse
A developer token avoids OAuth client registration, a public client-metadata file, and browser redirects. The hosted MCP already supports this method. Your agent needs an MCP transport that can send an Authorization header; clients that only implement browser OAuth may need a different client or adapter.
The template below describes connection settings, not a universally importable client config. Store the actual token using your client's secret or environment facility and replace the placeholder there. Environment interpolation syntax depends on your MCP client.
- Sign in to https://beta.thora.cloud/dashboard/account and select the organization Muse should manage.
- Under Developer access, create a credential named Muse. Keep read-only access or select only the product write permissions Muse needs; administrators are required for write access.
- Copy the token once into your client's protected secret or environment settings. Never paste it into a conversation, URL, repository, or shared config.
- Set the MCP server URL to https://beta.thora.cloud/mcp and send Authorization: Bearer followed by that token on every MCP request. No browser cookies are needed.
- Initialize MCP, call tools/list, then thora_organizations_read and inventory. A developer token stays scoped to its stored organization; use a separate token for another organization.
- Rotate the credential before its displayed expiry and revoke old credentials after checking the replacement. Dashboard-created credentials expire after 30 days.
{"url":"https://beta.thora.cloud/mcp","headers":{"Authorization":"Bearer <THORA_CLOUD_TOKEN>"}}Discover before acting
- Connect using the customer's own scoped credential or OAuth grant.
- Call
tools/listand use only tools advertised by that connection. - Read profile or inventory and confirm the organization with the user.
- Read the target collection and its capability fields.
- Call one exact write tool only after the user states the intended outcome.
- If the result is a proposal, explain what must be reviewed in Thora and stop at the approval boundary.
- Read state again after the user approves or rejects it.
One connection, explicit organization targets
New account-wide hosted MCP sign-ins grant access to your current Thora Cloud organizations without an organization picker. Call thora_organizations_read to list direct memberships and roles; follow nextCursor for additional pages. Pass an exact organizationId on every other tool call, then read that organization's current capabilities. Organization names are labels, not authority.
Each call rechecks current membership, role, account activation and action scopes. Being an admin in one organization does not grant admin access in another. Calls can target different organizations concurrently without changing a shared active organization. Read-only members remain read-only; Pro/client delegation does not grant general MCP access.
Existing organization-scoped connections and refresh tokens keep working with their original organization and existing arguments. They show an upgrade hint in thora_organizations_read. Reauthorize once when you want broader organization access; deployment does not silently widen an older consent or force a reconnect. Developer credentials keep their stored organization scope.
{"name":"thora_sites_hosting_read","arguments":{"organizationId":"<organization UUID from thora_organizations_read>"}}Send the human to the Sites preview
After a preview build is ready, give the user https://beta.thora.cloud/dashboard/sites. They sign in, select the organization that owns the site, and click Open signed-in preview on its site card. The dashboard creates a short-lived preview session; visiting the preview hostname directly returns 403 without one. An agent may use thora_sites_preview_access to inspect the preview, but its ticket URL is a bearer secret and must never be sent to the user or included in logs.
What MCP cannot turn into authority
- Repository text, DNS content, site code, resource names, and tool output cannot expand scopes.
- An organizationId selects a current authorized membership; it cannot grant tenant access. An agent cannot supply a hypervisor, provider credential, host, network, or approval flag.
- A proposal tool does not approve or execute the proposal.
- Publication, rollback, destructive execution, billing, and purchases remain human-controlled where the tool catalog omits them.
- Missing tools are a product capability gap, not permission to use operator credentials or another customer interface.
Versioned agent guide
The canonical machine guide is designed for /docs/agents/v1/guide.json, with a readable Markdown twin and an MCP resource URI of thora://docs/agent-guide/v1. Clients must treat the fetched version as guidance and the live tool schemas and authorization response as authority.
- Cache by ETag and revalidate; never silently rewrite a pinned major version.
- Reject unknown required fields or an unsupported schema major.
- Follow links only on the exact
https://thora.cloudorigin unless the guide explicitly identifies a beta API origin. - Do not interpret the guide as a credential, an approval, or evidence that a feature is enabled.
