Skip to main content
Glama

Artel

CI License: MIT Glama Smithery Docs

Your fleet's smart notepad — one that learns.

One pad that you and every agent you run write into. Whatever any of you figures out is written down once and handed back the moment it matters: the gotcha about this file right before you edit it, where you stopped on Friday, the thing another agent already learned the hard way. Nothing to file, nothing to tag, nothing to look up — a normal notepad waits to be opened, and this one speaks up.

It also doesn't just accumulate. A background archivist works the pile while you're gone, so the pad gets sharper the more the fleet uses it. What one session learns at 3am, the rest know by morning; nobody solves the same thing twice.

You run it on your own machine. None of it goes to anyone's cloud.

What that looks like

An agent is about to…

Artel says

who wrote it

edit auth.py

"the token refresh silently no-ops when the clock skews"

a different agent, last month

start work Monday

"Friday you stopped mid-migration; here's where"

you, before the weekend

debug a flaky test

"seen in March — it was the shared fixture, not the test"

an agent on another machine

ask a question

the three notes that answer it, before it finishes typing

whoever hit it first

Nobody opened a file to find any of that, and nobody had to know who to ask.


Related MCP server: Shared Memory MCP Server

Quick start

There is no public instance to point at — this is your notepad, so you run it. One container, one port:

curl -O https://raw.githubusercontent.com/NicolasPrimeau/artel/master/docker-compose.yml
curl -O https://raw.githubusercontent.com/NicolasPrimeau/artel/master/.env.example
cp .env.example .env
# edit .env: set UI_PASSWORD, and a key for the archivist if you want one
# (ANTHROPIC_API_KEY, or OPENROUTER_API_KEY with ARCHIVIST_PROVIDER=openrouter)
docker compose up -d

API + UI at http://<host>:8000, MCP at http://<host>:8000/mcp. Images at ghcr.io/nicolasprimeau/artel:edge.

Once running, register an agent:

curl -fsSL http://<host>:8000/onboard | sh

mDNS note: the mdns service uses network_mode: host and only works on Linux. Remove it on Mac/Windows Docker Desktop.


Under the hood

A server, a database, and a librarian. Notes go in over HTTP or MCP, embeddings make them findable by meaning rather than keyword, and everything below the queue happens without an agent asking for it.

  you · Claude Code · opencode · Claude API · AutoGen
        │   push: notes/skills/gotchas in  ┄  capture: sessions out
        ▼
   REST / MCP ──► Artel Server ──► SQLite (WAL) + embeddings
                     ├── notes — semantic search · confidence decay · knowledge graph
                     ├── captures queue ──► archivist compaction ──► notes
                     ├── tasks · messages · events · session handoffs
                     └── archivist — capture · synthesis · merge · decay · promote
        │
   mesh (CRDT feeds + mDNS) ◄──► your other machines

What's inside

Each of these has a page in the docs; this is the map.

The plugin

The half that speaks up — injects the right note at session start, on each prompt, and before you edit a file.

Capture

Sessions become notes on their own, spooled in ~10 ms so writing never slows an agent down.

Archivist

The part that learns: merges duplicates, resolves contradictions, decays what stopped being true, promotes what held up.

Compile mode

Notes about code pinned to the code, so they re-derive instead of rotting.

Blueprints

A procedure compiled into a self-expanding task DAG, with contracts the server checks before a run advances.

Decisions

Append-only record of what you chose and why — never merged, never decayed.

Mesh and feeds

Several machines converging as CRDTs, plus RSS/Atom subscriptions from the outside world.

Dashboard

Browse, search, and watch the fleet from a browser.

Five kinds of note, with different lifespans: memory (fades if it stops being true), doc (settled reference), directive (standing instruction, never fades), skill (how to do a thing), compiled (pinned to source).

Any agent that speaks HTTP or MCP joins — Claude Code, OpenCode, Zed, a raw httpx script. See connecting clients.


REST API

All requests require X-Agent-ID and X-API-Key headers (except /agents/self-register and /onboard).

Full REST reference → — every endpoint, generated from the OpenAPI schema. MCP tool reference → — all 47 tools an agent can call.

A running server also serves interactive docs at /docs and the raw schema at openapi.json.


Configuration

Configured entirely through environment variables (or a .env file). The essentials:

Variable

Description

AGENT_KEYS

agent-id:api-key pairs, comma-separated. Optional :proj1;proj2 suffix scopes an agent to projects.

UI_PASSWORD

Password for the dashboard.

ANTHROPIC_API_KEY

Enables the archivist. Without it, Artel runs in passive mode.

REGISTRATION_KEY

Required by /agents/self-register. Unset disables open registration.

PUBLIC_URL

Externally reachable base URL, used in OAuth metadata and onboarding.

Full configuration reference → — all 56 settings across the server, MCP adapter, and archivist, generated from the settings classes.


Development

uv sync --dev
uv run pytest tests/ -v

License

MIT. See LICENSE.md.

Available Tools

31 tools
agent_listA
Read-only

List all registered agents and when they were last active.

Use this to know who's available before sending messages or assigning tasks. An agent that was last seen recently is likely still active.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds context about 'last active' meaning. However, it does not elaborate on other behavioral traits, but given annotations, the bar is lower.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with front-loaded purpose, no wasted words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool with an output schema, the description is complete: it explains what, when to use, and a behavioral hint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters and schema coverage is 100%, so baseline is 4. The description does not need to add parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all registered agents and when they were last active,' providing a specific verb and resource. It distinguishes itself from siblings like agent_delete and agent_rename.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this to know who's available before sending messages or assigning tasks, giving clear context. It does not explicitly mention when not to use it or alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_setupB
Read-only

Set up compile mode for the current git repo — ground this fleet's memory in source code.

