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/horde

Source 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.

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.md

Scopes

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_capabilities
  • plan_execution
  • integrate_child
  • environments
  • delegate_task
  • list_children
  • list_skills
  • read_skill
  • read_context
  • pending_questions
  • escalate_question
  • propose_steps
  • request_question
  • run_diagnostics
  • answer_question
  • register_workspace
  • send_message
  • read_messages
  • acknowledge_messages
  • list_workers
  • set_worker_status
  • join_channel
  • claim_paths
  • transfer_claim
  • put_artifact
  • get_artifact
  • reuse_artifact
  • add_knowledge
  • knowledge
  • knowledge_edges
  • knowledge_options
  • retract_knowledge
  • link_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.