Skip to main content
Glama
YeomYuJun

Remote Memory MCP Server

by YeomYuJun

remote-memory-mcp-server

Remote Memory MCP Server

A GitHub-integrated remote memory management MCP server that syncs knowledge graph data with GitHub repositories for remote storage and collaboration.

Features

  • CRUD operations for entities, relations, and observations

  • Real-time synchronization with GitHub repositories

  • Conflict detection and resolution

  • Automatic/manual synchronization options

  • Search and filtering capabilities

  • Project-level memory isolation (v1.4.0)

    • Multiple projects, each with independent memory

    • Persistent active project (stored in GitHub memory/index.json)

    • Per-call project override without switching active project

  • Enhanced entity query features (v1.3.0)

    • Entity list retrieval (with filtering, sorting, pagination)

    • Quick entity name lookup

    • Entity type statistics

    • Date range filtering

  • Enhanced commit messages (customizable)

  • Backup functionality (per-project)

  • Commit history tracking

  • Optional auto-push (AUTO_PUSH environment variable)

  • Local mirror mode (v2): persist the active project's graph to a local JSONL file in anthropic-memory canonical format, so external tools (e.g. graph-view) can read and write it directly. Includes divergence guard for multi-PC safety.

Related MCP server: Knowledge Graph Memory Server

Installation

cd C:\YOUR_PATH\remote-memory-mcp
npm install
npm run build

Configuration

Required Parameters

  • GITHUB_TOKEN: GitHub Personal Access Token (requires repo permissions)

  • GITHUB_OWNER: GitHub repository owner

  • GITHUB_REPO: GitHub repository name

Optional Parameters

  • GITHUB_BRANCH: Branch name to use (default: main)

  • SYNC_INTERVAL: Auto-sync interval in seconds (0 for manual)

  • AUTO_PUSH: Auto-push after CRUD operations (true/false, default: false)

  • PROJECT_NAME: Active project on startup (default: from memory/index.json, fallback: "default")

  • LOCAL_MIRROR_PATH: Absolute path to a local JSONL mirror file (v2). When set, every mutation of the active project is mirrored to this file in anthropic-memory canonical format. External tools (e.g. graph-view) can read and write the same file. Unset = legacy behavior (in-memory + GitHub only).

Claude Desktop Setup

Add to your claude_desktop_config.json file:

{
  "mcpServers": {
    "remote-memory": {
      "command": "node",
      "args": ["C://YOUR_PATH//remote-memory-mcp//dist//index.js"],
      "env": {
        "GITHUB_TOKEN": "YOUR_GITHUB_TOKEN_HERE",
        "GITHUB_OWNER": "YOUR_GITHUB_USERNAME",
        "GITHUB_REPO": "YOUR_GITHUB_REPO",
        "GITHUB_BRANCH": "main",
        "SYNC_INTERVAL": "0",
        "AUTO_PUSH": "false",
        "PROJECT_NAME": "my-project"
      }
    }
  }
}

Usage

For detailed API usage and examples, see SPEC.md.

Project-level Memory (v1.4.0)

Each project stores memory independently in the GitHub repository:

memory/
├── index.json           ← project index + active project pointer
├── graph.json           ← "default" project (backward compatible)
├── blog/
│   └── graph.json       ← "blog" project
└── my-app/
    └── graph.json       ← "my-app" project

Quick Start

// 1. Create a project
create_project({ name: "blog", description: "Blog memory" })

// 2. Switch to it
switch_project({ project: "blog" })

// 3. Work normally — all tools now target "blog"
create_entities({ entities: [...] })

// 4. Access another project without switching
read_graph({ project: "my-app" })

Active Project Priority

PROJECT_NAME env var → memory/index.json"default"

Local Mirror Mode (v2)

Set LOCAL_MIRROR_PATH to enable mirroring the active project's graph to a local JSONL file in anthropic-memory canonical format. External tools (e.g. graph-view) can read and write the same file, giving the user a UI on top of a remote-memory backed graph without graph-view needing to know about GitHub.

