Skip to main content
Glama

agenthive-mcp

agenthive-mcp hero

CI License

A Model Context Protocol (MCP) server that exposes AgentHive's shared, reviewed team memory to LLM clients (Claude Desktop, Claude Code, Cursor, VS Code, etc.) - retrieve_context, log_session, create_agent, list_agents, create_task, and list_tasks as native tools, instead of a CLAUDE.md / .cursor/rules instruction block that calls AgentHive's HTTP API by hand.

PyPI: pip install agenthive-mcp  ·  Image: ghcr.io/polarpoint-io/agenthive-mcp:latest  ·  Repo: https://github.com/polarpoint-io/agenthive-mcp

Table of contents

Related MCP server: LoreConvo

Quick start

You need an AgentHive team and a personal token first - see AgentHive's onboarding guide if you don't have one yet.

1. pip (no Docker)

pip install agenthive-mcp
export AGENTHIVE_URL=https://your-agenthive-host
export AGENTHIVE_TOKEN=your_personal_token
export AGENTHIVE_TEAM_ID=your_team_id

agenthive-mcp                                 # stdio
TRANSPORT=http HTTP_PORT=8000 agenthive-mcp   # HTTP/SSE

2. Docker (stdio — launched by your MCP client)

docker pull ghcr.io/polarpoint-io/agenthive-mcp:latest

docker run --rm -i \
  -e AGENTHIVE_URL=https://your-agenthive-host \
  -e AGENTHIVE_TOKEN=your_personal_token \
  -e AGENTHIVE_TEAM_ID=your_team_id \
  ghcr.io/polarpoint-io/agenthive-mcp:latest

3. Docker (HTTP/SSE — standalone service)

docker run --rm \
  -p 8000:8000 \
  -e AGENTHIVE_URL=https://your-agenthive-host \
  -e AGENTHIVE_TOKEN=your_personal_token \
  -e AGENTHIVE_TEAM_ID=your_team_id \
  -e TRANSPORT=http \
  ghcr.io/polarpoint-io/agenthive-mcp:latest
# SSE endpoint: http://localhost:8000/sse

Use your own token, not a shared or admin one - whatever it can do (member or admin) is what this server can do on your behalf, nothing more or less (see Security notes).

Configuration

Variable

Required

Default

Description

AGENTHIVE_URL

yes

Base URL of a running AgentHive service

AGENTHIVE_TOKEN

yes

Your personal AgentHive token

AGENTHIVE_TEAM_ID

yes

Your AgentHive team id

TRANSPORT

no

stdio

stdio or http

HTTP_HOST

no

0.0.0.0

Bind host (HTTP mode)

HTTP_PORT

no

8000

Bind port (HTTP mode)

LOG_LEVEL

no

INFO

Python log level

See .env.example for a copy-pasteable template.

Client integrations

Each client supports two transport options — pip (recommended, no Docker required) or Docker.

# Install once
pip install agenthive-mcp

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).

pip (recommended)

{
  "mcpServers": {
    "agenthive": {
      "command": "agenthive-mcp",
      "env": {
        "AGENTHIVE_URL": "https://your-agenthive-host",
        "AGENTHIVE_TOKEN": "your_personal_token",
        "AGENTHIVE_TEAM_ID": "your_team_id"
      }
    }
  }
}

Docker

{
  "mcpServers": {
    "agenthive": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "AGENTHIVE_URL", "-e", "AGENTHIVE_TOKEN", "-e", "AGENTHIVE_TEAM_ID",
        "ghcr.io/polarpoint-io/agenthive-mcp:latest"
      ],
      "env": {
        "AGENTHIVE_URL": "https://your-agenthive-host",
        "AGENTHIVE_TOKEN": "your_personal_token",
        "AGENTHIVE_TEAM_ID": "your_team_id"
      }
    }
  }
}

Restart Claude Desktop after editing. You should see a hammer icon in the chat confirming the agenthive server is connected with all 6 tools available.


Claude Code

