MCP

The console is a Model Context Protocol server. Any MCP client, Claude Code included, can call it to turn a sentence into a validated business process inside your tenant, and to ask everything the console's own assistant knows.

Connecting

EndpointPOST https://console.dev.ductileai.com/mcp
TransportStreamable HTTP: one JSON-RPC 2.0 request per POST, one JSON answer. No session handshake is required; initialize is answered for clients that send it.
Protocol version2026-07-28
AuthenticationAuthorization: Bearer dpt_…, a personal access token from Settings › Tokens. A console session cookie works too, for the browser.
Methodsinitialize, ping, tools/list, tools/call, resources/list, resources/read

Claude Code

claude mcp add ductile --transport http https://console.dev.ductileai.com/mcp \
  --header "Authorization: Bearer dpt_…"

Then ask it, in words: "Using ductile, draft a process that reads new Shopify orders every hour and posts a summary to Slack." It calls resolve_blueprint, then compile_blueprint and validate_process, and hands you a definition you can open in the console.

Any client, by hand

curl -s https://console.dev.ductileai.com/mcp \
  -H "Authorization: Bearer dpt_…" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

curl -s https://console.dev.ductileai.com/mcp \
  -H "Authorization: Bearer dpt_…" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"resolve_blueprint",
                 "arguments":{"text":"read a CSV from Box, uppercase every field, write it to the object store and email it as an attachment"}}}'

The tools

Fifteen tools, tenant-scoped: an agent id that comes back exists, is entitled to your plan, and the connections named are yours. The usual order is resolve, adjust, compile, validate.

ToolWhat it answers
resolve_blueprintCall this first. Give the request in the person's words (or a plan already understood) and get the blueprint: the exact source agents with their vendor endpoints, credential classes and samples; the shaping steps with their formulas; the target agents; the platform half; credits per run; and the unknowns with the assumptions taken.
compile_blueprintTurn a blueprint into the business process definition JSON, deterministically: head nodes with credential placeholders, the shaping subprocess, the gate where applied, the tail nodes, every wire, the embedded reject process.
validate_processCheck a definition against the agent specs and the charter: unknown agents, missing required properties, wire counts and payload types, the reject route, plus the advice a complete process would still take.
search_agentsFind agents for a step in the vendor's nouns ("list overdue invoices", "post a Slack message"): ids, verb and object, class (source, target, step), readiness (ready, usable, preview).
get_agentOne agent in full: charter, wires, required properties, credential class, readiness signals, vendor endpoints, the sample records' columns.
get_endpointThe endpoint(s) an agent reaches, of any kind: http, jdbc, jms/amqp/kafka/mqtt, filesystem, object store, sftp.
get_dappA vendor group's story: the vendor and its API, the API currency, constraints and traps, what is verified against the vendor and what is assumed, credential classes, docs.
find_examplesWorked examples: a request in a person's words and the process it became, searched by words or by shape ("src:shopify -> filter>map -> tgt:slack").
get_samplesThe sample records an agent ships, to build and test on before anything real is connected.
get_vocabularyThe process vocabulary the validator and the pods speak, one section by id or all of them.
search_functionsThe formula language: the functions a transformation, enrichment or filter formula may use, searched by name or by intent.
explain_failureA step failed or a draft will not validate: what fixed the same failure on this agent before (a shape, never a value), then the general reading.
get_currencyHow current the knowledge about an agent or a vendor is, and where to fetch the latest: API version targeted, when it was grounded, announced sunsets, docs and changelog URLs.
fetch_docsFetch a vendor documentation page live, by URL, and answer its text. Only hosts the knowledge base names as a vendor's docs are allowed.
list_my_connectionsThe connections (credentials) this tenant already has, by name and vendor, never a secret, so "my Salesforce" binds to the account that exists.

Resources

resources/list names the process vocabulary and the formula language as readable resources; resources/read returns one by URI. They are the same documents the validator and the pods speak, so a client can ground itself before drafting.

Limits and behaviour