Behavior

  • Bootstrap: if the mirror file exists and its sidecar (<mirror>.sync-state.json) names the current active project, remote-memory loads from the mirror (preferring the user's local edits over GitHub). Otherwise, GitHub is pulled and the mirror is seeded.

  • Before every tool call: mirror mtime is checked; if it changed (external writer), the in-memory graph is reloaded from the mirror.

  • After every mutation: the in-memory graph is atomically written back to the mirror (.tmp + rename). If the file was modified externally during the operation (race), the in-memory mutation is rolled back and an error is surfaced.

  • JSONL line format: anthropic memory MCP compatible — {"type":"entity"|"relation", ...} with optional createdAt/updatedAt extension fields. Unknown fields are silently dropped on read.

  • Per-call project override (e.g. read_graph({ project: "blog" })) does not touch the mirror — the mirror always represents the active project.

  • switch_project rewrites the mirror with the new active project's graph and updates the sidecar.

Divergence Guard (multi-PC safety)

When the same GitHub repo is shared across multiple machines, sync_pull / sync_push follow this policy (active project only):

State

sync_pull result

Only GitHub changed

normal pull, mirror updated (status: pulled)

Only local changed

pull skipped, suggest sync_push (status: local-only)

Both changed (divergence)

pull refused, choose with force_sync (status: diverged)

Neither changed

no-op (status: up-to-date)

sync_push applies the same baseline check — if GitHub advanced since the last sync, the push is refused (remote-ahead). force_sync is the escape hatch and bypasses both guards.

The baseline (last-pull SHA + graph digest + project name) is persisted to the sidecar file (<LOCAL_MIRROR_PATH>.sync-state.json) so it survives process restarts. The sidecar is owned by remote-memory; external tools must not modify it.

graph-view integration example

{
  "mcpServers": {
    "remote-memory": {
      "command": "node",
      "args": ["C:/YOUR_PATH/remote-memory-mcp/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_...",
        "GITHUB_OWNER": "...",
        "GITHUB_REPO": "...",
        "LOCAL_MIRROR_PATH": "D:/memory/memory.jsonl"
      }
    },
    "graph-view": {
      "command": "node",
      "args": ["D:/mcpapps/graph-view/dist/server.js"],
      "env": {
        "MEMORY_FILE_PATH": "D:/memory/memory.jsonl"
      }
    }
  }
}

graph-view auto-detects LOCAL_MIRROR_PATH (via env or mcpServers.remote-memory.env) and switches to mirror backend automatically.

Data Structure

Memory data is stored per project in the GitHub repository:

{
  "entities": {
    "Kim Kim": {
      "name": "Kim Kim",
      "entityType": "Person",
      "observations": ["Software developer", "Lives in Seoul"],
      "createdAt": "2025-01-01T00:00:00.000Z",
      "updatedAt": "2025-01-01T00:00:00.000Z"
    }
  },
  "relations": [
    {
      "from": "Kim Kim",
      "to": "Company ABC",
      "relationType": "works_at",
      "createdAt": "2025-01-01T00:00:00.000Z"
    }
  ],
  "metadata": {
    "version": "1.0.0",
    "lastModified": "2025-01-01T00:00:00.000Z",
    "lastSync": "2025-01-01T00:00:00.000Z"
  }
}

Architecture

Core Components

  1. GitHubClient: Handles GitHub API interactions

  2. MemoryGraphManager: Manages the in-memory knowledge graph

  3. SyncManager: Handles synchronization and project management

  4. RemoteMemoryMCPServer: Main MCP server class

Synchronization Strategy

  1. Conflict Resolution: Prioritizes based on latest modification timestamp

  2. Auto-push: Immediately pushes local changes to remote

  3. Auto-pull: Checks for remote changes at configured intervals

  4. Force Sync: Performs bidirectional sync ignoring conflicts

Important Notes

  • Requires GitHub Personal Access Token (with repo permissions)

  • GitHub API limits: 5,000 requests per hour for authenticated users

  • Network connection required

  • Project names: alphanumeric, hyphens, underscores only; "default" is reserved

License

MIT License - Free to use, modify, and distribute

Changelog

v1.4.0

  • Project-level memory isolation

    • list_projects: List all projects and active project

    • create_project: Create a new isolated project

    • switch_project: Switch active project (persisted to GitHub)

  • project parameter on all tools: Target any project per-call without switching

  • Per-project backup paths: backups/{project}/backup-*.json

  • Added PROJECT_NAME environment variable

  • Server version bumped to 1.4.0

v1.3.0

  • New query tools

    • list_entities: Retrieve entity list (with filtering, sorting, pagination)

    • get_entity_names: Quick entity name lookup

    • get_entity_types: Entity type statistics

  • Enhanced query capabilities

    • EntityType filtering

    • Date range filtering (based on createdAt)

    • Sort options (createdAt, updatedAt, name)

    • Pagination (limit, offset)

  • Improved handling of large datasets

v1.2.0

  • Prevented unnecessary auto-commits on initialization

  • Added AUTO_PUSH environment variable for optional auto-push

  • Added logic to prevent pushing empty graphs

  • Improved initial load state tracking

v1.1.0

  • Custom commit message support

  • Added backup system (create_backup)

  • Commit history tracking (get_commit_history)

  • Automatic commit message generation

v1.0.0

  • Initial release

Available Tools

17 tools
add_observationsC

기존 엔티티에 관찰 내용을 추가합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
observationsYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool adds observations, implying a mutation operation, but doesn't cover critical aspects like permissions needed, whether changes are reversible, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, efficient sentence in Korean that directly states the tool's action. It's front-loaded with the core purpose and has no unnecessary words. However, the brevity contributes to underspecification rather than optimal clarity, slightly reducing its effectiveness.

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

Completeness2/5

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

Given the tool's complexity (a mutation operation with nested array parameters), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't address behavioral traits, parameter meanings, or expected outcomes, making it inadequate for safe and effective use by an AI agent.

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

Parameters2/5

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

The description adds no parameter semantics beyond what the input schema provides. With 0% schema description coverage and 1 parameter (an array of objects with 'entityName' and 'contents'), the description doesn't explain what 'observations' are, how 'entityName' relates to existing entities, or the format/constraints of 'contents'. This leaves key parameter details undocumented.

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

Purpose3/5

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

The description states the tool's purpose as 'adds observations to existing entities' which is clear in terms of verb ('adds') and resource ('observations to existing entities'). However, it doesn't distinguish this from sibling tools like 'delete_observations' or 'create_entities' beyond the basic action. The description is functional but lacks specificity about what constitutes an observation or how this differs from related operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., entities must exist), exclusions, or comparisons to sibling tools like 'create_entities' or 'delete_observations'. Without this context, an agent might struggle to choose between this and other tools for managing observations or entities.

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