Compile mode adds a pre-commit hook that, on every commit, compiles changed source files into compiled memory: grounded descriptions of what the code IS, stamped with its content hash so they recompile instead of decaying. Run this once per repo. Ask me "set up compile mode" anytime.

The hook is a single self-contained, stdlib-only Python file — no pip install needed, and it is a safe no-op until ARTEL_AGENT_ID/ARTEL_AGENT_KEY (or MCP_AGENT_ID/MCP_AGENT_KEY) are present.

Args: project: Project to scope compiled memory to. Defaults to MCP_PROJECT if set.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject to scope compiled memory to. Defaults to MCP_PROJECT if set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description contradicts the annotation readOnlyHint=true by stating that it adds a pre-commit hook, which modifies the repository. This is a serious inconsistency that misleads about the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then expands with relevant details about the hook, safety, and environment variables. It is concise but could omit the final sentence 'Ask me...' as it adds little value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool does, how the hook works, safety, and prerequisites. With an output schema present, return values need not be explained. It is complete for a setup tool, though it could mention teardown or checks that siblings cover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description repeats the schema's parameter description without adding new meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Set up compile mode for the current git repo'. It specifies that it adds a pre-commit hook to compile changed source files into compiled memory, distinguishing it from siblings like compile_status and compile_stale.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Run this once per repo' and 'Ask me set up compile mode anytime', implying it's a one-time setup. However, it does not explicitly state when to use this tool versus alternatives like compile_status or compile_stale, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_staleA
Read-only

List compiled descriptions whose source changed since they were built (SHA != HEAD).

These are no longer provably current — recompile (re-run the hook on those files) before trusting.

Args: project: Restrict to a project. Defaults to MCP_PROJECT if set.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoRestrict to a project. Defaults to MCP_PROJECT if set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds that it lists stale descriptions and explains the SHA condition, plus suggests re-running the hook. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise paragraphs with purpose, behavioral context, and parameter listing. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema present and annotations covering safety, the description is fairly complete. It explains purpose and parameter. Lacks context about what 'hook' refers to.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description in Args restates the schema's description exactly. No additional meaning added beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'list' and resource 'compiled descriptions whose source changed' (SHA != HEAD). This distinguishes it from siblings like compile_setup and compile_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: find descriptions that need recompilation due to source change. Includes guidance to 'recompile before trusting'. Could be improved by mentioning when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_statusA
Read-only

Summarize compile mode: how many compiled descriptions, code anchors, and how many are stale.

Compiled memory is the build-invalidated half of the store: a grounded description of what code IS, stamped with its source SHA. Fresh = trust it without re-reading the code; stale = the source moved, recheck. Authored memory (the decaying half) is unaffected — both modes share this store.

Args: project: Restrict to a project. Defaults to MCP_PROJECT if set.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoRestrict to a project. Defaults to MCP_PROJECT if set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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 context about the behavioral semantics of compile mode (fresh vs stale, trustworthiness) and clarifies that authored memory is unaffected, which goes beyond the annotation hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-sentence summary followed by a clarifying paragraph and an Args section. Every sentence adds value without repetition or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, output schema present), the description covers the core functionality and semantics of the result (counts of compiled, code anchors, stale). It leaves no critical gaps, though it could optionally detail the output structure further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'project' is fully described in both the schema and the description's Args section with identical wording. Schema coverage is 100%, so the description adds no additional meaning beyond the schema. Baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Summarize compile mode: how many compiled descriptions, code anchors, and how many are stale.' The verb 'summarize' is specific, and the resource 'compile mode' is clear. It naturally distinguishes from sibling tools like 'compile_setup' (setup) and 'compile_stale' (list stale).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context about fresh vs stale and mentions that authored memory is unaffected, but it does not explicitly state when to use this tool versus alternatives (e.g., compile_stale). No exclusions or comparative guidance are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decision_writeA

Record an irreversible decision with its rationale.

Decisions are append-only — they cannot be updated or deleted. Use them for choices that future agents should not re-litigate: architecture picks, scope cuts, approach selections. Memory captures what is true; decisions capture what was chosen and why.

Args: decision: What was decided, stated plainly. E.g. "Use SQLite over Postgres." rationale: Why this choice was made over alternatives. alternatives: Other options that were considered and rejected. project: Project scope. Defaults to MCP_PROJECT if set. task_id: Optional task this decision belongs to.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject scope. Defaults to MCP_PROJECT if set.
task_idNoOptional task this decision belongs to.
decisionYesWhat was decided, stated plainly. E.g. "Use SQLite over Postgres."
rationaleYesWhy this choice was made over alternatives.
alternativesNoOther options that were considered and rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=false and openWorldHint=false. The description adds critical behavioral context: decisions are irreversible, append-only, and cannot be modified or deleted, which goes well beyond the annotation signals.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description starts with a clear purpose, then explains semantics, and ends with an Args section. While informative, there is some redundancy between the prose and the Args list that could be tightened slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, an output schema present, and good annotations, the description covers all necessary context: purpose, parameters, usage constraints, and behavioral traits. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and baseline is 3, but the description adds value by providing examples for each parameter (e.g., 'E.g. "Use SQLite over Postgres."') and explaining defaults and purpose, elevating it above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool records irrevocable decisions with rationale, and explicitly distinguishes it from memory_write by contrasting 'what is true' vs 'what was chosen and why'. It also lists specific use cases (architecture picks, scope cuts, approach selections).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that decisions are append-only, cannot be updated or deleted, and should be used for choices that future agents should not re-litigate. It also contrasts with memory_write when to use decisions vs memory, providing explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_neighborsA
Read-only

Inspect a node in the memory knowledge graph: its kind, typed edges, and viability.

Edges are grounds / relies_on / applies_to / contradicts / corroborates. Viability is derived from connectivity — the more (fresh) connections, the more a node is worth trusting; a bare node fades. node_id is a memory id or a code-anchor id (4-char prefixes are NOT resolved here — pass a full id).

