Connect an AI client over MCP
Connect Claude Code, Cursor or any MCP client to your workspace with an API key, then have it run workflows, answer them when they stop for a person, search your knowledge bases and chat with your agents — with worked examples.
SynapseOrch is an MCP server. Any MCP client — Claude Code, Cursor, an agent you wrote — can connect to your workspace and use it: list its agents and workflows, run them, answer them when they stop for a person, search its knowledge bases, chat with its agents, and build. Every workflow is also a tool of its own, named after it, so a client's model finds it by what it does.
Harbor & Pine's operations lead works in Claude Code. Asked to triage invoice INV-1102 from Bayline Packaging, Claude Code calls run_invoice_triage; the run stops for accounts payable's approval, Claude Code asks, and answers the run with the decision. This guide sets that up.
1. Get a key
A client connects with an API key, which acts for the whole workspace. On SynapseOrch Cloud an owner or admin makes one in Settings → Developer — see Get a key. A Cloud key runs; tick Can also build when you make it if the client should build and delete too. On a self-hosted install, it is Settings → API keys, or synapse api-keys generate claude-code in a terminal. The key, sk-syn- and 32 characters, is shown once.
2. Connect your client
| Where | The endpoint |
|---|---|
| SynapseOrch Cloud | https://api.synapseorch.com/api/v1/mcp |
| Self-hosted | http://localhost:3000/api/v1/mcp — your address and the web UI's port |
It speaks MCP's streamable HTTP transport, with the key as a Bearer token.
Claude Code
claude mcp add --transport http synapse https://api.synapseorch.com/api/v1/mcp \
--header "Authorization: Bearer $SYNAPSE_API_KEY"Then /mcp in Claude Code lists synapse as connected, with its tools.
Cursor
In ~/.cursor/mcp.json, or .cursor/mcp.json in a project:
{
"mcpServers": {
"synapse": {
"url": "https://api.synapseorch.com/api/v1/mcp",
"headers": { "Authorization": "Bearer sk-syn-..." }
}
}
}A client that starts local servers only
It runs synapse mcp, which relays to the endpoint. Set SYNAPSE_API_URL to the origin (https://api.synapseorch.com) and SYNAPSE_API_KEY to the key; on the machine a self-hosted Synapse is installed on, the relay uses the CLI's own key.
{ "mcpServers": { "synapse": { "command": "synapse", "args": ["mcp"] } } }3. See what it can do
The tools come in four groups:
| Group | For |
|---|---|
| Read | Agents, workflows, tools, skills, schedules and runs — and, while Knowledge is on, list_knowledge_bases and search_knowledge |
| Build | Creating and changing agents, workflows and their steps, HTTP tools, skills and schedules |
| Run | run_orchestration, answer_run, cancel_run, chat_with_agent, and one run_<name> per workflow |
| Delete | Agents, workflows, schedules, custom tools, boards and knowledge documents |
Tools that replace what is there — update_orchestration, remove_step — and the deletes are marked destructive, so a client such as Claude Code asks before calling them. A delete takes two calls: the first shows what would go, and the second, with its confirm_token, deletes. See MCP server.
Each workflow's tool takes message and wait_seconds, plus the workflow's declared inputs: the state keys that have a description and that no step writes. Harbor & Pine's four:
| Tool | Takes |
|---|---|
run_answer_a_customer_question | message |
run_invoice_triage | message, invoice — described as number, supplier, currency, lines[{sku, qty, unit_price}] |
run_log_new_orders | message, orders |
run_weekly_supplier_review | message |
So the description you give a state key is what the client's model reads. The list is rebuilt each time the client lists tools; a workflow made since then is reached with run_orchestration and its id.
4. Run a workflow, and answer it
Start it
The client calls run_invoice_triage:
{
"message": "Triage this invoice",
"invoice": {"number": "INV-1102", "supplier": "Bayline Packaging", "currency": "USD",
"lines": [{"sku": "BP-BOX-M", "qty": 5000, "unit_price": 1.12}]}
}It waits up to wait_seconds — 30 by default, at most 120 — for the run to finish or ask a question.
Read what came back
The answer is the run's status:
completed, with itsresponse;paused, with the question inhuman_input_required— here, Invoice INV-1102 from Bayline Packaging totals $5,600.00 (over $5,000). Approve payment?, with the fields Approve payment (approved) and Note for the ledger (comment);failed, saying why;running, when the wait ran out. The run carries on;get_runpicks it up, with await_secondsof its own.
Answer it
The client calls answer_run with the run's id and the answer, keyed by the fields' names:
{"run_id": "…", "answer": {"approved": true, "comment": "Bulk order agreed with Bayline in September."}}The run carries on from the approval, drafts the payment note and comes back completed. A run is answered once: a second answer is refused — This run is not waiting for input (status: completed).
Answers to questions with no fields are text. An approval with no fields of its own takes {"approve": true} or {"approve": false}.
5. Search, and chat with an agent
search_knowledgesearches every base, or the onekbnames — by name, by id, or in theName (kb_…)formlist_knowledge_basesshows — with a filter as a JSON string. It returns up to 20 passages, labelled and marked as untrusted content.chat_with_agentsends one message to an agent, named by id or exact name —{"agent": "Order desk", "message": "Who should we notify after a data breach?"}— and returns its reply withcitations, waiting up to 120 seconds by default. Pass back itssession_idto carry on the conversation.
Limits on SynapseOrch Cloud
Any valid key gets every tool. A key may make 300 requests a minute and the workspace 1,200; starting work — a run, an answer, a chat turn — has its own limit of 60 a minute per key, and searches 120. Above any of them the answer is 429 with Retry-After. A run beyond the plan's runs at once waits in line and reads queued, with its queue_position; runs and chats spend credits and model wallet as they do anywhere else.
Self-hosted
The same server and tools at http://localhost:3000/api/v1/mcp, with a key from Settings → API keys or synapse api-keys generate. View docs on that page shows the Claude Code and Cursor snippets with your address filled in. /api/v1 has no rate limits of its own.
Go further
- Synapse as an MCP server — every tool, what is refused, protocol versions
- The public API — the same runs over plain HTTP, with webhooks
- API Keys and the Developer Page — what a key can do, and revoking it
- MCP servers — the other direction: apps' tools for your agents, from their MCP servers
Start a run from Zapier, Make or n8n
Start a workflow from another tool's webhook step with an API key: the request, which API to call for a short or a long workflow, and getting the result back.
Webhooks
Have SynapseOrch Cloud call your server when a knowledge base's document is indexed or fails: add an endpoint, verify each signed delivery, answer it, and recover when deliveries fail — with worked examples.