create_backupC

현재 메모리 상태의 백업을 생성합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
backupNameNo백업 이름 (선택사항)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While '생성합니다' (creates) implies a write operation, it doesn't specify whether this is destructive to existing backups, requires specific permissions, has rate limits, or what happens on failure. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps unaddressed.

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 a single, efficient sentence in Korean that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple backup creation tool and front-loads the essential information. Every word earns its place in conveying the core functionality.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the backup contains, where it's stored, whether it's incremental or full, what format it uses, or what happens on success/failure. Given the complexity of backup operations and lack of structured metadata, the description should provide more operational context.

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 input schema has 100% description coverage, with the single parameter 'backupName' documented as optional. The description adds no parameter-specific information beyond what the schema provides. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 clearly states the tool's purpose with a specific verb ('생성합니다' - creates) and resource ('현재 메모리 상태의 백업' - backup of current memory state). It distinguishes itself from siblings like 'force_sync' or 'sync_push' by focusing on backup creation rather than synchronization. However, it doesn't explicitly differentiate from potential backup-related siblings if they existed.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, timing considerations, or comparison with sibling tools like 'force_sync' or 'sync_push' that might handle data persistence differently. The agent receives no usage context beyond the basic purpose statement.

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

create_entitiesD

새로운 엔티티들을 생성합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
entitiesYes

TDQS

D1.8/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states that it creates entities, offering no information about permissions required, whether the operation is idempotent, what happens on failure, rate limits, or the response format. For a creation tool with zero annotation coverage, this leaves critical behavioral traits completely undocumented.

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 a single, straightforward sentence in Korean that directly states the tool's action. There's no unnecessary verbiage or structural complexity—it's maximally concise. However, this conciseness comes at the cost of completeness, as noted in other dimensions.

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

Completeness1/5

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

Given the tool's complexity (a creation operation with nested array parameters), lack of annotations, 0% schema description coverage, and no output schema, the description is severely incomplete. It doesn't address what the tool returns, error conditions, side effects, or how it integrates with the broader system (e.g., sibling tools). For a tool with these characteristics, the description provides inadequate context for effective use.

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

Parameters2/5

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

The input schema has 1 parameter ('entities') with 0% description coverage, meaning the schema provides no semantic information. The description adds no parameter details beyond implying creation of entities. It doesn't explain what 'entities' are, what 'name', 'entityType', or 'observations' represent, or provide examples. With low schema coverage, the description fails to compensate, leaving parameters largely meaningless.

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

Purpose2/5

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

The description '새로운 엔티티들을 생성합니다' (Creates new entities) is a tautology that essentially restates the tool name 'create_entities' in Korean. It doesn't specify what kind of entities, what system they're created in, or how they differ from similar operations in sibling tools like 'create_relations' or 'create_backup'. The purpose is stated but lacks differentiation and specificity.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, appropriate contexts, or comparisons to sibling tools such as 'add_observations' (which might add to existing entities) or 'create_relations' (which might create connections between entities). Without any usage context, an agent cannot make informed decisions about tool selection.

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

create_relationsC

