← MCP servers · matebenyovszky

AgentPlaybooks

BLOCKgrade D · trust 64/100

Equip once. Run anywhere. Portable AI agents and toolkits—no vendor lock-in.

agentaimcpmcp servermcp server storemcp servers directoryplaybookplaybooks

Overview

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-code
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]
claude-desktop
{
  "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.

ToolRiskDescription
CloudflarereadCloudflare
DemoreadDemo playbook
FilesystemreadLocal filesystem access
GmailwriteRead and send mail as the authorising user.
LinkedInwritePost and read as the authorising member.
MemoryreadPersistent key-value memory storage
PersonasreadAI personalities for this playbook
ResearchreadResearch tools
SchemareadDatabase schema information
ScreenshotsreadBrowser screenshots
SkillsreadAvailable capabilities and tasks
SupabasereadSupabase
XwritePost and read as the authorising account.
add_observationswriteAdd observations to entities
add_thoughtwriteAdd a thought to the current session
append_insightwriteAdd a business insight to the memo
archive_memoriesreadHide matching memories from normal search and context, retaining them in the longterm tier. Search scope=
branch_thoughtwriteCreate a branch from a thought
brave-searchreadWeb search capabilities via Brave Search API
brave_local_searchreadSearch for local businesses and places
brave_web_searchreadSearch the web using Brave Search
call_connected_toolreadCall a tool on one of this playbook
code-reviewreadUse when: a pull request needs review.
create_directorywriteCreate a new directory
create_entitieswriteCreate new entities in the knowledge graph
create_personawriteSet the playbook
create_playbookwriteCreate 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_relationswriteCreate relationships between entities
create_runwriteCreate 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_skillwriteCreate 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_tablewriteCreate a new table
create_thinking_sessionwriteStart a new thinking session
delete_entitiesdestructiveDelete entities from the graph
delete_mcp_serverdestructiveDisconnect an MCP or OpenAPI server from this playbook. The remote server is not shut down; only this playbook
delete_memorydestructivePermanently 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_observationsdestructiveDelete observations from entities
delete_personadestructiveReset the playbook
delete_relationsdestructiveDelete relationships
delete_rundestructivePermanently 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_secretdestructivePermanently 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_skilldestructivePermanently 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.
deploywriteDeploy the service.
describe_tablereadGet schema information for a table
everythingreadSearch for files using Everything search engine (Windows)
execute_sqlwriteRun SQL
fallbackread
fetchreadFetch and convert web pages to markdown for easy reading
filesystemwriteRead, write, and manage local filesystem operations
find_toolsreadSearch this playbook
get_canvas_tocreadGet 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_timereadGet current time in a specified timezone
get_file_inforeadGet file metadata
get_memory_contextreadGet 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_historyreadRead 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_treereadGet 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_playbookreadGet 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_summaryreadGet a summary of the thinking session
get_skillreadReturn 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_directoryreadList directory contents
list_mcp_serversreadList 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_runsreadList 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_versionsreadList 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_tablesreadList all tables in the database
lock_canvas_sectionwriteLock 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.
memoryreadPersistent memory storage using a local JSON file knowledge graph
move_filewriteMove or rename a file
open_nodesreadOpen specific nodes by name
patch_canvas_sectionwriteEdit 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.
postgresreadQuery PostgreSQL databases with read-only access
promote_memoryreadRestore a memory
puppeteerreadBrowser automation for web scraping and testing
puppeteer_clickreadClick an element on the page
puppeteer_evaluatewriteExecute JavaScript in the browser
puppeteer_fillreadFill out a form field
puppeteer_hoverreadHover over an element
puppeteer_navigatereadNavigate to a URL
puppeteer_screenshotreadTake a screenshot of the page
puppeteer_selectreadSelect an option from a dropdown
querywriteExecute a read-only SQL query
read_canvasreadRead 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_filereadRead contents of a file
read_memoryreadRead one memory entry by key
read_querywriteExecute a read-only SQL query
releasereadPrepare a release.
revise_thoughtreadRevise an existing thought
rollback_skillreadRollback 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_secretreadRotate 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.
searchreadCurated search
search_filesreadSearch for files matching a pattern
search_memoryreadSearch memory keys, JSON values, descriptions and summaries. Defaults to current, non-archived memories. scope=
search_nodesreadSearch for nodes in the knowledge graph
sequential-thinkingreadDynamic problem-solving through structured thought sequences
sqlitereadQuery SQLite databases
supabase__execute_sqlwriteExecutes raw SQL in the Postgres database
supabase__list_tablesreadLists all SQL tables in one or more schemas
timereadGet current time in various timezones
triagereadTriage bugs.
unlock_canvas_sectionwriteUnlock 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_serverwriteUpdate a connected MCP or OpenAPI server
update_personawriteUpdate the singleton persona
update_playbookwriteUpdate this playbook
update_runwriteUpdate a workflow run
update_skillwriteUpdate 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_statuswriteUpdate 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.
widereadA long description over two lines.
write_filewriteWrite contents to a file
write_memorywriteCreate 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_querydestructiveExecute an INSERT, UPDATE, or DELETE query
xread

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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (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)

HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/app/api/mcp/[guid]/route.ts:2465
hostname === "metadata.google.internal" ||
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/app/api/playbooks/[guid]/secrets/app.ts:566
hostname === "metadata.google.internal" ||
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/lib/mcp/federation.ts:772
if (host === "localhost" || host.endsWith(".localhost") || host.endsWith(".local") || host.endsWith(".internal") || host === "metadata.google.internal") {
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/cli/dist/agentplaybooks.mjs:8968
console.log(`  ${plan.manifest.spec.secrets.length} secret reference(s): ${plan.manifest.spec.secrets.map((secret) => secret.name).join(", ")}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/cli/dist/agentplaybooks.mjs:10182
console.log(`  ${secret.name} (${secret.value.length} characters)`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/cli/dist/agentplaybooks.mjs:10267
console.log(`About to store a secret in the playbook vault at ${url}:`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/cli/dist/agentplaybooks.mjs:10317
console.log(`${stored.has(secret.name) ? "Rotated" : "Stored"} ${secret.name}.`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/cli/src/cli.js:272
console.log(`  ${secret.name} (${secret.value.length} characters)`);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/cli/dist/agentplaybooks.mjs:8064
const url = new URL(request2.url, "http://127.0.0.1");
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/cli/dist/agentplaybooks.mjs:8161
const redirectUri = `http://127.0.0.1:${port}/callback`;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/cli/src/auth-command.js:94
const redirectUri = `http://127.0.0.1:${port}/callback`;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/cli/src/oauth.js:113
const url = new URL(request.url, "http://127.0.0.1");
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_entities, delete_mcp_server, delete_memory, delete_observations, delete_persona, delete_relations, delete_run, delete_secret, delete_skill, write_query
Why it matters. 10 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/app/api/manage/playbooks/route.ts:2
import { requireAuth } from "../../_shared/auth";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/app/api/playbooks/[guid]/route.ts:2
import { getServiceSupabase } from "../../_shared/supabase";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/app/api/playbooks/[guid]/route.ts:3
import { getAuthenticatedUser } from "../../_shared/auth";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/app/api/playbooks/[guid]/route.ts:4
import { getPlaybookAccessRole } from "../../_shared/guards";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/app/api/playbooks/[guid]/route.ts:12
} from "../../_shared/formatters";
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/lib/oauth-exchange.test.ts:77
"http://169.254.169.254/callback",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/cli/test/oauth.test.js:48
redirectUri: "http://127.0.0.1:5555/callback",
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
packages/cli/dist/agentplaybooks.mjs:2607
const str = atob(src.replace(/[\n\r]/g, ""));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/app/api/_shared/mcp-modern.ts:62
return new TextDecoder().decode(Uint8Array.from(atob(match[1]), (char) => char.charCodeAt(0)));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/lib/crypto.ts:62
const binary = atob(base64);
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/lib/mcp/federation.ts:839
return decodeURIComponent(escape(atob(padded)));
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@supabase/supabase-js, clsx, framer-motion, hono, jszip, lucide-react, next-intl, tailwind-merge
Why it matters. 20 dependency range(s) float
Fix. pin exact versions or ship a lockfile

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

DateSourceVerdictGradeScoreChange
2026-09-18933131272c1dBLOCKD64first 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