Tools and requests
A connected assistant sees four tools, split by what each does to the workspace. Each takes the same request and refuses an operation that belongs to another tool.
| Tool | Does | Client behaviour |
|---|---|---|
algomo_read | Reads and changes nothing: chatbots, workflows, agents, cards, knowledge-base pages, sessions and their diffs, conversations, past runs, tasks, onboarding status. | Runs without confirmation in Claude and ChatGPT. |
algomo_edit | Stages changes in an edit session. Nothing it stages is live until the session is published. Also writes workspace settings, tasks and onboarding answers, which apply at once. | Confirmed as a write. |
algomo_publish | Saves a session, making everything staged in it live, or discards it. | Marked destructive. Claude and ChatGPT ask before it runs. |
algomo_run | Runs a workflow or a custom agent, sends a test message to a chatbot, verifies website access, or drives your paired browser extension. | Reaches outside the workspace, so it asks first. |
Every operation belongs to exactly one tool. An operation sent to the wrong tool is refused with the name of the right one, and nothing runs.
The request
All four tools take one argument, request, a JSON string in one of three shapes.
{ "op": "entity:get", "entityType": "chatbot", "entityId": "…" }[{ "op": "session:create", "name": "Support hours" }, { "op": "info:me" }]A list stops at the first error and returns one result per operation run.
{
"defaults": { "sessionId": "…" },
"ops": [{ "op": "session:diff" }, { "op": "session:validate" }]
}Each operation is merged with defaults; the operation's own fields win. A batch runs within one tool. An operation that needs an id from an earlier result goes in a later call.
Discovering operations
{ "op": "schema" }lists every operation with its description and tool.
{ "op": "schema", "target": { "op": "entity:create", "entityType": "chatbot" } }returns one operation's input and output JSON Schemas, with the entity-specific fields for that type.
info:overview describes the product and its entity types, info:entity one type and its relationships, and info:me the signed-in user, workspace and brand context.
The whole catalogue is one public file, /mcp/catalog.json. The reference is rendered from it.