엔티티 간의 관계를 생성합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
relationsYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool creates relationships (implying a write/mutation operation) but doesn't disclose any behavioral traits: no information about permissions needed, whether it's idempotent, error handling, side effects, or what happens on success/failure. This is inadequate for a mutation tool with zero annotation coverage.

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 a single, efficient sentence in Korean with zero wasted words. It's appropriately front-loaded with the core action ('creates'), though its brevity contributes to gaps in other dimensions.

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

Completeness2/5

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

For a mutation tool with 1 parameter (a complex array), 0% schema coverage, no annotations, and no output schema, the description is severely incomplete. It doesn't explain what the tool returns, error conditions, or practical usage context. The agent lacks sufficient information to use this tool correctly without trial and error.

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

Parameters2/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 compensate. It mentions 'relationships between entities' which loosely relates to the 'relations' array parameter, but adds no meaningful semantics: no explanation of what 'from', 'to', or 'relationType' represent, valid values, or examples. The description fails to bridge the gap left by the undocumented schema.

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

Purpose3/5

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

The description '엔티티 간의 관계를 생성합니다' (Creates relationships between entities) states a clear verb ('creates') and resource ('relationships between entities'), establishing basic purpose. However, it lacks specificity about what types of relationships or entities are involved, and doesn't distinguish this tool from sibling tools like 'delete_relations' beyond the obvious create/delete difference.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., entities must exist first), use cases, or comparisons to related tools like 'add_observations' or 'create_entities'. The agent must infer usage from the tool name alone.

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

delete_entitiesC

엔티티와 관련 관계를 삭제합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNamesYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool deletes entities and relationships, implying a destructive mutation, but lacks critical details: it does not specify if deletions are permanent, require specific permissions, have side effects (e.g., cascading deletions), or include rate limits. For a destructive tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, efficient sentence in Korean, making it concise and front-loaded with the core action. There is no unnecessary verbiage, and it directly states the tool's purpose without redundancy. However, it could be slightly improved by adding minimal context to enhance clarity.

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

Completeness2/5

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

Given the tool's complexity (destructive deletion), lack of annotations, no output schema, and 0% schema description coverage, the description is incomplete. It fails to address key aspects: parameter meaning, behavioral traits (e.g., permanence, permissions), and output expectations. For a mutation tool with significant gaps in structured data, the description should provide more comprehensive guidance.

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

Parameters2/5

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

The schema description coverage is 0%, meaning the parameter 'entityNames' is undocumented in the schema. The description does not add any semantic information about this parameter—it does not explain what 'entityNames' represents, its format, or examples. With one required parameter and no compensation in the description, this leaves users guessing about proper usage.

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

Purpose3/5

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

The description '엔티티와 관련 관계를 삭제합니다' (Deletes entities and related relationships) states a clear verb ('deletes') and resource ('entities and related relationships'), which is better than a tautology. However, it does not distinguish this tool from sibling tools like 'delete_observations' or 'delete_relations', leaving ambiguity about its specific scope compared to alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or compare it to sibling tools such as 'delete_observations' or 'delete_relations', which handle different deletion tasks. Without such context, users must infer usage from the tool name alone.

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

delete_observationsC

엔티티에서 특정 관찰 내용을 삭제합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
deletionsYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses the destructive nature ('삭제합니다' implies mutation/deletion), but lacks critical behavioral details: whether deletions are permanent or reversible, authentication requirements, error handling (e.g., if observations don't exist), or side effects. For a destructive tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, efficient sentence in Korean that directly states the action. It's front-loaded with the core purpose and has no wasted words. However, it could be more structured (e.g., by explicitly listing key parameters) to improve clarity without losing conciseness.

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

Completeness2/5

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

Given the tool's complexity (destructive operation with 1 parameter but nested arrays/objects), lack of annotations, no output schema, and 0% schema coverage, the description is incomplete. It fails to address critical aspects like return values, error conditions, or detailed parameter usage, leaving the agent with insufficient context for safe and effective invocation.

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

Parameters2/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 compensate. It mentions '엔티티에서' (from entities) and '관찰 내용' (observations), hinting at parameters related to entities and observations, but doesn't explain the structure (e.g., that 'deletions' is an array with 'entityName' and 'observations' fields) or provide examples. This adds minimal value beyond the bare schema.

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

Purpose3/5

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

The description states the action ('삭제합니다' - delete) and target ('관찰 내용' - observations) from entities, which provides a basic purpose. However, it's vague about what '관찰 내용' specifically means (e.g., notes, measurements, attributes) and doesn't differentiate from sibling tools like delete_entities or delete_relations, which handle different resource types.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing existing observations), exclusions, or comparisons to siblings like delete_entities (which might delete entire entities rather than just observations). The description only states what it does, not when it's appropriate.

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

delete_relationsC