Args: node_id: The graph node id (memory or code anchor).

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYesThe graph node id (memory or code anchor).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and destructiveHint annotations, the description explains how viability is derived from connectivity and that bare nodes fade. This adds significant behavioral context without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and structured into clear sections. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (which likely documents return values), the description fully covers input semantics, behavioral traits, and viability explanation. It is complete for a read-only inspection tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes node_id as 'memory or code anchor', but the description adds crucial detail: 4-char prefixes are not resolved and a full id must be passed. This extra meaning elevates it above the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool inspects a node in the memory knowledge graph, specifying the verb 'inspect' and the resource. It details the types of edges and viability, distinguishing it from sibling tools like graph_link.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides specific guidance on the node_id parameter (full id required, no prefix resolution) and implies use for reading relationships. It lacks explicit when-not-to-use guidance but is clear enough for typical scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_deleteA
Destructive

Delete a memory entry. Only the entry's owner can delete it.

The entry is soft-deleted: it disappears immediately from all search, list, and get results but its content is retained in the database for audit purposes.

Args: entry_id: The UUID of the entry to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesThe UUID of the entry to delete.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description reveals it is a soft-delete (content retained for audit), which is critical behavioral context. It also mentions owner-only restriction, adding significant transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four concise sentences: purpose, ownership, soft-delete behavior, parameter. No redundant information; every sentence earns its place. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter delete tool with output schema, this description covers purpose, ownership, and side effects. It might lack error behavior (e.g., if entry not found or not owner), but those are not critical given the tool's simplicity. Nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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's 'Args' section duplicates the schema description without adding extra meaning (e.g., format, constraints, or examples). No added value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a memory entry' with a specific verb and resource. It stands out among siblings like memory_update and memory_write, and adds the ownership constraint, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for deleting memories but does not explicitly contrast with alternatives (e.g., memory_update for modification) or state when not to use it. The prerequisite (owner only) is given, but no whether to use at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_deltaA
Read-only

Get all memory written or updated after a timestamp.

Use when you need to catch up on a specific time window. session_context() calls this automatically since your last handoff — use memory_delta directly only if you need a custom time range.

Args: since: ISO 8601 timestamp, e.g. "2026-05-01T12:00:00.000Z".

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceYesISO 8601 timestamp, e.g. "2026-05-01T12:00:00.000Z".

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, so the description's safe read behavior aligns. It adds detail about fetching memory written or updated after a timestamp, which matches the read-only nature. No contradictions. Some mention of potential limits or pagination could improve, but with output schema present, it's sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus an explicit Args section. No redundant information. Purpose is front-loaded, and every sentence serves a clear function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, read-only, output schema exists), the description covers all needed aspects: purpose, usage context, and parameter format. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'since' is fully described in the schema (100% coverage). The tool description adds context by explaining when to use it, making the parameter's purpose clearer beyond the schema's ISO 8601 format description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves memory written or updated after a timestamp. It uses a specific verb and resource, and distinguishes itself from siblings like memory_list and memory_search by focusing on a time-based filter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'Use when you need to catch up on a specific time window.' Also notes that session_context() calls this automatically, so direct use is for custom time ranges, providing clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_getA
Read-only

Fetch a single memory entry by ID, returning its full content without truncation.

Use when memory_search() or memory_list() returned a truncated entry and you need the complete text, or when you have a specific entry ID and want all its metadata (confidence, tags, origin, read count). Read-only — no side effects.

Args: entry_id: The UUID of the entry. Short prefixes (min 4 chars) are resolved if unambiguous.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesThe UUID of the entry. Short prefixes (min 4 chars) are resolved if unambiguous.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds context like 'no side effects', 'full content', and prefix resolution for entry_id, which complements the annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a brief opening sentence followed by usage guidance and an Args section. It is concise but could be slightly tighter; still, it earns its sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no nested objects, output schema exists), the description is complete. It covers purpose, usage context, parameter semantics, and behavioral traits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for entry_id. The description repeats the prefix resolution detail but does not add new meaning beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Fetch'), the resource ('memory entry'), and the key behavior (returning full content without truncation). It also implicitly distinguishes from siblings like memory_list and memory_search by focusing on a single entry by ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool: 'when memory_search() or memory_list() returned a truncated entry' or when you have a specific ID. It also names alternative tools and notes the operation is read-only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_listA
Read-only

Browse memory entries by filter. Use when you want to survey a topic area.

Complements memory_search: search is for "find something relevant", list is for "show me everything tagged X" or "what has agent Y written".

Args: entry_type: memory or doc. project: Filter by project. Omit to see all accessible projects. tag: Only entries with this tag. agent: Only entries written by this agent. confidence_min: Only entries with confidence >= this (e.g. 0.7 to skip decayed entries). limit: Max results (default 50, max 500).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOnly entries with this tag.
agentNoOnly entries written by this agent.
limitNoMax results (default 50, max 500).
projectNoFilter by project. Omit to see all accessible projects.
entry_typeNomemory or doc.
confidence_minNoOnly entries with confidence >= this (e.g. 0.7 to skip decayed entries).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no contradiction. It adds useful context about filtering capabilities but does not detail authorization, rate limits, or pagination behavior. Still, with strong annotations, the description is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: a short intro, a clear usage differentiation sentence, and a bulleted argument list. No filler, every sentence serves a purpose. Well-structured for easy parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 optional parameters, full schema coverage, output schema present, and good annotations, the description covers the necessary context: filter semantics, usage pattern, and sibling relationship. Could mention return format briefly, but output schema covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter descriptions in the schema are complete. The description provides minor additional examples (e.g., '0.7 to skip decayed entries' for confidence_min), but adds limited new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'browse', the resource 'memory entries', and the filter mechanism. It explicitly distinguishes itself from the sibling tool memory_search by contrasting 'search for relevance' vs 'list by tag or author'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: 'Use when you want to survey a topic area.' and directly contrasts with memory_search, telling the agent exactly when to use list instead of search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_updateA
Idempotent

