AgentPlaybooks
Syncs playbooks to GitHub Copilot by generating the necessary platform configuration files, enabling management of instructions, skills, and MCP servers for GitHub Copilot.
Integrates with Google's agent platforms by syncing playbooks to Google Antigravity (.agents/skills) and Gemini CLI, providing instructions, skills, and MCP server configurations.
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.
It is not another skill store or MCP registry. Skills and MCP connections are parts of a playbook; the playbook is the whole job. That holds for agents with a body too: a skill can carry demonstrations, recordings of the task in the order a robot performs them.
Highlights
What a playbook holds
Persona: 1 per playbook, stored directly on the playbook record
Instructions: always-on project rules — the
AGENTS.md/CLAUDE.mdcontentSkills:
SKILL.mddocuments in the Agent Skills format, frontmatter preserved across every clientSkill attachments: bundled scripts, references, and templates, round-tripped by the CLI
Demonstrations: recordings of a skill being performed — YouTube, a pinned URL, or a LeRobot dataset — with timestamped segments, for agents that learn by watching
MCP servers: tools and resources in Model Context Protocol format
Memory: key-value store with tags and descriptions, with a native Hermes memory provider
Hermes Tools plugin: connect playbook skills, MCP/OpenAPI tools, and credentials
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, and an expiry that is enforced: an expired secret is refused by every path that would use it.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
Claude: one plugin brings every playbook in your account into claude.ai, Claude Desktop, Cowork, Claude Code, and mobile, signing in with OAuth — no API key. Or add a single playbook as a custom connector. See AgentPlaybooks in Claude.
Cursor and VS Code: one-click install links for the account or a single playbook — on each playbook's Integrations tab, and in MCP Integration.
CLI + portable Agent Plugin: audit your local agent config, then sync one playbook to Claude Code, Cursor, ChatGPT/Codex, Google Antigravity, Grok Bot and Hermes
Agent Plugins 1.0: install the project plugin or export a single playbook as
plugin.json,mcp.json, and complete Agent Skills directories. Compatible MCP hosts can also discover hosted playbook skills through the MCP Skills extension.Private, versioned central backups are separate from installable plugin exports; packages contain no vault secret values.
Publishing: a public playbook's skills are served as plain markdown over HTTP at
/.well-known/skills/— installable from a URL, no registry, no sign-upExport formats: Agent Plugin ZIP, JSON, OpenAPI, MCP, Anthropic, Markdown
Working with other people
API keys: role-based access control (Viewer, Coworker, Admin)
Team collaboration: one-time editor invites without sharing human credentials or agent API keys
Marketplace: Public and Unlisted playbooks, skills, MCP servers
Theme: system-aware Light and Dark modes
Related MCP server: mcp-canon
Tech Stack
Category | Technology | Purpose |
Framework | App Router, SSR | |
Styling | Utility-first CSS | |
Animation | UI animations | |
Icons | Icon library | |
API | Edge API routing | |
Database | Postgres + Auth + RLS | |
i18n | Localization (en, hu, de, es) | |
Docs | Plain markdown in | Fetched and rendered client-side |
Hosting | Edge deployment | |
Adapter | Next.js on Workers |
Live Demo
Website: https://agentplaybooks.ai — the canonical host; https://apbks.com is a short domain for links
Release distribution checklist: npm, MCP registry, plugin stores, skill discovery, Hermes memory, and verification
Getting Started
Prerequisites
Node.js 22+ (
enginesinpackage.json; CI runs 22)npm 11+ — npm 10 writes a lockfile
npm cithen rejectsSupabase project
Cloudflare account (optional for deployment)
Installation
git clone https://github.com/matebenyovszky/agentplaybooks.git
cd agentplaybooks
npm installStarters
Portable playbooks under examples/ — persona, instructions,
skills, MCP, memory, and vault in a tree you control. Small MIT examples you
can clone or cp -R. Not a marketplace.
Starter | One-liner |
Coding-agent playbook: instructions, two skills, safe MCP stub | |
Review playbook with host-folder drift; the portable store stays canonical | |
Smallest playbook: three skills + instructions; no MCP | |
Playbook with persona, instructions, and skills for Cursor and Hermes hosts |
Install into a host (optional doctor check, then sync):
npx @agentplaybooks/cli@latest doctor examples/coding-agent-baseline
npx @agentplaybooks/cli@latest sync examples/coding-agent-baseline --target=claude,cursor --applySee examples/README.md, the CLI docs, and the Agent Plugins spec.
Environment Variables
Create a .env.local file with:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
# Required for the secrets vault. 32 bytes as 64 hex characters:
# node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Losing it means losing every stored secret — no vault operation can decrypt
# without it, and rotating it invalidates everything already encrypted.
SECRETS_ENCRYPTION_KEY=Optional:
Variable | Effect |
| The canonical origin used for canonical tags, the sitemap and robots. Defaults to |
| Comma-separated CORS allow-list. Replaces the hosted defaults entirely — set it on a self-hosted instance so the project's own domains are not trusted there. |
|
|
Development
npm run devCloudflare Deployment
npm run build:worker
npm run preview
npx wrangler deployCLI, ChatGPT/Codex Plugin, and Claude Code Plugin (packages/cli)
agentplaybooks doctor <project> audits local agent configuration
(instructions, Agent Skills, custom agents, MCP servers, likely hard-coded secrets, drift)
and agentplaybooks sync <project> creates the canonical
agentplaybook.json plus the platform files missing from enabled targets:
Claude Code, Cursor, ChatGPT/Codex, GitHub Copilot, Gemini CLI, Google
Antigravity (.agents/skills), Grok Bot (.agents/skills, which it
discovers natively alongside AGENTS.md), and Hermes Agent (.agents/skills
registered in ~/.hermes/config.yaml, plus that file's mcp_servers: and
SOUL.md).
agentplaybooks plugin export|import round-trips Agent Plugins 1.0 packages;
the only manifest extension carries secret references and bindings, never
secret values.
login / playbooks / pull / push synchronize skills, MCP servers, and the
manifest with a hosted playbook using a user API key. push also creates a
private, versioned cross-platform AI agent configuration backup, including
complete Agent Skills folders and portable custom agents. backups lists
revisions; pull --snapshot can recover an earlier one. Secret values never
move, only references declared in spec.secrets. Mutating commands show a
plan first and require --apply, --yes, or interactive confirmation where
supported. See packages/cli/README.md and the
backup and migration guide.
The same package is a ChatGPT/Codex and Cursor plugin (skill + account MCP). Exact API-key setup and installation commands are in packages/cli/README.md.
The Claude plugin is a separate, lean folder, plugins/agentplaybooks: the
account MCP connector (OAuth, no key), a playbooks skill that works in chat and
Cowork, and doctor / sync commands that run the published CLI through a
pinned npx. It has no bin/ directory, because claude.ai and Cowork refuse a
plugin that has one. Add it on claude.ai under Customize → Plugins → Add
marketplace with matebenyovszky/agentplaybooks, or in Claude Code:
/plugin marketplace add matebenyovszky/agentplaybooks
/plugin install agentplaybooks@agentplaybooksAPI Overview
Public and Unlisted playbook access
Public playbooks are visible to everyone. Unlisted playbooks are accessible via GUID but hidden from search.
GET /api/playbooks/:guid
GET /api/playbooks/:guid?format=openapi
GET /api/playbooks/:guid?format=mcp
GET /api/playbooks/:guid?format=anthropic
GET /api/playbooks/:guid?format=markdown
GET /api/playbooks/:id/personas
GET /api/playbooks/:id/skills
GET /api/playbooks/:guid/memoryNote: :id supports both UUID and GUID for personas and skills.
Authenticated playbook CRUD (session auth)
GET /api/playbooks
POST /api/playbooks
PUT /api/playbooks/:id
DELETE /api/playbooks/:idPersonas (owner or editor)
POST /api/playbooks/:id/personas
PUT /api/playbooks/:id/personas/:pid
DELETE /api/playbooks/:id/personas/:pidSkills (owner or editor)
POST /api/playbooks/:id/skills
PUT /api/playbooks/:id/skills/:sid
DELETE /api/playbooks/:id/skills/:sidMemory writes (API key or owner)
PUT /api/playbooks/:guid/memory/:key
DELETE /api/playbooks/:guid/memory/:keyCanvas work documents
Canvas documents belong to an isolated workflow run, so multiple teams can execute the same playbook without sharing work products. They are long-form markdown artifacts that agents can revise over time. Use memory for durable facts and structured state; use canvas for deliverables such as a PR review, research report, implementation plan, or draft that may be edited passage by passage.
GET /api/playbooks/:guid/runs
POST /api/playbooks/:guid/runs
GET /api/playbooks/:guid/canvas?runId=:runId
POST /api/playbooks/:guid/canvas
GET /api/playbooks/:guid/canvas/:slug?runId=:runId
PUT /api/playbooks/:guid/canvas/:slug?runId=:runId
PATCH /api/playbooks/:guid/canvas/:slug?runId=:runId
DELETE /api/playbooks/:guid/canvas/:slug?runId=:runIdPUT replaces document fields and requires expectedVersion. PATCH performs an incremental
append, prepend, or exact replace operation and also requires expectedVersion. A stale
version returns HTTP 409, preventing two agents from silently overwriting each other's work.
curl -X PATCH 'https://your-domain.com/api/playbooks/abc123/canvas/pr-review?runId=RUN_UUID' \
-H "Authorization: Bearer apb_your_key" \
-H "Content-Type: application/json" \
-d '{
"operation": "replace",
"search": "## Security review\nPending.",
"content": "## Security review\nNo blocking issues found.",
"expectedVersion": 3
}'Playbook API keys (owner only)
GET /api/playbooks/:id/api-keys
POST /api/playbooks/:id/api-keys
DELETE /api/playbooks/:id/api-keys/:kidHuman collaboration (session auth; owner manages access)
Human editors are invited with a one-time link. They can edit playbook content, while ownership controls remain owner-only.
GET /api/playbooks/:id/collaborators
POST /api/playbooks/:id/collaborators
DELETE /api/playbooks/:id/collaborators/:collaboratorId
GET /api/collaboration-invites/:token
POST /api/collaboration-invites/:tokenInvite links expire after 72 hours and can be accepted once. See Team Collaboration for the full permission model and security notes.
Playbook Secrets (owner or API key)
Secrets are encrypted using AES-256-GCM. Agents can use the use_secret MCP tool or proxy endpoint to use secrets in HTTP requests without ever reading the plaintext value.
GET /api/playbooks/:guid/secrets # List metadata only
POST /api/playbooks/:guid/secrets # Create encrypted secret
PUT /api/playbooks/:guid/secrets/:name # Update/rotate secret
DELETE /api/playbooks/:guid/secrets/:name # Delete secret
# Dashboard only
GET /api/playbooks/:guid/secrets/reveal/:name
# Proxy external requests using a secret
POST /api/playbooks/:guid/secrets/proxy
# Audit trail — shared with federated MCP calls
GET /api/playbooks/:guid/audit?operation=secret.Every vault operation is recorded, refusals included: what was done, to which secret, by the
owner or by which API key prefix, and for secret.use the destination host. An entry never
holds a secret value, a full outbound URL, or a key. Owner access only — a playbook API key
performs vault operations but cannot read the record of them.
User profile and user API keys (Management)
GET /api/user/profile
PUT /api/user/profile
GET /api/user/api-keys
POST /api/user/api-keys
DELETE /api/user/api-keys/:kidMarketplace and stars
GET /api/public/playbooks
GET /api/public/skills
GET /api/public/skills/:id
GET /api/public/mcp
GET /api/public/mcp/:id
GET /api/playbooks/:id/star
POST /api/playbooks/:id/star
GET /api/user/starredMemory write-back (playbook API key or owner)
GET /api/playbooks/:guid/memory
PUT /api/playbooks/:guid/memory/:key
DELETE /api/playbooks/:guid/memory/:keyMCP endpoints
For clients that require a local stdio process, see the local MCP transport. It uses the same account tools and authorization handlers; protocol discovery starts without credentials, while data operations require your instance configuration.
GET /api/mcp/:guid # MCP manifest
POST /api/mcp/:guid # MCP JSON-RPC
POST /api/mcp/:guid/tools/:tool # Call one tool over plain HTTP
POST /api/mcp/manage # MCP management server (user API key)
GET /api/mcp/config/:serverId # Federated server config (owner)
POST /api/mcp/config/:serverId
PUT /api/mcp/config/:serverId
DELETE /api/mcp/config/:serverId
POST /api/mcp/config/:serverId/test # Try the connection before saving it
GET /api/mcp-registry/search # Search the public MCP registry
GET /.well-known/mcp-registry-auth # Registry ownership verificationEvery tool a playbook exposes is also reachable as a plain HTTP call, so a client that cannot speak MCP is not shut out:
POST /api/playbooks/:guid/operations/:operation
POST /api/control/:operation # Account-level operationsPublishing skills over HTTP
Skills are served as plain markdown — an index plus one SKILL.md per skill, no
credential, open CORS. Any client can install from a base URL with no registry
and no sign-up. Only public playbooks are served; unlisted and private ones
stay reachable through apb pull.
GET /.well-known/skills/ # Site-wide: every public playbook's skills
GET /playbooks/:guid/.well-known/skills/ # One playbookhermes skills install well-known:https://agentplaybooks.ai/.well-known/skills/<name>Connection catalogue
GET /api/connectionsCurated templates for wiring up a federated MCP server or OpenAPI service. Public, because a template is not a credential: every entry references the secrets it needs by name only, to be resolved from the playbook's vault.
Management
GET /api/manage/openapi.json
GET /api/manage/playbooks
POST /api/manage/playbooksHealth
GET /api/healthAPI Key Usage
Playbook API keys let agents read/write memory for a single playbook.
curl -X PUT https://your-domain.com/api/playbooks/abc123/memory/user_preferences \
-H "Authorization: Bearer apb_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"value": {"theme": "dark"}}'User API keys are used for management endpoints and the MCP management server:
curl -X POST https://your-domain.com/api/mcp/manage \
-H "Authorization: Bearer apb_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"list_playbooks","params":{}}'Project Structure
agentplaybooks/
src/
app/
.well-known/skills/ # Public skill publishing (site-wide)
api/
_shared/ # auth.ts, guards.ts — where authorization lives
[[...route]]/ # Hono catch-all for most endpoints
mcp/ # MCP manifest, JSON-RPC, federation config
playbooks/ # Per-playbook routes (secrets, canvas, audit, …)
dashboard/ # Authenticated UI
enterprise/ # Self-hosting landing page
explore/ # Marketplace
login/ # Auth pages
page.tsx # Marketing home
components/
playbook/ # Editor components
ui/ # UI primitives
i18n/
messages/ # Translation files (en, hu, de, es)
request.ts # Server-side locale resolution
lib/
mcp/ # Federation, secret references
storage/ # Storage adapters
supabase/ # Supabase client and types
crypto.ts # Secrets vault encryption
packages/
cli/ # AgentPlaybooks CLI + Codex/Cursor plugin
plugins/
agentplaybooks/ # Claude plugin (claude.ai, Cowork, Claude Code)
.claude-plugin/ # Plugin marketplace manifest
docs/ # Contributor-facing notes
examples/ # Starter playbooks (fork/clone/sync)
public/
blog/ docs/ # Markdown served to the client
schemas/ # JSON schemas (agentplaybook.json, …)
scripts/ # Seed and build scripts
supabase/
migrations/ # Database migrations
tests/ # Vitest suites
open-next.config.ts
wrangler.jsoncDatabase Schema
playbooks: core entity (includes visibility enum: private, public, unlisted; persona fields for agent identity and
instructionsfor always-on project rules)secrets: the vault — AES-256-GCM ciphertext, per-secret host allow-list, reveal flag, rotation and usage accounting
audit_logs: owner-readable audit trail for federated MCP calls and secrets vault operations (
secret.*); never holds values, full URLs or keys. Renamed frommcp_proxy_audit_logs.skills: skill definitions and optional SKILL.md content
skill_attachments: secure attachment storage for skills
mcp_servers: MCP tools and resources
playbook_runs: isolated executions of a reusable playbook
canvas: versioned markdown work documents
memories: key-value memory store
api_keys: playbook-scoped API keys with RBAC roles
user_api_keys: user-scoped API keys
playbook_collaborators: accepted human editor memberships and hashed one-time invites
profiles: public user profile data
playbook_stars: marketplace stars
There is deliberately no second credential store. Federated MCP and OpenAPI
servers used to keep their own encrypted secrets in mcp_server_secrets; that
table was dropped (supabase/migrations/20260820_drop_mcp_server_secrets.sql)
because a second store meant the credentials most worth stealing sat in the
weaker box, without the rotation, expiry, usage accounting and audit trail the
vault already had. transport_config.auth.token_secret now names a vault entry
instead.
A note on Row Level Security
RLS is enabled on the tables listed above, but it is not the primary
authorization mechanism at runtime. Almost all API routes query with the
service-role key, which bypasses RLS; authorization is enforced in application
code (src/app/api/_shared/guards.ts).
RLS is load-bearing for the handful of endpoints that read public playbooks
with the anon key — the MCP manifest (/api/mcp/:guid), its tool routes, and
the public skills/MCP listings. Those depend on the anon SELECT policies in
supabase/migrations/20260107_permissions_refactor.sql. Removing or disabling
those policies breaks the endpoints rather than merely relaxing them.
Policies written against auth.uid() are currently inert, because no
JWT-bearing client performs table queries — the browser talks only to
/api/*, never to Postgres directly.
Contributing
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Run the same checks CI runs, in the same order:
npm run lint # eslint npm run test:all # vitest + the CLI suite npm run prebuild && npx tsc --noEmit npm run audit:production npm run buildCommit your changes and open a Pull Request
Two things worth knowing before your first PR:
Write the lockfile with npm 11. npm 10 produces a
package-lock.jsonthatnpm cithen rejects outright, so CI fails on install before it reaches your change.npx npm@11 installworks on Node 20 as well.Warnings are tolerated, errors are not.
npm run lintcurrently reports a known set ofreact-hooksand navigation warnings, tracked in the issues — a clean run means zero errors, not zero output.
License
MIT — see LICENSE.
Use it for anything, including commercially. Keep the copyright notice and the permission notice in copies or substantial portions.
Available Tools
50 toolsarchive_memoriesArchive memoriesAIdempotentInspect
Hide matching memories from normal search and context, retaining them in the longterm tier. Search scope='archived' to find them or read_memory by key. Filters combine as AND; older_than_hours uses memory_at. Permanent-retention entries are skipped. promote_memory restores visibility. Requires memory:write or full permission. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | No | Specific keys to archive | |
| tags | No | Only archive memories with these tags | |
| from_tier | No | Only archive from this tier | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| older_than_hours | No | Archive memories older than X hours | |
| generate_summaries | No | Auto-generate summaries if missing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the description isn't expected to repeat that. It adds non-obvious behavior: permanent-retention entries are skipped, filters combine as AND, older_than_hours evaluates against memory_at, and required permission is 'memory:write or full permission'. Those are meaningful traits that go beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Seven short sentences, each carrying a distinct fact: effect, recovery paths, filter combinators, retention exception, restore tool, permission, and call target. The playbook_id clarification is redundant with the schema's own description, but overall it is front-loaded and largely waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param mutation tool with no output schema, the description covers the effect, recovery, filter semantics, permission requirement, and the key playbook_id target. It stops short of describing what a call returns or how partial/failed matches behave, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds a bit beyond the schema – the AND combination rule and the memory_at clock for older_than_hours – but otherwise doesn't need to restate parameter-level meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Hide matching memories from normal search and context, retaining them in the longterm tier'), and immediately distinguishes the effect from delete_memory by describing retention and recovery paths. An agent can differentiate it from delete_memory, search_memory, and promote_memory without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete context: how to retrieve archived items (scope='archived', read_memory by key), how filters combine ('AND'), and that promote_memory restores visibility. It doesn't state explicit when-not-to-use conditions or name the alternative tool for irreversible deletion, but the implied usage frame is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_connected_toolCall a connected toolADestructiveInspect
Call a tool on one of this playbook's connected MCP or OpenAPI servers. Arguments are forwarded as-is and the result mirrors the connected tool, including any side effects that tool has in the outside world. Requires tools:call or full permission. Use list_mcp_servers to discover server_id and tool_name. Do not use this to manage connection records; use create_mcp_server, update_mcp_server, or delete_mcp_server. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | Arguments passed to the connected tool | |
| server_id | Yes | Connected server UUID or name | |
| tool_name | Yes | Tool name exposed by the connected server | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that arguments are forwarded as-is and results mirror the connected tool, including side effects in the outside world. This complements the containing annotations (readOnly=false, destructive=true, openWorld=true) by explaining what those flags mean in terms of real-world behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core purpose in the first sentence. It covers essential behavior, permissions, discovery, and exclusions in four short sentences with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's dynamic nature and lack of an output schema, the description adequately covers invocation, side effects, permission requirements, parameter discovery, and limitations. It is not overly detailed but it gives an agent enough context to use the tool safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though the schema already describes all four parameters, the description adds meaningful context by directing users to list_mcp_servers to discover server_id and tool_name, and by explaining that arguments are forwarded as-is. This goes beyond the schema's brief field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: call a tool on one of the playbook's connected MCP or OpenAPI servers. It also distinguishes this tool from connection-management siblings by saying to use create/update/delete_mcp_server instead, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use context (calling connected tools) and explicit when-not-to-use guidance with named alternatives for managing connection records. It also tells the agent to use list_mcp_servers to discover server_id and tool_name, covering discovery prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consolidate_memoriesConsolidate memoriesAInspect
Consolidate related memories under a new parent memory with a summary. Child rows stay readable; by default they are archived to the longterm tier rather than deleted. Requires memory:write or full permission. Use delete_memory only when a key should be destroyed, and archive_memories to move entries to longterm without creating a parent. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | Summary of consolidated memories | |
| parent_key | Yes | New parent memory key | |
| memory_keys | Yes | Keys of memories to consolidate | |
| parent_tags | No | Tags for parent memory | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| archive_children | No | Move children to longterm tier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are generic and all false, so the description carries the burden. It explicitly discloses that child rows stay readable, that children are archived to the longterm tier by default rather than deleted, and that memory:write or full permission is required. It does not cover edge cases like existing parent keys, which prevents a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place. It front-loads the core purpose, adds essential behavioral details, and provides alternative-tool guidance without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters and no output schema, the description provides sufficient operational context: when to use it, permissions, alternatives, and default archiving behavior. It does not describe return values, failure modes, or what happens if parent_key already exists, but the schema covers parameter semantics and the key behavioral aspects are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds only marginal value for parameters (e.g., confirming playbook_id is a UUID/GUID), while parameter meanings are already well documented in the schema. No compensation needed beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Consolidate related memories under a new parent memory with a summary.' It names the specific resource (memories) and explicitly contrasts this tool with archive_memories and delete_memory, making its unique role clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong usage guidance: it explains when to use consolidate_memories, and when to use delete_memory ('only when a key should be destroyed') or archive_memories ('move entries to longterm without creating a parent'). It also states the permission requirement and how to pass playbook_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mcp_serverAdd MCP serverAInspect
Connect an MCP or OpenAPI server to this playbook by storing its transport configuration. This writes playbook state; it does not by itself invoke remote tools. Requires playbooks:write or full permission. Use call_connected_tool to invoke a discovered tool, and list_mcp_servers to inspect connections. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name of the connected server | |
| tools | No | Known tool definitions, if already discovered | |
| resources | No | Known resource definitions, if already discovered | |
| description | No | What this server provides | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| transport_type | No | Connection type (default: http) | |
| transport_config | No | Transport-specific configuration. Do not put plaintext secrets here. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the side effect: 'This writes playbook state; it does not by itself invoke remote tools.' It also states the permission requirement, which adds value beyond the annotations (which only indicate readOnlyHint=false, etc.). It does not contradict annotations. Some additional context like failure modes or return behavior is absent, but the core behavioral transparency is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose, then side effects and permissions, and finally usage guidance. Each sentence serves a distinct purpose with no redundant or filler content. It is optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 params, nested objects, no output schema), the description covers the purpose, side effects, permissions, related tools, and target parameter. It does not describe what the return value represents, which would be helpful since there is no output schema, but this is a minor gap. Overall, the description is thorough for a create-type operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for all 7 parameters (100% coverage), so the description does not need to explain each. It does add a small clarification for playbook_id ('Pass playbook_id as the UUID or GUID of the playbook this call should target'), but this largely reiterates the schema. No significant new parameter meaning is provided beyond what the schema already contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Connect an MCP or OpenAPI server to this playbook by storing its transport configuration.' It explicitly differentiates from siblings by noting it does not invoke remote tools (unlike call_connected_tool) and is for adding a server (unlike list_mcp_servers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: it mentions the required permission (playbooks:write), gives clear alternatives ('Use call_connected_tool to invoke a discovered tool, and list_mcp_servers to inspect connections'), and indicates the targeting requirement for playbook_id. This fully guides the agent on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_personaCreate personaADestructiveIdempotentInspect
Set the playbook's singleton persona name and system prompt. This does not add a second persona; it is a backward-compatible alias that overwrites those fields. Requires personas:write or full permission. Prefer update_persona to change a subset of fields. Use update_playbook only when you also need playbook name, visibility, config, or project instructions. Do not use delete_persona unless you intend to reset to the default Assistant.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the persona | |
| metadata | No | Optional metadata | |
| playbook_id | Yes | UUID of the playbook | |
| system_prompt | Yes | The system prompt that defines this persona's behavior |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by clarifying the tool's behavior: 'This does not add a second persona; it is a backward-compatible alias that overwrites those fields.' This adds important context about side effects (overwriting) and the alias nature, which is not fully captured by the annotations alone. The permission requirement is also disclosed. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a single focused opening sentence, followed by clarifications and usage alternatives. Each sentence adds value, and there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, behavioral details, permission requirements, and clear distinctions from related tools. Given the rich annotations and complete schema, this description is fully sufficient for an agent to decide when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description implies the roles of name, system_prompt, and playbook_id through its main clause, but does not add detailed parameter-level semantics beyond the schema. Since the schema is thorough, this is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set the playbook's singleton persona name and system prompt.' It specifies the exact resources affected and explicitly differentiates from sibling tools like update_persona and update_playbook, leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Prefer update_persona to change a subset of fields' and 'Use update_playbook only when you also need playbook name, visibility, config, or project instructions.' It also warns against delete_persona unless resetting, and states the required permission level. This is exemplary decision-support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_playbookCreate playbookAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the playbook | |
| tags | No | Discovery and organization tags | |
| visibility | No | Visibility of the playbook | private |
| description | No | Description of what the playbook is for | |
| instructions | No | Always-on project instructions (the AGENTS.md / CLAUDE.md content). Separate from the persona: the persona is who the agent is, these are the rules of this project. | |
| persona_name | No | Initial persona name | |
| persona_metadata | No | Initial persona metadata | |
| persona_system_prompt | No | Initial persona/system prompt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important behavioral context beyond the annotations: it states every call inserts a new record (does not upsert by name) and requires playbooks:write or full permission. This goes beyond the bare annotations (e.g., idempotentHint=false) by explaining exactly what that means in operation. Minor gap: does not explain what happens to existing playbook containers or return behavior, but the provided details are genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and resource, followed by non-upsert behavior and an alternative tool recommendation. No filler or redundancy; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 8 parameters, nested objects, and no output schema, the description gives enough operational context: creation semantics, auth requirement, and when to use an alternative. It doesn't describe the returned value or error/edge-case behavior, which could be slightly richer, but it is largely complete for this tool's complexity and available schema info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Param descriptions cover all 8 fields (100% schema coverage), so the description does not need to repeat them. It adds a slight conceptual frame by describing the container's purpose, but no parameter-specific enrichment beyond the schema. This is acceptable for a tool with excellent schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Create a new playbook container') and specifies the container's role ('for a singleton persona, skills, and memory'). It clearly distinguishes from update_playbook, and the explicit 'each call inserts a new playbook; it does not upsert by name' makes the create-only scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use guidance: 'Create a new playbook...' plus 'Use update_playbook to change an existing playbook, not this tool.' It also notes the required permission, helping the agent decide if the tool is appropriate for the current context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_runCreate runAInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable run name | |
| context | No | Initial execution context | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations set to false, the description carries the full burden of disclosing behavior. It clearly indicates this is a write operation (creates a run) and adds context about permissions and immediate application. It does not mention idempotency or side effects beyond creation, but the provided information is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. Each of the four sentences adds distinct value: purpose, permission, alternatives, and parameter guidance. No fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 3 parameters, no output schema, and simple annotations, the description covers the essential aspects: what it does, when to use it, permissions, and parameter hints. It lacks information about the return value or error cases, but those are not critical for this create-style tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema: it reiterates that playbook_id should be a UUID or GUID, but this is already in the schema. The mention of 'isolated context and canvas artifacts' gives some semantic context to the context parameter, but not enough to elevate the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a workflow run so this playbook can be applied immediately.' This is a specific verb+resource combination that distinguishes it from siblings like list_runs, update_run, and delete_run. It also explicitly notes the absence of a get_run, further clarifying its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to use this tool versus alternatives: 'Use list_runs to inspect existing runs (there is no get_run) and update_run to change status.' It also mentions the required permission ('Requires canvas:write or full permission'), providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_skillCreate skillAInspect
Create a new skill for this playbook. Use this to expand capabilities. Requires full or skills:write permission; with skills:propose the skill is saved as a proposal (status pending_review) that the owner or an editor approves before it exists. Use update_skill to change an existing skill and list_skills to check for name collisions first. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Agent Skills-compatible name (lowercase kebab-case, e.g. data-analyzer) | |
| content | Yes | The SKILL.md document. Its YAML frontmatter may carry a demonstrations list of {provider, ref, fidelity, role, title, sha256, segments}, where segments are {start, end, label, comment} in seconds; the list order is the order the demonstrations are performed in. A malformed block is rejected. | |
| priority | No | Priority level (default 50) | |
| description | No | What the skill does and when the agent should use it | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false; the description goes further by disclosing the permission tiers and the approval workflow that determines whether the skill actually exists. It does not cover failure behavior (e.g. what happens on a name collision or malformed frontmatter) or what the call returns, so it stops short of full behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core action and then permissions, alternatives, and the target identifier. Efficient overall, though the closing playbook_id sentence largely duplicates the schema and could be dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description never indicates what a successful create returns (e.g. the new skill id) or how to follow up. Everything else an agent needs to invoke the tool correctly — permissions, proposal mode, collision-check workflow, target playbook — is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's only parameter content is restating that playbook_id is a UUID/GUID, which the schema already says verbatim; it adds no syntax, format, or constraint detail beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create a skill scoped to a playbook) and explicitly separates itself from update_skill and list_skills. An agent can identify this as the creation path without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the precondition for use (full or skills:write permission), the divergent behavior under skills:propose (saved as pending_review proposal), and routes the agent to update_skill for existing skills and list_skills for collision checks. This is explicit when-to-use plus named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_task_graphCreate task graphADestructiveIdempotentInspect
Create a hierarchical task plan in one call: a parent plan memory plus a child node per subtask. Upserts by key, so repeating the same plan_key overwrites the previous graph. Requires memory:write or full permission. Use write_memory for a single node, update_task_status to move a node through pending/running/completed, and get_memory_tree to inspect the graph. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags for the plan | |
| tasks | Yes | List of subtasks to create | |
| plan_key | Yes | Key for the root plan memory | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| plan_summary | Yes | High-level summary of the entire plan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the idempotent upsert behavior (repeating plan_key overwrites) and the destructive implication, consistent with the destructiveHint annotation. It also states the permission requirement, adding context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded with the core purpose, then usage alternatives, then behavioral notes and permission. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers purpose, usage, alternatives, behavior, permissions, and targeting. Nested task structure is well documented in schema; description adds the key semantic of overwriting by plan_key.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with per-parameter descriptions. The description adds minimal param-specific insight beyond what schema provides (e.g., playbook_id as UUID/GUID is already in schema). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a hierarchical task plan with a parent plan and child nodes per subtask. It distinguishes from siblings like write_memory (single node) and update_task_status (moving nodes) by focusing on bulk creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance names alternative tools: write_memory for single nodes, update_task_status for status changes, get_memory_tree for inspection. Also mentions upsert/overwrite behavior and the required permission (memory:write/full).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_mcp_serverRemove MCP serverADestructiveIdempotentInspect
Disconnect an MCP or OpenAPI server from this playbook. The remote server is not shut down; only this playbook's connection record is removed. Requires playbooks:write or full permission. Use update_mcp_server to change configuration without disconnecting. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes | Connected server UUID | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint, idempotentHint), the description discloses important behavioral details: the remote server is not shut down, only the playbook's connection record is removed. This adds value by explaining the scope of the destructive action and the permission requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the core action first, then adds essential context (no remote shutdown, permission, alternative tool, parameter guidance). Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple disconnect tool with two parameters and no output schema, the description is complete. It covers purpose, behavioral scope, permissions, alternative usage, and parameter targeting, making it fully adequate for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description mentions 'Pass playbook_id as the UUID or GUID' but this simply restates the schema description. No additional semantic value is added for either parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Disconnect') and resource ('MCP or OpenAPI server from this playbook'), clearly stating what the tool does. It also distinguishes itself from siblings by clarifying that only the connection record is removed, not the remote server.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus an alternative: 'Use update_mcp_server to change configuration without disconnecting.' It also states the required permission, giving clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_memoryDelete memoryADestructiveIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Memory key to delete | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description still adds real value beyond them: permanence including saved history, the required permission scope, and the archive-vs-delete decision. It does not, however, describe failure behavior or what happens to dependent references.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the destructive action. The closing sentence largely duplicates the schema's playbook_id description, which is the only bit of slack in an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with full annotation coverage and no output schema, the description supplies what an agent needs: permanence, permission requirement, and the safer alternative. Only edge-case behavior (errors, cascading effects) is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The final sentence restates playbook_id's format ('UUID or GUID'), which the schema already documents verbatim, and adds no new syntax or constraint for 'key'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Permanently delete') plus resource ('a memory and its saved history'), and it explicitly distinguishes itself from the sibling archive_memories. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alternative (archive_memories) and the exact condition that selects it ('To hide an entry while retaining its content'). It also states the precondition (memory:write or full permission).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_personaDelete personaADestructiveIdempotentInspect
Reset the playbook's singleton persona to the default Assistant name and system prompt. Despite the delete_* name, this is not a hard delete: each playbook always keeps exactly one logical persona, so the fields are overwritten rather than removed. persona_id must equal playbook_id because the persona is stored on the playbook row. Custom name, system prompt, and metadata are permanently replaced and cannot be undone. Requires personas:write or full permission. Use update_persona to change fields without resetting, create_persona to set a new identity, and delete_playbook only when the entire playbook should be removed.
| Name | Required | Description | Default |
|---|---|---|---|
| persona_id | Yes | Must equal playbook_id; the persona is a singleton stored on the playbook | |
| playbook_id | Yes | UUID of the playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description goes further: it clarifies that despite the 'delete' name, this is not a hard delete, fields are overwritten rather than removed, custom name/system prompt/metadata are permanently replaced and cannot be undone, and the persona_id must equal playbook_id. It also cites the required permission (personas:write or full). This is exemplary behavioral disclosure beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six sentences, each packed with essential information: purpose, semantic nuance, ID constraint, irreversible effects, permission requirement, and alternatives. There is no fluff or repetition; every sentence earns its place. The structure flows logically from what → why → constraints → consequences → guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with two parameters and no output schema, the description covers all needed aspects: behavior, side effects, idempotency, required permissions, and relationship to sibling tools. It fully prepares the agent to invoke the tool correctly and understand the consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already includes the constraint that persona_id must equal playbook_id. The description restates this and explains the reason (persona is stored on the playbook row), but adds no new syntax or format details beyond the schema. It doesn't compensate with additional field-level semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the exact action: resetting the playbook's singleton persona to the default Assistant name and system prompt. It clearly distinguishes this from delete_playbook, update_persona, and create_persona by explaining it is an overwrite, not a hard delete. The verb 'reset' plus the resource 'playbook's singleton persona' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: use this tool to reset to default, use update_persona to change fields without resetting, use create_persona to set a new identity, and use delete_playbook only when removing the entire playbook. This makes when-to-use versus alternatives crystal clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_playbookDelete playbookADestructiveIdempotentInspect
Permanently delete a playbook and all of its contents (persona, skills, memory, API keys, canvas, and secrets). This cannot be undone. Requires playbooks:write or full permission, and only the owner may delete. Do not use this to reset a persona (delete_persona) or remove a single skill or memory; those have dedicated tools.
| Name | Required | Description | Default |
|---|---|---|---|
| playbook_id | Yes | UUID of the playbook to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states destructive consequences: 'Permanently delete' and 'This cannot be undone'. It also discloses the full scope of deletion: persona, skills, memory, API keys, canvas, and secrets. It further adds permission and ownership requirements, which go beyond the annotations. The annotations (destructiveHint=true, idempotentHint=true) align with the description - no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and front-loaded with the most critical info (permanently delete). It efficiently packs warnings, permissions, and exclusions into additional sentences. The only minor adjustment would be that the description could be slightly more concise, but it earns its space with high-value content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with a single parameter, the description is complete. It covers consequences, scope, permissions, ownership, and alternative usage. The annotations and schema handle the rest (idempotency, parameter UUID). No output schema needed for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with a single parameter (playbook_id) described as 'UUID of the playbook to delete'. The description doesn't add parameter-specific details but that's okay since the schema fully covers it. No additional semantic value is needed beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Permanently delete a playbook and all of its contents', specifying the exact resource (playbook) and its scope (all contents). It also distinguishes from siblings by explicitly naming alternatives: 'Do not use this to reset a persona (delete_persona) or remove a single skill or memory'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance including when to use (deleting a playbook), when NOT to use (resetting persona, removing single skill/memory), and even names the alternative tools like delete_persona. It also covers the permission requirement ('Requires playbooks:write or full permission') and ownership restriction ('only the owner may delete').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_runDelete runADestructiveIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | Workflow run UUID | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds meaningful context: deletion is permanent, it includes isolated canvas artifacts, and it requires canvas:write or full permission. This goes well beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: first states the action and outcome, second states irreversibility and permissions, third provides alternatives and parameter targeting. Front-loaded and tightly written with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, two-parameter tool with no output schema, the description fully covers what is deleted, what cannot be undone, permission requirements, alternatives, and how to identify the target. No important behavioral gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying that playbook_id should be passed as 'the UUID or GUID of the playbook this call should target,' reinforcing the relationship between playbook_id and the run being deleted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb+resource pairing: 'Permanently delete a workflow run and its isolated canvas artifacts.' It clearly distinguishes from sibling tools like update_run and delete_playbook by naming the exact scope of the deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides when NOT to use this tool: 'Use update_run with status=archived to keep artifacts, and delete_playbook only when the whole playbook should go.' It also states the required permission, providing complete usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_secretDelete secretADestructiveIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Secret name to delete | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint, readOnlyHint), the description adds critical context: 'Cannot be undone' and 'This does not revoke the credential at the upstream provider'. It also states the permission requirement, enriching the agent's understanding of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three densely informative sentences with no filler. The main action and consequences are front-loaded, and every sentence serves a purpose (action, side-effect, alternatives, parameter hint).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with two required parameters and no output schema, the description covers purpose, irreversible consequences, permission, non-revocation, and parameter targeting. It is fully sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description only restates the playbook_id format already in the schema. It adds no new semantic value for parameters, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Permanently delete a secret', a specific verb+resource that clearly states the action. It also distinguishes itself from rotate_secret and list_secrets, making its unique purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names alternatives ('Use rotate_secret to replace the value without removing the name, and list_secrets to confirm the name first'), provides a permission prerequisite, and gives context on when this tool is appropriate. This is model usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_skillDelete skillADestructiveIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | ID or name of the skill to delete | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description emphasizes the irreversibility ('This cannot be undone except by recreating the skill') and warns about the destructive nature, aligning with the destructiveHint annotation. It also states permission requirements, making the behavior transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but includes essential warnings and alternatives. It is slightly verbose due to the permission and alternative mentions, but these are necessary for safe usage, so it remains well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the destructive nature, permission requirements, alternative tools, and parameter usage, making it contextually complete for a delete operation without needing an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes both parameters (skill_id and playbook_id) with clear definitions. The description only reiterates the playbook_id parameter without adding new semantic information, so it adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action as 'Permanently delete a skill from this playbook' and distinguishes it from alternative operations like rollback_skill and update_skill.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions the required permission ('Requires full or skills:write permission') and provides clear guidance on when to use this tool versus alternatives, such as using rollback_skill for restoration or update_skill for content changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_toolsFind toolsARead-onlyIdempotentInspect
Search this playbook's complete tool catalog by keyword: the built-in playbook tools (memory, skills, canvas, workflow runs, secrets) and every connected server's federated tools (names like supabase__execute_sql or cloudflare__search). Matches against tool names and descriptions; a name match ranks above a description match. Returns up to limit (default 10, max 25) entries with name, description, and full input schema. Every returned tool can be called directly by name even when it is absent from tools/list — the advertised list is a view, not a boundary, unless this connection was pinned with ?toolset=. Read-only and free of side effects. Use this when the tool you need is not in your current list, before concluding a capability is missing. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches to return (default 10, max 25) | |
| query | Yes | Keywords to match against tool names and descriptions, e.g. 'sql tables' or 'archive memory' | |
| playbook_id | Yes | UUID or GUID of the target playbook |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive, and the description reinforces this with 'Read-only and free of side effects.' It adds substantial behavior beyond annotations: name matches rank above description matches, results include full input schemas, and returned tools are callable even when absent from tools/list unless pinned with ?toolset=. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph starting with the core purpose and then adding only high-value operational details: scope, ranking, limits, return contents, the tools/list caveat, and the ideal usage moment. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the full schema coverage, output schema, and annotations, the description is operationally complete. It covers what the tool searches, how results are ranked, what is returned, when to use it, and a critical boundary condition about direct invocation of returned tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters at 100% coverage, so the baseline is 3. The description adds extra meaning by explaining query matching behavior (names and descriptions, with name-match ranking), reaffirming limit bounds, and specifying playbook_id as the target playbook identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search this playbook's complete tool catalog by keyword,' and it clearly enumerates both built-in and connected-server federated tools. This distinguishes it from sibling tools like list_mcp_servers or call_connected_tool by framing it as a discovery/search utility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger: 'Use this when the tool you need is not in your current list, before concluding a capability is missing.' It also explains what gets searched and the important tools/list boundary, though it does not explicitly name alternative tools or list when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_canvas_tocCanvas table of contentsARead-onlyIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Document slug | |
| run_id | Yes | Workflow run UUID | |
| playbook_id | Yes | UUID or GUID of the target playbook |
Output Schema
| Name | Required | Description |
|---|---|---|
| toc | Yes | |
| name | Yes | |
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces read-only status and adds useful context about returning section IDs/headings/levels for navigation and patch_canvas_section, going beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences deliver purpose, return value, read-only note, alternatives, and parameter hint without any wasted words. Information is front-loaded with the primary action first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and annotations covering safety, the description effectively complements the structured data. It references sibling tools for related operations, covers parameter nuance, and provides sufficient context for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter descriptions, including slug, run_id, and playbook_id. The description adds extra clarity by specifying playbook_id as 'the UUID or GUID of the playbook this call should target' and implies slug discovery via list_canvas, enriching the parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Get the table of contents for a canvas document,' clearly stating the action and resource. It further specifies the returned data (section IDs, headings, levels) and distinguishes itself from read_canvas (full markdown) and list_canvas (slugs), making sibling differentiation explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Use read_canvas for full markdown and list_canvas to discover slugs.' This tells the agent when not to use this tool and directs to alternatives. It also mentions the purpose for navigation and patch_canvas_section, establishing clear use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memory_contextGet memory contextARead-onlyIdempotentInspect
Get a context-optimized view of memories: full working memory, summaries for contextual, and keys only for longterm. Read-only. Filter episodic memories by where with location and task, which read the metadata.episode convention {location, task, outcome}, and by when with after and before, which bound memory_at exactly as search_memory does; entries carrying a metadata.recording come back with their recording links resolved. Use this to pack a prompt; use read_memory for one key, search_memory to filter by text or tags, and get_memory_tree for parent-child task graphs. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | Only episodic memories from this task (metadata.episode.task) | |
| after | No | Inclusive lower bound on memory_at, with a timezone | |
| before | No | Inclusive upper bound on memory_at, with a timezone | |
| location | No | Only episodic memories recorded at this place (metadata.episode.location) | |
| max_items | No | Maximum items per tier | |
| expand_keys | No | Keys to show full content regardless of tier | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| tags_filter | No | Only include memories with these tags | |
| include_tiers | No | Tiers to include (default: working, contextual) |
Output Schema
| Name | Required | Description |
|---|---|---|
| tiers | Yes | |
| total_items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description still adds genuine behavioral context: the tier-specific return shape, that entries carrying metadata.recording return with resolved links, and that after/before bound memory_at exactly as search_memory does. It does not disclose pagination or size limits, keeping it shy of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and read-only status are front-loaded, then filtering semantics, then sibling routing. It is dense but every sentence carries unique information (tier behavior, episode convention, time bounds, alternatives). Slightly long as one unbroken paragraph, which costs a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, an output schema already present, and rich annotations, the description supplies everything else an agent needs: how tiers differ, how to filter, how to target the playbook, and how it relates to sibling memory tools. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns above-baseline credit by explaining the semantics the schema only names: the metadata.episode {location, task, outcome} convention behind location/task, and that after/before are exact memory_at bounds matching search_memory. playbook_id is also clarified as a UUID or GUID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb and resource ('Get a context-optimized view of memories') and immediately specifies the per-tier treatment (full working, summaries for contextual, keys only for longterm). It explicitly names the siblings it is not (read_memory, search_memory, get_memory_tree), so an agent can distinguish it without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('use this to pack a prompt') followed by a routing table to alternatives with their distinct conditions: read_memory for one key, search_memory to filter by text or tags, get_memory_tree for parent-child task graphs. This is exactly the when-to-use/when-not guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memory_historyMemory historyARead-onlyIdempotentInspect
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. Unlike get_memory_context (current entries by tier) and get_memory_tree (hierarchy), this returns one key's past versions. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Current key of the memory | |
| limit | No | Page size | |
| offset | No | Versions to skip, for paging | |
| search | No | Optional text within this memory's history | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered; the description adds genuinely new context that history is 'excluded from normal search' and how to restore a prior version. It does not say whether the history list is ordered or how the version payload is shaped, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Something like four tightly packed sentences, each carrying distinct load: scope, search exclusion, restore path, sibling contrast, and a required-param note. The core purpose is front-loaded and nothing is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned data ('original memory_at and saved contents'). Pagination is handled by the richly described schema, and annotations carry the safety profile, so an agent has everything needed to call it and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, offset, search, key, and playbook_id are already documented in the schema. The description only restates playbook_id's UUID/GUID format, adding no semantics beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Read previous versions of a memory') and explicitly delimits scope by key. It also names and contrasts two siblings (get_memory_context for current-by-tier, get_memory_tree for hierarchy), so an agent can distinguish it without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing versus the two nearest alternatives and even supplies a follow-on workflow ('To restore a version, write its contents and memory_at with write_memory and is_archived=false'). It tells the agent both when to use this tool and what to do next, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memory_treeGet memory treeARead-onlyIdempotentInspect
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's full value. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| root_key | No | Start from this key (omit for all roots) | |
| max_depth | No | Maximum tree depth | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| include_values | No | Include full values (false = summaries only) |
Output Schema
| Name | Required | Description |
|---|---|---|
| root | Yes | |
| tree | Yes | |
| total_nodes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's 'Read-only' reinforces this. It adds context beyond annotations by describing the hierarchical structure and per-node status, and the optional parameters' effect on output (summaries vs full values). No contradictions found, and the description enhances the agent's understanding of behavior beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and efficiently covers usage context and parameter hint in the second sentence. No redundant phrases or unnecessary details—every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 params, output schema present, annotations provided), the description is complete enough. It covers the purpose, usage, and key behavior (read-only, hierarchical). It doesn't detail output format, but the output schema exists and annotations cover safety. The mention of 'per-node status' and 'visualize task graphs' gives sufficient context for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description doesn't need to add much. It does mention the playbook_id format (UUID/GUID) which slightly adds to the schema, but the other parameters (root_key, max_depth, include_values) are not elaborated beyond what schema already provides. It adds minimal semantic value, but the schema already does the heavy lifting, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves a hierarchical tree of memories with parent-child relationships and per-node status. It distinguishes from siblings by explicitly naming alternative tools (search_memory, get_memory_context, read_memory) for different use cases, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool vs alternatives: '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's full value.' Also specifies the target via playbook_id as UUID or GUID, which is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playbookGet playbookARead-onlyIdempotentInspect
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's full content rather than the playbook summary.
| Name | Required | Description | Default |
|---|---|---|---|
| playbook_id | Yes | UUID of the playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description doesn't need to repeat those. It adds value by specifying the required permission level and the scope of what is returned (singleton persona, skills, connected MCP servers, memory). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main purpose, and every sentence adds value: what it returns, uniqueness, read-only nature, permission requirement, and usage guidance. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (returns multiple related entities), the description covers the key aspects: what is returned, how to get the ID, when to use an alternative, and permission requirements. No output schema exists, but the description sufficiently explains the return scope. Annotations cover safety, so completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (playbook_id is described as 'UUID of the playbook'), so the description doesn't need to add much. It mentions using list_playbooks to discover IDs, which provides context for the parameter's value. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a playbook with its associated persona, skills, MCP servers, and memory. It explicitly notes this is the only persona retrieval tool, distinguishing it from siblings like get_skill and list_playbooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use list_playbooks to discover IDs first, and use get_skill when needing one skill's full content. Also mentions required permissions (playbooks:read or full), which helps the agent decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skillGet skillARead-onlyIdempotentInspect
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's kebab-case name. When the skill's frontmatter declares demonstrations, they come back as a resolved list with a link per recording and per timestamped segment, in the order they are performed. This lookup does not modify the skill. Use list_skills first to discover IDs and names. Do not use list_skill_versions (historical revisions) or get_playbook (persona and summaries, not full skill content). Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | Skill ID or name | |
| playbook_id | Yes | UUID or GUID of the target playbook |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| content | No | |
| licence | No | |
| priority | No | |
| created_at | No | |
| description | No | |
| playbook_id | No | |
| publisher_id | No | |
| demonstrations | No | |
| skill_attachments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'this lookup does not modify the skill' is largely redundant. However the description adds genuine behavioral value by explaining how demonstrations are returned (resolved list, link per recording and per segment, in performance order).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then identifier semantics, return shape, and routing guidance in a logical order. Slightly long, and the return-shape sentence partially duplicates the output schema, but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not restate returns, yet it goes further by describing demonstration resolution and ordering. Routing, identifier format, and mutation behavior are all covered, so nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description nevertheless adds meaning beyond the schema: skill_id 'may be a UUID or the skill's kebab-case name' (the schema only says 'Skill ID or name') and clarifies playbook_id is the UUID/GUID target.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (full definition of one skill), and enumerates the returned fields (name, description, content, priority, attachments). It explicitly distinguishes itself from list_skill_versions and get_playbook, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (use list_skills first to discover IDs) and when-not (do not use list_skill_versions for historical revisions, nor get_playbook for persona/summaries). Names alternatives with the condition that selects them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_canvasList canvas documentsARead-onlyIdempotentInspect
List canvas documents in a workflow run. Canvas documents are collaborative markdown files that multiple agents can edit in parallel. Omit run_id to list documents across all runs. Read-only. Use read_canvas for content and get_canvas_toc for section IDs. There is no get_run; list_runs returns run records. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | Workflow run UUID. Omit to list documents across all runs. | |
| playbook_id | Yes | UUID or GUID of the target playbook |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and idempotent annotations, the description states 'Read-only', explains the effect of omitting run_id (lists all runs), and clarifies the absence of a get_run endpoint, providing transparent behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured, and covers all necessary points without redundancy or irrelevant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides complete context including purpose, parameter usage, relationships to other tools, and behavioral notes, leaving no major gaps for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaningful guidance on parameters beyond the schema: explains that run_id can be omitted to list all runs and that playbook_id should be a UUID or GUID, enhancing usability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists canvas documents in a workflow, defines canvas documents, and distinguishes from read_canvas and get_canvas_toc, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly guides when to use this tool versus alternatives (read_canvas for content, get_canvas_toc for section IDs) and clarifies that list_runs is used for runs, not get_run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mcp_serversList MCP serversARead-onlyIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description goes beyond by specifying the content returned (transport metadata, discovered capability counts) and clarifying it is the detail view. This adds meaningful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: stating the action, clarifying read-only nature and the absence of a getter, and providing usage guidance. No fluff or redundancy, effectively front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (1 param, no output schema), the description fully covers what the tool does, what it returns, and how to use it. It also anticipates potential confusion with sibling tools, making it complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter playbook_id is fully described in the schema ('UUID or GUID of the target playbook'), and the description only repeats that instruction without adding additional semantics. With 100% schema coverage, baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists MCP and OpenAPI servers connected to a playbook, including transport metadata and capability counts. It distinguishes from siblings by explicitly noting there is no get_mcp_server and by contrasting with call_connected_tool, making its purpose unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool (for listing/detail view) and when not to use it (not for invoking a tool, for which call_connected_tool is the alternative). It also instructs how to pass the playbook_id, providing clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_playbooksList playbooksARead-onlyIdempotentInspect
List playbooks owned by or shared with the authenticated user, including access role and content counts. Read-only; it does not create or modify playbooks. Use get_playbook when you need the singleton persona, skills, connected servers, and memory for one playbook. Requires playbooks:read or full permission.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| playbooks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and destructive properties, and the description reinforces these by stating 'Read-only; it does not create or modify playbooks.' The description adds the permission requirement and mentions the type of data returned (access role, content counts), but these are not major behavioral traits beyond what annotations provide, so a high but not maximal score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of three concise sentences, each conveying necessary information without redundancy. It is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context: it specifies the scope (owned or shared), what is included (access role, content counts), that it is read-only, offers an alternative for a single playbook, and mentions required permissions. Since an output schema exists, no need to describe return format separately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the schema, so there is nothing to explain. The description does not add parameter details, which is acceptable given the empty schema. According to the rubric, with 100% schema coverage, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists playbooks owned or shared, including access role and content counts, and explicitly distinguishes it from get_playbook, which retrieves a single playbook with more detail. This makes the purpose specific and differentiates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using get_playbook for a single playbook with additional details, providing an alternative. It also mentions the required permission (playbooks:read or full), giving clear guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_runsList runsARead-onlyIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent hints, and the description reinforces this with 'Read-only.' It adds helpful context about runs isolating canvas artifacts and execution context, and clarifies the absence of get_run, going slightly beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and remains focused. The final sentence about playbook_id is somewhat redundant with the schema, but the overall structure is efficient and each other sentence adds useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single required parameter, strong annotations, and no output schema, the description provides enough context to select and invoke the tool correctly. It explains what runs are, how they relate to canvases, and where to go for related operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and playbook_id is already described as 'UUID or GUID of the target playbook.' The description mostly restates this, adding no new semantics beyond confirming the parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'List workflow runs for this playbook.' It distinguishes this from related tools by explicitly noting there is no get_run and pointing to create_run and list_canvas as different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use create_run to start isolated canvas context and list_canvas to see documents in a run. It also clarifies that there is no dedicated single-run getter, so list_runs is the way to retrieve run records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_secretsList secretsARead-onlyIdempotentInspect
List all secret names and metadata in this playbook. Does not return values — secret values are never exposed to agents. Requires secrets:read or full permission. Use use_secret to make an authenticated HTTP request, store_secret to add a value, and rotate_secret to replace one. Do not use this tool expecting plaintext credentials. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category | |
| playbook_id | Yes | UUID or GUID of the target playbook |
Output Schema
| Name | Required | Description |
|---|---|---|
| secrets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that secret values are never returned and specifies required permissions (secrets:read or full), adding behavioral context beyond the readOnly annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded summary followed by key behavioral notes and parameter instruction; no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what is listed (names and metadata), what is not returned (values), required permissions, and parameter usage, making it complete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions already cover both parameters; the description only clarifies playbook_id as 'UUID or GUID', but adds no new meaning for category, making it minimally additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists secret names and metadata in a playbook, distinguishing it from sibling list operations like list_playbooks or list_runs via the resource type 'secrets'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when not to use this tool (expecting plaintext) and directs to alternatives (use_secret, store_secret, rotate_secret) for other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_skillsList skillsARead-onlyIdempotentInspect
List every skill currently attached to this playbook, returning id, name, description, content, licence, and priority ordered by priority descending. Read-only; it does not create or change skills. Use this to discover skill_id values before get_skill, update_skill, or delete_skill. Do not use list_skill_versions, which lists historical revisions of a single skill, or get_playbook, which only summarizes skills. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| playbook_id | Yes | UUID or GUID of the target playbook |
Output Schema
| Name | Required | Description |
|---|---|---|
| skills | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
States read-only nature and that it does not create or change skills. Reinforces annotations but adds explicit non-mutating wording beyond the hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each sentence adds value: purpose, read-only, usage, exclusions, parameter. No redundancy or fluff; well-structured and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, return fields, and exclusions. Sufficient for an agent to decide when to call and what to expect, though error handling is not discussed (not required).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema fully describes the single parameter (playbook_id) with type and description. The description repeats the same info without adding new semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (list), resource (skills), scope (playbook), and return fields (id, name, etc.). Explicitly distinguishes from sibling tools like list_skill_versions and get_playbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance (discover skill_id before get/update/delete) and when-not-to-use (list_skill_versions for revisions, get_playbook for summary).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_skill_versionsList skill versionsARead-onlyIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max versions to return (default 10) | |
| skill_id | Yes | ID or name of the skill | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the safety profile with 'Read-only' and adds meaningful context that the tool exposes historical versions for auditing and rollback. It does not add detail about pagination or response shape, but the annotations already cover read-only, idempotent, and non-destructive behavior, so the bar is lower here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. The guidance sentence is slightly long but packs useful sibling differentiation into one line. Minor redundancy exists between 'rollback' in the first sentence and 'before rollback_skill,' but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with strong annotations and full schema coverage, the description gives enough context to invoke it correctly: what it lists, when to use it, where to use it, and the sibling relationship. The only minor gap is not describing what fields or structure the returned historical versions contain, but no output schema exists to fill that role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents playbook_id, skill_id, and limit. The description does not add meaningful parameter meaning beyond noting that playbook_id is the target playbook, which the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List historical versions of a skill.' It explicitly frames the tool for auditing and rollback purposes and distinguishes it from siblings by naming get_skill and list_skills as alternatives for current and all skills, respectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use this before rollback_skill.' It also clarifies when the sibling tools should be used instead—get_skill for the current definition and list_skills for all skills in the playbook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_canvas_sectionLock canvas sectionAIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Document slug | |
| run_id | Yes | Workflow run UUID | |
| locked_by | Yes | Agent identifier | |
| section_id | Yes | Section ID to lock | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, non-destructive, and idempotent. The description adds that it requires canvas:write or full permission, and that it should be paired with unlock. It doesn't mention what happens if already locked, but annotations cover the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all essential. Front-loaded with the core purpose, then usage guidance, then parameter clarification. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a locking tool with good annotations and full schema coverage, the description is complete. It covers permissions, pairing with unlock, and parameter format. Could mention what happens if the section is already locked, but that's a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are documented. The description adds context for playbook_id (UUID or GUID) and implies the locking mechanism, but doesn't add much beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool locks a section for exclusive editing, preventing other agents from modifying it. It distinguishes from siblings like patch_canvas_section (editing) and unlock_canvas_section (unlocking).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (for exclusive editing), when not to use (not for editing content), and pairs with patch_canvas_section. Also instructs to always unlock when finished, and specifies the playbook_id parameter format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_canvas_sectionPatch canvas sectionAIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Document slug | |
| run_id | Yes | Workflow run UUID | |
| content | Yes | New section content (markdown) | |
| heading | No | Optional: new heading text | |
| section_id | Yes | Section ID from get_canvas_toc | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, destructive flags), the description reveals additional behavioral traits: it is parallel-safe (only the targeted section is updated), requires canvas:write or canvas:admin permission, and explicitly mentions that playbook_id is a UUID/GUID. This provides a clear picture of the operation's side effects and safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph that conveys all essential information without redundancy. It covers the purpose, usage, permissions, and parameter relationships, making it efficient and easy to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description addresses the tool's purpose, concurrency safety, permissions, related tools, and key parameter acquisition (section_id). Given that there is no output schema, it covers the necessary context for an agent to correctly invoke the tool, including potential pitfalls like needing to lock the section.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all parameters (100% coverage). The description adds value by explicitly stating that section_id should be obtained from get_canvas_toc and that playbook_id is the target playbook's UUID/GUID. This contextual guidance enhances understanding of these parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits a specific section of a canvas document, using the verb 'edit' and specifying the resource. It also distinguishes itself from write_canvas, which replaces the whole document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: use write_canvas only for full replacement, and get_canvas_toc to obtain section_id. It also advises locking the section in multi-agent scenarios, which clarifies the intended usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promote_memoryPromote memoryAInspect
Restore a memory's visibility, promote it to a higher tier or boost its priority for active use. This tool cannot demote; use archive_memories to archive entries. Repeating the call with priority_boost increases priority again. Requires memory:write or full permission. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Memory key to promote | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| target_tier | No | Target tier (cannot demote with this tool) | |
| priority_boost | No | Amount to increase priority (0-50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give a low bar (non-read-only, non-destructive, non-idempotent), and the description adds real context beyond them: the explicit non-demotion constraint, the cumulative effect of repeated priority_boost calls, and the required permission (memory:write or full). It doesn't describe the response or failure modes, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: purpose, boundary/alternative, repeat behavior, and permission. Front-loaded with the core action and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with full schema coverage and annotations, the description covers the important extras: permission requirement, non-demotion boundary, sibling routing, and repeat semantics. Missing only return-value/error behavior, which is minor given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters including the enum and the 0-50 range. The description reiterates playbook_id format and notes priority_boost can be repeated, but adds little parameter syntax or semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs (restore visibility, promote tier, boost priority) applied to a named resource (a memory). It explicitly distinguishes itself from archive_memories and clarifies it cannot demote, so an agent can separate it from siblings despite the crowded toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when-not (cannot demote) and points to the alternative (use archive_memories to archive). It also explains the repeat-call behavior for priority_boost. It stops short of saying when to prefer this tool over, e.g., write_memory or read_memory, so a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_canvasRead canvas documentARead-onlyIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Document slug | |
| run_id | Yes | Workflow run UUID | |
| section_id | No | Optional: read only this section | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral context beyond the annotations: what the tool returns (full content, section structure, metadata) and the optional section-scoped read mode. It does not cover failure behavior or restrictions, but annotations cover the safety profile well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, and contains no filler. Every sentence contributes either the return shape, the optional section mode, or parameter sourcing guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers the return values sufficiently (full content, sections, metadata). It also explains how to obtain section IDs and slugs, which is important in a tool ecosystem with many siblings. It does not clarify run_id's role, but the schema fully describes that parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful guidance: using get_canvas_toc to discover section IDs, using list_canvas to find slugs, and passing playbook_id as UUID/GUID. These references enrich the schema descriptions and help agents source correct parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a canvas document, returns full content, section structure, and metadata, and supports optional section-level reads. This distinguishes it from siblings like get_canvas_toc and list_canvas, which are explicitly positioned as discovery helpers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage—read a canvas when you need full content or a specific section—and gives guidance for using get_canvas_toc to find section IDs and list_canvas to find slugs. However, it does not explicitly state when to prefer read_canvas over these sibling tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_memoryRead memoryAInspect
Read one memory entry by key and return its value, tags, tier, summary, and metadata. This is not a pure read: it increments access_count and updates last_accessed_at as a side effect, without changing the stored value. There is no update_memory; use write_memory to overwrite a key. Use search_memory to find keys, get_memory_context for a tiered summary, or get_memory_tree for hierarchical task graphs. Do not pass memory_type; that filter belongs to search_memory. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Memory key to read | |
| playbook_id | Yes | UUID or GUID of the target playbook |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | |
| tags | No | |
| tier | No | |
| value | No | |
| summary | No | |
| priority | No | |
| memory_at | No | |
| parent_key | No | |
| updated_at | No | |
| description | No | |
| is_archived | No | |
| access_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint=false, idempotentHint=false, destructiveHint=false — the description adds critical context that annotates why: reads increment access_count and update last_accessed_at as a side effect without changing stored value. This is exactly the value-add beyond annotations that earns a top score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the read purpose, then behavioral caveat, then alternatives, then parameter guidance. Dense and every sentence carries information, though the multi-clause structure is slightly long for a 2-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for the tool's complexity: annotated side-effect behavior is explained, output schema exists (value/tags/tier/summary/metadata are named), sibling routing is exhaustive, and parameter constraints are clarified. Nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both key and playbook_id. The description reinforces playbook_id format ('UUID or GUID') and adds exclusions (do not pass memory_type), but with full schema coverage the baseline is 3 even with no param info in description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Read one memory entry by key and return its value, tags, tier, summary, and metadata') and explicitly differentiates from siblings search_memory, get_memory_context, get_memory_tree, and write_memory. An agent can pick it apart from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes: 'not a pure read' side effect disclosed, 'no update_memory; use write_memory to overwrite', 'Use search_memory to find keys', and 'Do not pass memory_type; that filter belongs to search_memory'. When-to-use and when-not-to-use are both stated clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_skillRoll back skillADestructiveIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes | The specific version ID from list_skill_versions to rollback to | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds important behavioral context beyond annotations: the replacement is irreversible except by rolling forward, and permission requirements are detailed. This complements the destructiveHint and idempotentHint annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with no unnecessary fluff. It packs purpose, usage, warning, and permission into a few clear sentences, well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's role among siblings, the description provides sufficient context: what it does, what it requires, and its limitations. It covers essential aspects without needing extra details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are well-described in the schema (version_id tied to list_skill_versions, playbook_id as UUID/GUID). The description reinforces the playbook_id usage, ensuring clear understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: rolling back a skill to a previous version. It also mentions that it replaces the current definition, which is specific and distinguishes it from other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (to revert to a previous version) and when not to (do not use delete_skill for reverting). Also specifies required permissions (full or skills:write) and provides guidance on parameter usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rotate_secretRotate secretADestructiveIdempotentInspect
Rotate an existing secret with a new value. The old value is permanently replaced and cannot be recovered. The expiry is kept unless you pass expires_at: a date sets a new one, null removes it — which is how an expired secret, refused by use_secret, becomes usable again. 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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Secret name to rotate | |
| value | Yes | New secret value | |
| expires_at | No | New expiry with a timezone, or null to remove it. Omit to keep the current one. | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover destructive/idempotent/readOnly, and the description adds substantial context beyond them: the old value is permanently irrecoverable, the expiry is preserved by default, null removes it, and it requires secrets:write or full permission. This is exactly the kind of destruction-and-auth detail annotations alone cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and destruction warning, and each sentence carries distinct information (expiry behavior, auth, sibling routing, id format). It is dense but slightly long, with the playbook_id formatting note tacked on at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema mutation tool, the description covers everything an agent needs: what is destroyed, the expiry tri-state, permission requirements, and how it relates to store_secret/delete_secret/use_secret. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the schema already defines all four parameters; the description goes beyond it by explaining the expires_at tri-state semantics (date sets, null removes, omit keeps) and clarifying playbook_id expects a UUID or GUID. Minor because the schema largely duplicates this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rotate an existing secret with a new value') and explicitly contrasts the scope against siblings by naming store_secret (create new) and delete_secret (remove). An agent can distinguish this from the other secret tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use and when-not-to-use guidance: 'Use store_secret to create a name that does not exist yet, and delete_secret to remove the secret entirely.' It also explains the intended remediation flow (an expired secret refused by use_secret becomes usable again via expires_at: null).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_memorySearch memoryARead-onlyIdempotentInspect
Search memory keys, JSON values, descriptions and summaries. Defaults to current, non-archived memories. scope='archived' searches archived entries and previous versions; scope='all' searches both. Results include memory_at and history_id (null for current entries). Use get_memory_history for one key's previous versions, or read_memory for its current value. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags (any match) | |
| tier | No | Filter by memory tier | |
| after | No | Inclusive lower bound on memory_at | |
| limit | No | Page size | |
| scope | No | active: current; archived: archived and previous versions; all: both | active |
| before | No | Inclusive upper bound on memory_at | |
| offset | No | Results to skip, for paging | |
| search | No | Literal text in keys, JSON values, descriptions and summaries | |
| status | No | Filter by task status (hierarchical only) | |
| memory_type | No | Filter by memory type | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| include_children | No | Include child memories in results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: the default scope filter, the fact that archived scope surfaces previous versions, and that results carry memory_at and a history_id that is null for current entries. It stops short of describing result ordering or paging behavior, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, zero filler, and the most decision-relevant facts (what is searched, default scope, scope variants) are front-loaded ahead of the sibling routing and the playbook_id note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, no-output-schema search tool, the description covers the discriminating behavior (scope semantics, result fields, alternative tools) well. It omits result ordering and how search matching is done (the schema says 'literal text'), which are minor gaps rather than blockers for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 12 parameters are already documented, including the scope enum and playbook_id. The description's prose about scope and playbook_id restates rather than extends the schema; the extra return-field note (memory_at, history_id) is output information, not parameter semantics. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and the exact fields searched ('keys, JSON values, descriptions and summaries'), and its scope semantics ('archived searches archived entries and previous versions') clearly separate it from siblings like get_memory_history and read_memory. An agent can distinguish it from the other memory tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the default behavior ('Defaults to current, non-archived memories'), defines what each scope value does, and routes the agent to explicit alternatives with the condition that selects them: get_memory_history for one key's prior versions, read_memory for its current value. That is the full when/when-not/alternatives triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_secretStore secretAInspect
Store a new encrypted secret. The value is encrypted with AES-256-GCM using a per-user derived key and never stored or returned in plaintext. Requires secrets:write or full permission. Use rotate_secret to replace an existing value and list_secrets to confirm the name. Do not use this to send an authenticated request; use use_secret. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Secret name (letters, numbers, hyphens, underscores) | |
| value | Yes | The secret value to encrypt and store | |
| category | No | Secret type (default: general) | |
| expires_at | No | ISO 8601 expiration date (optional) | |
| description | No | What this secret is used for | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by disclosing the encryption algorithm (AES-256-GCM), that the value is never stored or returned in plaintext, and the permission requirement. It does not detail duplicate-name behavior or return values, but the annotations and schema already set a clear safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and every sentence adds distinct value: purpose, encryption behavior, permissions, sibling tool guidance, and parameter targeting. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create-style tool with no output schema and generic annotations, the description is thorough enough for correct selection and invocation. It covers security, permissions, alternatives, and the required targeting parameter, leaving no critical operational gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all six parameters with descriptions, so the baseline is 3. The description adds the explicit instruction to pass playbook_id as the target UUID/GUID, but this largely repeats the schema's existing parameter description and does not materially enrich parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Store a new encrypted secret') with the resource and key security property. It distinguishes itself from sibling tools by explicitly referencing rotate_secret, list_secrets, and use_secret for adjacent operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use and when-not-to-use guidance: use rotate_secret for replacing an existing value, list_secrets to confirm names, and use_secret for authenticated requests. It also states the required permission level (secrets:write or full permission).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_canvas_sectionUnlock canvas sectionAIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Document slug | |
| run_id | Yes | Workflow run UUID | |
| section_id | Yes | Section ID to unlock | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotent, destructive, and read-only hints. The description adds valuable transparency by stating it 'does not change section content' and clarifying permission needs, offering a clear behavioral contract beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three tightly written sentences without redundancy. It efficiently conveys purpose, usage, and a key distinction, maintaining excellent structure and focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with a clear schema and annotations, the description covers the essential context: action, effect, permission, and relationship to lock. It does not detail error conditions or return values, but those are not expected here, so it remains largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes all four parameters (slug, run_id, section_id, playbook_id) with concise explanations. The description adds minimal extra detail (e.g., reiterating the playbook_id type), so the schema bears most of the semantic weight, yielding a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Unlock a previously locked canvas section so other agents can edit it.' It also differentiates from siblings by noting it does not change section content and referencing lock_canvas_section, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: it explains when to use (to unlock a locked section) and mentions permission requirements ('Requires canvas:write or full permission'). It also directs users to lock_canvas_section for locking, effectively contrasting with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_mcp_serverUpdate MCP serverAIdempotentInspect
Update a connected MCP or OpenAPI server's stored name, description, tools, resources, or transport. Requires playbooks:write or full permission. Use call_connected_tool to invoke a tool, and delete_mcp_server to disconnect. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New display name | |
| tools | No | Updated tool definitions | |
| resources | No | Updated resource definitions | |
| server_id | Yes | Connected server UUID | |
| description | No | New description | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| transport_type | No | Connection type | |
| transport_config | No | Updated transport-specific configuration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description goes beyond these by clarifying that this updates 'stored' server configuration and requires a specific permission scope. It does not detail partial-update or overwrite behavior, but the annotation coverage plus the 'stored' framing make the tool's core behavior clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short sentences, front-loaded with the core purpose, then permission, alternatives, and target playbook context. Every sentence earns its place and supports either invocation or selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, no output schema, and appropriate annotations, the description provides sufficient selection criteria, permissions, and payload scope. It does not cover update semantics such as whether partial fields replace or merge, or how nested arrays should be formatted, but these are partially inferable from the schema and do not prevent correct high-level use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 8 parameters with 100% description coverage, so the baseline is 3. The main description does not add much parameter-level detail beyond mapping broad categories like 'name, description, tools, resources, or transport' to the schema, and noting that playbook_id should be the target playbook. This is accurate but redundant with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Update a connected MCP or OpenAPI server's stored name, description, tools, resources, or transport.' It clearly identifies which mutable fields are involved and distinguishes the tool from related server actions by naming call_connected_tool and delete_mcp_server.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: updating server metadata versus invoking tools via call_connected_tool versus disconnecting via delete_mcp_server. It also states a clear permission precondition: 'Requires playbooks:write or full permission,' and tells the agent to pass a playbook_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_personaUpdate personaAIdempotentInspect
Update the singleton persona's name, system prompt, or metadata without resetting to defaults. persona_id must equal playbook_id because the persona is stored on the playbook row. Requires personas:write or full permission. Use create_persona to replace name and system prompt together, delete_persona to reset to the default Assistant, and update_playbook when changing playbook-level fields as well.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name | |
| metadata | No | New metadata | |
| persona_id | Yes | Must equal playbook_id; the persona is a singleton stored on the playbook | |
| playbook_id | Yes | UUID of the playbook | |
| system_prompt | No | New system prompt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, which the description aligns with by noting 'without resetting to defaults'. The description adds permission requirements (personas:write or full permission) and the singleton storage constraint, but does not elaborate on the exact update behavior (e.g., partial vs atomic updates) beyond what is implied. No contradictions, and with annotations present, the added context is useful but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences, and front-loaded with the primary purpose. The second sentence packs essential guidance about alternatives. No wasted words, though it packs many ideas into a single sentence which could be slightly clearer, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no output schema, moderate parameter count), the description covers the essential aspects: purpose, key constraint, permissions, and alternatives. It lacks a note about possible validation errors or partial update semantics, but for this complexity level, it is fairly complete. The presence of nested objects (metadata) is not discussed, but the schema already covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well documented in the schema. The description reinforces the persona_id=playbook_id constraint and the scope of updatable fields (name, system_prompt, metadata). It adds the alternative tool usage for replacing name and system_prompt together, which helps agents understand the parameter interplay, going slightly beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a singleton persona's name, system prompt, or metadata without resetting defaults. It includes the critical constraint that persona_id must equal playbook_id, and distinguishes it from related tools like create_persona, delete_persona, and update_playbook, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when to use the tool (update persona fields) and when not to, recommending create_persona when replacing both name and system prompt, delete_persona for resetting to default, and update_playbook when also changing playbook-level fields. This gives clear decision guidance relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_playbookUpdate playbookADestructiveIdempotentInspect
Update this playbook's name, description, visibility, tags, config, singleton persona fields, or always-on project instructions. Replacement fields overwrite previous values. Handle with extreme care. Requires full or playbooks:write permission. Changing persona_system_prompt here overlaps with update_persona and create_persona; use those when only the persona should change. There is no separate get_persona: read the persona via get_playbook. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New playbook name | |
| tags | No | Replacement discovery tags | |
| config | No | Replacement playbook configuration | |
| visibility | No | New visibility | |
| description | No | New playbook description | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| instructions | No | New always-on project instructions (the AGENTS.md / CLAUDE.md content). Kept separate from the persona: the persona is who the agent is, these are the rules of this project. | |
| persona_name | No | New persona name | |
| persona_metadata | No | New metadata JSON | |
| persona_system_prompt | No | New core system instructions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly discloses the destructive/overwrite behavior: 'Replacement fields overwrite previous values.' It adds permission requirements and the persona overlap warning, which go beyond what annotations already signal. There is no contradiction with the provided readOnlyHint=false and destructiveHint=true annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently front-loaded with the core purpose, followed by warnings, permissions, alternatives, and ID format. Every sentence earns its place despite the tool having 10 parameters and a destructive nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, destructive update tool with no output schema, this description is exceptionally complete. It covers purpose, overlap with siblings, permission requirements, overwrite semantics, and target ID format. The agent has all necessary context to select and safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% parameter coverage, giving the baseline of 3. The description adds valuable semantics beyond the schema by explaining that fields are replacements, specifying playbook_id must be UUID or GUID, and clarifying the distinction between instructions and persona fields. This meaningfully helps an agent pass parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource ('Update this playbook's name, description, visibility, tags, config, singleton persona fields, or always-on project instructions'), which makes the tool's scope immediately clear. It also differentiates this from sibling tools by explicitly noting overlap with update_persona and create_persona.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when NOT to use this tool: 'use those when only the persona should change.' It also clarifies how to read persona data via get_playbook, which prevents misuse. The permission requirement ('Requires full or playbooks:write permission') and caution ('Handle with extreme care') add practical usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_runUpdate runAIdempotentInspect
Update a workflow run's name, status, or context. Requires canvas:write or full permission. Use list_runs to find run_id (there is no get_run) and delete_run to remove the run and its canvas artifacts. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New run name | |
| run_id | Yes | Workflow run UUID | |
| status | No | New run status | |
| context | No | Replacement execution context | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds useful context: permission requirement, the fact that there is no get_run, and that delete_run removes the run and canvas artifacts. It does not contradict annotations, and adds value by warning about the missing get_run and articulating the permission boundary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying necessary information: purpose, permission, lookup guidance, and playbook_id format. No fluff, well front-loaded with the main action. Ideal conciseness for a tool with 5 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers permissions, lookup workflow, and distinguishes from delete. The schema handles parameter details (enum, objects), and the description provides the operational context. It doesn't explain return values, but no output schema exists, so that's acceptable. Given the tool's complexity, this is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3, but the description adds extra hints: how to obtain run_id via list_runs, and that playbook_id should be UUID or GUID. This goes beyond the schema's basic descriptions and aids correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it updates a run's name, status, or context, with a specific verb and resource. It distinguishes from siblings by mentioning list_runs and delete_run as related, but also identifies what this tool does not do (no get_run).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisites (canvas:write or full permission) and workflow context (use list_runs to find run_id, delete_run for removal). It does not explicitly say 'use this instead of X', but it gives clear context for when and how to use, and mentions alternatives for related actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_skillUpdate skillAIdempotentInspect
Update an existing skill in this playbook. Requires full or skills:write permission; with skills:propose the change is saved as a proposal (status pending_review) and the skill stays unchanged until it is approved. 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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name | |
| content | No | New SKILL.md document, frontmatter included. A demonstrations block in the frontmatter is validated the same way create_skill validates it. | |
| priority | No | New priority level | |
| skill_id | Yes | ID or name of the skill to update | |
| description | No | New description | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only say readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description discloses auth requirements and a branching behavioral mode: with skills:write the skill is modified, with skills:propose the change is stored as a pending_review proposal and the skill stays unchanged until approved. That is exactly the kind of consequence an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and efficiently packs permissions, alternatives, and exclusions. The final sentence restating that playbook_id is a UUID/GUID duplicates the schema and is the one non-earning line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers the safety-relevant behavior (permission modes, proposal workflow, sibling routing). It stops short of stating what happens to fields omitted from the call or how validation failures on the content/frontmatter block are surfaced, but the essential invocation picture is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description's line about playbook_id being a UUID/GUID largely repeats the schema text and adds no new syntax or format guidance, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb (update) and resource (an existing skill in this playbook), and the following sentences explicitly separate this tool from create_skill, delete_skill, and rollback_skill. An agent can distinguish what this does and does not do without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: use create_skill to add, list_skill_versions before a risky edit, rollback_skill to restore, and a hard exclusion ('Do not use this to delete a skill'). It also states the permission-dependent mode of operation, so the caller knows the preconditions before invoking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_task_statusUpdate task statusAIdempotentInspect
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. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Task memory key to update | |
| result | No | Task result data to store in value | |
| status | Yes | New status | |
| summary | No | Updated summary with results | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with the `idempotentHint` annotation (which is true), the description adds valuable behavioral context: it explains the side effect on parent nodes ('the parent is auto-updated') and what the tool returns ('Returns the current subtree state'). It also mentions the required permission ('Requires memory:write or full permission'), which is beyond what the annotations provide. The `idempotentHint` is consistent with the update semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying weight. The first sentence states the primary purpose, the second covers side effects, the third mentions permissions, and the fourth and fifth give usage direction and parameter format. Only minor redundancy (the UUID/GUID note could arguably be in the schema), but overall tight and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (5 params, no output schema, annotations present), the description covers the essential side effects and permission requirements. It doesn't explicitly state what the return value looks like beyond 'the current subtree state', but the description's mention of that return is sufficient for an agent to understand the nature of the operation. It could mention error cases, but that's likely beyond scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% description coverage for all 5 parameters, so the baseline is 3. The description doesn't add extra parameter-level semantics beyond what's already in the schema, but it does provide general context about `playbook_id` format and the tool's purpose. Since the schema handles the parameter documentation well, this is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Update the status of a task node in a hierarchical plan.' It uses a specific verb ('update') and resource ('task status in a hierarchical plan'), and adds crucial context about auto-updating parents. This effectively distinguishes it from similar update tools like `update_playbook` or `update_run`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('Use create_task_graph to build the plan, not this tool'), which directly addresses the sibling tool `create_task_graph`. It also instructs on the required parameter format ('Pass playbook_id as the UUID or GUID'), making it exceptionally clear when and how to use it. The note about the alternative tool is a model example of usage guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_secretRead through a secretARead-onlyIdempotentInspect
Send a GET or HEAD request with a secret injected as a header, and return the response. The secret value is never returned to the agent — it is decrypted and used server-side only. Reads the remote API; it cannot change anything there, because only safe methods are accepted. The URL is chosen by the caller, so the target is whichever API the secret belongs to — see that API's own documentation for paths. Requires secrets:read or full permission. Example: use_secret({secret_name: 'OPENAI_API_KEY', url: 'https://api.openai.com/v1/models'}) sends GET with 'Authorization: Bearer '. Use list_secrets to discover names, use_secret_write to send POST/PUT/PATCH/DELETE, and store_secret or rotate_secret to change a stored value. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to send the HTTP request to | |
| method | No | HTTP method (default: GET). For POST/PUT/PATCH/DELETE use use_secret_write. | |
| timeout_ms | No | Request timeout in milliseconds (default: 30000, max: 60000) | |
| header_name | No | Header name to inject the secret into (default: Authorization) | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| secret_name | Yes | Name of the secret to use (e.g. OPENAI_API_KEY) | |
| extra_headers | No | Additional headers (e.g. {"Accept": "application/json"}) | |
| header_prefix | No | Prefix before the secret value (default: 'Bearer '). Use empty string for raw value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that the secret is never returned to the agent, is decrypted and used server-side only, and that only safe methods are accepted. It also notes permission requirements and that the caller chooses the URL, which adds meaningful behavioral context not inferable from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then adds permissions, an example, sibling alternatives, and the playbook_id note. It is information-dense with no filler; every sentence contributes to correct selection and invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, nested objects, no output schema, and remote-API variability, the description is sufficiently complete. It covers the main mechanics, security behavior, permissions, example usage, and sibling differentiation; the remaining parameter details are already handled by the input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds value by explaining how secret injection works, showing an example with Authorization: Bearer <key>, and clarifying that method is limited to safe GET/HEAD. This goes beyond the schema without needing to repeat all parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends GET or HEAD requests with a secret injected as a header and returns the response. It also distinguishes the tool from its sibling use_secret_write by explicitly limiting methods to GET/HEAD.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: use list_secrets to discover names, use_secret_write for POST/PUT/PATCH/DELETE, and store_secret or rotate_secret to change values. It also states the required permission (secrets:read or full permission), making invocation context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_secret_writeWrite through a secretADestructiveInspect
Send a POST, PUT, PATCH or DELETE request with a secret injected as a header, and return the response. The secret value is never returned to the agent — it is decrypted and used server-side only. This changes state in the remote API and cannot be undone from here. The URL is chosen by the caller, so the target is whichever API the secret belongs to — see that API's own documentation for paths and payloads. Requires secrets:read or full permission. Use use_secret for GET and HEAD, list_secrets to discover names, and store_secret or rotate_secret to change a stored value rather than send a request. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to send the HTTP request to | |
| body | No | JSON request body (for POST/PUT/PATCH) | |
| method | No | HTTP method (default: POST). For GET/HEAD use use_secret. | |
| timeout_ms | No | Request timeout in milliseconds (default: 30000, max: 60000) | |
| header_name | No | Header name to inject the secret into (default: Authorization) | |
| playbook_id | Yes | UUID or GUID of the target playbook | |
| secret_name | Yes | Name of the secret to use (e.g. DEPLOY_API_KEY) | |
| extra_headers | No | Additional headers (e.g. {"Content-Type": "application/json"}) | |
| header_prefix | No | Prefix before the secret value (default: 'Bearer '). Use empty string for raw value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the secret is never returned to the agent, is decrypted server-side, changes state, and cannot be undone. While annotations already indicate destructiveHint=true and readOnlyHint=false, the description adds crucial security context (secret not leaked) and irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear first sentence, followed by behavioral warnings and usage alternatives. It is slightly long but every sentence adds value, and it front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, 100% schema coverage, and no output schema, the description sufficiently covers the tool's behavior and safety. It doesn't explain return format but that's not required without an output schema. The complexity is high, but the description handles it well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a few nuances (header injection, prefix defaults, method default) but mostly repeats schema info. It doesn't explain the semantics of extra_headers or body beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends POST, PUT, PATCH, or DELETE requests with a secret injected as a header, distinguishing it from use_secret (GET/HEAD). It also clarifies the purpose is to perform state-changing operations on remote APIs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (state changes) and when-not-to-use (use use_secret for GET/HEAD, list_secrets for discovery, store_secret/rotate_secret for changes). Also notes the caller chooses the URL and should refer to the target API's documentation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_canvasWrite canvas documentADestructiveIdempotentInspect
Create or fully replace a canvas document. Markdown headings are auto-parsed into sections for parallel editing. A replace overwrites prior content and cannot be undone. Requires canvas:write or full permission. Use patch_canvas_section for partial updates and lock_canvas_section before multi-agent edits. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Document title | |
| slug | Yes | URL-friendly document identifier | |
| run_id | Yes | Workflow run UUID | |
| content | Yes | Full markdown content | |
| metadata | No | Custom document metadata | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description reinforces this by stating 'A replace overwrites prior content and cannot be undone.' It adds unique context about auto-parsing markdown headings into sections and the permission requirement, which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the core purpose, followed by key usage notes and alternatives. Every clause provides value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation with full schema coverage, the description covers purpose, usage context, destructive behavior, and prerequisites. The lack of an output schema is fine, and the description sufficiently explains the tool's role in the canvas workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented. The description adds minimal extra semantics, primarily noting that playbook_id is a UUID/GUID, which duplicates the schema. No additional parameter guidance is provided beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create or fully replace a canvas document.' It uses specific verbs (create/replace) and a specific resource (canvas document), and distinguishes itself by explicitly mentioning patch_canvas_section for partial updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'Use patch_canvas_section for partial updates and lock_canvas_section before multi-agent edits.' It also mentions permission requirements (requires canvas:write or full permission), which helps the agent decide when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_memoryWrite memoryADestructiveIdempotentInspect
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's time; supply an ISO timestamp to preserve an earlier time. is_archived=true hides the entry from normal search/context; false restores it. Tier controls context priority independently of archiving. Requires memory:write or full permission; with memory:propose the write is saved as a proposal (status pending_review) that changes nothing until the owner or an editor approves it. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Memory key | |
| tags | No | Tags for categorization | |
| tier | No | Memory tier (default: contextual) | |
| value | Yes | JSON value to store | |
| status | No | Task status (for hierarchical task tracking) | |
| summary | No | Compact summary for context views | |
| metadata | No | Free-form metadata: dependencies, thread assignment, progress. Two keys have a defined shape and are validated: metadata.episode as {location, task, outcome} makes the entry findable by where through get_memory_context, while when it happened is memory_at; and metadata.recording holds demonstration references in the same shape a skill uses, as a list of {provider, ref, fidelity, role, segments}. Everything else is stored untouched. | |
| priority | No | Priority 1-100 (default: 50) | |
| memory_at | No | Memory time including timezone; defaults to save time | |
| parent_key | No | Parent memory key for hierarchical organization | |
| description | No | Human-readable description | |
| is_archived | No | Hide from normal search; false restores an archived entry | |
| memory_type | No | flat (default) or hierarchical for task graphs | |
| playbook_id | Yes | UUID or GUID of the target playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/idempotent/destructive profile, and the description adds substantial context beyond them: automatic versioning readable via get_memory_history, the memory:write vs memory:propose permission model, and that a proposal stays pending_review and changes nothing until approved. This is exactly the extra behavioral detail an agent needs for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb+resource and versioning behavior, then param and permission details. Mostly every sentence earns its place, though the is_archived clause largely repeats the schema description and the final playbook_id sentence restates the schema's UUID/GUID wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the complex parts well for a 14-param tool: auth/permission model, versioning, proposal workflow, and archiving. With no output schema, it stops short of saying what the call returns (e.g., the stored key or entry), which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: memory_at defaults to save time and accepts an ISO timestamp to backdate, is_archived toggles visibility, and tier controls context priority independently of archiving. These clarify interactions between parameters rather than restating schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create or update a memory by key') and immediately distinguishes it from the read side by naming get_memory_history for version history. An agent can tell it apart from read_memory, delete_memory, and archive_memories without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional context: is_archived for hiding/restoring, memory:propose for proposal-mode writes, and playbook_id for targeting. However it never explicitly routes between the sibling mutation tools (archive_memories, promote_memory, consolidate_memories), leaving that comparison to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
50 tool updates
v0.1.0- First observed
archive_memories - First observed
call_connected_tool - First observed
consolidate_memories - First observed
create_mcp_server - First observed
create_persona - First observed
create_playbook - First observed
create_run - First observed
create_skill - First observed
create_task_graph - First observed
delete_mcp_server - First observed
delete_memory - First observed
delete_persona - First observed
delete_playbook - First observed
delete_run - First observed
delete_secret - First observed
delete_skill - First observed
find_tools - First observed
get_canvas_toc - First observed
get_memory_context - First observed
get_memory_history - First observed
get_memory_tree - First observed
get_playbook - First observed
get_skill - First observed
list_canvas - First observed
list_mcp_servers - First observed
list_playbooks - First observed
list_runs - First observed
list_secrets - First observed
list_skill_versions - First observed
list_skills - First observed
lock_canvas_section - First observed
patch_canvas_section - First observed
promote_memory - First observed
read_canvas - First observed
read_memory - First observed
rollback_skill - First observed
rotate_secret - First observed
search_memory - First observed
store_secret - First observed
unlock_canvas_section - First observed
update_mcp_server - First observed
update_persona - First observed
update_playbook - First observed
update_run - First observed
update_skill - First observed
update_task_status - First observed
use_secret - First observed
use_secret_write - First observed
write_canvas - First observed
write_memory
TDQS
Scored across 50 tools
Tools are mostly distinct, and descriptions explicitly cross-reference alternatives (e.g., read_memory vs get_memory_context vs get_memory_tree; use_secret vs use_secret_write). However, persona and playbook-persona operations overlap (create_persona/update_persona/update_playbook persona fields), and memory has many similar retrieval tools, so some misselection risk remains.
All tool names use snake_case, predominantly verb_noun (create_playbook, list_skills, get_memory_tree). A few names deviate semantically (use_secret, call_connected_tool, find_tools), but the casing and structural pattern are consistent throughout.
50 tools is very heavy for a single MCP server, even accounting for its broad scope (playbooks, personas, skills, canvas, runs, memory, secrets, MCP servers). While each sub-domain justifies some tools, the total exceeds the comfortable range and risks overwhelming agents.
Coverage is extensive: playbooks, personas, skills, canvas, runs, memory, secrets, and connected servers all have lifecycle operations. Minor gaps exist (no get_run, no get_mcp_server, no delete_canvas), but they are either deliberate or documented workarounds, so core workflows are complete.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Hosted MCP server and Agent Skills for specs, engineering threads, and project memory.
Related MCP Servers
- FlicenseCqualityAmaintenanceSelf-hosted, source-available AI workflow automation platform. Build multi-agent, RAG, and tool-using pipelines on a visual canvas and publish any workflow as an MCP server (stdio/SSE/Streamable HTTP). Also an MCP client via the agent node.21,221-
- AlicenseAqualityCmaintenanceUniversal MCP knowledge server for LLM agents, powered by local RAG, providing domain-specific best practices and playbooks across software engineering, marketing, video editing, and other knowledge areas.3MIT
- AlicenseNot gradedqualityCmaintenanceA lightweight, self-hostable MCP server for shared memory, structured command relay, and traceable decision evidence across AI runtimes.1MIT
- AlicenseNot gradedqualityAmaintenanceA self-hosted MCP server that provides any LLM with a graph-backed memory layer of your life—tasks, email, finance, contacts, calendar—plus autonomous agent offices that act on your behalf.3Apache 2.0