특정 관계를 삭제합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
relationsYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the tool deletes relations but doesn't disclose critical traits like whether deletions are permanent, require specific permissions, have side effects (e.g., cascading deletions), or include confirmation steps. For a destructive operation, this is a significant gap.

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 a single, efficient sentence in Korean ('특정 관계를 삭제합니다'), which translates to 'Deletes specific relations'. It's front-loaded and wastes no words, though it could benefit from more detail given the tool's complexity.

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

Completeness2/5

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

For a destructive tool with no annotations, 0% schema description coverage, and no output schema, the description is inadequate. It doesn't cover behavioral risks, parameter meanings, or expected outcomes, leaving the agent with insufficient context to use the tool safely and effectively.

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

Parameters2/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 compensate but adds no parameter information. It doesn't explain what 'relations' represents, the structure of the array items, or the meaning of 'from', 'to', and 'relationType' fields. The description fails to provide semantic context beyond the schema's bare structure.

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

Purpose3/5

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

The description states the action ('삭제합니다' - deletes) and target ('특정 관계' - specific relations), providing a basic purpose. However, it lacks specificity about what 'relations' means in this context and doesn't differentiate from sibling tools like 'delete_entities' or 'delete_observations'. The purpose is clear but vague.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'delete_entities' or 'delete_observations'. The description doesn't mention prerequisites, exclusions, or contextual cues for selection. Usage is implied only by the tool name and basic action.

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

force_syncB

강제로 양방향 동기화를 수행합니다

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't mention side effects, permissions needed, rate limits, or what 'forcibly' entails (e.g., overwriting data, ignoring conflicts).

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 a single, efficient sentence with no wasted words. It's appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and a potentially complex operation (forced bidirectional sync), the description is incomplete. It lacks details on behavior, outcomes, or error conditions, leaving significant gaps for an AI agent.

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 0 parameters with 100% schema description coverage, so no parameter information is needed. The description doesn't add param details, but baseline is 4 for zero-param tools as it doesn't need to compensate for gaps.

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 clearly states the action ('강제로 양방향 동기화를 수행합니다' translates to 'Performs bidirectional synchronization forcibly') with a specific verb and resource. It distinguishes from siblings like sync_pull and sync_push by specifying bidirectional nature, though it doesn't explicitly contrast with them.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like sync_pull or sync_push. The description implies it's for forced synchronization but doesn't specify scenarios, prerequisites, or exclusions.

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

get_commit_historyC

최근 커밋 히스토리를 조회합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo조회할 커밋 수 (기본: 10)

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves recent commit history, implying a read-only operation, but lacks details on permissions, rate limits, pagination, or what 'recent' means (e.g., time-based vs. count-based). This leaves significant gaps for safe and effective use.

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 a single, efficient sentence in Korean that directly states the tool's purpose without any fluff or redundancy. It is appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/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 (retrieving commit history), lack of annotations, and no output schema, the description is incomplete. It fails to explain return values, error conditions, or behavioral nuances, leaving the agent with insufficient context for reliable 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 input schema has 1 parameter with 100% coverage (limit parameter is fully described in the schema). The description adds no additional parameter information beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.

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

Purpose3/5

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

The description '최근 커밋 히스토리를 조회합니다' (Retrieves recent commit history) clearly states the action (retrieve) and resource (commit history), but lacks specificity about scope or differentiation from potential siblings like 'read_graph' or 'search_nodes' that might also access repository data. It's not tautological but remains somewhat vague.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The sibling list includes tools like 'read_graph' and 'search_nodes' that might overlap in accessing repository data, but the description offers no context, prerequisites, or exclusions to help an agent choose appropriately.

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

get_entity_namesB

엔티티 이름 목록만 조회합니다 (가볍고 빠름)

ParametersJSON Schema
NameRequiredDescriptionDefault
entityTypeNo특정 엔티티 타입으로 필터링
sortByNo정렬 기준 (기본값: createdAt)
sortOrderNo정렬 순서 (기본값: desc)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions '가볍고 빠름' (lightweight and fast), which hints at performance characteristics, but doesn't disclose critical behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or what the return format looks like. For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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 extremely concise and front-loaded, consisting of a single sentence that efficiently conveys the core purpose and a key characteristic (lightweight and fast). Every word earns its place, with no wasted information, making it easy for an AI agent to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (3 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits, return values, and how it differs from siblings like list_entities. While concise, it doesn't provide enough context for an agent to fully understand when and how to use this tool effectively, especially without annotations or output schema to compensate.

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 description coverage is 100%, with all three parameters (entityType, sortBy, sortOrder) well-documented in the schema. The description doesn't add any parameter-specific semantics beyond what the schema provides, such as explaining the meaning of entityType values or default behaviors. According to the rules, with high schema coverage (>80%), the baseline is 3 even with no param info in the description.

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 clearly states the tool's purpose as '엔티티 이름 목록만 조회합니다' (retrieves only entity name lists) with the added context '가볍고 빠름' (lightweight and fast). It specifies the verb (조회/retrieve) and resource (entity names), distinguishing it from sibling tools like list_entities or get_entity_types. However, it doesn't explicitly differentiate from all siblings, such as search_nodes, which might also retrieve entity-related data.

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 guidelines by stating '가볍고 빠름' (lightweight and fast), suggesting this tool is optimized for quick retrieval of names only, as opposed to more detailed entity data. However, it doesn't explicitly state when to use this tool versus alternatives like list_entities or search_nodes, nor does it provide exclusions or prerequisites. The guidance is implied rather than explicit.

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