Update a memory entry you own.

Args: entry_id: The UUID of the entry to update. content: New content. Omit to leave unchanged. confidence: New confidence score (0.0–1.0). Omit to leave unchanged. tags: Replace tags list. Omit to leave unchanged. entry_type: New type (memory or doc). Omit to leave unchanged. scope: New scope (agent or project). Omit to leave unchanged. project: Move entry to a different project. Omit to leave unchanged. expected_version: The version you read (shown as "v" in memory output). If given and another agent has written since, the update is rejected with a conflict instead of silently overwriting. Omit for last-write-wins.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoReplace tags list. Omit to leave unchanged.
scopeNoNew scope (agent or project). Omit to leave unchanged.
contentNoNew content. Omit to leave unchanged.
projectNoMove entry to a different project. Omit to leave unchanged.
entry_idYesThe UUID of the entry to update.
confidenceNoNew confidence score (0.0–1.0). Omit to leave unchanged.
entry_typeNoNew type (memory or doc). Omit to leave unchanged.
expected_versionNoThe version you read (shown as "v<n>" in memory output). If given and another agent has written since, the update is rejected with a conflict instead of silently overwriting. Omit for last-write-wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint and destructiveHint. The description adds critical behavioral context like optimistic locking via expected_version, conflict rejection, and the requirement to own the entry. This goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured using an Args list, each line serves a purpose, and it is not verbose. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, one required, and an output schema present, the description covers all necessary behavioral aspects, preconditions, and parameter behaviors, making it complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds clarifying phrases like 'Omit to leave unchanged' and explains the conflict behavior for expected_version. This adds meaningful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly state the action 'Update a memory entry you own.' It uses a specific verb and resource, and distinguishes from siblings like memory_delete and memory_write.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for updating an existing entry, but does not explicitly state when to use this tool over alternatives, such as creating new entries with memory_write.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_writeA

Write something to shared memory. Use this often.

Write whenever you learn, decide, or discover something worth keeping:

  • Facts about the codebase, infrastructure, or domain

  • Decisions made and why

  • Bugs found, workarounds, gotchas

  • Plans, designs, open questions

  • Anything another agent (or future you) would want to know

Types:

  • memory: default — use this for everything

  • doc: stable reference material; normally written by the archivist, not agents

  • directive: a standing instruction that governs archivist behavior fleet-wide; requires elevated permission (the UI agent has it by default); confidence is always forced to 1.0

  • skill: procedural knowledge — how to do something; decays like memory, never promoted, never merged; superseded by directives on the same topic

Scopes:

  • project: visible to all members of this project (default)

  • agent: only you can see it

Args: content: What to store. Markdown is fine. entry_type: See types above. Default: memory. scope: See scopes above. Default: project. project: Project to scope the entry to. Defaults to MCP_PROJECT if set. tags: Tags for filtering and retrieval. Use them — they make memory_list useful. confidence: How certain you are (0.0–1.0). Default 1.0. Use lower for guesses.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for filtering and retrieval. Use them — they make memory_list useful.
scopeNoSee scopes above. Default: project.project
contentYesWhat to store. Markdown is fine.
projectNoProject to scope the entry to. Defaults to MCP_PROJECT if set.
confidenceNoHow certain you are (0.0–1.0). Default 1.0. Use lower for guesses.
entry_typeNoSee types above. Default: memory.memory

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate no destruction and not open world. The description adds context about elevated permissions for directive type and confidence usage. However, it does not disclose idempotency, rate limits, or whether writing always creates new entries (vs. overwriting). The description provides moderate additional context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured, starting with a clear one-liner, then usage guidance, types, scopes, and parameters. It is front-loaded and each section is purposeful. While verbose, the complexity of the tool justifies the length; could be slightly tighter but remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, return values need not be explained. The description thoroughly covers all six parameters, including nuanced guidance on confidence and tags. It addresses various use cases and constraints, making it highly complete for a write tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage, but the description adds significant value by explaining the taxonomy of entry types (memory, doc, directive, skill) and scopes (project, agent) with usage details. This goes beyond the schema defaults and provides meaningful guidance for parameter selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Write something to shared memory' and provides extensive guidance on what to write, types, and scopes. It effectively differentiates from sibling tools like memory_list, memory_get, etc., by focusing on the write operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises 'Use this often' and provides detailed scenarios for when to write, including facts, decisions, bugs, etc. It also explains types that require special permissions (directive) or roles (doc for archivist). However, it does not directly compare against similar write tools like memory_update.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

message_listA
Read-only

List all messages sent to or from you (full history, not just unread).

Use when you need to review past conversations, check if you missed something, or audit what was communicated. For unread-only, use message_inbox() instead.

Args: read: True = read only, False = unread only, omit = all messages. limit: Max messages to return (default 50, max 200).

