{
  "format": "horde-discovery",
  "formatVersion": 1,
  "name": "horde",
  "displayName": "Horde",
  "version": "0.6.25",
  "description": "Submit and steer durable coding tasks on a local Horde daemon: plan work into steps, run coordinated workers in isolated Git worktrees, and inspect durable events.",
  "documentation": "https://www.horde.sh/docs/agents",
  "homepage": "https://www.horde.sh/",
  "repository": "https://github.com/gethamster/horde",
  "skills": "https://github.com/gethamster/horde/tree/main/skills",
  "releases": "https://horde.sh/releases/latest/manifest.json",
  "license": "Apache-2.0",
  "protocolVersion": "2024-11-05",
  "transport": {
    "type": "stdio",
    "command": "horde",
    "args": [
      "mcp"
    ]
  },
  "install": {
    "instructions": "https://www.horde.sh/docs",
    "command": "curl -fsSL https://horde.sh/install | bash",
    "platforms": [
      "darwin-arm64",
      "darwin-x64",
      "linux-arm64",
      "linux-x64"
    ]
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "toolCatalog": "https://www.horde.sh/.well-known/tools.json",
  "operations": {
    "total": 115,
    "worker": 33
  },
  "contact": {
    "email": "andrew@tryhamster.com",
    "issues": "https://github.com/gethamster/horde/issues"
  },
  "tools": [
    {
      "name": "runtime_storage_status",
      "description": "Inspect local disk space and storage policy",
      "scope": "admin"
    },
    {
      "name": "runtime_storage_configure",
      "description": "Configure host disk reserve and completed worker workspace retention",
      "scope": "admin"
    },
    {
      "name": "runtime_storage_cleanup",
      "description": "Preview or reclaim eligible completed worker workspaces; dry run by default",
      "scope": "admin"
    },
    {
      "name": "account_usage",
      "description": "Inspect granted account quotas and usage attributed to this project",
      "scope": "admin"
    },
    {
      "name": "project_configure",
      "description": "Install administrator-approved project settings from a TOML file",
      "scope": "admin"
    },
    {
      "name": "project_create",
      "description": "Create an isolated project with no inherited resource grants",
      "scope": "admin"
    },
    {
      "name": "project_list",
      "description": "List projects visible to this connection",
      "scope": "admin"
    },
    {
      "name": "project_inspect",
      "description": "Inspect a project and its resource grants",
      "scope": "admin"
    },
    {
      "name": "project_update",
      "description": "Change project concurrency and isolation requirements",
      "scope": "admin"
    },
    {
      "name": "project_repo_add",
      "description": "Register a checkout and its worktrees to a project",
      "scope": "admin"
    },
    {
      "name": "project_runtime_grant",
      "description": "Authorize a runtime for a project",
      "scope": "admin"
    },
    {
      "name": "project_runtime_revoke",
      "description": "Revoke a project's runtime authorization",
      "scope": "admin"
    },
    {
      "name": "account_create",
      "description": "Create a provider account owned by a project",
      "scope": "admin"
    },
    {
      "name": "account_list",
      "description": "List accounts granted to the selected project",
      "scope": "admin"
    },
    {
      "name": "account_inspect",
      "description": "Inspect a granted provider account without exposing credentials",
      "scope": "admin"
    },
    {
      "name": "account_grant",
      "description": "Explicitly share an account with another project",
      "scope": "admin"
    },
    {
      "name": "account_revoke",
      "description": "Revoke a project's account grant",
      "scope": "admin"
    },
    {
      "name": "account_credential_set",
      "description": "Import a versioned credential from a private file",
      "scope": "admin"
    },
    {
      "name": "account_delivery_list",
      "description": "Inspect credential delivery and revocation state",
      "scope": "admin"
    },
    {
      "name": "provider_login",
      "description": "Administer default-project legacy provider sign-in; managed accounts use account_credential_set",
      "scope": "admin"
    },
    {
      "name": "provider_signup",
      "description": "Create a funded Tuara account using an authorized Stripe Link wallet, with durable payment recovery and private inference-key installation",
      "scope": "admin"
    },
    {
      "name": "provider_topup",
      "description": "Configure, inspect, disable, or check automatic Tuara top-ups within explicitly authorized per-charge and monthly limits",
      "scope": "admin"
    },
    {
      "name": "provider_wallet",
      "description": "Set up the Link wallet through MCP: inspect readiness, install Link, authenticate through a verification link, and guide payment-detail entry on Link before Tuara signup or funding",
      "scope": "admin"
    },
    {
      "name": "skill_pack_list",
      "description": "Inspect this runtime's file-based default skill pack and content hash",
      "scope": "admin"
    },
    {
      "name": "skill_pack_install",
      "description": "Install a local directory of skills for new tasks, independently of the runtime binary",
      "scope": "admin"
    },
    {
      "name": "runtime_skills_update",
      "description": "Send this controller's current default skill pack to a worker by name or ID; request_id makes retries safe and running tasks retain their pins",
      "scope": "admin"
    },
    {
      "name": "runtime_capabilities",
      "description": "Discover local and connected worker executors, models, capacity, and authentication evidence before choosing delegation",
      "scope": "worker"
    },
    {
      "name": "plan_execution",
      "description": "Resolve work roles into allowed machine/model pools; reports blockers and leaves task choices to the parent agent",
      "scope": "worker"
    },
    {
      "name": "agent_setup",
      "description": "Inspect a client-neutral parent, configure child worker roles and providers, and guide fleet and billing setup without exposing secrets",
      "scope": "admin"
    },
    {
      "name": "skill_inspect",
      "description": "Read shipped skills and effective project instructions, including content and version hashes",
      "scope": "admin"
    },
    {
      "name": "skill_propose",
      "description": "Draft a project skill change for discussion; does not activate it",
      "scope": "admin"
    },
    {
      "name": "skill_apply",
      "description": "Apply an explicitly accepted project skill proposal; running tasks keep their pinned versions",
      "scope": "admin"
    },
    {
      "name": "skill_history",
      "description": "Inspect the project's saved skill revisions",
      "scope": "admin"
    },
    {
      "name": "skill_rollback",
      "description": "Propose restoring a previous project skill revision for acceptance",
      "scope": "admin"
    },
    {
      "name": "runtime_updates_resume",
      "description": "Resume queued fleet updates after inspecting a failed rollout",
      "scope": "admin"
    },
    {
      "name": "runtime_reconcile",
      "description": "Inspect and adopt a provider resource after uncertain provisioning",
      "scope": "admin"
    },
    {
      "name": "runtime_list",
      "description": "List workers and managed runtimes by name and status",
      "scope": "admin"
    },
    {
      "name": "runtime_rename",
      "description": "Assign a memorable name to a runtime",
      "scope": "admin"
    },
    {
      "name": "runtime_forget",
      "description": "Remove a disconnected runtime entry without deleting its host",
      "scope": "admin"
    },
    {
      "name": "runtime_inspect",
      "description": "Inspect managed runtime",
      "scope": "admin"
    },
    {
      "name": "runtime_create",
      "description": "Create managed runtime",
      "scope": "admin"
    },
    {
      "name": "runtime_destroy",
      "description": "Destroy managed runtime",
      "scope": "admin"
    },
    {
      "name": "runtime_restart",
      "description": "Restart managed runtime",
      "scope": "admin"
    },
    {
      "name": "runtime_update",
      "description": "Request a signed runtime update on a connected worker by name or ID; inspect the operation until completion",
      "scope": "admin"
    },
    {
      "name": "runtime_stop",
      "description": "Stop managed runtime",
      "scope": "admin"
    },
    {
      "name": "runtime_start",
      "description": "Start managed runtime",
      "scope": "admin"
    },
    {
      "name": "runtime_config_get",
      "description": "Read runtime concurrency",
      "scope": "admin"
    },
    {
      "name": "runtime_config_set",
      "description": "Change runtime concurrency without interrupting work",
      "scope": "admin"
    },
    {
      "name": "runtime_drain",
      "description": "Stop new dispatches",
      "scope": "admin"
    },
    {
      "name": "runtime_resume",
      "description": "Resume runtime dispatch",
      "scope": "admin"
    },
    {
      "name": "runtime_status",
      "description": "Inspect version and drain status",
      "scope": "admin"
    },
    {
      "name": "account_status",
      "description": "Inspect account capacity and freshness",
      "scope": "admin"
    },
    {
      "name": "account_observe",
      "description": "Record an explicit account quota observation",
      "scope": "admin"
    },
    {
      "name": "management_events",
      "description": "Read runtime management events",
      "scope": "admin"
    },
    {
      "name": "management_ack",
      "description": "Acknowledge management events",
      "scope": "admin"
    },
    {
      "name": "integrate_child",
      "description": "Import a completed child and verify the combined result",
      "scope": "worker"
    },
    {
      "name": "environments",
      "description": "Inspect owned application environments and cleanup state",
      "scope": "worker"
    },
    {
      "name": "refresh_bundles",
      "description": "Explicitly refresh selected application bundle versions",
      "scope": "admin"
    },
    {
      "name": "delegate_task",
      "description": "Create a bounded child task; id is required for retry deduplication",
      "scope": "worker"
    },
    {
      "name": "list_children",
      "description": "Inspect immediate child tasks",
      "scope": "worker"
    },
    {
      "name": "list_skills",
      "description": "List the task’s pinned skill names and hashes",
      "scope": "worker"
    },
    {
      "name": "read_skill",
      "description": "Read a pinned skill or relative resource; default path SKILL.md, paged by byte offset",
      "scope": "worker"
    },
    {
      "name": "read_context",
      "description": "Read original source context using bounded pages",
      "scope": "worker"
    },
    {
      "name": "update_context",
      "description": "Root caller: append authoritative context with provenance and invalidate stale acceptance",
      "scope": "admin"
    },
    {
      "name": "pending_questions",
      "description": "Read questions addressed to this caller",
      "scope": "worker"
    },
    {
      "name": "escalate_question",
      "description": "Forward the original question one level to your parent",
      "scope": "worker"
    },
    {
      "name": "ack_events",
      "description": "Acknowledge durable events through a consumer cursor",
      "scope": "admin"
    },
    {
      "name": "propose_steps",
      "description": "Planner-only: propose parallel or dependent steps. Runtime validates and inserts them before the planning step’s pending successors",
      "scope": "worker"
    },
    {
      "name": "request_question",
      "description": "Ask for required information; hold this worker while its caller answers or escalates",
      "scope": "worker"
    },
    {
      "name": "metrics",
      "description": "Reported usage, cost, latency, retries, and coordination overhead",
      "scope": "admin"
    },
    {
      "name": "decisions",
      "description": "Read paginated daemon-owned advisory decisions for one task",
      "scope": "admin"
    },
    {
      "name": "reviews",
      "description": "Read advisory work-product reviews, evidence coverage, and freshness for one task",
      "scope": "admin"
    },
    {
      "name": "submit_task",
      "description": "Submit work with a stable request_id for safe retries, optional runtime and execution pool; returns durable task id",
      "scope": "admin"
    },
    {
      "name": "remote_result",
      "description": "Get a local checkout of completed remote work for review",
      "scope": "admin"
    },
    {
      "name": "inspect",
      "description": "Inspect a task including steps, attempts, workers, questions, and integration",
      "scope": "admin"
    },
    {
      "name": "summary",
      "description": "Terminal summary: status, step outcomes, integrated head, delivery outcome",
      "scope": "admin"
    },
    {
      "name": "run_integrate_main",
      "description": "Merge the expected current main into a durable Run branch",
      "scope": "admin"
    },
    {
      "name": "run_main_head",
      "description": "Read the current remote release base commit for a Run",
      "scope": "admin"
    },
    {
      "name": "run_reconcile",
      "description": "Fast-forward a Run branch from authorized external commits",
      "scope": "admin"
    },
    {
      "name": "run_recover_step",
      "description": "Validate and commit stranded agent work for a failed local step, then resume its Run",
      "scope": "admin"
    },
    {
      "name": "run_unpin_account",
      "description": "Release a stopped Run's account pin to use its project's granted account pool",
      "scope": "admin"
    },
    {
      "name": "run_checkpoint",
      "description": "Validate and record an exact Run branch checkpoint",
      "scope": "admin"
    },
    {
      "name": "run_publish",
      "description": "Publish a verified Run checkpoint without force push",
      "scope": "admin"
    },
    {
      "name": "run_preview_retry",
      "description": "Reconcile and retry a held exact preview publication job",
      "scope": "admin"
    },
    {
      "name": "run_events",
      "description": "Read versioned, project-scoped Run events",
      "scope": "admin"
    },
    {
      "name": "run_diagnostics",
      "description": "Read bounded structural Run diagnostics without secret or transcript data",
      "scope": "worker"
    },
    {
      "name": "list_tasks",
      "description": "List submitted tasks and their status",
      "scope": "admin"
    },
    {
      "name": "events",
      "description": "Read ordered activity events",
      "scope": "admin"
    },
    {
      "name": "cancel",
      "description": "Cancel a task",
      "scope": "admin"
    },
    {
      "name": "resume",
      "description": "Resume paused or failed work; interrupted processes require reconciliation",
      "scope": "admin"
    },
    {
      "name": "answer_question",
      "description": "Answer a pending question",
      "scope": "worker"
    },
    {
      "name": "register_worker",
      "description": "Create task-scoped worker identity and token",
      "scope": "admin"
    },
    {
      "name": "register_workspace",
      "description": "Register path, branch and base before editing",
      "scope": "worker"
    },
    {
      "name": "send_message",
      "description": "Persist a message to worker id, group:name, or task. Supply id for deduplication",
      "scope": "worker"
    },
    {
      "name": "steer",
      "description": "Operator: post a message to workers on a task; omit worker to fan out, or set worker to target one",
      "scope": "admin"
    },
    {
      "name": "read_messages",
      "description": "Read unacknowledged messages; after is an optional sequence cursor",
      "scope": "worker"
    },
    {
      "name": "acknowledge_messages",
      "description": "Acknowledge an explicit list of message ids",
      "scope": "worker"
    },
    {
      "name": "list_workers",
      "description": "List worker identities and status",
      "scope": "worker"
    },
    {
      "name": "set_worker_status",
      "description": "Set idle, working, blocked, or stopped status",
      "scope": "worker"
    },
    {
      "name": "join_channel",
      "description": "Join a named group channel",
      "scope": "worker"
    },
    {
      "name": "claim_paths",
      "description": "Acquire exclusive paths in a registered workspace",
      "scope": "worker"
    },
    {
      "name": "transfer_claim",
      "description": "Atomically hand off a claim to another worker",
      "scope": "worker"
    },
    {
      "name": "release_claims",
      "description": "Release claims after worker is stopped or idle",
      "scope": "admin"
    },
    {
      "name": "reconcile_worker",
      "description": "Confirm an interrupted process exited, then make step resumable",
      "scope": "admin"
    },
    {
      "name": "add_steps",
      "description": "Append validated steps as a durable workflow revision",
      "scope": "admin"
    },
    {
      "name": "put_artifact",
      "description": "Store content with input fingerprint and verification status",
      "scope": "worker"
    },
    {
      "name": "get_artifact",
      "description": "Read a task artifact by hash",
      "scope": "worker"
    },
    {
      "name": "reuse_artifact",
      "description": "Find a verified artifact with identical input fingerprint",
      "scope": "worker"
    },
    {
      "name": "add_knowledge",
      "description": "Store fact, decision or evidence with provenance",
      "scope": "worker"
    },
    {
      "name": "knowledge",
      "description": "Read task knowledge or query bounded task/family notebook pages",
      "scope": "worker"
    },
    {
      "name": "knowledge_edges",
      "description": "Read bounded relationship pages for a visible knowledge record",
      "scope": "worker"
    },
    {
      "name": "knowledge_options",
      "description": "Read the task's knowledge topics, scopes, and task-specific schemas",
      "scope": "worker"
    },
    {
      "name": "retract_knowledge",
      "description": "Withdraw an owned knowledge claim while retaining its provenance",
      "scope": "worker"
    },
    {
      "name": "link_knowledge",
      "description": "Link two knowledge records with a relationship",
      "scope": "worker"
    },
    {
      "name": "integrate",
      "description": "Integrate a committed worker worktree; optional validation argv",
      "scope": "admin"
    }
  ]
}