get_entity_typesB

모든 엔티티 타입과 각 타입별 개수를 조회합니다

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it indicates this is a read operation ('조회합니다'), it doesn't mention any constraints like permissions needed, rate limits, pagination, or what format the results will be in. For a tool with zero annotation coverage, this leaves significant behavioral gaps unexplained.

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 a single, clear sentence that efficiently conveys the core functionality. There's no wasted language, repetition, or unnecessary elaboration. It's appropriately sized for a simple, parameterless tool and gets straight to the point.

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

Completeness3/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, no output schema), the description adequately covers the basic purpose. However, without annotations or output schema, it should ideally provide more behavioral context (like result format or constraints). It's minimally viable but lacks depth that would help an agent use it effectively in complex scenarios.

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% (empty schema is fully described). With no parameters to document, the description appropriately focuses on the tool's purpose rather than parameter details. A baseline of 4 is appropriate since there are no parameters requiring semantic explanation.

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 clearly states the tool's purpose: '모든 엔티티 타입과 각 타입별 개수를 조회합니다' (Retrieves all entity types and the count for each type). It uses specific verbs ('조회합니다' - retrieves/checks) and identifies the resource ('엔티티 타입' - entity types). However, it doesn't explicitly differentiate from sibling tools like 'get_entity_names' or 'list_entities', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_entity_names', 'list_entities', and 'search_nodes' available, there's no indication of when this specific tool (retrieving types with counts) is appropriate versus those other listing/searching tools. The description only states what it does, not when to choose it.

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

list_entitiesC

엔티티 목록을 조회합니다 (필터링, 정렬, 페이지네이션 지원)

ParametersJSON Schema
NameRequiredDescriptionDefault
entityTypeNo특정 엔티티 타입으로 필터링
sortByNo정렬 기준 (기본값: createdAt)
sortOrderNo정렬 순서 (기본값: desc)
dateFromNo시작 날짜 (ISO 8601 형식)
dateToNo종료 날짜 (ISO 8601 형식)
limitNo페이지 크기 (기본값: 50)
offsetNo시작 위치 (기본값: 0)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions filtering, sorting, and pagination support, it doesn't address important behavioral aspects like whether this is a read-only operation (implied but not stated), what authentication is required, rate limits, error conditions, or the format/structure of returned data. For a tool with 7 parameters and no annotation coverage, this leaves significant gaps.

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 extremely concise - a single sentence in Korean that efficiently communicates the core functionality and key features. Every word earns its place, with no redundant information or unnecessary elaboration.

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

Completeness2/5

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

For a tool with 7 parameters, no annotations, and no output schema, the description is insufficiently complete. While concise, it doesn't address the tool's behavioral characteristics, output format, error handling, or how it differs from sibling tools. The agent would need to make assumptions about important operational aspects.

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 input schema has 100% description coverage, with all 7 parameters well-documented in the schema itself. The description adds minimal value beyond the schema by mentioning filtering, sorting, and pagination support, but doesn't provide additional semantic context about parameter interactions or usage patterns. This meets the baseline for high schema coverage.

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 clearly states the tool's purpose as 'retrieving a list of entities' (엔티티 목록을 조회합니다), which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_entity_names' or 'search_nodes' that might also retrieve entity-related information, preventing a perfect score.

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

Usage Guidelines2/5

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

The description mentions support for filtering, sorting, and pagination, which provides some implied context about when to use this tool. However, it offers no explicit guidance on when to choose this tool over alternatives like 'search_nodes' or 'get_entity_names', nor does it mention any prerequisites or exclusions for usage.

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

open_nodesD

특정 이름의 엔티티들을 조회합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYes

TDQS

