The assistant built into the console reads the same tool catalog, so you do not have to connect an external client to get an agent that can see your workspace. Connect one when you want your own coding agent — in your editor, next to your code — to build the pipeline for you.
Connect one
Hookie hosts the MCP server. There is nothing to install — point your agent at:.mcp.json that you can commit to a repo:
What it may do
Signing in proves who the agent is acting for. What it may do is decided separately, by you, in Settings → Connected agents: a newly connected agent can only read until you grant it more, and the change takes effect on its very next call.
An agent is never a principal of its own. It acts as you, and its authority is your workspace role narrowed to the scopes you granted — whichever is more restrictive wins. An agent granted
hookie:manage by someone with the viewer role is still a viewer.
Two things it can never do
- Touch billing. Subscribing, cancelling and changing a card are unreachable at every scope. Those stay decisions a person makes.
- Destroy data. There is no tool to delete a project or drop a dataset’s records. An agent manages routing configuration, which is visible and undoable; irreversible deletion stays in the console.
Revoke
Settings → Connected agents in the console lists everything you have connected, what each may do, and when it last acted. Revoking takes effect on the agent’s very next call — even though its token is still valid, because Hookie checks its own grant on every request.Tools
Available withhookie:read:
Available with
hookie:write:
There is no
create_dataset, because a dataset is not something you create. A dataset is a name records carry: it exists the moment the first record is routed into it, and the console has no way to make an empty one either. Name it in a rule, an endpoint, or a workflow’s entry_dataset and it appears.
Every tool carries MCP annotations, so a client can tell at a glance which calls are safe. readOnlyHint is derived from the tool’s required scope rather than maintained by hand, so it cannot disagree with what the tool is allowed to do. destructiveHint is set only where something is genuinely unrecoverable — the four delete_ tools and revoke_ingest_key. It is deliberately not set on delete_workflow, which only deactivates, or on replay_delivery, which re-sends: prompting for confirmation on a reversible action trains people to click through the ones that matter.
Addressing an endpoint you just created
An endpoint’s public URL is{workspace}/{project}/{endpoint-slug}, and the endpoint slug is a high-entropy value the server mints — not the readable slug you passed in, which is stored as base_slug and never appears in a URL.
You do not have to assemble any of that. create_webhook and list_webhooks both return public_path and public_url, and public_path is exactly the string send_test_event takes:
get_workspace gives the first segment. A wrong path and a disabled endpoint both answer the same 404, so check enabled before assuming the URL is wrong.
The update_ tools are narrower than they sound, deliberately. An endpoint’s slug is the credential in its public URL, and its criteria and mappings define what it has already ingested — changing those in place would quietly reinterpret history. A destination’s URL and signing secret are fixed for the same reason: a delivery’s signature is verified against the URL it was sent to. To change any of them, create the replacement and delete the old one.
Bringing your own client
The hosted server speaks MCP’s Streamable HTTP transport athttps://app.hookie.ai/mcp — POST JSON-RPC, no session header required. Authentication is standard OAuth 2.1, so any client that speaks it can connect without an MCP library. Start at our protected-resource document, which names the authorization server to register with:
/admin/api/* routes the console itself calls, so there is no second, weaker API to learn.