Horde MCP and CLI reference
Horde is driven by agents, not by an HTTP service. A running daemon exposes 115 operations over the Model Context Protocol on stdio, and the same operations are available from the CLI. This site publishes a description of that surface so an agent can work out whether Horde is the right tool before anything is installed.
Connect an agent
Add Horde as a stdio MCP server. The bridge speaks protocol version 2024-11-05 and answers tools/list with typed schemas, so any function-calling client can use it without a hand-written adapter.
{
"mcpServers": {
"horde": { "command": "horde", "args": ["mcp"] }
}
}If the agent cannot find Horde, use the absolute path to ~/.local/bin/horde. This bridge has administrative access to your daemon.
To keep an agent’s work within one project, follow Connect an agent to a project. Add --project PROJECT before mcp to bind that connection and restrict its operations to the selected project.
Agent skills
If your agent supports the Agent Skills Protocol, the workflow is packaged for you: horde for an agent driving Horde, horde-templates for authoring workflow templates, and horde-worker for an agent running inside a Horde task.
npx skills add gethamster/hordeSource and documentation: https://github.com/gethamster/horde/tree/main/skills.
Published descriptions
The discovery file uses Horde’s own metadata format. It describes the installed stdio server and is not an official MCP manifest or a remote connection URL. This site has no HTTP API, OpenAPI specification, or Streamable HTTP MCP endpoint.
- /llms.txt — what Horde is and when an agent should reach for it
- /.well-known/mcp.json — Horde discovery metadata: transport, install, platforms
- /.well-known/tools.json — all 115 operations with JSON Schema parameters
- /sitemap.xml — every indexable URL
curl -s https://horde.sh/.well-known/tools.json | jq '.tools[] | select(.scope=="worker") | .name'The catalog is generated from the daemon source, so it always matches the release named in the manifest. Each entry carries a unique name, a description, and a closed JSON Schema for its arguments, which is the shape function-calling clients expect.
Markdown content negotiation
Every page on this site is also published as Markdown. Request it with an Accept header and you are redirected to the variant, or append .md to the path directly. Responses send Vary: Accept so a cache cannot hand an agent the wrong one.
curl -sL -H 'Accept: text/markdown' https://horde.sh/docs
curl -s https://horde.sh/docs.mdScopes
Operations split in two. Admin operations are available to your own MCP bridge and the CLI. Worker operations — 33 of the 115 — are additionally available to task-scoped worker credentials, which are issued per worker by register_worker and cannot read or affect other tasks. A worker token presenting an admin operation is rejected.
Calling operations from the CLI
Every operation is reachable without an MCP client through horde call, which takes the operation name and a JSON argument object and prints a JSON result:
horde call list_tasks '{}'
horde call submit_task '{"objective":"Add CSV export with tests","repo":"/path/to/repository"}'
horde call events '{"task":"TASK_ID","after":0}'Errors
Operations return an error rather than a partial result. Over MCP the failure arrives as a tool error; over horde call it is printed to stderr and the process exits non-zero. Common causes are an unknown operation name, an argument object that fails schema validation, a worker token attempting an admin operation, and a task ID that does not exist.
Worker-scoped operations
These are the operations a worker credential may call:
runtime_capabilitiesplan_executionintegrate_childenvironmentsdelegate_tasklist_childrenlist_skillsread_skillread_contextpending_questionsescalate_questionpropose_stepsrequest_questionrun_diagnosticsanswer_questionregister_workspacesend_messageread_messagesacknowledge_messageslist_workersset_worker_statusjoin_channelclaim_pathstransfer_claimput_artifactget_artifactreuse_artifactadd_knowledgeknowledgeknowledge_edgesknowledge_optionsretract_knowledgelink_knowledge
Stability
Horde is an early release and operation names may change before 1.0. The catalog carries a specVersion and the manifest carries the Horde version it was generated from — check those rather than pinning to this page. Questions and issues go to the issue tracker.