Pathrule
Server Details
Path-scoped team memories, rules and skills for Claude Code, Cursor, Codex and other MCP clients.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
32 toolspathrule_create_workspaceCreate Pathrule WorkspaceAInspect
Create a new Pathrule workspace inside an organization. Cloud-only: writes the workspace row through the user's JWT (RLS enforces organization membership). Does NOT attach the workspace to a local folder, does NOT install any AI client config, and does NOT render CLAUDE.md/AGENTS.md or editor companion files — those steps require Pathrule Studio or CLI. After creation, call pathrule_setup with the returned workspace_id to fetch the bootstrap brief.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable workspace name (e.g. the project / repo display name). | |
| git_remote_url | No | Optional git remote URL (HTTPS or SSH form). Stored for reference and surface matching; never used to access the user's machine. | |
| organization_id | Yes | Organization UUID from pathrule_list_organizations. | |
| active_agent_targets | No | AI clients this workspace will be used from. Affects Desktop/CLI companion file rendering when those surfaces attach. Defaults to ['claude-code']. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | The created workspace row. |
| error | No | Present only when ok is false. |
| next_step | No | The call to make next, as { tool, arguments }. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
| local_runtime | No | Present on tools that carry the local-runtime upgrade reminder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses side effects: it writes the workspace row via JWT, enforces organization membership through RLS, and has no local side effects. It clarifies the scope of creation so an agent won't assume workspace setup is complete.
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: first states the core action, second lists exclusions with the required alternative, third gives the next step. Every sentence earns its place and is front-loaded, with the most important information appearing 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?
For a flat 4-parameter create operation with a full schema and an output schema, the description covers prerequisites (organization membership), side-effect boundaries, and the immediate follow-up call. Nothing essential is missing for an agent to invoke it 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 description coverage is 100%, so the baseline is 3. The description adds context about the workspace_id being returned for pathrule_setup, but the input schema already fully documents each parameter's meaning and constraints. No parameter-level details need to be compensated.
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: "Create a new Pathrule workspace inside an organization." It immediately distinguishes itself from setup tooling by noting what it does NOT do (attach folder, install client config, render companion files) and names the follow-up sibling pathrule_setup.
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 to use this tool (cloud-only creation, with JWT/RLS enforcement), what it does not do (no local attach, no config install), and explicitly routes the agent to call pathrule_setup afterward. This gives clear usage context and exclusions without needing to inspect sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_delete_memoryPathrule Delete MemoryADestructiveInspect
Soft-delete a memory by default. Pass hard:true to permanently delete (requires workspace_admin). Cloud-only.
| Name | Required | Description | Default |
|---|---|---|---|
| hard | No | False or omitted performs a soft delete. True permanently deletes and requires admin rights. | |
| memory_id | Yes | Memory UUID to delete. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| expected_version_id | No | Optional optimistic-concurrency token from the existing record. Pass it when available to avoid overwriting a newer edit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Deleted memory: id, plus the title it had before deletion. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral nuance beyond the destructiveHint annotation: the default action is soft-delete, hard:true causes permanent deletion, admin rights are required for that path, and the tool is cloud-only. This is exactly the operational context annotations alone do not 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?
Two short sentences with the default behavior front-loaded and the exceptional path and constraints following. Every clause earns its place 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 100% schema coverage, an output schema, and the destructiveHint annotation, the description covers the decision-relevant behavior: default mode, permanent mode, admin requirement, and cloud-only restriction. It could mention whether soft-deleted memories remain restorable, but that is not necessary 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%, and the schema already documents all four parameters including the hard vs soft delete difference and expected_version_id's optimistic concurrency purpose. The description's mention of hard:true adds minimal value beyond what the schema already states, 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?
The description states the specific verb 'delete' and resource 'memory' explicitly, and clarifies the two deletion modes (soft by default, permanent with hard:true). This makes it distinct from sibling delete tools for rules/skills and from memory read/write/update 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?
It clearly states when to use the default soft delete versus passing hard:true, and flags the workspace_admin requirement and Cloud-only limitation. It does not explicitly name alternative tools like update_memory or write_memory, but the context for choosing the delete operation is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_delete_rulePathrule Delete RuleADestructiveInspect
Soft-delete a rule by default. hard:true requires workspace_admin. Cloud-only.
| Name | Required | Description | Default |
|---|---|---|---|
| hard | No | False or omitted performs a soft delete. True permanently deletes and requires admin rights. | |
| rule_id | Yes | Rule UUID to delete. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| expected_version_id | No | Optional optimistic-concurrency token from the existing record. Pass it when available to avoid overwriting a newer edit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Deleted rule: id, plus the name it had before deletion. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false, so the description's job is to add nuance. It does this by disclosing the default soft-delete behavior, the admin permission required for hard deletion, and the cloud-only environment restriction. These are useful behavioral details beyond the raw 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 entire description is three short sentences, each carrying distinct information: default behavior, hard-delete permission, and environment restriction. It is front-loaded with the most important operational fact and contains 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?
With 100% parameter coverage, an output schema, and clear annotations, the description does not need to restate return values or schema details. It covers the main contextual gaps: deletion mode, admin requirements, and cloud-only availability. A small omission is that it does not explain the practical effect of a soft-delete, but this is not critical given the schema and 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 description coverage is 100%, so the baseline is 3. The description adds extra meaning beyond the schema by explaining that hard:true requires workspace_admin, which clarifies a permission consequence not fully captured by the property description. It does not duplicate the schema's parameter docs, so it earns above baseline.
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 'delete' and resource 'rule', and immediately distinguishes the default soft-delete behavior from the hard-delete alternative. It clearly differentiates this from sibling tools like read_rule, update_rule, and get_node by naming the exact operation and its mode.
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 clear context: soft-delete is the default, hard:true requires workspace_admin, and the tool is cloud-only. It does not explicitly name alternatives, but the soft/hard distinction gives an agent enough guidance to choose the correct invocation mode. The lack of explicit 'when not to use' guidance is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_delete_skillPathrule Delete SkillADestructiveInspect
Soft-delete a skill by default. hard:true requires workspace_admin. Cloud-only.
| Name | Required | Description | Default |
|---|---|---|---|
| hard | No | False or omitted performs a soft delete. True permanently deletes and requires admin rights. | |
| skill_id | Yes | Skill UUID to delete. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| expected_version_id | No | Optional optimistic-concurrency token from the existing record. Pass it when available to avoid overwriting a newer edit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Deleted skill: id, plus the name it had before deletion. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag the tool as destructive, but the description adds meaningful behavioral nuance beyond those annotations: deletion is soft by default, hard deletion requires admin privileges, and the operation is Cloud-only. This is exactly the kind of context an agent needs before invoking it.
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 short sentences with no filler. It front-loads the most important behavior (soft-delete by default) and then adds the key constraints: admin requirement and Cloud-only availability.
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 rich schema, output schema, and annotations, the description is complete enough for correct selection and invocation. It captures the essential behavioral, permission, and deployment constraints without needing to repeat schema 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?
The input schema has 100% parameter coverage, so the description does not need to re-document parameters. The description reinforces the 'hard' parameter's default behavior and admin requirement, but adds no new meaning 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 states the specific action ('Soft-delete a skill'), the target resource ('a skill'), and the default mode of operation. This distinguishes it clearly from sibling delete tools that target rules or memories.
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 clear context on how to use the tool: soft-delete by default, hard delete requires workspace_admin, and it is Cloud-only. It does not explicitly name alternative tools or exclusions, but the resource-specific wording and sibling names make the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_get_contextGet Pathrule ContextARead-onlyInspect
Return Pathrule context for a workspace path: relevant memories, rules, skills, subtree index, and a next_required_action hint. Remote clients must pass workspace_id; call pathrule_list_workspaces first when unsure. No cwd or local_root_path is used. The response includes a local_runtime.cta line — surface it when the user could benefit from Pathrule Studio's hooks, CLAUDE.md/AGENTS.md sync, or on-disk skills.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | No | Workspace-relative path such as '/' or '/packages/app'. Defaults to '/'. | |
| user_intent | No | The user's current request, if available. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| known_protocol_version | No | Pass the protocol_version already cached by the client to omit repeats. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| protocol | No | Full protocol text. Sent only when the client did not already hold this protocol_version. |
| workspace_id | No | Workspace the context was resolved in. |
| local_runtime | No | Present on tools that carry the local-runtime upgrade reminder. |
| protocol_version | No | Version of the Pathrule agent protocol this response was built against. Cache it and pass it back as known_protocol_version. |
| protocol_unchanged | No | Present when known_protocol_version matched, meaning `protocol` was omitted on purpose. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide readOnlyHint=true and destructiveHint=false. The description adds useful behavior beyond that: it ignores cwd/local_root_path and includes a local_runtime.cta line in the response. There is no contradiction with 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 four purposeful sentences, front-loaded with the core behavior and environment assumptions. The CTA/response note is slightly dense but relevant to downstream user interaction; no words are wasted.
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 and annotations cover the safety profile. The description covers prerequisites, workspace_id handling, the no-cwd behavior, and a special response line. Nothing needed to call the tool 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. The description adds meaning for workspace_id by flagging it as required for remote clients and linking it to pathrule_list_workspaces, and clarifies that cwd/local_root_path are not used. It does not elaborate on node_path, user_intent, or known_protocol_version, but those are already documented 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 uses a specific verb ('Return') and resource ('Pathrule context for a workspace path'), and enumerates the contents: memories, rules, skills, subtree index, and a next_required_action hint. This clearly distinguishes it from related get/list 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?
It gives clear context: remote clients must pass workspace_id, and should call pathrule_list_workspaces first when unsure. It also states that cwd/local_root_path is not used. It does not explicitly name alternatives or when-not-to-use cases, but the prerequisite guidance is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_get_local_runtime_upgradeGet Local Runtime UpgradeARead-onlyInspect
Explain what Pathrule CLI (power-user, terminal-first) and Pathrule Studio (GUI) unlock beyond Remote MCP. Call this when the user asks 'is there a better way?', 'why do I need to install something?', wants hook-level automation, or wants to compare surfaces. The response splits the pitch by audience (CLI for terminal-first, Pathrule Studio for GUI) and explains the real token-savings angle: hooks fire before every AI tool call and inject context for free, while remote MCP is manual mode where the AI spends tokens on each context fetch.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Surface comparison split by audience. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and non-destructive; the description adds useful behavioral detail by disclosing that the response is a side-by-side pitch split by audience and that it emphasizes the token-savings mechanism of hooks versus manual remote MCP. 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 front-loaded with its core purpose and the usage triggers are placed early. The final sentence is somewhat long and partially restates the CLI/Studio audience split, but each sentence still contributes actionable 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?
For a zero-parameter, read-only explainer with an output schema, the description covers what the tool does, when to invoke it, and what the response will contain. Nothing essential is missing for correct selection and 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?
There are zero parameters and an empty schema, so there is no parameter ambiguity for the description to resolve. The baseline of 4 applies because the description correctly avoids inventing parameter guidance.
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 communicative action ('Explain what Pathrule CLI and Pathrule Studio unlock beyond Remote MCP') and differentiates this tool from the sibling data-retrieval and mutation tools by making it an audience-targeted explanation rather than a resource operation. The triggers and response focus make the tool's unique role 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?
It gives explicit call conditions ('Call this when the user asks...') and concrete user intents such as wanting hook-level automation or comparing surfaces. It does not explicitly say when not to use specific sibling tools, but the trigger framing is enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_get_nodeGet Node DetailARead-onlyInspect
Return a single node plus ids for attached memories, rules, and skills. Requires workspace_id to prevent cross-workspace ambiguity.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes | Tree node UUID. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| workspace_id | No | Workspace the node belongs to. A node outside the requested workspace is reported as a not_found error instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is already covered. The description adds behavioral context by specifying the return contents and explaining that workspace_id prevents cross-workspace ambiguity. 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?
Two efficient sentences: the first states the core behavior and return scope, and the second adds the key usage constraint. No wasted words or repetition of schema 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?
For a simple read-only retrieval with only two required parameters and an output schema, the description fully covers what an agent needs to invoke it correctly. Annotations handle safety, schema handles parameters, and the description clarifies purpose and 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?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining why workspace_id is required and tying node_id to the tree node concept. This meaningfully supplements the schema's basic 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?
States a specific verb ('Return'), a distinct resource ('a single node'), and the exact payload scope ('plus ids for attached memories, rules, and skills'). This clearly separates it from sibling tools like pathrule_get_tree or pathrule_get_context.
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 clear context: use this for a single node and its attached references. It also notes the workspace_id requirement to prevent ambiguity. It does not explicitly mention an alternative tool or a when-not-to-use condition, but the single-node scoping is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_get_refresh_briefGet memory/rule refresh briefARead-onlyInspect
Claim one refresh task and return the subject, stale-signal evidence, AI instructions, and any proposed patch. Call pathrule_list_pending_refreshes first to choose a refresh_id. Remote MCP can inspect cloud records only; use Desktop/CLI before claiming local source code was verified.
| Name | Required | Description | Default |
|---|---|---|---|
| refresh_id | Yes | Refresh task UUID from pathrule_list_pending_refreshes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| signal | No | Why the item was flagged stale: { formulaId, humanReason, detectedAt, rawSignals }. |
| status | No | Task status after the claim. |
| subject | No | The memory or rule this task proposes to update. |
| refresh_id | No | The refresh task now claimed by this client. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
| local_runtime | No | Present on tools that carry the local-runtime upgrade reminder. |
| proposed_patch | No | A pre-drafted patch when one exists, otherwise null. |
| ai_instructions | No | What to do with this task, written for the agent. |
| local_runtime_required | No | Non-null when the task needs local source inspection that Remote MCP cannot do. Do not claim it was applied in that case. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations mark the tool readOnlyHint=true, so invoking it should not modify state, but the description says 'Claim one refresh task,' which implies taking/assigning a task and a state change. The description does not reconcile this conflict, and the non-idempotent hint reinforces that a claim may not be repeatable. This is an annotation 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?
Three sentences with no filler: the first states the action and outputs, the second gives the prerequisite, and the third gives an environment caveat. Information is front-loaded and 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?
For a one-parameter tool with an output schema and annotations, the description covers the prerequisite, return contents, and environment limitation. However, it never clarifies whether claiming a refresh task has persistent side effects, which is an important behavioral gap in light of the contradictory readOnlyHint.
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 documents refresh_id as a UUID from pathrule_list_pending_refreshes, so the baseline is 3. The description adds workflow meaning by explicitly directing the agent to call that list first and choose the ID, which helps ensure a valid parameter value.
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 names a specific action ('claim one refresh task') and a concrete resource, and enumerates exactly what is returned: subject, stale-signal evidence, AI instructions, and any proposed patch. This makes it easy to distinguish from browsing pending tasks with pathrule_list_pending_refreshes.
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 instructs the agent to call pathrule_list_pending_refreshes first to select a refresh_id, and it states when a different environment is needed ('Remote MCP can inspect cloud records only; use Desktop/CLI before claiming local source code was verified'). This is direct when-to-use guidance rather than leaving the workflow implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_get_treeGet Workspace TreeBRead-onlyInspect
Return the full Pathrule node tree for a workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| nodes | No | Every node in the workspace tree, each with its id, path, name, and parent linkage. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'full tree' scope, clarifying that this returns the complete node hierarchy rather than a single node, but it does not disclose pagination, error behavior, or response size beyond what annotations and the output schema already imply.
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?
A single front-loaded sentence with no filler. It names the action, the resource, and the scope clearly, and every word contributes to understanding the tool's 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?
For a one-parameter read-only tool with complete schema coverage and a provided output schema, the description is nearly sufficient. It could be more complete by explicitly contrasting with pathrule_get_node or hinting at the returned structure, but no essential information for 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 description coverage is 100%, so the baseline is 3. The description adds no parameter-specific detail beyond mentioning 'for a workspace', while the schema already documents workspace_id as a UUID from pathrule_list_workspaces.
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 is specific: it names a verb ('Return'), a resource ('the full Pathrule node tree'), and a scope ('for a workspace'). It implicitly distinguishes from sibling pathrule_get_node by emphasizing the full tree, though it does not explicitly name any alternative.
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 no guidance about when to choose this tool over related siblings such as pathrule_get_node or pathrule_get_context, and it does not state exclusions or prerequisites. The only usage hint, 'Workspace UUID from pathrule_list_workspaces', appears in the parameter schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_gotoGo To NodeARead-onlyInspect
Resolve a path/name/fuzzy target inside a workspace and return full content for that node plus a compact subtree memory index.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Node path, name, or fuzzy target such as '/apps/api' or 'auth'. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| subtree_limit | No | Maximum entries in the subtree memory index. Defaults to 50, capped at 500. Raise it only when the compact index is genuinely truncated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| node | No | The node the target resolved to. |
| error | No | Present only when ok is false. |
| rules | No | Active rules on the node, with full content. Obey these. |
| skills | No | Active skills on the node, with full content. |
| memories | No | Active memories on the node, with full content: id, title, content, source. |
| subtree_memory_index | No | Compact index of memories below the node: { entries, total, truncated }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description need not restate safety. It does add useful context about returning a subtree memory index in addition to node content, but it does not disclose anything about edge-case behavior, resolution failure, or workspace constraints beyond what the schema and annotations imply.
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?
A single sentence that front-loads the action and resource, with the return payload summarized compactly. It is efficient and readable, though slightly dense with the compound noun phrase 'compact subtree memory index'.
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 that an output schema exists, the return structure needs no further description. The description covers the core behavior and result format, and the annotations cover the safety profile. The only notable gap is explicit guidance on when to choose this tool over its siblings, which is minor relative to the tool's simple read-only nature.
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%, and each parameter (target, workspace_id, subtree_limit) is already documented with clear descriptions and constraints. The description adds no meaningful parameter semantics beyond restating the fuzzy-target concept already present 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 names a specific verb ('Resolve') and resource ('path/name/fuzzy target inside a workspace') and specifies the two-part result: full content plus a compact subtree memory index. It is clear about what the tool does, though it does not explicitly contrast itself with siblings like pathrule_get_node or pathrule_get_tree.
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 for fuzzy or path-based navigation inside a workspace, which differentiates it from more specific node/tree readers, but it provides no explicit when-to-use or when-not-to-use guidance. Alternatives are not named, so an agent must infer the right context from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_import_patternPathrule Import PatternAInspect
Import an official Pathrule pattern (a bundle of memories, rules, and skills) into the workspace when the user pastes a ::pathrule:package:<slug> token. WORKFLOW: (1) First call with dry_run: true to see the pattern's appliesTo (stacks/packages/paths) and pieces WITHOUT writing. (2) Judge fit against THIS workspace. If it does NOT fit (e.g. an Expo pattern but the project has no Expo), STOP and ask the user whether and where to add it. (3) Choose the node_path base matching the user's structure (e.g. /apps/mobile); the pattern's paths re-root under it. (4) Call again without dry_run to write. Path-first + idempotent. Imported skills are tagged pattern:<slug>; the response lists each created id. Relay the returned human_message. Use pathrule_remove_pattern to undo. This is a pattern import, NOT a skill — do not run the find-skills protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Pattern slug — the part after 'package:' in ::pathrule:package:<slug>. | |
| dry_run | No | True returns the pattern's appliesTo + pieces WITHOUT writing. Use first to decide fit + base path. | |
| verbose | No | Set true for per-piece import detail. Default false (compact summary). | |
| node_path | No | Base path to re-root the whole bundle under, chosen to match this workspace. Omit only when the pattern's own paths already fit. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| slug | No | Pattern slug that was imported. |
| error | No | Present only when ok is false. |
| skipped | No | Pieces not written, with the reason, for example an item that already existed. |
| imported | No | The pieces actually written, grouped by kind (memories, rules, skills). |
| applies_to | No | The pattern's declared fit: stacks, packages, and paths it targets. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Path-first + idempotent', but the annotations declare `idempotentHint: false`. This is a direct contradiction. Even though the description otherwise discloses workflow behavior, the idempotency claim could mislead an agent into assuming repeated calls are safe when the annotations say otherwise.
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 longer than average but every sentence earns its place: purpose, workflow steps, decision rules, return behavior, and exclusion guidance. The numbered WORKFLOW structure makes the multi-step process easy to follow without repetition or 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?
For a 5-parameter import tool with an output schema, the description covers the full decision path: dry-run inspection, fit judgment, base path selection, actual write, id listing, human_message relay, and undo via `pathrule_remove_pattern`. It also warns against treating this as a skill import. The only flaw is the idempotency contradiction, which is already accounted for in behavioral transparency.
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 above the schema by explaining the strategic role of `dry_run`, instructing how to pick `node_path` so paths re-root under the workspace structure, and clarifying that `slug` comes from the token after 'package:'.
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: 'Import an official Pathrule pattern... into the workspace.' It clearly ties the tool to the `::pathrule:package:<slug>` token and explicitly distinguishes it from a skill import and from the find-skills protocol.
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 WORKFLOW section gives explicit step-by-step guidance: call with `dry_run: true` first, judge fit, stop and ask if it doesn't fit, choose `node_path`, then call without `dry_run`. It also names `pathrule_remove_pattern` as the undo alternative, giving clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_list_memoriesList MemoriesARead-onlyInspect
List active memories attached to a specific Pathrule tree node. Use pathrule_get_context, pathrule_goto, or pathrule_get_node first to discover the node_id. Returns compact previews only; call pathrule_read_memory with a memory_id when you need the full body.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes | Tree node UUID returned by pathrule_get_node, pathrule_goto, or the workspace tree. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| memories | No | Compact previews only. Read a full body with pathrule_read_memory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the output is 'compact previews only' and that the list covers 'active' memories, adding behavioral context beyond the readOnlyHint annotation. It does not discuss pagination or limits, but for a read-only list tool the annotation already covers 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, each earning its place: purpose, prerequisite discovery step, and return behavior plus fallback tool. Front-loaded and free of 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 single-required-parameter read-only tool with an output schema present, the description covers discovery of the parameter, the preview-only nature of results, and the path to the full-body sibling. Nothing critical 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 for node_id is 100% and the schema already says it is a tree-node UUID returned by the discovery tools. The description repeats this rather than adding new parameter-level detail, so the 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 precise verb-resource pair: 'List active memories attached to a specific Pathrule tree node.' It distinguishes itself from pathrule_read_memory by noting this returns compact previews only, so an agent can tell which operation it needs.
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 to call pathrule_get_context, pathrule_goto, or pathrule_get_node first to obtain the node_id, and to switch to pathrule_read_memory when the full memory body is required. This is concrete when-to-use and when-not-to-use guidance naming sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_list_organizationsList Pathrule OrganizationsARead-onlyInspect
List Pathrule organizations the authenticated user belongs to. Use this before pathrule_create_workspace when you need to ask the user which organization the new workspace should live under. Returns id, name, slug, plan, subscription_status and the user's role per org.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Organization list and its size. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by stating that results are limited to organizations the authenticated user belongs to and enumerating the returned fields, 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?
Two sentences with no wasted words. The core action and scope come first, followed by concrete usage context and return-field detail, making it easy to scan and act on.
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 zero-parameter, read-only listing tool, the description fully covers what the agent needs: what it lists, whose organizations, when to use it, and what the response includes. The presence of an output schema further reduces the need to describe return structure in detail.
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 tool has zero parameters, so there is no parameter semantics burden on the description. The description appropriately focuses on behavior instead, and the schema's empty properties are already fully self-explanatory.
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 ('List') and resource ('Pathrule organizations') and clearly scopes to 'the authenticated user belongs to.' This distinguishes it from workspace-list and other sibling tools, and explicitly names the related create_workspace tool.
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 before pathrule_create_workspace when needing to ask the user which organization should own the new workspace. This is clear, actionable context for an agent deciding among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_list_pending_refreshesList pending memory/rule refresh tasksARead-onlyInspect
List pending Pathrule refresh tasks for a workspace. Refresh tasks are cloud suggestions that may update stale memories or rules. Use this first, then call pathrule_get_refresh_brief with a returned refresh_id before deciding whether to reject or resolve the task.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| include_in_progress | No | Include tasks already claimed by a client. Defaults to false for a clean todo list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| total | No | Number of refresh tasks returned. |
| refreshes | No | Pending refresh tasks. Each carries a refresh_id for pathrule_get_refresh_brief. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool's safety profile is covered. The description adds useful behavioral context by framing refresh tasks as 'cloud suggestions' rather than direct updates, which helps the agent understand the tool doesn't apply changes itself. It does not discuss pagination or claim semantics, but the output schema and annotations reduce the need for that.
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 concise sentences with no filler: the first states the operation, the second defines the domain concept, and the third gives the workflow. Each sentence earns its place and the key action is 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 full schema parameter coverage, an output schema, and safety annotations, the description supplies the missing workflow context: list first, then fetch a brief, then decide. An agent has everything needed to invoke this tool correctly and chain it with the appropriate sibling.
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%, with both workspace_id and include_in_progress already well documented, including defaults and provenance. The description adds no parameter-level detail beyond the schema, 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 a specific verb and resource: 'List pending Pathrule refresh tasks for a workspace.' It clearly distinguishes refresh tasks from actual memories/rules by explaining they are 'cloud suggestions that may update stale memories or rules,' and references pathrule_get_refresh_brief, separating this listing tool from sibling detail/action 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 provides workflow guidance: 'Use this first, then call pathrule_get_refresh_brief with a returned refresh_id before deciding whether to reject or resolve the task.' This tells the agent when to invoke the tool, what to do next, and why, which is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_list_snapshotsPathrule List Project SnapshotsARead-onlyInspect
List the most recent project snapshots for a workspace (compact metadata only — no file_tree, no sampled_contents). Use to find which snapshot to read in full. Up to 25 per call, ordered newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 10, max 25. | |
| source | No | Filter to snapshots taken from a specific Pathrule surface. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Snapshot metadata list. Load one in full with pathrule_read_snapshot. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral constraints beyond that: 'Up to 25 per call, ordered newest first' and the guarantee that file_tree and sampled_contents are omitted. This gives the agent accurate expectations without contradicting 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?
Three compact sentences deliver the core purpose, exclusions, usage guidance, ordering, and limit without filler. The most decision-relevant information is front-loaded, and 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?
The tool is a simple list operation with a full output schema and fully documented parameters. The description covers ordering, limit, content scope, and the intended workflow, so an agent has everything needed to select and invoke it 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 description coverage is 100%, with each parameter already documented: workspace_id is a UUID, limit has a default and max, and source has an enum. The description adds little new parameter-level meaning beyond confirming the workspace scope and the 25-per-call limit, so the 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?
Description names a specific verb ('List'), a specific resource ('most recent project snapshots for a workspace'), and a precise scope ('compact metadata only — no file_tree, no sampled_contents'). It clearly distinguishes this from pathrule_read_snapshot by framing it as the discovery step before reading a full snapshot.
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 states when to use the tool: 'Use to find which snapshot to read in full.' The 'compact metadata only — no file_tree, no sampled_contents' exclusion makes clear it is not for retrieving snapshot contents, pointing the agent toward the read-snapshot sibling for full data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_list_workspacesList Pathrule WorkspacesARead-onlyInspect
List Pathrule workspaces visible to the authenticated user through cloud RLS. Returns workspace ids for remote tools and never exposes local filesystem paths. Response includes a local_runtime.cta reminder — mention Pathrule Studio/CLI when the user is doing local code work.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| note | No | Short guidance line about the returned set. |
| count | No | Number of workspaces returned. |
| error | No | Present only when ok is false. |
| workspaces | No | Workspaces visible to the authenticated user. Never contains local filesystem paths. |
| local_runtime | No | Present on tools that carry the local-runtime upgrade reminder. |
| selection_required | No | True when the count is not exactly 1, meaning you should ask the user which workspace to use. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, but the description adds meaningful behavior: the cloud RLS scope, the guarantee about never exposing local filesystem paths, and the `local_runtime.cta` reminder instructing the agent to mention Pathrule Studio/CLI for local code work. This goes well beyond the structured 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?
Three sentences deliver the core purpose, the security boundary, and an actionable response-related instruction with no redundancy. The key action and scope are front-loaded, and every sentence adds distinct value.
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 is complete for a zero-parameter, read-only list tool. The output schema exists, annotations cover the safety profile, and the description explains what the response contains, what it avoids exposing, and how to handle the CTA reminder.
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 tool has zero parameters and the input schema is empty, so the description carries no parameter burden. Per the baseline rule for zero-parameter tools, a score of 4 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 a specific verb ('List') and resource ('Pathrule workspaces'), and clarifies scope with 'visible to the authenticated user through cloud RLS'. It also distinguishes itself from other list-type siblings by focusing on workspaces rather than memories, organizations, or snapshots.
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 clear contextual guidance: it lists cloud RLS-visible workspaces, returns workspace ids for remote tools, and explicitly notes it never exposes local filesystem paths. This implies when the tool should be used, though it does not explicitly name alternative tools or state 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.
pathrule_log_activityLog ActivityAInspect
Log a file-modifying response from a remote MCP client. Remote MCP requires workspace_id and stamps ai_client='cloud-connector'. task_summary should be ONE concise sentence (ideally ≤300 chars); it is NEVER rejected for length (past ~500 chars it is stored auto-shortened, not an error — do not retry).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | How far the change reached, from a single file up to the whole workspace. | |
| action | Yes | What was done in this response. | |
| domain | Yes | Area of the product the work belongs to. | |
| verbose | No | Return the full stored activity row instead of the compact acknowledgement. Defaults to false. | |
| subjects | No | Up to 5 short keywords naming what was touched, for example ["oauth", "token-refresh"]. | |
| node_path | No | Workspace-relative path the work happened at, for example /packages/app. Use the most specific path the change actually touched. Defaults to the workspace root. | / |
| task_summary | Yes | One concise sentence describing what this response actually changed. Never rejected for length: past the hard maximum it is stored auto-shortened, so do not retry a shorter version. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| files_touched | No | Which files changed. Tolerant by contract: a malformed value is dropped rather than rejected, so logging never fails on it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | UUID of the stored activity row. Compact form only. |
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| activity | No | The full stored activity row. Present only with verbose=true. |
| created_at | No | Insertion timestamp in ISO 8601. Compact form only. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
| task_summary_chars | No | Length of the task_summary that was stored. |
| summary_over_target | No | True when task_summary exceeded the soft target. The row was still written, so do not retry. |
| task_summary_target_chars | No | Soft target length for task_summary. |
| task_summary_hard_max_chars | No | Length past which task_summary is stored auto-shortened. Never an error. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only state readOnly=false, not idempotent, and not destructive. The description adds valuable non-obvious behavior: task_summary is never rejected for length, is auto-shortened past ~500 chars, and should not be retried. It also reveals the remote-client stamping behavior, which meaningfully affects how the agent should expect the call to behave.
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 with no wasted words. It front-loads the core action, then adds the most important operational constraint, then the key edge-case behavior. 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 100% schema coverage, output schema, and annotations, the description supplies exactly the non-obvious context an agent needs: the remote MCP requirement, workspace_id necessity, and the length/no-retry behavior for task_summary. Nothing essential is missing 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 coverage is 100%, so the baseline is 3. The description goes beyond the schema by adding operational meaning for task_summary (concise one-sentence guidance, auto-shortening, no-retry rule) and workspace_id (required for remote MCP). This is useful extra semantic context beyond the structured 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 states a specific verb and resource: log a file-modifying response from a remote MCP client. It clearly differentiates this from the memory/rule/skill/snapshot siblings, and no other sibling provides activity logging.
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 clearly indicates when to use this tool: after a file-modifying response, specifically from a remote MCP client, and it highlights the required workspace_id. It does not explicitly name alternatives or say when not to use it, but the context is strong enough for the agent to pick it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_pingPathrule Cloud PingARead-onlyInspect
Sanity check that Pathrule Remote MCP is reachable. Cloud-safe: returns no local cwd. Response includes a local_runtime.cta line you can surface to the user when they ask about deeper Pathrule features.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Optional message to echo back. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| ts | No | Server timestamp in ISO 8601. |
| echo | No | The `message` argument echoed back, or null when none was sent. |
| pong | No | Present and true when the endpoint answered. |
| cloud | No | Always true on Remote MCP. Marks the response as cloud-served, with no local cwd. |
| error | No | Present only when ok is false. |
| version | No | Connector build identifier. |
| client_id | No | OAuth client id of the calling MCP client, or null on an unauthenticated ping. |
| authenticated | No | Present and false only on the unauthenticated public ping. |
| local_runtime | No | Present on tools that carry the local-runtime upgrade reminder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context: it is cloud-safe, returns no local cwd, and includes a local_runtime.cta line in the response. This goes 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?
Two sentences, each earning its place. The purpose is front-loaded, and the second sentence adds valuable behavioral and user-guidance context without unnecessary detail.
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 one-optional-parameter, read-only ping tool with an output schema and strong annotations, the description is complete enough. It covers purpose, safety, and an important response element an agent might surface to users.
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 optional message parameter is already documented in the schema. The description does not add parameter-specific semantics, but the baseline of 3 applies because the schema carries the full burden.
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: 'Sanity check that Pathrule Remote MCP is reachable.' It clearly identifies this as a connectivity probe and distinguishes it from the many sibling tools that manage workspaces, memories, rules, or snapshots.
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 when to use it: when you need to verify that Pathrule Remote MCP is reachable. It also adds the cloud-safety note ('returns no local cwd') and hints at surfacing the CTA line for deeper-feature questions. It does not explicitly name alternatives or exclusions, but no sibling tool serves the same ping purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_read_memoryRead MemoryARead-onlyInspect
Read the full body and metadata for one Pathrule memory. Use this after pathrule_get_context, pathrule_goto, or pathrule_list_memories returns a memory_id. This reads cloud data only and does not inspect the user's local filesystem.
| Name | Required | Description | Default |
|---|---|---|---|
| memory_id | Yes | Memory UUID returned by pathrule_get_context, pathrule_goto, or pathrule_list_memories. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Memory UUID. |
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| title | No | Memory title. |
| source | No | How the memory was authored, for example claude or manual. |
| content | No | Full memory body. |
| node_path | No | Workspace-relative path of the node this memory hangs on. |
| updated_at | No | Last update timestamp in ISO 8601. |
| version_id | No | Optimistic-concurrency token. Pass it as expected_version_id to pathrule_update_memory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context beyond the annotations: 'reads cloud data only and does not inspect the user's local filesystem,' which clarifies the data source scope, and 'full body and metadata,' which previews the read depth. No contradiction with annotations exists.
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: the core action, the trigger condition naming the source tools, and a scope caveat. The verb+resource is front-loaded and there is zero filler or 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 single-parameter read tool with annotations covering the safety profile and an output schema documenting the return shape, the description is complete. It covers what is read, when to call it, where the input comes from, and the cloud-only scope. 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 description coverage is 100%: the memory_id parameter already documents that it is the UUID returned by pathrule_get_context, pathrule_goto, or pathrule_list_memories. The description reinforces this provenance and adds that it grants access to the 'full body and metadata,' but this is marginal value 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 states a specific verb ('Read'), resource ('one Pathrule memory'), and scope ('full body and metadata'), which distinguishes it from the sibling read tools (read_rule, read_skill, read_snapshot) and from the memory-producing tools (get_context, goto, list_memories). An agent can immediately tell what this tool does and what it is not.
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 after pathrule_get_context, pathrule_goto, or pathrule_list_memories returns a memory_id.' This names the exact trigger condition and the sibling tools that produce the required input. It does not explicitly state exclusions or route to alternatives for other cases, but the primary usage condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_read_ruleRead RuleARead-onlyInspect
Read the full body and metadata for one Pathrule rule. Use this after pathrule_get_context, pathrule_goto, or pathrule_get_node returns a rule_id. Rules are instructions the AI should obey for a project path; this tool only reads the cloud rule record and does not modify anything.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | Rule UUID returned by pathrule_get_context, pathrule_goto, or pathrule_get_node. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Rule UUID. |
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| name | No | Rule name. |
| error | No | Present only when ok is false. |
| content | No | Full rule body: the constraint to obey. |
| priority | No | One of high, medium, or low. |
| node_path | No | Workspace-relative path the rule applies to. |
| scope_type | No | One of project, folder, or file_type. |
| updated_at | No | Last update timestamp in ISO 8601. |
| version_id | No | Optimistic-concurrency token. Pass it as expected_version_id to pathrule_update_rule. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with readOnlyHint=true and destructiveHint=false. The description adds useful context beyond annotations: rules are AI instructions for a project path, and the tool reads the cloud rule record. This helps distinguish it from local-runtime or memory-related reads.
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: purpose first, usage trigger second, domain context and non-mutating behavior third. Every sentence earns its place and there is 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 one-parameter read tool with a full input schema, output schema, and safety annotations, the description covers purpose, when to call, what it returns, and that it is non-destructive. 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?
The single parameter rule_id is fully documented in the input schema, including its UUID format and which sibling tools return it. The description reinforces this provenance but adds no new parameter semantics, 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?
States a specific verb and resource: 'Read the full body and metadata for one Pathrule rule.' It clearly distinguishes this from write/update/delete siblings by emphasizing that it only reads the cloud rule record and does not modify anything.
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 guidance: 'Use this after pathrule_get_context, pathrule_goto, or pathrule_get_node returns a rule_id.' This tells the agent exactly when to invoke it. It doesn't explicitly name alternatives for modifying rules, but 'does not modify anything' implies the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_read_skillRead SkillARead-onlyInspect
Read the approved snapshot for one Pathrule skill. Use this after pathrule_get_context, pathrule_goto, or pathrule_get_node returns a skill_id. Returns the cloud SKILL.md content for the AI to follow; it does not install or materialize files locally.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | Skill UUID returned by pathrule_get_context, pathrule_goto, or pathrule_get_node. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Skill UUID. |
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| name | No | Skill name, as invoked with ::name. |
| error | No | Present only when ok is false. |
| source | No | One of manual, template, or github_ref. |
| content | No | Full SKILL.md body, including its frontmatter. |
| node_path | No | Workspace-relative path the skill is attached to. |
| updated_at | No | Last update timestamp in ISO 8601. |
| version_id | No | Optimistic-concurrency token. Pass it as expected_version_id to pathrule_update_skill. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, and the description adds meaningful behavior: it returns cloud SKILL.md content and does not install or materialize local files. This clarifies the non-mutating, fetch-only nature beyond the readOnlyHint.
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 with zero filler; the core action appears immediately, and the side-effect clarification and usage trigger each earn their 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?
For a single-parameter read operation with strong annotations, the description fully covers what the agent receives and what side effects are absent. It does not describe error/not-found behavior, but that is not essential for invoking this tool 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?
The sole parameter skill_id is already fully described in the schema with the same provenance info. The description reinforces the source of the ID but adds no new semantic detail, so the schema carries the burden.
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 action ('Read'), exact resource ('approved snapshot for one Pathrule skill'), and the returned artifact ('cloud SKILL.md content'), distinguishing it from local materialization and adjacent read/update 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?
Explicitly says to use this after pathrule_get_context, pathrule_goto, or pathrule_get_node returns a skill_id. It does not name the alternative tools to avoid or state when not to use it, but the trigger context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_read_snapshotPathrule Read Project SnapshotARead-onlyInspect
Load a single project snapshot in full or partial form. Defaults include file_tree and sampled_contents — pass include_file_tree=false / include_sampled_contents=false to keep the response compact when you only need metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot_id | Yes | Snapshot UUID from pathrule_list_snapshots. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| include_file_tree | No | Include the flat file/directory list. Defaults to true. Pass false to keep the response small. | |
| include_sampled_contents | No | Include the truncated bodies of the sampled files. Defaults to true. Pass false when you only need metadata. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | The snapshot row. Which columns are present depends on include_file_tree and include_sampled_contents. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only operation, so the description's main job is to add behavioral context. It does that by revealing the default response includes file_tree and sampled_contents and by explaining how to opt out. This is genuinely useful beyond the annotation hints, though it doesn't cover pagination or error cases.
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 with no filler. It front-loads the core behavior, then immediately gives the key flag defaults and the condition for changing them. Every sentence carries meaningful 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?
The tool is a straightforward read operation with an output schema and readOnlyHint annotation, so the description does not need to explain return values or safety. It covers the main usage decision—how to request a compact response—and the schema covers parameter origins. Minor gaps like prerequisites for snapshot IDs are already handled in the schema descriptions.
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 value beyond the schema by explaining that the tool can load "full or partial" and that passing false keeps the response compact when only metadata is needed. This semantic guidance helps the agent choose appropriate flag 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 states a specific action—"Load a single project snapshot"—and distinguishes it from sibling tools like pathrule_list_snapshots and pathrule_take_snapshot. It also communicates that the tool supports full or partial loads, making its purpose and scope immediately 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 implies when to use the compact form by saying "when you only need metadata," which gives useful within-tool guidance. However, it does not explicitly state when to prefer this tool over alternatives such as listing snapshots or retrieving the tree separately, so cross-tool selection guidance is left mostly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_remove_patternPathrule Remove PatternAInspect
Remove a previously-imported Pathrule pattern bundle in one call — the reverse of pathrule_import_pattern. The pattern definition is the manifest, so this finds and deletes the memories/rules/skills whose titles match the pattern's pieces. Pass the SAME node_path base used at import (omit if the pattern's own paths were used). Pieces not found are reported, not errors (idempotent). Relay the returned human_message.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Pattern slug — the part after 'package:' in ::pathrule:package:<slug>. | |
| verbose | No | Set true for per-piece detail. Default false (compact summary). | |
| node_path | No | The base path the bundle was imported under. Must match the import to locate the pieces. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| slug | No | Pattern slug that was removed. |
| error | No | Present only when ok is false. |
| removed | No | The pieces actually deleted, grouped by kind. |
| not_found | No | Pieces the bundle declares that were not present under the given node_path. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare idempotentHint=false and destructiveHint=false, while the description explicitly says pieces not found are 'not errors (idempotent)' and that the tool 'deletes the memories/rules/skills.' This is a direct contradiction in both idempotency and destructiveness, making the behavioral guidance unreliable.
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 sentences, front-loaded with the primary purpose, then gives only behaviorally important details: deletion mechanism, node_path guidance, error behavior, and expected output handling. 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?
The description covers the operation, the manifest-matching mechanism, node_path behavior, error handling, and instructs relaying the human_message. Combined with 100% schema coverage and an output schema, this is nearly complete, but the contradictions with annotations undercut overall clarity and make it not fully trustworthy.
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 meaningful value beyond the schema by instructing the agent to pass the SAME node_path used at import and to omit it if the pattern's own paths were used, which clarifies a subtle condition the schema only hints at.
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 names the specific resource ('previously-imported Pathrule pattern bundle') and action ('Remove'), and explicitly frames it as the reverse of pathrule_import_pattern. This clearly distinguishes it from sibling delete tools by emphasizing bundle-level removal rather than individual memory/rule/skill 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 provides clear context: use this tool to remove an entire imported pattern bundle in one call, and it explains the node_path requirement and missing-piece behavior. It does not explicitly state 'use pathrule_delete_memory/rule/skill for individual pieces instead,' but the intent is strongly implied by the bundle-level framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_resolve_refreshClose a memory/rule refresh taskADestructiveInspect
Close a Pathrule refresh task after reviewing its brief. Normal remote flow: call pathrule_list_pending_refreshes, then pathrule_get_refresh_brief, then use this tool with status='rejected' when the signal is stale or not actionable. Remote MCP may refuse status='applied' because it cannot verify local source files; use Pathrule Studio/CLI for applied resolutions that require local verification.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Short reason for the resolution, especially when rejecting a stale or unsafe refresh. | |
| status | Yes | Use 'rejected' from Remote MCP when the signal is stale or cannot be safely applied. 'applied' may be refused unless local verification is available. | |
| refresh_id | Yes | Refresh task UUID returned by pathrule_list_pending_refreshes or pathrule_get_refresh_brief. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| error | No | Present only when ok is false. |
| status | No | Final status recorded for the task. |
| refresh_id | No | The refresh task that was resolved. |
| resolved_at | No | Resolution timestamp in ISO 8601. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false. The description adds meaningful behavioral context beyond that: Remote MCP may refuse 'applied' because it cannot verify local source files, and 'rejected' is the appropriate remote status for stale or non-actionable signals. This helps an agent predict tool behavior and avoid failed calls.
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 core purpose, second gives the normal workflow, third flags the key remote limitation. The information is front-loaded and dense without being verbose.
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 rich schema, output schema, and annotations, the description covers the full decision context: when to call it, what status to use, what alternative to use for applied resolutions, and the likely remote refusal behavior. 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?
The schema already covers all parameters at 100%, so the baseline is 3. The description adds extra semantic guidance on the status parameter, clarifying when 'rejected' is appropriate and when 'applied' may be refused, which goes beyond the enum descriptions alone.
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: close a Pathrule refresh task after reviewing its brief. It also distinguishes itself from related siblings by naming the normal flow involving pathrule_list_pending_refreshes and pathrule_get_refresh_brief, so an agent can tell this is the terminal resolution step rather than a retrieval or listing operation.
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: after reviewing a refresh brief, reject stale or non-actionable signals, and use Pathrule Studio/CLI for applied resolutions requiring local verification. It also warns that Remote MCP may refuse status='applied', which is valuable exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_setupPathrule SetupARead-onlyInspect
Fetch the active Pathrule bootstrap brief and execute it. Call this ONCE when the user asks to set up / bootstrap / initialize Pathrule for a project (e.g. 'Set up Pathrule for this project', 'Bootstrap Pathrule'). The response body is a prompt you must follow immediately — it tells you how to scan the project, propose memories/rules/skills, and write the approved items via pathrule_write_memory / _rule / _skill. Do NOT call this mid-task, for already-populated workspaces, or when the user just wants context — use pathrule_get_context for routine context lookups. If no workspace exists yet, call pathrule_list_organizations + pathrule_create_workspace first.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Bootstrap brief language code. Defaults to 'en'. Pass 'tr' for Turkish users. | |
| workspace_id | No | Target workspace. Omit only if the user has not picked one yet — you should then call pathrule_create_workspace before continuing the bootstrap. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | The bootstrap brief. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
| local_runtime | No | Present on tools that carry the local-runtime upgrade reminder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description adds crucial behavioral context: the response body is not just data but a prompt the agent must follow immediately, and the actual writes happen via sibling tools. This aligns with readOnlyHint and gives the agent an accurate mental model of the tool's side-effect-free role.
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 dense but every sentence earns its place: trigger, behavior, response handling, exclusions, alternative, and prerequisite. Critical information is front-loaded, and no word is wasted.
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 orchestration complexity, the description covers the full lifecycle: when to invoke, what the response means, what to do next, when not to use, and how to handle missing workspaces. An output schema is present, so return-value documentation is already handled elsewhere. 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 baseline is 3. The description reinforces the workspace_id guidance from the schema ('if no workspace exists yet...') but does not add parameter meaning beyond what the schema already provides. It is adequate but not 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?
The description names a specific action ('Fetch the active Pathrule bootstrap brief and execute it') and the exact resource. It clearly distinguishes this from the sibling tool pathrule_get_context by stating the latter is for routine context lookups, so an agent can tell them apart.
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 states when to call ('ONCE when the user asks to set up / bootstrap / initialize Pathrule'), when not to call (mid-task, already-populated workspaces, routine context), names the alternative (pathrule_get_context), and provides prerequisite steps (pathrule_list_organizations + pathrule_create_workspace) when no workspace exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_take_snapshotPathrule Project SnapshotAInspect
Record a point-in-time inventory of the user's project under a workspace. Remote MCP cannot see the filesystem, so YOU (the AI) collect this inventory with your own Read/Glob/Grep tools before calling this. Persist it so future setup, bootstrap, drift detection, and onboarding flows have structured evidence to reason over. Required: workspace_id. Strongly recommended: project_name, file_count, file_tree (cap at ~5000 entries — summarise deeper paths), file_extensions_summary, top_level_dirs, sampled_contents for README, package.json / pyproject.toml / Cargo.toml, CLAUDE.md, AGENTS.md, main config files (truncate each to ~4KB). Optional: git_head / branch / git_log_summary if you can read them, ai_notes for free-form observations.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | Checked-out branch name at snapshot time. | |
| source | No | Which Pathrule surface produced this snapshot. Defaults to 'mcp-remote'. | |
| ai_notes | No | Your own observations about the project structure, conventions, and obvious workspace seeds. | |
| git_head | No | Commit SHA that HEAD pointed at when the snapshot was taken. | |
| metadata | No | Free-form additional structured data. | |
| file_tree | No | Flat list of files/directories. Cap at 5000. | |
| root_path | No | Absolute root path if the AI is running on the user's machine; otherwise omit. | |
| file_count | No | Total number of files inventoried, before any file_tree cap is applied. | |
| project_name | No | Display name of the project, usually the repository or folder name. | |
| workspace_id | Yes | Workspace UUID this snapshot belongs to. | |
| git_remote_url | No | Origin remote URL of the repository, or null when it has none. | |
| top_level_dirs | No | Immediate child directories of the project root with their sizes, so future flows can see the shape of the tree without the full file list. | |
| git_log_summary | No | Free-form summary of recent git activity if available (e.g. 'last 50 commits hot paths: src/foo.ts, src/bar.ts; bug fixes in api/'). | |
| sampled_contents | No | Truncated contents of up to 50 important files (README, manifest files, CLAUDE.md/AGENTS.md, primary configs). Each content field capped at ~4096 bytes. | |
| total_size_bytes | No | Combined size in bytes of the inventoried files. | |
| file_extensions_summary | No | e.g. {"ts": 412, "tsx": 158, "json": 33} |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | What was stored, including the counts after server-side trimming. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial context beyond the annotations: it discloses that remote MCP cannot see the filesystem, that the AI must collect data itself, that the snapshot persists for future workflows, and that file_tree is capped at ~5000 entries with deeper paths summarized and sampled contents truncated to ~4KB. These are behaviorally important details not present in the annotation block, and nothing contradicts 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 dense but every sentence earns its place: purpose, the critical filesystem limitation, persistence rationale, and a clearly tiered parameter list. It is front-loaded with the most important behavioral constraint and uses a natural priority ordering that makes scanning easy.
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 16-parameter nested-object tool with an output schema, the description covers the essential workflow, data-collection strategy, field priorities, and size constraints. Since an output schema exists, the description does not need to explain return values, and nothing critical for correct invocation appears 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?
Although schema coverage is 100%, the description enriches the schema by prioritizing parameters (required vs strongly recommended vs optional), giving concrete examples for sampled_contents (README, package.json, pyproject.toml, Cargo.toml, CLAUDE.md, AGENTS.md), and explaining caps and truncation behavior. This is exactly the kind of practical guidance an agent needs beyond property 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 opens with a specific verb-resource pair: "Record a point-in-time inventory of the user's project under a workspace." It clearly distinguishes this tool from sibling snapshot operations (list_snapshots, read_snapshot) by emphasizing the act of recording and persisting new evidence, not retrieving it.
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 context: the agent is told it must gather the inventory with its own Read/Glob/Grep tools before calling, that workspace_id is required, and which fields are strongly recommended versus optional. It does not explicitly name alternatives or state when not to use the tool, but the preconditions and task framing make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_update_memoryPathrule Update MemoryADestructiveInspect
Update a memory's content or title, optionally moving it. Uses optimistic concurrency via expected_version_id. Cloud-only.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional replacement memory title. | |
| content | Yes | Replacement memory body in clear project-language prose. | |
| memory_id | Yes | Memory UUID returned by pathrule_get_context, pathrule_goto, or pathrule_read_memory. | |
| move_to_path | No | Optional workspace-relative destination path such as /packages/app. Missing nodes are created when allowed by the backend. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| related_paths | No | Optional list of workspace-relative paths this memory is also relevant to. null = unchanged. Pass [] to clear all manual links. Max 32 entries. | |
| allow_duplicate | No | Set true only when intentionally allowing another memory with the same title. | |
| expected_version_id | No | Optional optimistic-concurrency token from the existing record. Pass it when available to avoid overwriting a newer edit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Updated memory: id, version_id, and the title it now carries. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint true, and the description adds useful behavioral context beyond that: optimistic concurrency via expected_version_id and the Cloud-only deployment constraint. It does not detail every side effect, but combined with annotations the mutation profile is 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?
Three short sentences front-load the action and add only high-value constraints (move, optimistic concurrency, cloud-only). No filler or repetition of schema 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?
With an output schema, annotations, and full parameter coverage, the description plus structured data are sufficient for correct invocation. It covers the core update, optional move, concurrency guard, and cloud-only restriction; any remaining comparison to write_memory belongs to usage guidance rather than completeness.
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 eight parameters. The description's mention of content/title and optional moving mirrors schema fields without adding new semantic detail, matching the baseline for fully covered schemas.
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 names a specific verb and resource ('Update a memory's content or title') and adds the optional move behavior, making the core operation clear. It does not explicitly differentiate from sibling pathrule_write_memory, so it falls just short of full sibling distinction.
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 intended use is implied: call this when modifying an existing memory's content, title, or path. There is no explicit when-not-to-use guidance or mention of alternatives such as pathrule_write_memory for creation, so the agent must infer selection from the verb 'update'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_update_rulePathrule Update RuleADestructiveInspect
Update a rule's fields and/or path. Optimistic concurrency via expected_version_id. Cloud-only.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Fields to change. Omitted fields are left as they are, so send only what actually differs. | |
| rule_id | Yes | Rule UUID returned by pathrule_get_context, pathrule_goto, or pathrule_read_rule. | |
| move_to_path | No | Optional workspace-relative destination path such as /packages/app. Missing nodes are created when allowed by the backend. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| allow_duplicate | No | Set true only when intentionally allowing another rule with the same name. | |
| expected_version_id | No | Optional optimistic-concurrency token from the existing record. Pass it when available to avoid overwriting a newer edit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Updated rule: id, version_id, and the name it now carries. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds useful behavioral context: updates can touch fields and path, optimistic concurrency is supported via expected_version_id, and the tool is cloud-only. It does not contradict any 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?
Three short, front-loaded sentences convey the core action, concurrency model, and deployment constraint with no wasted words. 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 rich input schema, output schema, and destructive annotation, the description is mostly sufficient. It covers the key behavioral aspects not fully represented in structured fields, though it could mention when to prefer this over write_rule for full completeness.
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%, with detailed parameter descriptions such as the partial patch behavior and move_to_path semantics. The description adds no new parameter meaning beyond naming expected_version_id, 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 clearly states the operation ('Update') and the resource ('a rule'), then narrows the scope to 'fields and/or path.' This distinguishes it from read, delete, and write-rule siblings without ambiguity.
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 use for modifying an existing rule and adds a 'Cloud-only' restriction, plus a hint to use expected_version_id for safe concurrent updates. However, it does not explicitly contrast this tool with alternatives such as pathrule_write_rule or describe when to prefer one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_update_skillPathrule Update SkillADestructiveInspect
Partially update an existing Pathrule skill record. Use pathrule_update_skill only when you already have a skill_id and want to change metadata, SKILL.md content, source/github_url, tags, or move the skill to another workspace path; use pathrule_write_skill to create a new skill, pathrule_read_skill to inspect the current body first, and pathrule_delete_skill to remove one. Requires an authenticated connector token with pathrule:write and an active workspace subscription. Side effects: writes the cloud skill record, may replace fields present in patch, may move the skill when move_to_path is set, and may fail on version conflict; it never installs files into .codex/skills, .claude/skills, or editor folders.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Partial update object. Include only fields that should change; omitted fields keep their current values. At least one field should be present. Replacing content overwrites the stored approved SKILL.md body. | |
| skill_id | Yes | Skill UUID returned by pathrule_get_context, pathrule_goto, or pathrule_read_skill. | |
| move_to_path | No | Optional workspace-relative path to move the skill attachment, such as / or /packages/app. When provided, Pathrule moves the skill to that node and may create missing nodes; omit it to keep the current path. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| expected_version_id | No | Optional version UUID from the current skill. Pass it after pathrule_read_skill to prevent overwriting someone else's newer edit; a stale value makes the update fail instead of silently replacing data. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Updated skill: id, version_id, and the name it now carries. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal non-readonly, non-idempotent, and destructive behavior, but the description adds valuable specifics: it writes the cloud skill record, may replace patch fields, may move the skill, may fail on version conflict, and never installs files into local skill folders. This goes well beyond the annotations and clarifies exactly what side effects to expect.
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 then moves through usage guidance, prerequisites, and side effects in a logical order. Every sentence adds distinct information; the length is justified by the complexity of the operation.
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 nested patch object, five parameters, and an output schema, the description covers prerequisites (connector token, workspace subscription), when to use it, side effects, and failure modes. Nothing essential for correct invocation or expectation-setting 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 fully documents all five parameters. The description reinforces that the patch is partial and that move_to_path causes a move, but it mostly restates what the schema already conveys rather than adding new parameter-level detail.
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: 'Partially update an existing Pathrule skill record.' It enumerates the exact kinds of changes (metadata, SKILL.md content, source/github_url, tags, workspace path), which clearly distinguishes it from sibling skill 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 states when to use this tool ('only when you already have a skill_id') and names the alternatives: pathrule_write_skill for creation, pathrule_read_skill for inspecting the body, and pathrule_delete_skill for removal. This gives an agent clear routing guidance with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_write_memoryPathrule Write MemoryAInspect
Create a new memory at a workspace path. Missing nodes auto-create. Blocks duplicate titles unless allow_duplicate is set. Cloud-only: never writes to the user's local filesystem. For automatic CLAUDE.md/AGENTS.md sync and on-disk hook injection alongside the write, install Pathrule Studio or CLI.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short specific title. It is the duplicate key for this node, so make it the thing being remembered, not a category. | |
| source | No | Who authored the memory: claude when an agent wrote it, manual when the user dictated it. Defaults to claude. | |
| content | Yes | The memory body: the decision, convention, or bug pattern worth remembering, and why it matters. | |
| node_path | Yes | Workspace-relative path, e.g. /apps/api. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| related_paths | No | Optional list of workspace-relative paths this memory is also relevant to. null = no links. Max 32 entries. | |
| allow_duplicate | No | Set true only when a second memory with the same title on this node is intentional. Leave unset so near-duplicates are rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Created memory: id, title, node_id, node_path, version_id. |
| error | No | Present only when ok is false. |
| warnings | No | Non-fatal notices, for example a near-duplicate title that was allowed through. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses several important behaviors: missing nodes auto-create, duplicate titles are blocked unless allow_duplicate is set, and the tool is cloud-only and never writes to the user's local filesystem. These are non-obvious operational details an agent needs to predict the tool's side effects correctly.
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: the main action comes first, followed by behavioral rules and a critical cloud-only constraint. The final sentence about Pathrule Studio/CLI is relevant context for users expecting local sync, and it doesn't bloat the description. 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 rich input schema (100% parameter coverage), existing output schema, and annotations, the description is complete enough for correct invocation. It adds the missing behavioral context—auto-creation, duplicate blocking, cloud-only execution—that an agent couldn't infer from the structured fields alone. No critical call-time decision is left undocumented.
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 seven parameters well. The description adds value beyond the schema by explaining that missing nodes auto-create (relevant to node_path) and that duplicate titles are blocked unless allow_duplicate is set (reinforcing title's duplicate-key semantics). It doesn't need to repeat parameter details already 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 opens with a specific verb-resource pair, 'Create a new memory at a workspace path,' which clearly distinguishes this from sibling tools like pathrule_read_memory, pathrule_update_memory, pathrule_write_rule, and pathrule_write_skill. It also adds key scoping details (workspace path, new memory, duplicate rejection) that make its role 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 clear context for what this tool does and when it applies: creating a new memory at a workspace path, with auto-creating nodes and duplicate blocking. It doesn't explicitly name alternatives like pathrule_update_memory for modifying existing memories, but the 'new memory' phrasing strongly implies the boundary, and the cloud-only caveat gives a concrete environmental constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_write_rulePathrule Write RuleAInspect
Create a new rule at a workspace path. Missing nodes auto-create. Use scope_type/priority honestly: high only when a violation causes a real bug or regression. Cloud-only — Pathrule Studio/CLI also renders the rule into the user's CLAUDE.md/AGENTS.md and editor companion files automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Short human-readable rule name. | |
| content | Yes | Rule body: the instruction agents must follow. | |
| priority | Yes | Use high only for rules whose violation causes bugs, security issues, or real regressions. | |
| node_path | Yes | Workspace-relative path where the rule applies, e.g. / or /packages/app. | |
| scope_type | Yes | Use project for global rules, folder for path-specific rules, or file_type when the rule targets a class of files. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. | |
| allow_duplicate | No | Set true only when intentionally allowing another rule with the same name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Created rule: id, name, node_id, node_path, version_id. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits beyond the annotations: missing nodes auto-create, and the rule is automatically rendered into the user's CLAUDE.md/AGENTS.md and editor companion files. This is valuable side-effect information that annotations do not convey, especially for an agent deciding whether invoking this tool is safe.
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: three sentences, each earning its place. It front-loads the core purpose, then adds side effects, then provides parameter stewardship guidance. There is no redundant repetition of the tool name or schema 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?
With an output schema present, the description does not need to explain return values. It covers purpose, side effects, parameter guidance, and environment constraints. The main remaining gap is the lack of explicit routing to sibling tools for update/read/delete cases, but the create-focused wording largely compensates.
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 meaning beyond the schema by explaining that missing nodes auto-create (relevant to node_path) and by giving guidance on honest scope_type/priority usage. This elevates the parameter understanding without fully explaining every parameter, though the schema already covers them well.
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 verb and resource: 'Create a new rule at a workspace path.' It clearly distinguishes this from sibling tools like pathrule_update_rule, pathrule_read_rule, and pathrule_delete_rule by emphasizing 'new.' The scope and intent are immediately 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 implies when to use this tool through 'Create a new rule,' but it does not explicitly say to use pathrule_update_rule for existing rules or pathrule_read_rule for reading. It provides useful context like 'Cloud-only' and cautions about honest scope_type/priority usage, but lacks explicit exclusion statements or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathrule_write_skillPathrule Write SkillAInspect
Create a new skill at a workspace path. Content is the full SKILL.md body (frontmatter + markdown). For github_ref skills set source='github_ref' and github_url. Cloud-only: does NOT materialize the skill into .codex/skills, .claude/skills, .cursor/skills, etc. — Pathrule Studio or CLI is required for on-disk skill materialization.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill name, usually kebab-case. | |
| tags | No | Optional discovery tags such as frontend, database, or release. | |
| source | No | Skill source type. Use github_ref only when github_url points to the canonical skill source. | |
| content | Yes | Full SKILL.md content including frontmatter and markdown. | |
| node_path | Yes | Workspace-relative path where the skill should be offered, e.g. / or /packages/app. | |
| github_url | No | Canonical GitHub URL for github_ref skills; null or omit for manual/template skills. | |
| description | Yes | Short summary of when agents should use this skill. Use null only if unknown. | |
| workspace_id | Yes | Workspace UUID from pathrule_list_workspaces. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent. |
| data | No | Created skill: id, name, node_id, node_path, version_id. |
| error | No | Present only when ok is false. |
| human_message | No | One-line summary of the result, safe to relay to the user verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnly=false and non-idempotent; the description adds important behavioral context by warning that the skill is NOT materialized into .codex/skills or similar local directories and that Pathrule Studio/CLI is required for on-disk materialization. This goes 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 with no filler; the core action is front-loaded, conditional parameter usage is captured, and the critical cloud-only caveat is stated succinctly 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?
With an output schema and 100% parameter schema coverage, the description only needs to cover the gotchas, and it covers the main ones: content format, github_ref wiring, and the lack of local materialization. It doesn't specify overwrite/conflict behavior for an existing skill at node_path, but that is a minor gap for a create 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?
Schema coverage is 100%, so the baseline is 3; the description adds value by clarifying that content is the full SKILL.md body including frontmatter and by stating the source/github_url relationship for github_ref skills. This meaningfully supplements the schema's per-property 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 opens with a specific verb and resource ('Create a new skill') and scopes it to a workspace path, which is clear. It doesn't explicitly name sibling alternatives like pathrule_update_skill, but the 'new' qualifier plus the cloud-only caveat makes the operation identifiable.
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 gives clear context for when to use the tool—creating a skill—and provides conditional guidance for github_ref skills (set source and github_url). It does not explicitly say 'use update_skill for existing skills' or list exclusions, but the create semantics and cloud-only limitation are enough to guide basic selection.
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. Dates show when Glama detected each change.
32 tool updates
- Changed
pathrule_create_workspace1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "additionalProperties": true, + "description": "The created workspace row.", + "properties": { + "active_agent_targets": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "AI clients this workspace is configured for." + }, + "created_at": { + "description": "Creation timestamp in ISO 8601.", + "type": "string" + }, + "git_remote_url": { + "description": "Stored git remote URL, or null.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Workspace name as stored.", + "type": "string" + }, + "organization_id": { + "description": "Organization the workspace was created under.", + "type": "string" + }, + "workspace_id": { + "description": "UUID of the new workspace. Pass it to pathrule_setup next.", + "type": "string" + } + }, + "required": [ + "workspace_id", + "name", + "organization_id", + "git_remote_url", + "active_agent_targets", + "created_at" + ], + "type": "object" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "local_runtime": { + "additionalProperties": true, + "description": "Present on tools that carry the local-runtime upgrade reminder.", + "properties": { + "cta": { + "description": "Upgrade line to surface to the user when local Pathrule (Studio or CLI) would serve them better than Remote MCP.", + "type": "string" + } + }, + "required": [ + "cta" + ], + "type": "object" + }, + "next_step": { + "description": "The call to make next, as { tool, arguments }." + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_delete_memory1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Deleted memory: id, plus the title it had before deletion." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_delete_rule1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Deleted rule: id, plus the name it had before deletion." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_delete_skill1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Deleted skill: id, plus the name it had before deletion." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_get_context1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "description": "Router response. The remaining keys are depth-dependent and come from the shared context handler: memories, rules, skills, subtree_memory_index, discovery_signal, semantic_candidates, and next_required_action are the ones clients rely on, and which of them appear depends on the classified intent.", + "properties": { + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "local_runtime": { + "additionalProperties": true, + "description": "Present on tools that carry the local-runtime upgrade reminder.", + "properties": { + "cta": { + "description": "Upgrade line to surface to the user when local Pathrule (Studio or CLI) would serve them better than Remote MCP.", + "type": "string" + } + }, + "required": [ + "cta" + ], + "type": "object" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "protocol": { + "description": "Full protocol text. Sent only when the client did not already hold this protocol_version." + }, + "protocol_unchanged": { + "const": true, + "description": "Present when known_protocol_version matched, meaning `protocol` was omitted on purpose.", + "type": "boolean" + }, + "protocol_version": { + "description": "Version of the Pathrule agent protocol this response was built against. Cache it and pass it back as known_protocol_version.", + "type": "string" + }, + "workspace_id": { + "description": "Workspace the context was resolved in.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_get_local_runtime_upgrade1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "additionalProperties": true, + "description": "Surface comparison split by audience.", + "properties": { + "cloud_connector_can": { + "description": "What Remote MCP alone can already do.", + "items": { + "type": "string" + }, + "type": "array" + }, + "cta": { + "additionalProperties": true, + "description": "Where to send a user who wants the local runtime.", + "properties": { + "label": { + "description": "Call-to-action label.", + "type": "string" + }, + "message": { + "description": "One-line upgrade message to relay to the user.", + "type": "string" + }, + "url": { + "description": "Download page URL.", + "type": "string" + } + }, + "required": [ + "label", + "url", + "message" + ], + "type": "object" + }, + "for_fast_gui_users_desktop": { + "description": "Pitch for GUI users (Pathrule Studio)." + }, + "for_power_users_cli_plus_web": { + "description": "Pitch for terminal-first users (Pathrule CLI)." + }, + "remote_mcp_stays_useful_for": { + "description": "Cases where Remote MCP remains the right surface." + }, + "why_upgrade": { + "description": "The token-cost argument for a local runtime." + } + }, + "required": [ + "cloud_connector_can", + "cta" + ], + "type": "object" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_get_node1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "description": "The node detail is spread onto the top level by the shared node handler: the node fields plus the ids of its attached memories, rules, and skills.", + "properties": { + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "workspace_id": { + "description": "Workspace the node belongs to. A node outside the requested workspace is reported as a not_found error instead.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_get_refresh_brief1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "ai_instructions": { + "description": "What to do with this task, written for the agent.", + "type": "string" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "local_runtime": { + "additionalProperties": true, + "description": "Present on tools that carry the local-runtime upgrade reminder.", + "properties": { + "cta": { + "description": "Upgrade line to surface to the user when local Pathrule (Studio or CLI) would serve them better than Remote MCP.", + "type": "string" + } + }, + "required": [ + "cta" + ], + "type": "object" + }, + "local_runtime_required": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "description": "Non-null when the task needs local source inspection that Remote MCP cannot do. Do not claim it was applied in that case." + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "proposed_patch": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "description": "A pre-drafted patch when one exists, otherwise null." + }, + "refresh_id": { + "description": "The refresh task now claimed by this client.", + "type": "string" + }, + "signal": { + "description": "Why the item was flagged stale: { formulaId, humanReason, detectedAt, rawSignals }." + }, + "status": { + "description": "Task status after the claim.", + "type": "string" + }, + "subject": { + "additionalProperties": true, + "description": "The memory or rule this task proposes to update.", + "properties": { + "body": { + "description": "Current body of the subject, before any patch.", + "type": "string" + }, + "id": { + "description": "UUID of the memory or rule.", + "type": "string" + }, + "node_path": { + "description": "Workspace-relative path the subject lives at.", + "type": "string" + }, + "title": { + "description": "Current title or name of the subject.", + "type": "string" + }, + "type": { + "description": "What is being refreshed: memory or rule.", + "type": "string" + } + }, + "required": [ + "type", + "id", + "title", + "node_path", + "body" + ], + "type": "object" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_get_tree1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "nodes": { + "description": "Every node in the workspace tree, each with its id, path, name, and parent linkage.", + "items": {}, + "type": "array" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_goto2 fields changed- added
Input schema / properties / subtree_limit / descriptionAdded value: +"Maximum entries in the subtree memory index. Defaults to 50, capped at 500. Raise it only when the compact index is genuinely truncated." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "memories": { + "description": "Active memories on the node, with full content: id, title, content, source.", + "items": {}, + "type": "array" + }, + "node": { + "additionalProperties": true, + "description": "The node the target resolved to.", + "properties": { + "name": { + "description": "Node display name.", + "type": "string" + }, + "node_id": { + "description": "Tree node UUID for the resolved target.", + "type": "string" + }, + "path": { + "description": "Workspace-relative path of the node.", + "type": "string" + } + }, + "required": [ + "node_id", + "path", + "name" + ], + "type": "object" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "rules": { + "description": "Active rules on the node, with full content. Obey these.", + "items": {}, + "type": "array" + }, + "skills": { + "description": "Active skills on the node, with full content.", + "items": {}, + "type": "array" + }, + "subtree_memory_index": { + "description": "Compact index of memories below the node: { entries, total, truncated }." + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_import_pattern1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "description": "Compact form by default. With verbose=true the full import record is spread onto the top level instead, and dry_run=true returns the same shape with nothing written.", + "properties": { + "applies_to": { + "description": "The pattern's declared fit: stacks, packages, and paths it targets." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "imported": { + "description": "The pieces actually written, grouped by kind (memories, rules, skills)." + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "skipped": { + "description": "Pieces not written, with the reason, for example an item that already existed." + }, + "slug": { + "description": "Pattern slug that was imported.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_list_memories1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "memories": { + "description": "Compact previews only. Read a full body with pathrule_read_memory.", + "items": { + "additionalProperties": true, + "properties": { + "id": { + "description": "Memory UUID. Pass it to pathrule_read_memory for the full body.", + "type": "string" + }, + "node_id": { + "description": "Tree node the memory is attached to.", + "type": "string" + }, + "preview": { + "description": "First 160 characters of the body, not the full content.", + "type": "string" + }, + "title": { + "description": "Memory title.", + "type": "string" + }, + "updated_at": { + "description": "Last update timestamp in ISO 8601.", + "type": "string" + } + }, + "required": [ + "id", + "title", + "preview", + "node_id", + "updated_at" + ], + "type": "object" + }, + "type": "array" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_list_organizations1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "additionalProperties": true, + "description": "Organization list and its size.", + "properties": { + "count": { + "description": "Number of organizations returned.", + "type": "number" + }, + "organizations": { + "description": "Organizations the authenticated user belongs to.", + "items": { + "additionalProperties": true, + "properties": { + "id": { + "description": "Organization UUID. Pass it to pathrule_create_workspace.", + "type": "string" + }, + "name": { + "description": "Organization name.", + "type": "string" + }, + "plan": { + "description": "Billing plan identifier.", + "type": "string" + }, + "role": { + "description": "The authenticated user's role in this organization.", + "type": "string" + }, + "slug": { + "description": "Organization slug.", + "type": "string" + }, + "subscription_status": { + "description": "Billing status of the organization.", + "type": "string" + } + }, + "required": [ + "id", + "name", + "slug", + "plan", + "subscription_status", + "role" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "organizations", + "count" + ], + "type": "object" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_list_pending_refreshes1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "refreshes": { + "description": "Pending refresh tasks. Each carries a refresh_id for pathrule_get_refresh_brief.", + "items": {}, + "type": "array" + }, + "total": { + "description": "Number of refresh tasks returned.", + "type": "number" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_list_snapshots2 fields changed- added
Input schema / properties / workspace_id / descriptionAdded value: +"Workspace UUID from pathrule_list_workspaces." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "additionalProperties": true, + "description": "Snapshot metadata list. Load one in full with pathrule_read_snapshot.", + "properties": { + "count": { + "description": "Number of snapshots returned.", + "type": "number" + }, + "snapshots": { + "description": "Newest first. Metadata only: id, source, project_name, git_remote_url, branch, git_head, file_count, total_size_bytes, created_at.", + "items": {}, + "type": "array" + }, + "workspace_id": { + "description": "Workspace the snapshots belong to.", + "type": "string" + } + }, + "required": [ + "workspace_id", + "count", + "snapshots" + ], + "type": "object" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_list_workspaces1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "count": { + "description": "Number of workspaces returned.", + "type": "number" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "local_runtime": { + "additionalProperties": true, + "description": "Present on tools that carry the local-runtime upgrade reminder.", + "properties": { + "cta": { + "description": "Upgrade line to surface to the user when local Pathrule (Studio or CLI) would serve them better than Remote MCP.", + "type": "string" + } + }, + "required": [ + "cta" + ], + "type": "object" + }, + "note": { + "description": "Short guidance line about the returned set.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "selection_required": { + "description": "True when the count is not exactly 1, meaning you should ask the user which workspace to use.", + "type": "boolean" + }, + "workspaces": { + "description": "Workspaces visible to the authenticated user. Never contains local filesystem paths.", + "items": { + "additionalProperties": true, + "properties": { + "archived": { + "description": "True when the workspace has been archived.", + "type": "boolean" + }, + "archived_at": { + "description": "Archive timestamp in ISO 8601, or null.", + "type": [ + "string", + "null" + ] + }, + "frozen": { + "description": "True when billing is unpaid or canceled, which blocks subscription-gated tools.", + "type": "boolean" + }, + "name": { + "description": "Workspace name.", + "type": "string" + }, + "organization": { + "additionalProperties": true, + "description": "Owning organization and its billing status.", + "properties": { + "id": { + "description": "Organization UUID.", + "type": "string" + }, + "name": { + "description": "Organization name, or null when not readable.", + "type": [ + "string", + "null" + ] + }, + "slug": { + "description": "Organization slug, or null when not readable.", + "type": [ + "string", + "null" + ] + }, + "subscription_status": { + "description": "Billing status that decides whether subscription-gated tools will run.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "slug", + "subscription_status" + ], + "type": "object" + }, + "workspace_id": { + "description": "Workspace UUID. Pass this to every workspace-scoped tool.", + "type": "string" + } + }, + "required": [ + "workspace_id", + "name", + "organization", + "archived", + "archived_at", + "frozen" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_log_activity11 fields changed- added
Input schema / properties / action / descriptionAdded value: +"What was done in this response." - added
Input schema / properties / domain / descriptionAdded value: +"Area of the product the work belongs to." - added
Input schema / properties / files_touched / descriptionAdded value: +"Which files changed. Tolerant by contract: a malformed value is dropped rather than rejected, so logging never fails on it." - added
Input schema / properties / files_touched / properties / by_area / descriptionAdded value: +"Workspace-relative file paths grouped by area, for example { \"packages/app\": [\"src/main.ts\"] }. The server normalizes and clamps these." - added
Input schema / properties / files_touched / properties / total / descriptionAdded value: +"Number of files modified in this response." - added
Input schema / properties / node_path / descriptionAdded value: +"Workspace-relative path the work happened at, for example /packages/app. Use the most specific path the change actually touched. Defaults to the workspace root." - added
Input schema / properties / scope / descriptionAdded value: +"How far the change reached, from a single file up to the whole workspace." - added
Input schema / properties / subjects / descriptionAdded value: +"Up to 5 short keywords naming what was touched, for example [\"oauth\", \"token-refresh\"]." - added
Input schema / properties / task_summary / descriptionAdded value: +"One concise sentence describing what this response actually changed. Never rejected for length: past the hard maximum it is stored auto-shortened, so do not retry a shorter version." - added
Input schema / properties / verbose / descriptionAdded value: +"Return the full stored activity row instead of the compact acknowledgement. Defaults to false." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "activity": { + "description": "The full stored activity row. Present only with verbose=true." + }, + "created_at": { + "description": "Insertion timestamp in ISO 8601. Compact form only.", + "type": "string" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "id": { + "description": "UUID of the stored activity row. Compact form only.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "summary_over_target": { + "description": "True when task_summary exceeded the soft target. The row was still written, so do not retry.", + "type": "boolean" + }, + "task_summary_chars": { + "description": "Length of the task_summary that was stored.", + "type": "number" + }, + "task_summary_hard_max_chars": { + "description": "Length past which task_summary is stored auto-shortened. Never an error.", + "type": "number" + }, + "task_summary_target_chars": { + "description": "Soft target length for task_summary.", + "type": "number" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_ping1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "authenticated": { + "description": "Present and false only on the unauthenticated public ping.", + "type": "boolean" + }, + "client_id": { + "description": "OAuth client id of the calling MCP client, or null on an unauthenticated ping.", + "type": [ + "string", + "null" + ] + }, + "cloud": { + "description": "Always true on Remote MCP. Marks the response as cloud-served, with no local cwd.", + "type": "boolean" + }, + "echo": { + "description": "The `message` argument echoed back, or null when none was sent.", + "type": [ + "string", + "null" + ] + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "local_runtime": { + "additionalProperties": true, + "description": "Present on tools that carry the local-runtime upgrade reminder.", + "properties": { + "cta": { + "description": "Upgrade line to surface to the user when local Pathrule (Studio or CLI) would serve them better than Remote MCP.", + "type": "string" + } + }, + "required": [ + "cta" + ], + "type": "object" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "pong": { + "const": true, + "description": "Present and true when the endpoint answered.", + "type": "boolean" + }, + "ts": { + "description": "Server timestamp in ISO 8601.", + "type": "string" + }, + "version": { + "description": "Connector build identifier.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_read_memory1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "content": { + "description": "Full memory body.", + "type": "string" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "id": { + "description": "Memory UUID.", + "type": "string" + }, + "node_path": { + "description": "Workspace-relative path of the node this memory hangs on.", + "type": [ + "string", + "null" + ] + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "source": { + "description": "How the memory was authored, for example claude or manual.", + "type": "string" + }, + "title": { + "description": "Memory title.", + "type": "string" + }, + "updated_at": { + "description": "Last update timestamp in ISO 8601.", + "type": "string" + }, + "version_id": { + "description": "Optimistic-concurrency token. Pass it as expected_version_id to pathrule_update_memory.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_read_rule1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "content": { + "description": "Full rule body: the constraint to obey.", + "type": "string" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "id": { + "description": "Rule UUID.", + "type": "string" + }, + "name": { + "description": "Rule name.", + "type": "string" + }, + "node_path": { + "description": "Workspace-relative path the rule applies to.", + "type": [ + "string", + "null" + ] + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "priority": { + "description": "One of high, medium, or low.", + "type": "string" + }, + "scope_type": { + "description": "One of project, folder, or file_type.", + "type": "string" + }, + "updated_at": { + "description": "Last update timestamp in ISO 8601.", + "type": "string" + }, + "version_id": { + "description": "Optimistic-concurrency token. Pass it as expected_version_id to pathrule_update_rule.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_read_skill1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "content": { + "description": "Full SKILL.md body, including its frontmatter.", + "type": "string" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "id": { + "description": "Skill UUID.", + "type": "string" + }, + "name": { + "description": "Skill name, as invoked with ::name.", + "type": "string" + }, + "node_path": { + "description": "Workspace-relative path the skill is attached to.", + "type": [ + "string", + "null" + ] + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "source": { + "description": "One of manual, template, or github_ref.", + "type": "string" + }, + "updated_at": { + "description": "Last update timestamp in ISO 8601.", + "type": "string" + }, + "version_id": { + "description": "Optimistic-concurrency token. Pass it as expected_version_id to pathrule_update_skill.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_read_snapshot5 fields changed- added
Input schema / properties / include_file_tree / descriptionAdded value: +"Include the flat file/directory list. Defaults to true. Pass false to keep the response small." - added
Input schema / properties / include_sampled_contents / descriptionAdded value: +"Include the truncated bodies of the sampled files. Defaults to true. Pass false when you only need metadata." - added
Input schema / properties / snapshot_id / descriptionAdded value: +"Snapshot UUID from pathrule_list_snapshots." - added
Input schema / properties / workspace_id / descriptionAdded value: +"Workspace UUID from pathrule_list_workspaces." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "The snapshot row. Which columns are present depends on include_file_tree and include_sampled_contents." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_remove_pattern1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "description": "Compact form by default. With verbose=true the full removal record is spread onto the top level instead.", + "properties": { + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "not_found": { + "description": "Pieces the bundle declares that were not present under the given node_path." + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "removed": { + "description": "The pieces actually deleted, grouped by kind." + }, + "slug": { + "description": "Pattern slug that was removed.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_resolve_refresh1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "refresh_id": { + "description": "The refresh task that was resolved.", + "type": "string" + }, + "resolved_at": { + "description": "Resolution timestamp in ISO 8601.", + "type": "string" + }, + "status": { + "description": "Final status recorded for the task.", + "type": "string" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_setup1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "additionalProperties": true, + "description": "The bootstrap brief.", + "properties": { + "body": { + "description": "The bootstrap brief to execute, step by step.", + "type": "string" + }, + "bootstrap_v2": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "description": "Reserved for the next bootstrap format. Currently null." + }, + "locale": { + "description": "Locale the brief was served in.", + "type": "string" + }, + "source": { + "description": "Where the brief came from: cloud for the requested locale, fallback for the English default.", + "type": "string" + }, + "version": { + "description": "Bootstrap prompt version.", + "type": "string" + }, + "workspace_id": { + "description": "Workspace the brief was scoped to, or null when called before a workspace exists.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "version", + "locale", + "body", + "source", + "workspace_id" + ], + "type": "object" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "local_runtime": { + "additionalProperties": true, + "description": "Present on tools that carry the local-runtime upgrade reminder.", + "properties": { + "cta": { + "description": "Upgrade line to surface to the user when local Pathrule (Studio or CLI) would serve them better than Remote MCP.", + "type": "string" + } + }, + "required": [ + "cta" + ], + "type": "object" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_take_snapshot8 fields changed- added
Input schema / properties / branch / descriptionAdded value: +"Checked-out branch name at snapshot time." - added
Input schema / properties / file_count / descriptionAdded value: +"Total number of files inventoried, before any file_tree cap is applied." - added
Input schema / properties / git_head / descriptionAdded value: +"Commit SHA that HEAD pointed at when the snapshot was taken." - added
Input schema / properties / git_remote_url / descriptionAdded value: +"Origin remote URL of the repository, or null when it has none." - added
Input schema / properties / project_name / descriptionAdded value: +"Display name of the project, usually the repository or folder name." - added
Input schema / properties / top_level_dirs / descriptionAdded value: +"Immediate child directories of the project root with their sizes, so future flows can see the shape of the tree without the full file list." - added
Input schema / properties / total_size_bytes / descriptionAdded value: +"Combined size in bytes of the inventoried files." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "additionalProperties": true, + "description": "What was stored, including the counts after server-side trimming.", + "properties": { + "created_at": { + "description": "Creation timestamp in ISO 8601.", + "type": "string" + }, + "file_count": { + "description": "Recorded file count, or null.", + "type": [ + "number", + "null" + ] + }, + "file_tree_entries_recorded": { + "description": "How many file-tree entries were stored.", + "type": "number" + }, + "project_name": { + "description": "Recorded project name, or null.", + "type": [ + "string", + "null" + ] + }, + "sampled_files_recorded": { + "description": "How many sampled file bodies were actually stored after server-side trimming.", + "type": "number" + }, + "snapshot_id": { + "description": "UUID of the stored snapshot. Pass it to pathrule_read_snapshot.", + "type": "string" + }, + "source": { + "description": "Pathrule surface that produced it.", + "type": "string" + }, + "workspace_id": { + "description": "Workspace the snapshot belongs to.", + "type": "string" + } + }, + "required": [ + "snapshot_id", + "workspace_id", + "source", + "project_name", + "file_count", + "created_at", + "sampled_files_recorded", + "file_tree_entries_recorded" + ], + "type": "object" + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_update_memory1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Updated memory: id, version_id, and the title it now carries." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_update_rule2 fields changed- added
Input schema / properties / patch / descriptionAdded value: +"Fields to change. Omitted fields are left as they are, so send only what actually differs." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Updated rule: id, version_id, and the name it now carries." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_update_skill1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Updated skill: id, version_id, and the name it now carries." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_write_memory5 fields changed- added
Input schema / properties / allow_duplicate / descriptionAdded value: +"Set true only when a second memory with the same title on this node is intentional. Leave unset so near-duplicates are rejected." - added
Input schema / properties / content / descriptionAdded value: +"The memory body: the decision, convention, or bug pattern worth remembering, and why it matters." - added
Input schema / properties / source / descriptionAdded value: +"Who authored the memory: claude when an agent wrote it, manual when the user dictated it. Defaults to claude." - added
Input schema / properties / title / descriptionAdded value: +"Short specific title. It is the duplicate key for this node, so make it the thing being remembered, not a category." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Created memory: id, title, node_id, node_path, version_id." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + }, + "warnings": { + "description": "Non-fatal notices, for example a near-duplicate title that was allowed through.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_write_rule1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Created rule: id, name, node_id, node_path, version_id." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
- Changed
pathrule_write_skill1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "data": { + "description": "Created skill: id, name, node_id, node_path, version_id." + }, + "error": { + "additionalProperties": true, + "description": "Present only when ok is false.", + "properties": { + "code": { + "description": "Stable machine-readable failure code, for example insufficient_scope, workspace_id_required, rate_limited, not_found, or upstream_error. Branch on this, not on message text.", + "type": "string" + }, + "detail": { + "description": "Optional structured context for the failure, for example { missing_scopes: [...] } on insufficient_scope." + }, + "message": { + "description": "Human-readable explanation of the failure.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "human_message": { + "description": "One-line summary of the result, safe to relay to the user verbatim.", + "type": "string" + }, + "ok": { + "description": "true when the call succeeded. false when it did not, in which case `error` carries the reason and the success fields are absent.", + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "type": "object" +}
1 tool update
- Changed
pathrule_log_activity2 fields changed- removed
Input schema / properties / files_touched / requiredRemoved value: -[ - "total", - "by_area" -] - changed
Input schema / requiredPrevious value: -[ - "workspace_id", - "domain", - "action", - "scope", - "task_summary", - "files_touched" -]New value: +[ + "workspace_id", + "domain", + "action", + "scope", + "task_summary" +]
1 tool update
- Changed
pathrule_log_activity2 fields changed- removed
Input schema / properties / subjects / maxItemsRemoved value: -5 - removed
Input schema / properties / task_summary / maxLengthRemoved value: -500
3 tool updates
- Changed
pathrule_create_workspace1 field changed- changed
Input schema / properties / active_agent_targets / items / enumPrevious value: -[ - "claude-code", - "cursor", - "windsurf", - "codex" -]New value: +[ + "claude-code", + "cursor", + "windsurf", + "codex", + "copilot" +]
- Added
pathrule_import_pattern - Added
pathrule_remove_pattern
30 tool updates
- First observed
pathrule_create_workspace - First observed
pathrule_delete_memory - First observed
pathrule_delete_rule - First observed
pathrule_delete_skill - First observed
pathrule_get_context - First observed
pathrule_get_local_runtime_upgrade - First observed
pathrule_get_node - First observed
pathrule_get_refresh_brief - First observed
pathrule_get_tree - First observed
pathrule_goto - First observed
pathrule_list_memories - First observed
pathrule_list_organizations - First observed
pathrule_list_pending_refreshes - First observed
pathrule_list_snapshots - First observed
pathrule_list_workspaces - First observed
pathrule_log_activity - First observed
pathrule_ping - First observed
pathrule_read_memory - First observed
pathrule_read_rule - First observed
pathrule_read_skill - First observed
pathrule_read_snapshot - First observed
pathrule_resolve_refresh - First observed
pathrule_setup - First observed
pathrule_take_snapshot - First observed
pathrule_update_memory - First observed
pathrule_update_rule - First observed
pathrule_update_skill - First observed
pathrule_write_memory - First observed
pathrule_write_rule - First observed
pathrule_write_skill
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Persistent cross-session memory shared by Codex, Claude Code, ChatGPT, and other AI agents.
Shared memory and actions for Claude, Kiro, OpenAI, Cursor, and other MCP-compatible AI clients.
1Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Shared memory for AI coding agents. Save once, reuse from Cursor, Claude Code, Codex.
Related MCP Servers
- AlicenseAqualityBmaintenancePath-scoped team memories, rules and skills for AI coding agents.301MIT
- FlicenseNot gradedqualityDmaintenanceFilesystem-native agent memory for Claude Code, enabling persistent team context across sessions through cloud-synced memory files and MCP tools.-
- FlicenseNot gradedqualityCmaintenanceAuto-captured, auto-recalled, path-scoped memory for AI coding agents and teams.1-
- AlicenseNot gradedqualityAmaintenancePersistent, local memory for AI coding agents that learns how you work, not just what you said. Supports Claude Code, Codex CLI, Cursor, and any MCP client.67MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Tools are grouped by resource (memory/rule/skill/workspace/snapshot/refresh) and mostly have distinct output shapes, so agents can usually pick the right one. A few retrieval tools (get_context, get_node, get_tree, goto) overlap in purpose, but their descriptions clarify resolution mode vs full tree vs context bundle.
All tools share the pathrule_ prefix and mostly follow verb_noun, but the verbs are inconsistent: create_workspace vs write_memory, get_node vs read_memory, delete_skill vs remove_pattern, plus verb-only exceptions like goto, setup, and ping. The pattern is readable but not uniform.
32 tools is above the 25-tool threshold and feels heavy for a single server, even with a broad domain. Several context-retrieval tools and read/list variants could potentially be consolidated, though each tool does have a specific purpose.
Core CRUD is covered for memories, rules, and skills, along with workspaces, snapshots, refresh tasks, and pattern import/removal. Minor gaps include no standalone list_rules/list_skills and no snapshot update/delete, but agents can work around these via get_context, goto, and get_tree.