Read and build a CloudCrane workspace: datasets, field contracts, review queue, receipts, runs.
One address for any MCP client. You sign in at cloudcrane.ai once, after adding it.
At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
| Access to | Read | Change |
|---|---|---|
| Workspace |
From the sign-in at cloudcrane.ai, as the endpoint publishes it. You approve it there.
Odel could not list its tools without signing in.
Connect your AI agent to CloudCrane over MCP.
In Claude: find CloudCrane in the connectors directory and connect.
CloudCrane turns a messy catalog into data an agent can be trusted with. Rules run before any model, the model may only answer from values you allowed, and every value carries a receipt saying how it was decided. Safety exclusions are enforced in the database query, so a record whose value is unknown is left out rather than assumed safe.
There are two MCP endpoints. Both speak Streamable HTTP (stateless, no SSE stream).
| Endpoint | Signs in with | What it opens |
|---|---|---|
https://cloudcrane.ai/api/build/mcp | Your CloudCrane account (OAuth), or a build key cc_build_… | Your workspace, for your own agent while you build |
https://cloudcrane.ai/api/mcp/<tool> | A tool key cc_live_… | One deployed tool, for your end users' agents |
Let your own agent read what you are building and, if you allow it, help build it.
In an MCP client that supports OAuth sign-in, add the URL with no key:
https://cloudcrane.ai/api/build/mcp
The client opens a CloudCrane page where a workspace owner picks the workspace and what the agent may do, then signs you in. Or install it from Smithery.
Tested with Claude, ChatGPT, Cursor, Cline and Smithery. Exact settings for each are
in llms-install.md, which an agent can follow to set it up.
Claude: connect from the connectors directory, or Settings → Connectors → Add custom connector with the URL above, keeping Sign in now and Register automatically.
ChatGPT: add a custom MCP server with the URL above and choose OAuth.
Cursor (~/.cursor/mcp.json):
{ "mcpServers": { "cloudcrane": { "url": "https://cloudcrane.ai/api/build/mcp" } } }
Cline (cline_mcp_settings.json):
{ "mcpServers": { "cloudcrane": { "transport": { "type": "streamableHttp", "url": "https://cloudcrane.ai/api/build/mcp" } } } }
The page shows where it will send you back before anything else, because an app's name is only what it calls itself. It starts on read only. Each app you approve shows up in the dashboard under Developers, where you can revoke it.
For a client without OAuth, an owner makes a build key under Developers and sends it as a header:
claude mcp add --transport http cloudcrane https://cloudcrane.ai/api/build/mcp \
--header "Authorization: Bearer $CLOUDCRANE_BUILD_KEY"
Every connection reads (17 tools): list_datasets, get_dataset,
list_contracts, get_readiness, list_review_items, get_receipts,
list_value_sets and get_run to find its way around; list_tools,
list_scenarios, get_tool_insights, list_drift_alerts, get_usage and
get_next_actions to watch what is deployed and what needs doing;
list_approvals, get_approval and list_events to follow up. They run inside
a read-only database transaction.
A connection allowed to build also gets 13: create_dataset,
create_field, update_field, create_value_set, import_value_set_version,
start_run, publish_release and request_approval to build; deploy_tool,
update_tool, create_tool_key, create_scenario and run_scenarios to put it
in front of users. Each goes through the same checks as the dashboard, is
recorded as made by that connection, and is marked as changing data, so clients
such as Claude ask you before each call.
What no connection can do: publish past the accuracy gate, decide a review item, edit a stored value, withhold a record, delete anything, or remove a value from a safety field. Those stay with a person, because a receipt names who decided.
Imported record contents stay hidden unless the owner turns them on. The workspace MCP is included in every CloudCrane plan, Free too.
Full reference: cloudcrane.ai/docs/build-mcp.
Each tool you deploy is its own MCP server. Your agent sees search_<tool> and
get_<tool>, plus find_values when the tool has value set fields. Their input
schema is generated from your contracts, so the agent picks values from an enum
of your list and cannot ask for one you never defined.
Claude Code
claude mcp add --transport http catalog https://cloudcrane.ai/api/mcp/catalog \
--header "Authorization: Bearer $CLOUDCRANE_TOOL_KEY"
Claude Desktop, Cursor, Windsurf
{
"mcpServers": {
"catalog": {
"url": "https://cloudcrane.ai/api/mcp/catalog",
"headers": { "Authorization": "Bearer cc_live_..." }
}
}
}
Some clients call the block servers instead of mcpServers, and some want "type": "http" next to the url.
MultiServerMCPClient with transport streamable_http and a headers dict.MCPServerStreamableHttp with the url and headers.The same tool also answers plain REST at POST /api/v1/tools/<tool>/search.
Full reference: cloudcrane.ai/docs/deploy.
Accept: application/json, text/event-stream on every POST, even though these endpoints never send a stream.Origin header) is refused. Call it from a server or a desktop client.This repository holds documentation and the registry entry (server.json), not
the server's source.