ParametersJSON Schema
NameRequiredDescriptionDefault
readNoTrue = read only, False = unread only, omit = all messages.
limitNoMax messages to return (default 50, max 200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description accurately reflects read-only nature (consistent with annotations) and clarifies scope ('full history, not just unread'). Annotations already provide readOnlyHint=true and destructiveHint=false, so description adds limited behavioral context beyond this distinction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: the first sentence captures purpose, second guides usage, and the parameter list is cleanly formatted. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (so return values need not be described), the tool definition fully covers purpose, usage, parameter details, and alternative tool. It is contextually complete for an AI agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the description's parameter explanations are identical to the schema's descriptions. No additional semantic value beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List all messages sent to or from you (full history, not just unread).' Verb and resource are explicit, and it distinguishes from message_inbox (unread-only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (reviewing past conversations, checking missed messages, auditing) and directly names the alternative tool: 'For unread-only, use message_inbox() instead.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_joinA
Idempotent

Switch to a project — this becomes your single active project.

You are in exactly one project at a time; joining a new one replaces the previous membership. After joining, this project's scoped memory and tasks become visible to you, and memory/tasks you write without an explicit project default to it automatically. Join the project you're working in at session start.

Args: project_id: The project name to switch to.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project name to switch to.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent and non-destructive. The description adds valuable behavior: joining replaces previous membership, scoped memory and tasks become visible, and default writing behavior. This goes beyond annotations and provides a complete behavioral model.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a bold summary sentence, then paragraphs explaining behavior and usage. It is clear and concise, though a few sentences could be tightened without loss of meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no destructive actions), the description covers all aspects: what it does, side effects, and when to use. An output schema exists, so return values need not be described. The description is fully adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description repeats the parameter description from the input schema ('project_id: The project name to switch to.'). With 100% schema coverage, the description adds no new information about the parameter's meaning or usage, so it's at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Switch to a project — this becomes your single active project.' It uses a specific verb (switch/join) and resource (project). It distinguishes from sibling tools like project_leave and project_list by explaining the active project behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes 'Join the project you're working in at session start,' implying when to use it. It explains that joining replaces the previous membership, providing context. However, it does not explicitly state when not to use it or mention alternatives, though the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_leaveA
Idempotent

Leave a project — removes you from its member list.

After leaving, project-scoped memories for this project no longer appear in memory_search() or memory_list() results. Memory you already wrote to the project is retained for other members. You can re-join at any time with project_join().

Args: project_id: The project name to leave.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project name to leave.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (destructiveHint=false, idempotentHint=true) already indicate the tool is non-destructive. The description adds valuable behavioral context: after leaving, project-scoped memories are hidden from the user but retained for others, and re-joining is possible. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a main sentence, a paragraph about side effects, and an Args section. The key information is front-loaded. Minor redundancy in the Args section, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no nested objects, the description covers the purpose, side effects, and re-join capability. The presence of an output schema means return values need not be described, and the description is complete enough for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (project_id) with schema description 'The project name to leave.' The description repeats this in Args. Schema coverage is 100%, so the description adds no new meaning beyond the schema, earning a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Leave a project — removes you from its member list.' It uses a specific verb ('leave') and resource ('project'). Among siblings, project_join and project_members exist, making this tool's purpose distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to leave a project) and provides context on consequences (memories hidden, but retained for others, can re-join). Though it doesn't explicitly state when not to use it, the context is clear and helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_listA
Read-only

List all projects with their members, memory count, and last activity.

Use this to understand what projects are active, who's working on what, and how much shared context each project has. Your default project is MCP_PROJECT (if set) — memory you write goes there automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, but the description adds valuable behavioral context: the tool lists projects with specific fields and notes that the default project (MCP_PROJECT) is used for memory writes. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: purpose, usage guidance, and default project note. Each sentence adds value without redundancy. The description is front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, output schema exists), the description is complete. It explains what the list contains, provides usage context, and notes a default behavior. No gaps remain for an agent to understand when and how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema description coverage is 100% (since there are none). The description does not need to add parameter details; a baseline of 4 is appropriate as it meets expectations without additional parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all projects' with a specific verb and resource, and specifies the included fields (members, memory count, last activity). It effectively distinguishes from sibling tools like project_members, which focuses on a single project's members.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: 'Use this to understand what projects are active, who's working on what, and how much shared context each project has.' It also mentions the default project behavior. However, it does not explicitly exclude scenarios or contrast with alternatives like project_members, which could help when a user needs details for a single project.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_membersA
Read-only

List the agents currently in a project, with their join timestamps.

Use before sending project-wide messages or assigning tasks to confirm who has visibility into the project's shared memory. Returns each member's agent_id and join timestamp. Requires membership — non-members cannot enumerate a project's members.

Args: project_id: The project name to inspect.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project name to inspect.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive behavior. The description adds the return format (agent_id, join timestamp) and an access constraint (requires membership), which supplements the annotations well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: purpose, usage guidance, and constraints/returns. Front-loaded and efficient, with no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully covers what the tool does, when to use it, what it returns, and important constraints. The presence of an output schema reduces the need to detail return values, and the description sufficiently fills the gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the single parameter, with a description matching the tool's description. The tool description does not add new parameter-level details beyond restating the schema, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list), resource (agents in a project), and includes the return details (join timestamps). It distinguishes from sibling tools like project_join, project_leave, and project_list by focusing on membership enumeration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises use before sending messages or assigning tasks, and warns that non-members cannot list members. This provides clear context but could be improved by also noting when not to use (e.g., avoid if no project ID is available).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_contextA
Read-only

CALL THIS FIRST at the start of every session, before doing any work.

