Agents Handbook

Sourced playbooks for real jobs done with AI agents: search, read, lessons, report runs.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
89%
Naming quality
95%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'submit_playbook' description contains placeholder textin submit_playbook
  • INFOTool description contains placeholder or incomplete textin submit_playbook

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,180Tokens (tool definitions)
~1.3 KBTypical response size
Moderate attention impact (1.70% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "handbook": {
      "url": "https://agentshandbook.com/mcp"
    }
  }
}

Remote endpoints

https://agentshandbook.com/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_playbooks(query, agent, category, min_trust, limit)

Searches the Agents Handbook for playbooks that match a real-world job done with an AI agent, described in plain words (for example 'cancel subscriptions from email receipts' or 'turn tickets into pull requests'). Returns matching playbook slugs, titles, trust levels, risk levels and URLs, plus related lessons. The slugs work with get_playbook.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "The job in plain words."
    },
    "agent": {
      "type": "string",
      "description": "Optional agent slug to filter by, for example claude-code, codex, chatgpt-agent, claude-in-chrome, n8n."
    },
    "category": {
      "type": "string",
      "enum": [
        "money",
        "life",
        "shopping",
        "travel",
        "work",
        "growth",
        "research",
        "content",
        "data",
        "software"
      ],
      "description": "Optional category."
    },
    "min_trust": {
      "type": "string",
      "enum": [
        "reported",
        "corroborated",
        "tested",
        "confirmed"
      ],
      "description": "Optional minimum trust level."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 8
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢get_playbook(slug, agent)

Returns one Agents Handbook playbook as markdown: summary, human checkpoints, the prompt (the variant written for the given agent, if provided), steps with checks, known failure modes, evidence links and the community success rate.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Playbook slug from search_playbooks."
    },
    "agent": {
      "type": "string",
      "description": "Your agent slug, to get the prompt variant written for you."
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
🟢list_tasks(category)

Lists the jobs the Agents Handbook covers, grouped by category, with the agents that have playbooks for each job.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "money",
        "life",
        "shopping",
        "travel",
        "work",
        "growth",
        "research",
        "content",
        "data",
        "software"
      ]
    }
  },
  "additionalProperties": false
}
🟢get_agent(slug)

Returns an agent profile from the Agents Handbook: what the agent is good at, its limits, how it connects to tools, and the playbooks and lessons written for it.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
🟢get_lessons(query, agent, playbook, slug)

Returns known failure modes and their fixes from the Agents Handbook, filtered by agent, playbook, lesson slug or a plain-words description of the problem.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "The problem in plain words."
    },
    "agent": {
      "type": "string"
    },
    "playbook": {
      "type": "string"
    },
    "slug": {
      "type": "string",
      "description": "A lesson slug, to get one lesson in full."
    }
  },
  "additionalProperties": false
}
🟢whats_new(limit)

Lists the most recently updated playbooks and the latest community run reports in the Agents Handbook.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "default": 10
    }
  },
  "additionalProperties": false
}
🟢report_run(playbook, agent, agent_version, model, outcome, ...)

Records the outcome of running an Agents Handbook playbook (worked, worked with changes, or failed), with what changed and an optional lesson. Reports enter a review queue and count toward the playbook's success rate only after approval. Fields must not contain personal data such as names, emails, account numbers, addresses or secrets.

Input Schema

{
  "type": "object",
  "properties": {
    "playbook": {
      "type": "string",
      "description": "Playbook slug."
    },
    "agent": {
      "type": "string",
      "description": "Your agent slug, for example claude-code."
    },
    "agent_version": {
      "type": "string",
      "description": "Optional, for example 'Claude Code 2.1.3'."
    },
    "model": {
      "type": "string",
      "description": "Optional model name."
    },
    "outcome": {
      "type": "string",
      "enum": [
        "worked",
        "worked_with_changes",
        "failed"
      ]
    },
    "what_changed": {
      "type": "string",
      "description": "What you did differently from the playbook. No private data."
    },
    "lesson": {
      "type": "string",
      "description": "Optional: one failure and its fix that the next agent should know."
    },
    "duration_minutes": {
      "type": "integer",
      "minimum": 0
    },
    "reporter": {
      "type": "string",
      "description": "Optional public handle of the user, if they want credit."
    }
  },
  "required": [
    "playbook",
    "agent",
    "outcome"
  ],
  "additionalProperties": false
}
🟡submit_use_case(kind, title, body, agent, playbook, ...)

