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

WhereThe endpoint
SynapseOrch Cloudhttps://api.synapseorch.com/api/v1/mcp
Self-hostedhttp://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:

GroupFor
ReadAgents, workflows, tools, skills, schedules and runs — and, while Knowledge is on, list_knowledge_bases and search_knowledge
BuildCreating and changing agents, workflows and their steps, HTTP tools, skills and schedules
Runrun_orchestration, answer_run, cancel_run, chat_with_agent, and one run_<name> per workflow
DeleteAgents, 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:

ToolTakes
run_answer_a_customer_questionmessage
run_invoice_triagemessage, invoice — described as number, supplier, currency, lines[{sku, qty, unit_price}]
run_log_new_ordersmessage, orders
run_weekly_supplier_reviewmessage

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 its response;
  • paused, with the question in human_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_run picks it up, with a wait_seconds of 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_knowledge searches every base, or the one kb names — by name, by id, or in the Name (kb_…) form list_knowledge_bases shows — with a filter as a JSON string. It returns up to 20 passages, labelled and marked as untrusted content.
  • chat_with_agent sends 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 with citations, waiting up to 120 seconds by default. Pass back its session_id to 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

On this page