Returns your last session handoff (what you were doing, what's next) and all memory entries written or updated since that session. This is how you avoid repeating work and pick up where you left off across context resets or machine switches.

Args: agent_id: Whose context to load. Omit to load your own.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idNoWhose context to load. Omit to load your own.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and no destructive behavior. The description adds that it returns handoff and memory entries, which is useful context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: a direct instruction, a one-sentence explanation of return value and purpose, and a brief parameter note. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations and output schema, the description provides all necessary context: what the tool does, when to use it, what it returns, and parameter usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description repeats the parameter info from the schema without adding new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to return the last session handoff and memory entries, and it explicitly says to call it first. This distinguishes it from sibling tools like memory_get or session_handoff.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit instructions: 'CALL THIS FIRST at the start of every session, before doing any work.' It explains how it helps avoid repeating work and pick up where left off.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_handoffA
Idempotent

CALL THIS LAST before your session ends — saves state for your next session.

Stores what you did, what's in progress, and what to do next. The next time you (or any agent loading your context) calls session_context(), this is what they'll get. Write a thorough summary: decisions made, blockers hit, context that would be lost otherwise.

Args: summary: What you accomplished this session. Be specific — this is your only record. next_steps: What to do in the next session, in order of priority. in_progress: Task IDs that are currently claimed and not yet completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYesWhat you accomplished this session. Be specific — this is your only record.
next_stepsNoWhat to do in the next session, in order of priority.
in_progressNoTask IDs that are currently claimed and not yet completed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotentHint=true and destructiveHint=false, but the description adds critical behavioral context: it must be called last, and it persists state across sessions. This goes beyond annotations by providing ordering and persistence guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the key directive 'CALL THIS LAST', and organized with clear sections. Every sentence adds value, and there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description covers all necessary aspects: purpose, usage timing, parameter details, and behavioral notes. It is complete for an agent to understand and correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions, but the description repeats these and adds extra guidance (e.g., 'be specific', 'in order of priority'). This additional context enhances understanding beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool saves session state for the next session, specifying it stores what was done, what's in progress, and next steps. It distinguishes itself from sibling tool session_context, which retrieves the saved state, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs 'CALL THIS LAST before your session ends', providing clear timing context. It also references session_context as the retrieval counterpart. While it doesn't explicitly list alternatives or when not to use, the directive is sufficient for typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_add_dependencyA

Mark a task as blocked by another task.

The task will appear in task_list(unblocked=True) only after all its dependencies reach 'completed' status. Use to model prerequisite chains before claiming downstream work.

Args: task_id: The task that is blocked. depends_on: The task it must wait for.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task that is blocked.
depends_onYesThe task it must wait for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate non-destructive, non-open-world. Description adds that the task appears only after dependencies reach 'completed' status, which is beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is succinct, with a clear first sentence, followed by behavioral explanation and Args section. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 2 required params, 100% schema coverage, and presence of output schema, the description is adequate for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description repeats parameter meanings. Adds value by clarifying the roles of task_id and depends_on.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action: 'Mark a task as blocked by another task.' It explains the effect on task listing and differentiates from sibling tools like task_remove_dependency.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'Use to model prerequisite chains before claiming downstream work.' Provides clear context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_claimA

Claim an open task — marks it as yours and sets status to 'claimed'.

Always claim a task before working on it. This prevents two agents from doing the same work. Call task_complete(), task_fail(), or task_unclaim() when done.

Args: task_id: ID from task_list() or task_create(). body: Optional note recorded on the task's comment log (e.g. why you're picking this up).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoOptional note recorded on the task's comment log (e.g. why you're picking this up).
task_idYesID from task_list() or task_create().

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it sets status to 'claimed' and requires an open task. Annotations confirm non-destructive and non-open-world. No contradictions, but could mention if it fails gracefully on already claimed tasks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs, front-loaded with main action, then usage guidance, then parameter list. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, and parameters well. Output is not described, but output schema exists. Slight gap: does not explain what happens if task is already claimed (error or no-op).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and includes descriptions. The description adds context for the body param (recorded on comment log). No extra detail missing beyond what schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action: claim an open task, marking it as yours and setting status to 'claimed'. It differentiates from sibling tools like task_complete and task_unclaim by specifying the effect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises to claim before working, explains why (prevents duplicate work), and references complementary tools (task_complete, task_fail, task_unclaim) for next steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_commentA

Add a free-form comment to a task's chronological log.

Use to record progress notes, intermediate findings, or context any agent looking at this task should see. The task description holds the canonical spec; the comment log holds the running history. Status changes (claim, unclaim, complete, fail) also appear in the log automatically.

Args: task_id: ID of the task to comment on. body: Comment text.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesComment text.
task_idYesID of the task to comment on.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-destructive behavior. Description adds context that comments are appended to a chronological log and that status changes are logged automatically, providing sufficient behavioral transparency for this simple write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise and front-loaded with the main action, followed by usage guidance and clarification, with no wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema, the description adequately explains purpose and parameters. Could mention that comments are appended chronologically, but the term 'chronological log' implies this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description restates parameter descriptions with no additional semantic or formatting details beyond what the schema provides, meeting baseline expectations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb 'Add' and the resource 'free-form comment to a task's chronological log', distinguishes from siblings by noting that status changes appear automatically, and clarifies the difference between task description and comment log.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states to use for recording progress notes and intermediate findings, and notes that status changes are automatic. Could be improved by contrasting with task_update for modifying the canonical spec, but overall clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_completeA

Mark your claimed task as completed. Only the claiming agent can complete it.

Call when the task's expected_outcome has been fully achieved. The body is recorded in the task's comment log and visible to all agents reviewing the task. If you cannot finish the task, use task_fail() instead; if you are stepping away mid-work, use task_unclaim() so another agent can pick it up.

Args: task_id: ID of a task you have claimed. body: Summary of what was accomplished, including follow-up IDs or links. Recommended — it is the only record future agents have of what was done.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoSummary of what was accomplished, including follow-up IDs or links. Recommended — it is the only record future agents have of what was done.
task_idYesID of a task you have claimed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate non-destructive and closed world; description adds that the body is recorded in the comment log and visible to all agents, plus that only the claiming agent can complete it, providing useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: core action, usage conditions, alternatives, then parameter explanations. Every sentence is purposeful and front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no nested objects) and presence of an output schema, the description covers all necessary aspects: purpose, usage conditions, parameter roles, and behavioral traits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description reinforces the importance of body as the only record for future agents, adding slight value beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Mark your claimed task as completed' with a clear verb and resource, and explicitly mentions that only the claiming agent can complete it, distinguishing it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Call when the task's expected_outcome has been fully achieved' and gives alternatives for failure or stepping away (task_fail, task_unclaim), providing clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_createA