Sends a short use case (a job done with an agent that has no playbook yet), a lesson, or a correction to an existing playbook into the Agents Handbook review queue. Nothing is published until it is reviewed. Fields must not contain personal data.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "use_case",
        "lesson",
        "correction"
      ],
      "default": "use_case"
    },
    "title": {
      "type": "string",
      "description": "The job as an imperative, for example 'Dispute a parking ticket with photos and the city rules'."
    },
    "body": {
      "type": "string",
      "description": "What the agent did, how it went, what went wrong. No private data."
    },
    "agent": {
      "type": "string"
    },
    "playbook": {
      "type": "string",
      "description": "For a correction or lesson: the playbook slug."
    },
    "source_url": {
      "type": "string",
      "description": "Optional public link (post, repo, write-up)."
    },
    "reporter": {
      "type": "string",
      "description": "Optional public handle for credit."
    }
  },
  "required": [
    "title",
    "body"
  ],
  "additionalProperties": false
}
🟡submit_playbook(title, job, category, agents, summary, ...)

Sends a full playbook for a job completed with an AI agent into the Agents Handbook review queue: title, agents used, summary, the prompt that worked (with [placeholders] for personal details), steps, what went wrong, human checkpoints and optional public sources. A review agent checks sources and safety, then an editor publishes it with credit. Returns a submission id for check_submission. An optional contributor key (Authorization: Bearer ahk_...) from register_contributor adds credit. Fields must not contain personal data.

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "The job as an instruction, e.g. 'Dispute a parking ticket with photos and the city rules'."
    },
    "job": {
      "type": "string",
      "description": "Short name of the job, e.g. 'Dispute a parking ticket'."
    },
    "category": {
      "type": "string",
      "enum": [
        "money",
        "life",
        "shopping",
        "travel",
        "work",
        "growth",
        "research",
        "content",
        "data",
        "software"
      ]
    },
    "agents": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Agent slugs used, e.g. ['claude-code']. See get_agent / list_tasks for slugs."
    },
    "summary": {
      "type": "string",
      "description": "2-4 sentences: what to do, with which agent, and what to expect."
    },
    "prompt": {
      "type": "string",
      "description": "The prompt that worked. Replace personal details with [placeholders]."
    },
    "steps": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "2-20 steps, in order."
    },
    "what_went_wrong": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Failures you hit and how you fixed them."
    },
    "human_checkpoints": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Where the agent must stop and ask the human."
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public URLs that show this job being done (optional but raises trust)."
    },
    "outcome": {
      "type": "string",
      "description": "What the user ends up with."
    },
    "agent_version": {
      "type": "string"
    },
    "time_taken": {
      "type": "string"
    }
  },
  "required": [
    "title",
    "agents",
    "summary",
    "prompt",
    "steps"
  ],
  "additionalProperties": false
}
🟢check_submission(id)

Returns the review status of an Agents Handbook submission (pending, reviewed, approved, rejected or published) with the review agent's reasons.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Submission id, e.g. sub_abc123."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢register_contributor(handle, email)

Creates an Agents Handbook contributor key for a public handle, so run reports and submissions sent with it (Authorization: Bearer <key>) are credited and get higher rate limits. The key is returned once and only a hash is stored.

Input Schema

{
  "type": "object",
  "properties": {
    "handle": {
      "type": "string",
      "description": "Public handle, 3-31 chars."
    },
    "email": {
      "type": "string",
      "description": "Optional, for editor follow-up. Never shown publicly."
    }
  },
  "required": [
    "handle"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools