AgentPlaybooks
BLOCKgrade D · trust 64/100Equip once. Run anywhere. Portable AI agents and toolkits—no vendor lock-in.
agentaimcpmcp servermcp server storemcp servers directoryplaybookplaybooksOverview
From the repository's own README, as read at the audited commit.
# AgentPlaybooks**One playbook, every agent.** A portable operating environment for AI agents — persona, skills, MCP servers, project instructions, and memory in one source of truth.Keep your agents yours. AgentPlaybooks stores skills, personas, MCP servers, project instructions, and memory in one portable playbook, so you can switch platforms, use several at once, or self-host without vendor lock-in.Your agent setup stays in sync across Claude, ChatGPT, Cursor, Codex, Gemini, local models, and future platforms. The playbook is the portable source of truth—not any single vendor or editor.## Highlights**What a playbook holds**- Persona: 1 per playbook, stored directly on the playbook record- Instructions: always-on project rules — the `AGENTS.md` / `CLAUDE.md` content- Skills: JSON schema definitions plus optional SKILL.md content- Skill attachments: secure file storage for code, prompts, and docs- MCP servers: tools and resources in Model Context Protocol format- Memory: key-value store with tags and descriptions- Canvas: versioned markdown work documents, scoped to a playbook run, so several teams can execute the same playbook without sharing work products**Credentials, without handing them over**- Secrets vault: AES-256-GCM, per-user derived keys. Agents reference a secret by name and the platform injects it server-side (`use_secret`), so the value never enters an agent's context. Optional per-secret host allow-lists.- Federation: other MCP servers and OpenAPI services become tools on your playbook, with their credentials resolved from that same vault by name- Audit trail: every federated call and every vault operation, refusals included**Getting it into your tools**- CLI + Claude Code plugin: audit your local agent config, then sync one playbook to Claude Code, Cursor, ChatGPT/Codex, Google Antigravity, Grok Bot and Hermes- Publishing: a public playbook's skills are served as plain markdown over HTTP at `/.well-known/skills/` — installable from a URL, no re
Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add cli --env AGENTPLAYBOOKS_API_KEY=${AGENTPLAYBOOKS_API_KEY} --env AGENTPLAYBOOKS_OAUTH_CLIENT_ID=${AGENTPLAYBOOKS_OAUTH_CLIENT_ID} --env AGENTPLAYBOOKS_PLAYBOOK_KEY=${AGENTPLAYBOOKS_PLAYBOOK_KEY} --env GITHUB_TOKEN=${GITHUB_TOKEN} -- npx -y @agentplaybooks/[email protected]{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"@agentplaybooks/[email protected]"
],
"env": {
"AGENTPLAYBOOKS_API_KEY": "${AGENTPLAYBOOKS_API_KEY}",
"AGENTPLAYBOOKS_OAUTH_CLIENT_ID": "${AGENTPLAYBOOKS_OAUTH_CLIENT_ID}",
"AGENTPLAYBOOKS_PLAYBOOK_KEY": "${AGENTPLAYBOOKS_PLAYBOOK_KEY}",
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}Exposed tools (109) 64 read · 35 write · 10 destructive
Blast radius: 10 tools can delete or overwrite. An agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
Cloudflare | read | Cloudflare |
Demo | read | Demo playbook |
Filesystem | read | Local filesystem access |
Gmail | write | Read and send mail as the authorising user. |
LinkedIn | write | Post and read as the authorising member. |
Memory | read | Persistent key-value memory storage |
Personas | read | AI personalities for this playbook |
Research | read | Research tools |
Schema | read | Database schema information |
Screenshots | read | Browser screenshots |
Skills | read | Available capabilities and tasks |
Supabase | read | Supabase |
X | write | Post and read as the authorising account. |
add_observations | write | Add observations to entities |
add_thought | write | Add a thought to the current session |
append_insight | write | Add a business insight to the memo |
archive_memories | read | Hide matching memories from normal search and context, retaining them in the longterm tier. Search scope= |
branch_thought | write | Create a branch from a thought |
brave-search | read | Web search capabilities via Brave Search API |
brave_local_search | read | Search for local businesses and places |
brave_web_search | read | Search the web using Brave Search |
call_connected_tool | read | Call a tool on one of this playbook |
code-review | read | Use when: a pull request needs review. |
create_directory | write | Create a new directory |
create_entities | write | Create new entities in the knowledge graph |
create_persona | write | Set the playbook |
create_playbook | write | Create a new playbook container for a singleton persona, skills, and memory. Each call inserts a new playbook; it does not upsert by name. Requires playbooks:write or full permission. Use update_playbook to change an existing playbook, not this tool. |
create_relations | write | Create relationships between entities |
create_run | write | Create a workflow run so this playbook can be applied immediately with isolated context and canvas artifacts. Requires canvas:write or full permission. Use list_runs to inspect existing runs (there is no get_run) and update_run to change status. |
create_skill | write | Create a new skill for this playbook. Use this to expand capabilities. Requires full or skills:write permission. Use update_skill to change an existing skill and list_skills to check for name collisions first. |
create_table | write | Create a new table |
create_thinking_session | write | Start a new thinking session |
delete_entities | destructive | Delete entities from the graph |
delete_mcp_server | destructive | Disconnect an MCP or OpenAPI server from this playbook. The remote server is not shut down; only this playbook |
delete_memory | destructive | Permanently delete a memory and its saved history. Requires memory:write or full permission. To hide an entry while retaining its content, use archive_memories instead. |
delete_observations | destructive | Delete observations from entities |
delete_persona | destructive | Reset the playbook |
delete_relations | destructive | Delete relationships |
delete_run | destructive | Permanently delete a workflow run and its isolated canvas artifacts. This cannot be undone. Requires canvas:write or full permission. Use update_run with status=archived to keep artifacts, and delete_playbook only when the whole playbook should go. |
delete_secret | destructive | Permanently delete a secret. Cannot be undone. Requires secrets:write or full permission. Use rotate_secret to replace the value without removing the name, and list_secrets to confirm the name first. This does not revoke the credential at the upstream provider. |
delete_skill | destructive | Permanently delete a skill from this playbook. This cannot be undone except by recreating the skill. Requires full or skills:write permission. Use rollback_skill to restore a previous version instead of deleting, and update_skill to change content in place. |
deploy | write | Deploy the service. |
describe_table | read | Get schema information for a table |
everything | read | Search for files using Everything search engine (Windows) |
execute_sql | write | Run SQL |
fallback | read | |
fetch | read | Fetch and convert web pages to markdown for easy reading |
filesystem | write | Read, write, and manage local filesystem operations |
find_tools | read | Search this playbook |
get_canvas_toc | read | Get the table of contents for a canvas document. Returns section IDs, headings, and levels for navigation and patch_canvas_section. Read-only. Use read_canvas for full markdown and list_canvas to discover slugs. |
get_current_time | read | Get current time in a specified timezone |
get_file_info | read | Get file metadata |
get_memory_context | read | Get a context-optimized view of memories: full working memory, summaries for contextual, and keys only for longterm. Read-only. Use this to pack a prompt; use read_memory for one key, search_memory to filter, and get_memory_tree for parent-child task graphs. |
get_memory_history | read | Read previous versions of a memory by its current key, including original memory_at and saved contents. History is excluded from normal search. To restore a version, write its contents and memory_at with write_memory and is_archived=false. Read-only. |
get_memory_tree | read | Get a hierarchical tree of memories showing parent-child relationships and per-node status. Read-only. Use this to visualize task graphs; use search_memory to filter flat lists, get_memory_context for a tiered prompt view, and read_memory for a single key |
get_playbook | read | Get a playbook with its singleton persona, skills, connected MCP servers, and memory. This is the only persona retrieval tool; there is no get_persona. Read-only. Requires playbooks:read or full permission. Use list_playbooks to discover IDs first, and get_skill when you need one skill |
get_session_summary | read | Get a summary of the thinking session |
get_skill | read | Return the full definition of one skill in this playbook, including name, description, content, priority, and attachments. Identify the skill with skill_id, which may be a UUID or the skill |
list_directory | read | List directory contents |
list_mcp_servers | read | List the MCP and OpenAPI servers connected to this playbook, including transport metadata and discovered capability counts. Read-only. There is no get_mcp_server; this list is the detail view. Do not use this to invoke a connected tool—use call_connected_tool. |
list_runs | read | List workflow runs for this playbook. Runs isolate canvas artifacts and execution context. Read-only. There is no get_run; this list returns the run records. Use create_run to start isolated canvas context and list_canvas to see documents in a run. |
list_skill_versions | read | List historical versions of a skill for auditing or rollback. Read-only. Use this before rollback_skill; use get_skill for the current definition and list_skills for every skill in the playbook. |
list_tables | read | List all tables in the database |
lock_canvas_section | write | Lock a section for exclusive editing so other agents cannot modify it. Requires canvas:write or full permission. Always unlock_canvas_section when finished. Do not use this to edit content; pair it with patch_canvas_section. |
memory | read | Persistent memory storage using a local JSON file knowledge graph |
move_file | write | Move or rename a file |
open_nodes | read | Open specific nodes by name |
patch_canvas_section | write | Edit a specific section of a canvas document. Parallel-safe: only the targeted section is updated. Requires canvas:write or full permission. Lock the section first in multi-agent scenarios. Use write_canvas only when replacing the whole document, and get_canvas_toc to obtain section_id. |
postgres | read | Query PostgreSQL databases with read-only access |
promote_memory | read | Restore a memory |
puppeteer | read | Browser automation for web scraping and testing |
puppeteer_click | read | Click an element on the page |
puppeteer_evaluate | write | Execute JavaScript in the browser |
puppeteer_fill | read | Fill out a form field |
puppeteer_hover | read | Hover over an element |
puppeteer_navigate | read | Navigate to a URL |
puppeteer_screenshot | read | Take a screenshot of the page |
puppeteer_select | read | Select an option from a dropdown |
query | write | Execute a read-only SQL query |
read_canvas | read | Read a canvas document. Returns full content, sections structure, and metadata. Optionally read a specific section by ID. Read-only. Use get_canvas_toc to discover section IDs before patch_canvas_section, and list_canvas to find slugs. |
read_file | read | Read contents of a file |
read_memory | read | Read one memory entry by key |
read_query | write | Execute a read-only SQL query |
release | read | Prepare a release. |
revise_thought | read | Revise an existing thought |
rollback_skill | read | Rollback a skill to a previous version recorded by list_skill_versions. The current definition is replaced and cannot be recovered except by rolling forward to another stored version. Requires full or skills:write permission. Do not use delete_skill when you only need to revert. |
rotate_secret | read | Rotate an existing secret with a new value. The old value is permanently replaced and cannot be recovered. Requires secrets:write or full permission. Use store_secret to create a name that does not exist yet, and delete_secret to remove the secret entirely. |
search | read | Curated search |
search_files | read | Search for files matching a pattern |
search_memory | read | Search memory keys, JSON values, descriptions and summaries. Defaults to current, non-archived memories. scope= |
search_nodes | read | Search for nodes in the knowledge graph |
sequential-thinking | read | Dynamic problem-solving through structured thought sequences |
sqlite | read | Query SQLite databases |
supabase__execute_sql | write | Executes raw SQL in the Postgres database |
supabase__list_tables | read | Lists all SQL tables in one or more schemas |
time | read | Get current time in various timezones |
triage | read | Triage bugs. |
unlock_canvas_section | write | Unlock a previously locked canvas section so other agents can edit it. Requires canvas:write or full permission. Use lock_canvas_section to take the lock; this tool does not change section content. |
update_mcp_server | write | Update a connected MCP or OpenAPI server |
update_persona | write | Update the singleton persona |
update_playbook | write | Update this playbook |
update_run | write | Update a workflow run |
update_skill | write | Update an existing skill in this playbook. Requires full or skills:write permission. Use create_skill to add a skill, list_skill_versions before a risky edit, and rollback_skill to restore a previous version. Do not use this to delete a skill. |
update_task_status | write | Update the status of a task node in a hierarchical plan. When all children of a parent are completed, the parent is auto-updated. Returns the current subtree state. Requires memory:write or full permission. Use create_task_graph to build the plan, not this tool. |
wide | read | A long description over two lines. |
write_file | write | Write contents to a file |
write_memory | write | Create or update a memory by key; previous contents are saved automatically and readable with get_memory_history. memory_at is optional and defaults to this save |
write_query | destructive | Execute an INSERT, UPDATE, or DELETE query |
x | read |
Details
- Source
- matebenyovszky/agentplaybooks
- npm
@agentplaybooks/cli@0.3.0-beta.3- Transports
- streamable-http
- Credentials it reads
AGENTPLAYBOOKS_API_KEYAGENTPLAYBOOKS_OAUTH_CLIENT_IDAGENTPLAYBOOKS_PLAYBOOK_KEYGITHUB_TOKENLOG_TOKENSNEXT_PUBLIC_SUPABASE_ANON_KEYSECRETS_ENCRYPTION_KEYSECRETS_REQUIRE_ALLOWED_HOSTSSUPABASE_SERVICE_ROLE_KEY- License
- MIT
- Stars
- 5 · pushed 0d ago
Trust audit
Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (17 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
hostname === "metadata.google.internal" ||
hostname === "metadata.google.internal" ||
if (host === "localhost" || host.endsWith(".localhost") || host.endsWith(".local") || host.endsWith(".internal") || host === "metadata.google.internal") {console.log(` ${plan.manifest.spec.secrets.length} secret reference(s): ${plan.manifest.spec.secrets.map((secret) => secret.name).join(", ")}`);console.log(` ${secret.name} (${secret.value.length} characters)`);console.log(`About to store a secret in the playbook vault at ${url}:`);console.log(`${stored.has(secret.name) ? "Rotated" : "Stored"} ${secret.name}.`);console.log(` ${secret.name} (${secret.value.length} characters)`);const url = new URL(request2.url, "http://127.0.0.1");
const redirectUri = `http://127.0.0.1:${port}/callback`;const redirectUri = `http://127.0.0.1:${port}/callback`;const url = new URL(request.url, "http://127.0.0.1");
delete_entities, delete_mcp_server, delete_memory, delete_observations, delete_persona, delete_relations, delete_run, delete_secret, delete_skill, write_query
import { requireAuth } from "../../_shared/auth";import { getServiceSupabase } from "../../_shared/supabase";import { getAuthenticatedUser } from "../../_shared/auth";import { getPlaybookAccessRole } from "../../_shared/guards";} from "../../_shared/formatters";
"http://169.254.169.254/callback",
redirectUri: "http://127.0.0.1:5555/callback",
const str = atob(src.replace(/[\n\r]/g, ""));
return new TextDecoder().decode(Uint8Array.from(atob(match[1]), (char) => char.charCodeAt(0)));
const binary = atob(base64);
return decodeURIComponent(escape(atob(padded)));
@supabase/supabase-js, clsx, framer-motion, hono, jszip, lucide-react, next-intl, tailwind-merge
Gates applied: no_behavioural_pass.
Audited 2026-09-18 · audit v0.4.0 · source sha 933131272c1d · full audit: observations/trust-audit/mcp-server/matebenyovszky__agentplaybooks.json · Report an issue or request a re-scan
Audit history
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-18 | 933131272c1d | BLOCK | D | 64 | first audit |
Alternatives
Other servers in the same categories, safer ones first.
Questions
What is the AgentPlaybooks MCP server?
Equip once. Run anywhere. Portable AI agents and toolkits—no vendor lock-in.
What tools does AgentPlaybooks expose?
109 in total: 64 read-only, 35 that write, and 10 that can delete or overwrite (delete_entities, delete_mcp_server, delete_memory, delete_observations, delete_persona). Every one is listed on this page with its risk.
Is AgentPlaybooks safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (64/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 10 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does AgentPlaybooks need?
It reads AGENTPLAYBOOKS_API_KEY, AGENTPLAYBOOKS_OAUTH_CLIENT_ID, AGENTPLAYBOOKS_PLAYBOOK_KEY, GITHUB_TOKEN, LOG_TOKENS, NEXT_PUBLIC_SUPABASE_ANON_KEY, SECRETS_ENCRYPTION_KEY, SECRETS_REQUIRE_ALLOWED_HOSTS and SUPABASE_SERVICE_ROLE_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does AgentPlaybooks run?
It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as @agentplaybooks/cli at 0.3.0-beta.3.
How current is this page?
The grade is for one exact copy of the source (933131272c1d), read on 2026-09-18. The repository is watched and re-audited when it changes.
Provenance: OBSERVED · read 2026-09-18 · job trust-audit-2026-09-18