D1.9/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but only states a retrieval action without details on permissions, rate limits, response format, or side effects. It fails to describe what 'open' entails (e.g., read-only, returns data) beyond the vague '조회합니다' (retrieves), making it inadequate for a tool with unknown behavior.

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 a single, efficient sentence in Korean with zero wasted words. It is appropriately sized and front-loaded, though its brevity contributes to under-specification rather than clarity.

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

Completeness1/5

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

Given the complexity of a retrieval tool with 1 parameter, 0% schema coverage, no annotations, no output schema, and multiple sibling tools, the description is severely incomplete. It lacks essential details on behavior, parameters, and differentiation, failing to provide enough context for effective tool use.

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

Parameters1/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 compensate but adds no meaning beyond the schema. It mentions '특정 이름' (specific names) which aligns with the 'names' parameter but provides no details on format, constraints, or examples, leaving the single required parameter undocumented in both schema and description.

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

Purpose2/5

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

The description '특정 이름의 엔티티들을 조회합니다' (Retrieves entities with specific names) states a general purpose but is vague about what 'entities' are and lacks differentiation from siblings like 'get_entity_names', 'list_entities', or 'search_nodes'. It restates the tool name 'open_nodes' only loosely, avoiding tautology but providing minimal specificity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'search_nodes' or 'list_entities'. The description implies usage for retrieving entities by name but does not specify contexts, exclusions, or prerequisites, leaving the agent to guess based on sibling tool names alone.

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

read_graphC

전체 지식 그래프를 읽습니다

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'reads' but doesn't clarify if this is a safe read operation, what permissions are needed, whether it's paginated or returns all data at once, or any rate limits. The description is too brief to provide meaningful behavioral context beyond the basic action.

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 a single, efficient sentence: '전체 지식 그래프를 읽습니다'. It's front-loaded with the core action and resource, with no wasted words. However, it could be slightly more informative without losing conciseness, such as by hinting at the output type.

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

Completeness2/5

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

Given the complexity of a knowledge graph tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'reads' returns—e.g., nodes, edges, metadata—or any behavioral traits. For a tool that likely handles structured data, more context is needed to guide the agent effectively.

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 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. A baseline of 4 is applied since no parameters exist, and the description doesn't introduce confusion about inputs.

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

Purpose3/5

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

The description '전체 지식 그래프를 읽습니다' (reads the entire knowledge graph) states a clear verb ('reads') and resource ('knowledge graph'), but it's vague about what 'reads' entails—whether it returns metadata, structure, or content. It doesn't distinguish from siblings like 'get_entity_names' or 'list_entities', which might overlap in purpose. This is a minimal viable description without specific differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Sibling tools include 'get_entity_names', 'list_entities', and 'search_nodes', which could serve similar purposes, but the description doesn't indicate when 'read_graph' is preferred or what context it fits into. This lack of guidance leaves the agent to guess based on tool names alone.

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

search_nodesD

엔티티를 검색합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

D1.5/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states it searches entities without explaining what the search returns, whether it's paginated, what search algorithm is used, whether it requires authentication, or any rate limits. This leaves critical behavioral aspects completely unspecified for a search operation.

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

Conciseness3/5

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

The description is extremely concise (just three Korean words), but this brevity comes at the cost of being under-specified rather than efficiently informative. While front-loaded in the sense that there's only one statement, it fails to provide the necessary information that would justify its place in a tool definition.

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

Completeness1/5

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

For a search tool with no annotations, no output schema, and 0% parameter documentation, the description is completely inadequate. It doesn't explain what entities are being searched, what the search returns, how results are structured, or any constraints. Given the complexity of search operations and the complete lack of structured documentation, this description fails to provide the necessary context.

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

Parameters1/5

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

With 0% schema description coverage for the single 'query' parameter, the description provides no additional semantic information about what the query parameter should contain, its format, syntax, or examples. The description doesn't mention the parameter at all, leaving the agent with no guidance on how to construct effective search queries.

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

Purpose2/5

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

The description '엔티티를 검색합니다' (searches entities) is a tautology that essentially restates the tool name 'search_nodes' without providing meaningful differentiation. While it identifies the action (search) and target (entities), it doesn't specify what kind of entities, what search criteria beyond the query parameter, or how this differs from sibling tools like 'list_entities' or 'get_entity_names'.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'list_entities', 'get_entity_names', and 'open_nodes' that might serve similar purposes, there's no indication of when this search tool is appropriate versus those listing tools, nor any prerequisites or constraints for its use.

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

sync_pullC

GitHub에서 데이터를 가져와 동기화합니다

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions fetching and synchronizing data but doesn't disclose behavioral traits such as whether this is a read-only or destructive operation, authentication requirements, rate limits, or what happens during synchronization. This is inadequate for a tool with no annotation coverage.

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 a single, efficient sentence in Korean ('GitHub에서 데이터를 가져와 동기화합니다'), which translates to 'Fetches data from GitHub and synchronizes it.' It's front-loaded and wastes no words, though it could be slightly more specific.

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

