Guide · MCP
Ardyn → your MCP server.
Ardyn lists a server’s tools without calling them. You enable the tools you want; Ardyn calls a selected tool with validated arguments and records a signed receipt. To connect an assistant to Ardyn instead, see ACTA MCP.
Supported profile
application/json or a single-message text/event-stream; Mcp-Session-Id honouredinitialize, notifications/initialized, tools/list with nextCursor paging (≤ 20 pages, ≤ 500 tools)Not supported (visible limits)
- stdio servers on a hosted runtime — needs a runtime you run next to the server
- Server-initiated requests: sampling, elicitation, roots
- Resource subscriptions and progress streams
- Resources and prompts as capabilities (listed by the server, not exposed as operations)
Steps
1 · Register the server
POST /v1/connections {"family": "mcp", "name": "Field Notes", "config": {"endpoint": "https://mcp.example.com/mcp"}, "credential": {"kind": "bearer", "value": "<server token>"}}The endpoint host is pinned to the connection. Private, loopback and metadata addresses are refused unless your runtime runs on that network.
2 · Discover (nothing is called)
POST /v1/connections/<id>/discover
{"tools": 3, "invoked": false, "protocol": "2025-06-18", "capability_ids": ["mcp:789ed47c/read_note@a772a882e107", …]}Capability ids include the connection and a digest of the tool’s contract, so two servers offering the same tool name never collide. Tool descriptions and hints are shown to you but never change permissions.
3 · Enable and classify
POST /v1/capabilities/<url-encoded id>/enable {"effect_class": "read"}A server’s
readOnlyHintis not trusted. You decide read or write when enabling.4 · Invoke
POST /v1/capabilities/<url-encoded id>/invoke {"arguments": {"note_id": "n-1"}}Arguments are validated against the pinned input schema first. Ardyn re-lists tools and refuses if the contract changed since you enabled it.
5 · Receipt
The receipt holds the request as sent (credentials excluded), the server’s result, and any gaps. Export it with
GET /v1/receipts/<id>/exportand check it on /verify or withardyn-verify.
Explicit non-success
capability_not_enabled; nothing sentdescriptor_changed; re-discover to get a new capability id for reviewinvalid_arguments, with the schema pathconnection_revoked; nothing sentfailed; the receipt records TOOL_RESULT_MISSING and verifies as PARTIALLY SUPPORTED, never as successoutcome_unknown