pip (recommended)

pip install agenthive-mcp

claude mcp add agenthive -- agenthive-mcp
# then export your config before running claude:
export AGENTHIVE_URL=https://your-agenthive-host
export AGENTHIVE_TOKEN=your_personal_token
export AGENTHIVE_TEAM_ID=your_team_id

Docker

claude mcp add agenthive -- docker run --rm -i \
  -e AGENTHIVE_URL -e AGENTHIVE_TOKEN -e AGENTHIVE_TEAM_ID \
  ghcr.io/polarpoint-io/agenthive-mcp:latest

Or a plain .mcp.json in the repo root works too - same shape as Claude Desktop's config above.


Cursor

Edit ~/.cursor/mcp.json:

pip (recommended)

{
  "mcpServers": {
    "agenthive": {
      "command": "agenthive-mcp",
      "env": {
        "AGENTHIVE_URL": "https://your-agenthive-host",
        "AGENTHIVE_TOKEN": "your_personal_token",
        "AGENTHIVE_TEAM_ID": "your_team_id"
      }
    }
  }
}

Docker

{
  "mcpServers": {
    "agenthive": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
               "-e", "AGENTHIVE_URL", "-e", "AGENTHIVE_TOKEN", "-e", "AGENTHIVE_TEAM_ID",
               "ghcr.io/polarpoint-io/agenthive-mcp:latest"],
      "env": {
        "AGENTHIVE_URL": "https://your-agenthive-host",
        "AGENTHIVE_TOKEN": "your_personal_token",
        "AGENTHIVE_TEAM_ID": "your_team_id"
      }
    }
  }
}

VS Code (Continue)

Edit ~/.continue/config.json:

pip (recommended)

{
  "mcpServers": [{
    "name": "agenthive",
    "command": "agenthive-mcp",
    "env": {
      "AGENTHIVE_URL": "https://your-agenthive-host",
      "AGENTHIVE_TOKEN": "your_personal_token",
      "AGENTHIVE_TEAM_ID": "your_team_id"
    }
  }]
}

HTTP / SSE (remote or shared server)

If you prefer to run the server as a persistent HTTP service rather than a subprocess - still bound to whichever token you start it with, this is a transport choice, not a different auth model:

# pip
pip install agenthive-mcp
AGENTHIVE_URL=... AGENTHIVE_TOKEN=... AGENTHIVE_TEAM_ID=... TRANSPORT=http HTTP_PORT=8000 agenthive-mcp

# Docker
docker run --rm -p 8000:8000 \
  -e AGENTHIVE_URL=... -e AGENTHIVE_TOKEN=... -e AGENTHIVE_TEAM_ID=... \
  -e TRANSPORT=http \
  ghcr.io/polarpoint-io/agenthive-mcp:latest

Then point your MCP client at http://localhost:8000/sse.

Tool reference

Every tool here is a member-role AgentHive call - the same tier your personal token already grants over the API directly. Admin-only calls (list_pending/approve/reject, user management, auto-approve rules) are deliberately not exposed as tools: they exist so a human operates the review gate from the review UI or an admin script, and turning them into agent-callable tools would let an agent approve or reject its own pending memory, which defeats the point of the gate. See AgentHive's ADR.md for why the gate exists, and its README for those calls.

Tool

Description

retrieve_context

Bounded neighborhood of this team's reviewed, approved memory around a topic (anchor, hops=2, hub_cutoff=15)

log_session

Log what happened this session as a memory node (title, body, tags, links, agent_id, task_id) - starts pending

create_agent

Register an agent identity (name, description, system_prompt) so sessions can be attributed to it

list_agents

List agent identities already registered with the team

create_task

Register a task (name, description) so sessions can be scoped to it

list_tasks

List tasks already registered with the team

Wiring an agent up to actually use these tools

Tools existing in the tool list doesn't make an agent call them unprompted - it needs a line telling it when.