Completeness2/5

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

Given the complexity of a synchronization tool with no annotations and no output schema, the description is incomplete. It lacks details on what data is fetched, how synchronization works, error handling, or return values, making it insufficient for effective tool use.

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 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, earning a baseline score of 4 for this dimension.

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

Purpose3/5

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

The description states the tool 'fetches data from GitHub and synchronizes it', which provides a general purpose. However, it's vague about what specific data is fetched and what synchronization entails. It doesn't distinguish this tool from sibling tools like 'force_sync' or 'sync_push', which appear related to synchronization operations.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, timing, or differences from sibling tools like 'force_sync' or 'sync_push', leaving the agent with no usage context.

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

sync_pushC

로컬 데이터를 GitHub로 푸시합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
commitMessageNo커밋 메시지 (선택사항)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('push') but doesn't describe what 'push' entails (e.g., whether it creates commits, handles conflicts, requires authentication, or has side effects). For a mutation tool with zero annotation coverage, this leaves critical behavioral traits unspecified.

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 a single, efficient sentence in Korean that directly conveys the core action. It's front-loaded with the essential information and contains no unnecessary words or redundant phrasing.

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

Completeness2/5

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

For a mutation tool ('push') with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects (e.g., success/failure outcomes, error handling), prerequisites, or how it differs from siblings like 'force_sync'. The agent lacks sufficient context to use this tool reliably.

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 schema fully documents the single optional parameter 'commitMessage'. The description adds no parameter-specific information beyond what the schema provides (e.g., it doesn't explain when to provide a commit message or what happens if omitted). Baseline 3 is appropriate when the schema does the heavy lifting.

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 clearly states the action ('push') and resources ('local data to GitHub'), making the purpose immediately understandable. It distinguishes from siblings like 'sync_pull' (pull operation) and 'force_sync' (likely a different sync mechanism), though it doesn't explicitly contrast with them. The description avoids tautology by not just restating the tool name.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'force_sync' or 'create_backup'. It doesn't mention prerequisites (e.g., needing a GitHub repository setup) or typical use cases. The agent must infer usage from the tool name and context alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 17 tool updates
    • First observedadd_observations
    • First observedcreate_backup
    • First observedcreate_entities
    • First observedcreate_relations
    • First observeddelete_entities
    • First observeddelete_observations
    • First observeddelete_relations
    • First observedforce_sync
    • First observedget_commit_history
    • First observedget_entity_names
    • First observedget_entity_types
    • First observedlist_entities
    • First observedopen_nodes
    • First observedread_graph
    • First observedsearch_nodes
    • First observedsync_pull
    • First observedsync_push

TDQS

C2.9/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between list_entities, get_entity_names, open_nodes, and search_nodes, which all involve retrieving entity information and could cause confusion. However, their descriptions provide enough detail to differentiate them in most cases.

Naming Consistency5/5

The tool names follow a highly consistent verb_noun pattern throughout, such as add_observations, create_backup, and delete_entities. There are no deviations in naming conventions, making the set predictable and easy to understand.

Tool Count4/5

With 17 tools, the count is slightly high but reasonable for a memory/graph management server, covering operations like CRUD, synchronization, and queries. It might feel a bit heavy, but each tool appears to serve a specific function without obvious redundancy.

Completeness5/5

The tool set provides comprehensive coverage for managing a knowledge graph with entities, relations, and observations, including full CRUD operations, synchronization with GitHub, backup, and various query methods. There are no apparent gaps that would hinder agent workflows in this domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

  • F
    license
    C
    quality
    D
    maintenance
    Combines a knowledge graph with RAG (Retrieval-Augmented Generation) capabilities for semantic code indexing and search. Enables creating entity relationships, managing observations, and performing semantic searches across indexed codebases.
    13
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent memory for Claude by implementing a local knowledge graph to store and retrieve entities, relations, and observations. This enables long-term information retention and personalization across different chat sessions.
    73,646
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent long-term memory for AI coding agents by storing entities, relations, and observations across different sessions. It enables users to manage and query structured knowledge like coding preferences, project patterns, and technical solutions via a graph-based storage system.
    1
    -
  • A
    license
    B
    quality
    D
    maintenance
    Transforms a GitHub repository into a structured personal brain for AI to manage tasks, notes, and goals through markdown files. It enables direct interaction with a version-controlled knowledge base, allowing for automated organization and efficient retrieval of information.
    15
    13
    2
    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/YeomYuJun/remote-memory-mcp-server'

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