AgentPlaybooks
Server Details
Vendor-neutral home for portable agents: skills, MCP tools, memory, canvas, and secret proxy.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- matebenyovszky/agentplaybooks
- GitHub Stars
- 10
- Server Listing
- AgentPlaybooks
TDQS
Score is being calculated.
Available Tools
16 toolscreate_playbookCreate playbookInspect
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 |
find_toolsFind toolsARead-onlyIdempotentInspect
Find account and playbook operations by keyword and return their input schemas. No playbook_id is needed for the account catalog. Supply playbook_id to also search connected servers. Call returned tools directly; omitted tools remain callable in core/full. Pinned domain views search only their allowed operations.
| 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 | No | 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 establish a safe, idempotent read, so the description spends its words well on non-obvious behavior: results are tool definitions with schemas, the search surface widens with playbook_id, and pinned domain views restrict the result set. Terms like 'core/full' and 'Pinned domain views' are used without definition, which limits how much an agent can act on 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?
Four short sentences, purpose front-loaded, each carrying distinct information with no filler. Slight density cost from unexplained internal jargon ('core/full', 'Pinned domain views') that an outside agent cannot parse.
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 an output schema present, the description needn't describe return values, and it instead covers the risky parts: search scope, when playbook_id matters, and whether omitted tools are callable. That is sufficient for an agent to select and invoke this 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 earns above that by explaining the semantic effect of playbook_id (it expands the search scope to connected servers) rather than restating the schema's 'UUID or GUID of the target playbook'. The limit cap is left to 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?
States a specific verb+resource: find operations by keyword and return their input schemas, which is a distinct capability from every sibling (get_playbook, list_skills, list_mcp_servers are conventional lookups). It does not explicitly name a sibling to contrast with, so it lands just shy of a 5.
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 a clear conditional: omit playbook_id for the account catalog, supply it to also search connected servers. It also warns that omitted tools remain callable in core/full, discouraging the false inference that absence means unavailability. No explicit when-not-to-use-this-tool statement keeps it at 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playbookGet playbookRead-onlyIdempotentInspect
Get a playbook with its singleton persona and compact skill, connected-server and memory metadata. Compact memory is paged (20 by default); memory_page reports has_more and next_offset. Skill bodies, memory values and server configurations are omitted unless include_content=true, an explicit full-content export. This is the only persona retrieval tool; there is no get_persona. Read-only; requires playbooks:read or full. Use list_playbooks for IDs, get_skill / get_skill_reference for selected instructions and search_memory / read_memory for selected facts.
| Name | Required | Description | Default |
|---|---|---|---|
| playbook_id | Yes | UUID of the playbook | |
| memory_limit | No | Memory metadata page size in compact mode; use search_memory for focused recall | |
| memory_offset | No | Memory metadata offset in compact mode | |
| include_content | No | Restore the full skill, memory and server payload; prefer targeted reads |
get_profileCheck connected accountRead-onlyIdempotentInspect
Return the profile represented by this connection's validated credentials. Use to check which AgentPlaybooks account is connected before choosing a playbook or reconnecting. The opaque ID stays stable across reconnections. Read-only; accepts no account selector.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | No | |
| No | ||
| nickname | No |
get_skillGet skillARead-onlyIdempotentInspect
Return the full definition of one skill: SKILL.md content, metadata, and an attachment manifest with filenames and sizes. For only the manifest set include_content=false. Attachment bodies are omitted by default; read one with get_skill_reference, or set include_attachments=true for a complete export. skill_id accepts a UUID or kebab-case name. Declared demonstrations include resolved recording and segment links. Read-only. Use list_skills to discover IDs; list_skill_versions is historical data, not the current definition. 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 | |
| include_content | No | Set false for metadata and attachment manifest only | |
| include_attachments | No | Include every attachment body; prefer get_skill_reference for one file |
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 readOnly, idempotent, non-destructive, so the safety profile is covered; the description adds genuinely new behavior: attachment bodies are omitted by default, include_attachments produces a complete export, and demonstrations come back with resolved recording and segment links. The only weakness is that 'Read-only' restates the annotation and no guidance is given on size/rate implications of a full export.
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 primary return payload, then the modifier flags, then the ID/discovery guidance, so the most important information comes first. Six sentences is dense but nearly all earn their place; only 'Read-only' (redundant with readOnlyHint) and the playbook_id restatement are 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?
An output schema exists, so return-value structure need not be explained, and the description still covers default omission of attachments, the full-export escape hatch, resolved demonstration links, and ID format flexibility. For a 4-parameter read with full schema coverage, nothing an agent needs to invoke it correctly 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 adds real semantics beyond the schema: skill_id accepts either a UUID or a kebab-case name, and playbook_id is the UUID/GUID of the target playbook. It also clarifies the intent of the two boolean flags (manifest-only vs. complete export) rather than just their defaults.
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 ('Return the full definition of one skill') and enumerates what that definition comprises: SKILL.md content, metadata, attachment manifest with filenames and sizes. It also explicitly distinguishes itself from list_skills, list_skill_versions, and get_skill_reference, so an agent can select it without reading sibling 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 conditions and alternatives: use include_content=false for manifest only, use get_skill_reference to read a single attachment body, use include_attachments=true for a full export, use list_skills to discover IDs, and notes list_skill_versions is historical rather than current. Every branch point an agent could hit is routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skill_referenceRead skill referenceARead-onlyIdempotentInspect
Read exactly one skill file, optionally just one Markdown heading and its subsections. Use a filename from get_skill's attachment manifest, or SKILL.md for the main instructions. section matches the first exact ATX heading (without #, case-insensitive); code-fence headings are ignored. Returns at most max_chars (default 12000, maximum 32000), with next_offset for continuation within the selected text. Offsets count UTF-16 string units. Read-only; the parent skill must belong to this playbook. Pass playbook_id as the UUID or GUID of the playbook this call should target.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Zero-based UTF-16 offset within the selected file or section; use the previous next_offset | |
| section | No | Optional exact Markdown heading without # prefixes | |
| filename | Yes | Exact attachment filename, including its folder, or SKILL.md | |
| skill_id | Yes | Skill UUID or name | |
| max_chars | No | Maximum UTF-16 string units returned in content; default 12000, maximum 32000 | |
| playbook_id | Yes | UUID or GUID of the target playbook |
Output Schema
| Name | Required | Description |
|---|---|---|
| offset | Yes | |
| content | Yes | |
| section | No | |
| filename | Yes | |
| skill_id | Yes | |
| truncated | Yes | |
| next_offset | Yes | |
| total_chars | Yes | |
| section_start_line | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent, but the description adds substantial behavior: code-fence headings are ignored, matching is first-exact ATX heading and case-insensitive, offsets are UTF-16 units, output is capped with next_offset continuation, and the parent skill must belong to the playbook.
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 core action and its scoping constraint are front-loaded, and later sentences supply the matching, pagination, and permission rules. It is dense and packs several rules together, but no sentence is 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 an output schema present, the description need not describe return values, and the remaining unknowns an agent would care about — file selection, section matching, pagination, size caps, and the playbook ownership precondition — are all covered.
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 goes beyond it by explaining that section matches the first exact ATX heading case-insensitively with code fences ignored, and by clarifying that offsets count UTF-16 string units and chain from next_offset.
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 with scope: 'Read exactly one skill file, optionally just one Markdown heading and its subsections.' It also distinguishes itself from the sibling get_skill by directing the agent to that tool's attachment manifest as the source of filenames.
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 tells the agent where filename values come from (get_skill's attachment manifest, or SKILL.md for main instructions) and what section values must match. It does not state any when-not-to-use condition or contrast with other read tools like read_canvas, so it falls just short of full routing guidance.
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 playbooksRead-onlyIdempotentInspect
Find playbooks owned by or shared with the authenticated user by a literal name fragment. Returns compact metadata, access roles and counts, not instructions, persona prompts or config. Default 50 results, newest first; use offset for the next page. Supports the first 1000 matches; narrow query for larger accounts. Read-only; requires playbooks:read or full. Reuse a known ID instead of listing before every operation; get_playbook retrieves one playbook's context.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum metadata entries in this page (1-100) | |
| query | No | Case-insensitive literal name fragment; omit to browse | |
| offset | No | Skip this many matches; pages stop at the first 1000 matches. Narrow query for larger accounts. |
Output Schema
| Name | Required | Description |
|---|---|---|
| playbooks | Yes |
list_skillsList skillsARead-onlyIdempotentInspect
List every skill currently attached to this playbook as metadata: id, name, description (up to 512 characters), licence, priority and created_at. Content and attachment bodies are omitted by default. Use get_skill for one definition, then get_skill_reference for one file or Markdown section. Set include_content=true only for an explicit full-content listing. Read-only. Do not use list_skill_versions, which lists historical revisions of one skill. 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 | |
| include_content | No | Include full SKILL.md contents; omitted by default to keep discovery small |
Output Schema
| Name | Required | Description |
|---|---|---|
| skills | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real behavior: content and attachment bodies are omitted by default, descriptions are capped at 512 characters, and include_content is an opt-in that enlarges discovery. The separate 'Read-only.' sentence is redundant with readOnlyHint=true, which keeps this from 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?
Front-loaded with payload and default behavior, followed by alternatives and exclusions — good ordering with no filler sentences. It is slightly over-long because 'Read-only' and the playbook_id format duplicate structured data.
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 read-only two-parameter listing tool with a rich output schema and full annotation coverage, nothing an agent needs is missing: payload scope, defaults, alternatives, and the negative routing case are all 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 coverage is 100%, so both parameters are already documented in structured fields, and the description's 'UUID or GUID of the playbook' merely restates the schema. It does add mild value by framing include_content as an exception for an explicit full-content listing.
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 + resource (list the skills attached to a playbook) plus the exact fields returned as metadata. It explicitly distinguishes itself from get_skill, get_skill_reference and list_skill_versions, so an agent can route 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 routing ('Use get_skill for one definition, then get_skill_reference for one file or Markdown section') and an explicit when-not ('Do not use list_skill_versions, which lists historical revisions'). The include_content caveat further constrains usage.
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.
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.
update_personaUpdate personaDestructiveIdempotentInspect
Edit the playbook's one persona: name, system prompt or metadata. Omitted fields stay unchanged. Example: {playbook_id, system_prompt: 'Review Python code'}. Requires personas:write or full. Use reset_persona only to discard custom persona settings. Use update_playbook for project name, visibility or instructions. Legacy persona_id is optional and must equal playbook_id if supplied.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name | |
| metadata | No | New metadata | |
| persona_id | No | 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 |
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. Keep entries concise and actionable: save durable facts, decisions, and useful next steps rather than raw transcripts or repeated detail, and provide a short summary. When current evidence corrects an existing fact, update its existing key instead of adding a contradictory duplicate; archive obsolete entries with archive_memories. 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 declare destructiveHint=true and idempotentHint=true, and the description reconciles the destructive flag by explaining previous contents are saved and retrievable via get_memory_history. It goes beyond structured fields with permission requirements (memory:write / full vs memory:propose producing a pending_review proposal) and archive/tier 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?
Front-loads the core action and follows with the highest-value policies (concise saving, dedup-by-key, archiving). It is dense and covers many concerns in one block, but nearly every sentence carries actionable instruction; minor looseness around the playbook_id sentence.
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 14-parameter, nested-metadata mutation with no output schema, the description covers the risky and non-obvious angles (permissions, proposals, history retention, archiving, tiers). It omits any mention of return shape and barely touches several optional parameters, but schema coverage is complete so the gap is small.
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 ISO, is_archived toggles visibility, tier controls context priority independently of archiving, and playbook_id is UUID or GUID. It does not add guidance for tags, priority, parent_key, status, or memory_type, so it stops short of full value-add.
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 pair and resource ('Create or update a memory by key') and immediately clarifies the create-vs-update semantics that distinguish it from read_memory, delete_memory, or archive_memories. An agent can identify the operation and its target 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?
Gives explicit when-to-do-what: update an existing key rather than duplicating a contradictory fact, archive obsolete entries with archive_memories, save durable facts not raw transcripts. It names the corrective alternative (archive_memories) and the review path (memory:propose).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Related MCP Connectors
Hosted MCP server and Agent Skills for specs, engineering threads, and project memory.
Shared MCP memory for AI agents: knowledge base, skills, todos and agent-to-agent handoffs.
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides a portable AI control plane with shared memory, permissions, and skills across multiple MCP hosts and unattended channels, enabling consistent agent behavior.2 npm1MIT
- AlicenseNot gradedqualityAmaintenanceA portable agent memory server that lets LLM clients share scoped context, skills, and session handoffs across different MCP-compatible tools.14 npmMIT
- AlicenseAqualityAmaintenanceA self-hostable semantic skill registry for AI agents, providing searchable, versioned, and verified skills over a single MCP endpoint with per-agent private vaults and trust tiers.7Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server that adapts, activates, and shares local Agent Skills for runtimes like OpenAI Agents SDK and Claude Code, enabling dynamic discovery and shareable HTML/image artifacts.26 npm3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.