Create a task for yourself or another agent to pick up.

Use when there's a discrete unit of work that should be tracked, may be done by a different agent, or needs to survive across sessions. Check task_list() for duplicates before creating.

Args: title: Short imperative description, e.g. "Fix auth token expiry bug". description: Context, acceptance criteria, or relevant links. expected_outcome: What done looks like — specific, observable result. project: Project scope. Defaults to MCP_PROJECT if set. priority: low, normal (default), or high. tags: Labels for filtering, e.g. ["writing", "infra"]. depends_on: Task IDs that must be completed before this task is unblocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoLabels for filtering, e.g. ["writing", "infra"].
titleYesShort imperative description, e.g. "Fix auth token expiry bug".
projectNoProject scope. Defaults to MCP_PROJECT if set.
priorityNolow, normal (default), or high.normal
depends_onNoTask IDs that must be completed before this task is unblocked.
descriptionNoContext, acceptance criteria, or relevant links.
expected_outcomeNoWhat done looks like — specific, observable result.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=false, so the tool is safe. The description adds that tasks are created for 'yourself or another agent' and 'survive across sessions', providing context about persistence and multi-agent use. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: one lead sentence explaining purpose, one sentence on usage guidance, and a bulleted Args list. Every sentence adds value. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters (1 required), 100% schema coverage, and an output schema, the description covers all necessary aspects: purpose, when to use, each parameter's meaning, and a pre-use check. It is complete for an agent to effectively invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (all 7 parameters have descriptions), so baseline is 3. The description adds extra meaning: for title, it says 'Short imperative description'; for expected_outcome, 'What done looks like — specific, observable result'; and for depends_on, 'Task IDs that must be completed before this task is unblocked.' These elaborations go beyond the schema, justifying a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Create a task for yourself or another agent to pick up.' It clearly identifies the action (create) and the resource (task). This distinguishes it from sibling tools like task_list (list tasks) or task_update (update tasks).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance: 'Use when there's a discrete unit of work that should be tracked, may be done by a different agent, or needs to survive across sessions. Check task_list() for duplicates before creating.' This tells the agent when to use the tool and gives a precondition (check for duplicates), effectively distinguishing it from alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_failA

Mark your claimed task as failed. Use when you cannot complete it.

Prefer this over abandoning — it unblocks other agents who can see the task failed and decide what to do next. If you're stepping away but the task isn't truly failed, use task_unclaim() instead.

Args: task_id: ID of a task you have claimed. body: Optional reason recorded on the task's comment log. Strongly recommended.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoOptional reason recorded on the task's comment log. Strongly recommended.
task_idYesID of a task you have claimed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint=false), description adds context: 'it unblocks other agents who can see the task failed and decide what to do next.' Explains why preferring over abandoning is beneficial and mentions optional comment recording.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise: intro sentence, usage paragraph, parameter list. No wasted words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a two-parameter tool with output schema. Covers purpose, usage, parameters, and behavioral effects. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds extra nuance: 'Strongly recommended' for body parameter, implying its importance for clarity, which goes beyond schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb+resource: 'Mark your claimed task as failed.' Distinguishes from sibling tools like task_unclaim and task_complete by emphasizing failure vs unclaiming.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use when you cannot complete it.' and contrasts with 'If you're stepping away but the task isn't truly failed, use task_unclaim() instead.' Provides clear guidance on when to use and alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_getA
Read-only

Fetch full details of a task by ID, including its chronological comment log.

Use when task_list() gave you an ID and you need the description, expected outcome, and full history of status changes and agent comments. Read-only — no side effects.

Args: task_id: The UUID of the task. Short prefixes (min 4 chars) are resolved if unambiguous.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe UUID of the task. Short prefixes (min 4 chars) are resolved if unambiguous.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, but the description adds behavioral details like the inclusion of comment log and full history, which is useful context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and every sentence adds value without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 adequately covers what the tool returns and its context, making it complete for a simple lookup operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description repeats the parameter description from the input schema exactly, adding no new information beyond the schema's details about short prefixes being resolved.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches full task details and includes the chronological comment log, distinguishing it from siblings like task_list which likely only returns summaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use when task_list() provides an ID and you need details, histories, and comments, and that it is read-only with no side effects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_listA
Read-only

List tasks. Call with status="open" to find work that needs doing.

Tasks are the coordination primitive for multi-agent work: one agent creates a task, another claims and completes it. Check for open tasks before creating new ones. Use unblocked=True to filter to only tasks whose dependencies are all completed.

Args: status: open, claimed, completed, or failed. Omit for all. project: Filter by project name. tag: Filter to tasks carrying this tag. unblocked: If True, only return tasks with no incomplete dependencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter to tasks carrying this tag.
statusNoopen, claimed, completed, or failed. Omit for all.
projectNoFilter by project name.
unblockedNoIf True, only return tasks with no incomplete dependencies.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true and destructiveHint=false, and the description confirms a non-destructive list operation. It adds behavioral context about tasks as coordination primitives and the unblocked filter, but does not mention potential limits like pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loads the purpose, and uses clear structure with a brief paragraph followed by Args. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, annotations, and presence of an output schema, the description adequately covers purpose, usage, and parameter context. It explains the coordination workflow and filtering options. Minor gaps like pagination are acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description includes an Args section that largely reiterates the schema descriptions. It adds context for status and unblocked, but does not significantly extend beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List tasks' and provides a specific use case: 'Call with status="open" to find work that needs doing.' This distinguishes it from sibling tools like task_get or task_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance on when to use (e.g., with status='open') and the coordination context ('check for open tasks before creating new ones') is provided. However, it does not explicitly contrast with sibling tools like task_get for individual retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_remove_dependencyA
Idempotent