If the repo uses polarpoint-io's platform-standards AGENTS.md template (see ai-capabilities/platform-standards/templates/default-agents-md.md), add it to Zone 3 ("Repo-specific notes" - free, team-owned, and explicitly meant for "context about the domain, gotchas, preferred libraries, links to runbooks"):

## AgentHive

Before starting work, call `retrieve_context` with a short description of
the task. When you're done, call `log_session` summarizing what you did
and learned.

Team-specific conventions (which tags to use, the team's AGENTHIVE_TEAM_ID) belong in Zone 2 instead - guarded, but team-owned, meant to extend Zone 1 rather than override it. Don't put either in Zone 1: that's platform-locked, and making AgentHive retrieval mandatory org-wide is a bigger call than one repo should make on its own - it would need a PR to ai-capabilities and platform-team review.

Repos without that template yet can use a plain CLAUDE.md / .cursor/rules line instead - same content, just a different file.

Why a separate repo from AgentHive

This started as a module inside the AgentHive repo itself, then moved out: it has its own dependency (mcp), its own release cadence (an IDE integration changes on its own schedule, unrelated to the service's), and no reason to need AgentHive's own container image, Helm chart, or CI matrix rebuilt every time it changes - or vice versa.

It's self-contained: it makes its own plain HTTP calls to a running AgentHive service rather than importing anything from the agenthive repo, so this repo has no dependency on that one at build, install, or test time - only a runtime one, on the base URL of a service you already have running.

Running from source

git clone git@github.com:polarpoint-io/agenthive-mcp.git
cd agenthive-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e .[dev]

export AGENTHIVE_URL=...
export AGENTHIVE_TOKEN=...
export AGENTHIVE_TEAM_ID=...

agenthive-mcp                                 # stdio
TRANSPORT=http HTTP_PORT=8000 agenthive-mcp   # HTTP/SSE

Or via the Makefile:

make dev       # install with dev extras
make test      # pytest
make lint      # ruff check
make run       # stdio
make run-http  # HTTP/SSE on :8000
make docker    # build the image locally

Development

make dev
make test
make lint

The test suite (tests/test_tools.py) drives the server as a real subprocess over real MCP stdio, using a real mcp.ClientSession - nothing mocked at the protocol layer. The AgentHive side is a small local fake (tests/fake_agenthive.py), not the real service, since this repo shouldn't need AgentHive itself checked out to test its own HTTP plumbing; AgentHive's own approval-gate/retrieval/auth behavior is already covered by its own test suite, in its own repo, against the real server.py. Try this server against a real AgentHive instance manually if you want to confirm the whole chain end to end.

Adding a new tool:

  1. Add a @mcp.tool() function in src/agenthive_mcp/server.py, calling _request() from client.py. Only for a member-role AgentHive endpoint - see Tool reference.

  2. Add a matching route to tests/fake_agenthive.py if the endpoint isn't already covered.

  3. Add a test in tests/test_tools.py using the existing stdio_client/ClientSession pattern.

See AGENTS.md for deeper contribution guidance.

Publishing

Releases are fully automated via semantic-release - no manual tagging needed.

How it works

Every push to main runs the CI pipeline:

  1. Test — lint (ruff) + pytest across Python 3.10 / 3.11 / 3.12

  2. Docker — builds and pushes the image to GHCR

  3. Release — semantic-release analyses conventional commits, bumps the version, updates CHANGELOG.md, publishes to PyPI, and creates a GitHub Release

A release only happens when commits contain a feat:, fix:, or breaking-change - chore:, docs:, ci: commits don't trigger one.

Docker image tags

Tag

When pushed

latest

Every merge to main

sha-<short>

Every merge to main

1.2.3 / 1.2

On a semantic-release version bump

Required GitHub secrets

Secret

Description

POL_GH_TOKEN

Personal access token with repo + write:packages scope

PYPI_TOKEN

PyPI API token for the agenthive-mcp project

Add both at: GitHub repo → Settings → Secrets and variables → Actions.

Commit conventions

feat: add new tool          → minor version bump (0.x.0)
fix: correct response shape → patch bump        (0.0.x)
feat!: breaking change      → major bump        (x.0.0)
chore/docs/ci/test          → no release

Security notes

  • The container runs as a non-root user (uid 10001).

  • AGENTHIVE_TOKEN is read from env vars only - never written to disk.

  • This process holds no state and makes no decisions of its own - every tool call is a pass-through to AgentHive's HTTP API using the caller's own token. It can do exactly what that token already lets it do over the API directly, nothing more.

  • Admin-only calls (the review gate, user management, auto-approve rules) are deliberately not exposed as tools - see Tool reference.

License

MIT — see LICENSE.

Available Tools

6 tools
create_agentA

Register an agent identity with the team, so logged sessions can be attributed to it (pass the returned id as log_session's agent_id) and so an admin can target it with an auto-approve rule. name is how it shows up in the review UI; description and system_prompt are optional context for reviewers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo
system_promptNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden. It reveals that the tool creates a persistent agent identity, returns an id, affects the review UI, and enables downstream attribution and approval rules. It does not mention idempotency, duplicate names, or permission requirements, but it covers the main behavioral consequences of the call.

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?

Two focused sentences with no filler. The first sentence front-loads the core purpose and the return-value usage, while the second efficiently covers parameter semantics. It is slightly dense but every clause earns its place.

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 no output schema, the description supplies the essential return-value behavior (returned id for log_session) and parameter meaning. It is complete enough for a simple 3-parameter create tool, though it does not discuss error cases, uniqueness, or authorization, which are not critical for basic invocation.

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 description coverage is 0%, so the description fully compensates. It explains that `name` is how the agent appears in the review UI and that `description` and `system_prompt` are optional reviewer context. All three parameters receive meaningful semantics beyond the raw schema.

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

Purpose4/5

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

The description states a specific verb and resource: 'Register an agent identity with the team,' and explains the downstream purposes (logged session attribution and admin auto-approve targeting). It is clearly distinguished from sibling list/retrieve tools by its create/register action, though it does not explicitly name or contrast those siblings.

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?

It gives clear context for when to call the tool: 'so logged sessions can be attributed to it' and 'so an admin can target it with an auto-approve rule.' It even instructs passing the returned id to log_session. However, it does not state explicit when-not-to-use conditions or name alternatives.

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

create_taskA

Register a task with the team, so logged sessions can be scoped to it (pass the returned id as log_session's task_id) - useful when several sessions across one piece of work should be filterable together later. name is how it shows up in the review UI; description is optional context.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It does reveal that the tool returns an id (implied by 'pass the returned id') and that name appears in the review UI, but it does not explicitly state that a persistent record is created, nor mention permission requirements, idempotency, or failure 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 three sentences with no filler. It front-loads the core purpose and integration with log_session, then efficiently covers parameter semantics. Each sentence contributes distinct 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?

For a two-parameter create tool with no output schema and no annotations, the description is nearly complete: it explains the return id, the intended workflow, and parameter meanings. It omits error conditions and duplicate behavior, but those are minor for such a simple 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?

With 0% schema description coverage, the description compensates well by clarifying that name is the label shown in the review UI and description is optional context. It adds meaning beyond the bare schema, though it does not specify format or length constraints.

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 opens with a specific verb and resource ('Register a task with the team') and immediately explains the tool's raison d'être: scoping logged sessions to a task via the returned id. This clearly distinguishes it from sibling tools like list_tasks and log_session.

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 gives an explicit condition for use ('useful when several sessions across one piece of work should be filterable together later') and names the integration point with log_session by passing the returned task_id. It does not explicitly state when not to use it, but the context is strong and unambiguous.

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

list_agentsA

List the agent identities already registered with this team, e.g. to find an existing agent's id instead of creating a duplicate with create_agent.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

Annotations are absent, so the description carries the burden. It implies a read-only operation by saying 'List' and mentions the purpose of finding an existing id, but it does not disclose details such as response format, ordering, or pagination. Given it's a simple list, this is adequate but not rich.

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 sentences, no filler, and the core action is stated first. The example adds value without unnecessary length.

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 no-parameter list tool with no output schema, the description explains the purpose and a concrete use case. It lacks explicit return format details, but the phrase 'find an existing agent's id' implies the response contains ids, which is likely sufficient 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.

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description doesn't need to elaborate on parameters, and it adds no parameter-specific details, but none are needed.

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 'List' and the resource 'agent identities already registered with this team', and it explicitly distinguishes from create_agent by mentioning the use case of avoiding duplicates. This is specific and not a tautology.

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 mentions the alternative create_agent and the condition for using this tool (to find an existing id instead of duplicating). This provides clear guidance on when to use it versus a sibling.

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

list_tasksA

List the tasks already registered with this team, e.g. to find an existing task's id instead of creating a duplicate with create_task.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden. It conveys a read-only nature through the verb 'List' and scopes the operation to the current team. However, it does not mention output format, pagination, or any limitations—minor for a simple listing but still a gap without 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?

A single sentence that front-loads the core action, then adds a practical example and sibling contrast. Every word earns its place; no filler or repetition.

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 zero-parameter, no-output-schema listing tool, the description covers the purpose, scope, and an important usage pattern. It could explicitly describe the return values, but the example ('find an existing task's id') implies the relevant output is included.

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 takes zero parameters, so the description need not explain any parameter details. Per the rubric, a zero-parameter tool receives a baseline of 4, and the description does not hurt this.

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 a specific verb and resource ('List the tasks already registered with this team') and explicitly distinguishes itself from create_task, which is a sibling. It leaves no ambiguity about what the tool does.

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 provides an explicit use case ('to find an existing task's id') and names the alternative (create_task) with the reason to prefer this tool ('instead of creating a duplicate'). This is a clear when/when-not guide.

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

log_sessionA

Log what happened this session as a memory node for the team to reuse. Call this once at the end of a session that learned something worth keeping - a root cause, a fix, a decision, a gotcha. The node starts PENDING and is invisible to retrieve_context until an admin approves it (or it matches an auto-approve rule) - this is a deliberate review gate, not a bug. title is a short, searchable summary (this is what future retrieve_context anchors match against); body is the actual content; tags and links are optional and help retrieval and review. agent_id/task_id are optional ids from create_agent/create_task - attaching them lets an admin auto-approve by agent (see create_auto_approve_rule, admin-only) and lets future retrieval be scoped to a task.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
tagsNo
linksNo
titleYes
task_idNo
agent_idNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It explicitly mentions that nodes start PENDING and are invisible to retrieve_context until admin approval, which is a deliberate review gate. It also explains how agent_id/task_id can trigger auto-approval. It doesn't mention error handling or idempotency, but the critical behavior is covered.

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 longer than necessary but every sentence provides value. It front-loads the purpose, then explains the approval mechanism, then parameter roles. The structure is logical and the length is justified given the tool's complexity.

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 is quite complete for a log tool with 6 parameters and an approval flow. It covers the PENDING state, auto-approve rules, and parameter purposes. It doesn't describe the return value, but for a logging action without an output schema, that is acceptable. Minor gaps like error scenarios or idempotency exist but are not critical.

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 description coverage is 0%, so the description must explain each parameter. It does so thoroughly: title as a searchable anchor, body as content, tags/links as retrieval aids, and agent_id/task_id for auto-approval and scoping. This fully compensates for the lack of schema descriptions.

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: 'Log what happened this session as a memory node for the team to reuse.' It specifies the verb (log), the resource (session memory node), and the intent (reuse). It also distinguishes from siblings by implying that retrieve_context is for retrieval, not storage.

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 gives explicit when-to-use guidance: 'Call this once at the end of a session that learned something worth keeping.' It also explains the approval gate and references related tools like retrieve_context and create_auto_approve_rule. However, it doesn't explicitly state 'use retrieve_context for retrieval' but the contrast is clear enough.

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

retrieve_contextA

Retrieve a bounded neighborhood of this team's reviewed, approved memory around a topic. Call this once at the start of a session, before starting work, so you inherit what teammates already learned instead of rediscovering it. anchor is the topic/title to search around (e.g. "Postgres connection pool exhaustion"); hops bounds how far the traversal spreads from it (default 2); hub_cutoff stops traversal through overly-connected "hub" nodes so one popular node doesn't pull in the whole graph. Returns a neighborhood list of memory nodes plus approx_tokens, what folding them into context would actually cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
hopsNo
anchorYes
hub_cutoffNo

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral burden. It explains the traversal-bounding behavior of hops and hub_cutoff, the limitation to reviewed/approved memory, and the exact return shape including approximate token cost. This gives an agent a clear model of what the tool does and what it returns.

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 efficiently front-loaded with the tool's purpose and timing, then progressively explains parameters and output. Every sentence contributes either operational guidance or parameter semantics, with no filler or redundant restatement of the tool name.

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 no output schema, the description adequately covers what the tool returns ('neighborhood' list and 'approx_tokens'), what inputs matter, and when to invoke it. For a moderate-complexity retrieval tool with three parameters, this is sufficient for an agent to call it correctly without additional context.

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 description coverage is 0%, so the description must define all parameters, and it does. It gives anchor a semantic definition with a concrete example, explains hops as traversal spread with its default, and clarifies hub_cutoff's role in preventing hub nodes from pulling in the whole graph. This adds substantial meaning beyond the bare 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 states a specific verb and resource: 'Retrieve a bounded neighborhood of this team's reviewed, approved memory around a topic.' It clearly distinguishes the tool from sibling tools, none of which perform memory retrieval, and gives a concrete example of the anchor topic.

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 explicitly says when to call it: 'Call this once at the start of a session, before starting work,' and explains the purpose ('so you inherit what teammates already learned instead of rediscovering it'). It also implies frequency by saying 'once,' which is direct usage guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedcreate_agent
    • First observedcreate_task
    • First observedlist_agents
    • First observedlist_tasks
    • First observedlog_session
    • First observedretrieve_context

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource and action: retrieve_context and log_session cleanly split reading vs. writing team memory, while create/list pairs keep agents and tasks separate. No two tools could reasonably be confused for the same job.

Naming Consistency5/5

All six tools use the same lower_snake_case verb_noun pattern: retrieve_context, log_session, create_agent, list_agents, create_task, list_tasks. The convention is predictable and immediately conveys both action and resource.

Tool Count5/5

Six tools is a well-scoped size for a team-memory server: two core memory operations plus create/list pairs for the two supporting registries. Every tool earns its place and none are redundant.

Completeness4/5

The core agent-facing workflow is covered: retrieve context before working and log session afterwards, with agent/task registration for attribution. Minor gaps remain—no update/delete for agent/task registries and no admin approval/auto-approve tools despite log_session referencing the review gate—but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes baby-gpt's tools (shell, filesystem, search, memory, GitHub integration, etc.) to Claude Desktop or Cursor, enabling natural language interaction with these capabilities.
    1
    -
  • A
    license
    A
    quality
    A
    maintenance
    Persistent memory layer for MCP-compatible AI agents. Implements save/recall/search over a local SQLite session store via 14 MCP tools. Auto-loads relevant context at session start. No cloud dependency. Works with Claude, Cursor, Codex, Hermes Agent. Free (50 sessions) / Pro ($8/mo).
    33
    62 PyPI
    10
    Business Source 1.1
  • F
    license
    Not graded
    quality
    A
    maintenance
    Centralized repository for modular, portable skills and memory, enabling AI agents and IDEs to access personalized tools and memory via stdio or SSE transport.
    1
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to securely discover, execute, and observe tools with role-based access control and audit logging. Serves tools over MCP stdio and HTTP for integration with Claude Desktop, Cursor, and other clients.
    1
    -