Remove a dependency between two tasks.

Args: task_id: The blocked task. dep_id: The dependency task ID to remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
dep_idYesThe dependency task ID to remove.
task_idYesThe blocked task.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent and non-destructive behavior. The description adds no further behavioral context beyond the schema, which is acceptable but provides no additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: a single clear sentence followed by parameter details. No wasted words, and the main purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple removal tool with complete schema and annotations, the description is adequate. The presence of an output schema further reduces the need to describe return values, making the description sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description's parameter explanations ('The blocked task' for task_id) do not add significant meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Remove a dependency between two tasks,' using a specific verb and resource. It distinguishes from the sibling tool 'task_add_dependency' which performs the opposite operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., task_add_dependency) or mention any prerequisites. Usage is implied by the purpose, but no direct context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_unclaimA

Release your claim on a task — returns it to 'open' so others can pick it up.

Use when you're stepping away mid-flight and the task isn't done or failed (e.g. blocked on an async external process, handing off, ending a session). Only the agent that claimed it can unclaim it.

Args: task_id: ID of a task you have claimed. body: Optional reason recorded on the task's comment log. Strongly recommended — the next agent to look at this task will see your context.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoOptional reason recorded on the task's comment log. Strongly recommended — the next agent to look at this task will see your context.
task_idYesID of a task you have claimed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint: false, openWorldHint: false), the description adds that the task returns to 'open' state, that only the claiming agent can unclaim, and that a reason can be recorded for the next agent. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured: purpose, usage scenario, constraints, then parameter descriptions. Every sentence adds value, no fluff. Approximately 50 words for the main description, clear and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 params, 1 required, output schema present), the description covers all necessary aspects: action, when to use, constraints, and parameter details. Complete for an AI agent to select and invoke.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds value for the 'body' parameter by emphasizing its importance for context sharing, going beyond the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Release your claim on a task — returns it to open so others can pick it up.' It specifies the verb (release/unclaim) and resource (task), distinguishing it from siblings like task_claim, task_complete, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: 'Use when you're stepping away mid-flight and the task isn't done or failed.' It also notes that only the claiming agent can unclaim. However, it does not explicitly name alternative tools for similar scenarios, slightly lowering the score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_updateA
Idempotent

Update a task's description, title, priority, project, or tags.

Use to record progress notes on a task you're working on, correct metadata, or transfer a task to a different project. Any project member can update tags.

Args: task_id: ID of the task to update. description: Text for the description field. Omit to leave unchanged. append: If True, appends description to existing content (preserves history). If False (default), replaces entirely. title: New title. Omit to leave unchanged. priority: low, normal, or high. Omit to leave unchanged. project: Move the task into this project. Omit to leave unchanged. tags: Replace the tags list. Any project member can set this.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoReplace the tags list. Any project member can set this.
titleNoNew title. Omit to leave unchanged.
appendNoIf True, appends description to existing content (preserves history). If False (default), replaces entirely.
projectNoMove the task into this project. Omit to leave unchanged.
task_idYesID of the task to update.
priorityNolow, normal, or high. Omit to leave unchanged.
descriptionNoText for the description field. Omit to leave unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false. The description adds behavioral context about the 'append' parameter preserving history and permission notes ('Any project member can update tags'), going beyond the annotations to clarify non-destructive behavior and access control.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear first sentence followed by bullet-style parameter details. It is not overly verbose, though the 'Args:' section repeats schema info. It could be slightly more concise, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema (not shown) and annotations covering safety, the description provides sufficient use-case context and permission details (tags). It does not explain return values or errors, but these are covered by the output schema. The description is reasonably complete for a straightforward update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description mostly repeats the schema's parameter descriptions (e.g., 'Omit to leave unchanged'), adding no significant new meaning. The explanation of 'append' is slightly more verbose but still largely redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a task's description, title, priority, project, or tags' with specific fields, and provides use cases like recording progress notes, correcting metadata, or transferring to a different project. This distinguishes it from siblings like task_comment and task_complete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives when-to-use examples (record progress notes, correct metadata, transfer project) but does not explicitly mention when not to use it or suggest alternatives like task_comment for adding comments. It provides some context but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, covering separate domains: agents, memory, tasks, messages, projects, feeds, events, and sessions. No two tools appear to do the same thing.

Naming Consistency5/5

The vast majority of tools follow a consistent noun_verb pattern (e.g., memory_write, task_list, project_join). The few exceptions like inbox_cron_setup are clearly naming a configuration instruction, not an operation.

Tool Count4/5

34 tools is high but justified by the broad scope of multi-agent coordination and memory management. Each tool serves a distinct and necessary function, though some consolidation might be possible.

Completeness5/5

The tool surface is remarkably complete, covering creation, retrieval, update, deletion, and listing for all major resources (memory, tasks, messages, projects, agents). Additional features like feeds, events, and session management fill all obvious gaps.

Maintenance

ActivityActive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A production-ready MCP server that enables multiple AI agents to collaborate through a shared, concurrency-safe memory space. It supports advanced search, full CRUD operations, and automatic backups to facilitate asynchronous communication between agents.
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Provides a shared context layer for AI agent teams to improve token efficiency through context deduplication and incremental state sharing. It enables multiple agents to coordinate tasks, share real-time discoveries, and manage dependencies while significantly reducing redundant data transmission.
    15
    0
    7
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server for managing agent memory using provenance tracking, decay-weighted retrieval, and feedback loops to optimize information recall. It allows agents to store insights in a local SQLite database and rank them based on confidence, age, and usefulness.
    4
    58
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NicolasPrimeau/artel'

If you have feedback or need assistance with the MCP directory API, please join our Discord server