Skip to main content
Glama
agentience

Tribal Knowledge Service

by agentience

부족 - 지식 서비스

Tribal은 오류 지식 추적 및 검색을 위한 MCP(Model Context Protocol) 서버 구현입니다. Claude Code 및 Cline과 같은 도구와의 통합을 위해 REST API와 기본 MCP 인터페이스를 모두 제공합니다.

특징

  • 전체 컨텍스트를 사용하여 오류 레코드를 저장하고 검색합니다.

  • ChromaDB를 이용한 벡터 유사성 검색

  • REST API(FastAPI) 및 기본 MCP 인터페이스

  • API 키를 사용한 JWT 인증

  • 로컬 스토리지(ChromaDB) 및 AWS 통합

  • Docker-compose 배포

  • CLI 클라이언트 통합

Related MCP server: MemoCall

개요

Tribal은 Claude가 프로그래밍 오류를 기억하고 이를 통해 학습할 수 있도록 도와줍니다. Claude Code 세션을 시작하면 추가 가져오기 없이 MCP를 통해 Tribal을 자동으로 사용할 수 있습니다.

클로드는 다음을 할 것입니다:

  1. 스토어 프로그래밍 오류 및 솔루션

  2. 문제가 발생하면 유사한 오류를 검색하세요

  3. 귀하의 코딩 패턴에 맞는 지식 기반을 구축하세요

UV를 이용한 Tribal 패키징 및 설치

필수 조건

  • 파이썬 3.12+

  • uv 패키지 관리자(추천)

빌드 및 설치 단계

옵션 1: UV를 이용한 직접 설치

가장 간단한 방법은 현재 디렉토리에서 직접 설치하는 것입니다.

지엑스피1

옵션 2: 개발 설치

변경 사항을 즉시 반영하려는 개발 작업의 경우:

# From the project root directory
cd /path/to/tribal

# Install in development mode
uv pip install -e .

옵션 3: 먼저 패키지를 빌드하세요

배포 가능한 패키지를 빌드하려면 다음을 수행하세요.

# Make sure you're in the project root directory
cd /path/to/tribal

# Install the build package if needed
uv pip install build

# Build the package
python -m build

# This creates distribution files in the dist/ directory
# Now install the wheel file
uv pip install dist/tribal-0.1.0-py3-none-any.whl

옵션 4: uv tool install 명령 사용

도구 설치 방법을 사용할 수도 있습니다.

# Install as a global tool
cd /path/to/tribal
uv tool install .

# Or install in development mode
uv tool install -e .

확인

설치 후 도구가 제대로 설치되었는지 확인하세요.

# Check the installation
which tribal

# Check the version
tribal version

Claude와의 통합

설치 후 Claude와 통합할 수 있습니다.

# Add Tribal to Claude Code
claude mcp add tribal --launch "tribal"

# Verify the configuration
claude mcp list

# For Docker container
claude mcp add tribal http://localhost:5000

용법

사용 가능한 MCP 도구

Tribal은 다음과 같은 MCP 도구를 제공합니다.

  1. add_error - 새로운 오류 레코드 생성(POST /errors)

  2. get_error - UUID로 오류 검색(GET /errors/{id})

  3. update_error - 기존 오류 수정(PUT /errors/{id})

  4. delete_error - 오류 레코드 제거(DELETE /errors/{id})

  5. search_errors - 기준에 따라 오류 찾기(GET /errors)

  6. find_similar - 의미적 유사성 검색(GET /errors/similar)

  7. get_token - JWT 토큰 얻기(POST /token)

Claude를 사용한 예시 사용

클로드가 오류를 발견했을 때:

I'll track this error and look for similar problems in our knowledge base.

클로드가 해결책을 찾았을 때:

I've found a solution! I'll store this in our knowledge base for next time.

클로드에 대한 명령

Claude에게 다음을 요청할 수 있습니다.

  • "우리 부족 지식 기반에서 유사한 오류를 찾아보세요"

  • "이 솔루션을 오류 데이터베이스에 저장하세요"

  • "이 오류가 이전에 발생했는지 확인하세요"

서버 실행

부족 명령 사용

# Run the server
tribal

# Get help
tribal help

# Show version
tribal version

# Run with options
tribal server --port 5000 --auto-port

Python 모듈 사용

# Run the Tribal server
python -m mcp_server_tribal.mcp_app

# Run the FastAPI backend server
python -m mcp_server_tribal.app

레거시 진입점 사용

# Legacy MCP server
mcp-server

# Legacy FastAPI server
mcp-api

명령줄 옵션

# Development mode with auto-reload
mcp-api --reload
mcp-server --reload

# Custom port
mcp-api --port 8080
mcp-server --port 5000

# Auto port selection
mcp-api --auto-port
mcp-server --auto-port

FastAPI 서버는 http://localhost:8000 에서 사용할 수 있으며, API 문서는 /docs에서 확인할 수 있습니다. Claude 및 기타 MCP 호환 LLM의 경우 MCP 서버는 http://localhost:5000 에서 사용할 수 있습니다.

환경 변수

FastAPI 서버

  • PERSIST_DIRECTORY : ChromaDB 저장 경로(기본값: "./chroma_db")

  • API_KEY : 인증 키(기본값: "dev-api-key")

  • SECRET_KEY : JWT 서명 키(기본값: "insecure-dev-key-change-in-production")

  • REQUIRE_AUTH : 인증 요구 사항(기본값: "false")

  • PORT : 서버 포트(기본값: 8000)

MCP 서버

  • MCP_API_URL : FastAPI 서버 URL(기본값: " http://localhost:8000 ")

  • MCP_PORT : MCP 서버 포트(기본값: 5000)

  • MCP_HOST : 바인딩할 호스트(기본값: "0.0.0.0")

  • API_KEY : FastAPI 액세스 키(기본값: "dev-api-key")

  • AWS_ACCESS_KEY_ID , AWS_SECRET_ACCESS_KEY , AWS_S3_BUCKET : AWS 통합을 위한

API 엔드포인트

  • POST /errors : 새로운 오류 레코드를 생성합니다.

  • GET /errors/{error_id} : ID로 오류 가져오기

  • PUT /errors/{error_id} : 오류 레코드 업데이트

  • DELETE /errors/{error_id} : 오류 삭제

  • GET /errors : 기준으로 오류 검색

  • GET /errors/similar : 유사한 오류 찾기

  • POST /token : 인증 토큰 받기

클라이언트 사용

# Add a new error record
mcp-client --action add --error-type ImportError --language python --error-message "No module named 'requests'" --solution-description "Install requests" --solution-explanation "You need to install the requests package"

# Get an error by ID
mcp-client --action get --id <error-id>

# Search for errors
mcp-client --action search --error-type ImportError --language python

# Find similar errors
mcp-client --action similar --query "ModuleNotFoundError: No module named 'pandas'"

작동 원리

  1. Tribal은 ChromaDB를 사용하여 오류 레코드와 솔루션을 저장합니다.

  2. Claude가 오류를 발견하면 오류 세부 정보를 Tribal로 전송합니다.

  3. Tribal은 오류를 벡터화하고 유사한 오류를 검색합니다.

  4. Claude는 제안할 관련 솔루션을 다시 가져옵니다.

  5. 새로운 솔루션은 향후 참조를 위해 저장됩니다.

개발

테스트 실행

pytest
pytest tests/path_to_test.py::test_name  # For specific tests

린팅 및 유형 검사

ruff check .
mypy .
black .

GitHub 워크플로

이 프로젝트는 지속적인 통합 및 배포를 위해 GitHub Actions를 사용합니다. 워크플로는 메인 리퀘스트 및 풀 리퀘스트에 대한 푸시, 린팅, 유형 검사를 자동으로 실행합니다.

워크플로 단계

  1. 테스트 : 린팅, 유형 검사 및 단위 테스트를 실행합니다.

    • Python 3.12를 사용합니다

    • uv로 종속성을 설치합니다

    • ruff, black, mypy 및 pytest를 실행합니다.

  2. 빌드 및 게시 : 패키지를 빌드하고 PyPI에 게시합니다.

    • 메인 브랜치에 푸시할 때만 트리거됨

    • Python의 빌드 시스템을 사용합니다

    • twine을 사용하여 PyPI에 게시합니다.

로컬 테스트

제공된 스크립트를 사용하여 GitHub 워크플로를 로컬로 테스트할 수 있습니다.

# Make the script executable
chmod +x scripts/test-workflow.sh

# Run the workflow locally
./scripts/test-workflow.sh

이 스크립트는 로컬 머신에서 GitHub 워크플로 단계를 시뮬레이션합니다.

  • Python 버전 확인(3.12 권장)

  • uv를 사용하여 종속성을 설치합니다.

  • 러프와 함께 린팅을 실행합니다.

  • 검은색으로 서식을 확인합니다.

  • mypy로 유형 검사를 실행합니다.

  • pytest로 테스트를 실행합니다

  • 패키지를 빌드합니다

참고: 스크립트는 로컬 테스트를 위해 게시 단계를 건너뜁니다.

프로젝트 구조

tribal/
├── src/
│   ├── mcp_server_tribal/      # Core package
│   │   ├── api/                # FastAPI endpoints
│   │   ├── cli/                # Command-line interface
│   │   ├── models/             # Pydantic models
│   │   ├── services/           # Service layer
│   │   │   ├── aws/            # AWS integrations
│   │   │   └── chroma_storage.py # ChromaDB implementation
│   │   └── utils/              # Utility functions
│   └── examples/               # Example usage code
├── tests/                      # pytest test suite
├── docker-compose.yml          # Docker production setup
├── pyproject.toml              # Project configuration
├── VERSIONING.md               # Versioning strategy documentation
├── CHANGELOG.md                # Version history
├── .bumpversion.cfg            # Version bumping configuration
└── README.md                   # Project documentation

버전 관리

Tribal은 의미적 버전 관리(Semantic Versioning)를 따릅니다. 자세한 내용은 VERSIONING.md를 참조하세요.

  • 버전 번호(MAJOR.MINOR.PATCH)

  • 데이터베이스 호환성을 위한 스키마 버전 관리

  • 지점 명명 규칙

  • 릴리스 및 핫픽스 절차

다음 버전으로 확인하세요:

# Display version information
tribal version

종속성 관리

# Add a dependency
uv pip add <package-name>

# Add a development dependency
uv pip add <package-name>

# Update dependencies
uv pip sync requirements.txt requirements-dev.txt

전개

도커 배포

# Build and start containers
docker-compose up -d --build

# View logs
docker-compose logs -f

# Stop containers
docker-compose down

# With custom environment variables
API_PORT=8080 MCP_PORT=5000 REQUIRE_AUTH=true API_KEY=your-secret-key docker-start

데스크톱 통합을 위한 Claude

옵션 1: 데스크톱용 Claude가 서버를 시작하도록 합니다.

  1. ~/Library/Application Support/Claude/claude_desktop_config.json 엽니다.

  2. MCP 서버 구성을 추가합니다(Tribal 도구가 이미 설치되어 있다고 가정):

    {
      "mcpServers": [
        {
          "name": "tribal",
          "launchCommand": "tribal"
        }
      ]
    }
  3. 데스크톱용 Claude를 다시 시작하세요

옵션 2: 실행 중인 Docker 컨테이너에 연결

  1. 컨테이너를 시작합니다.

    cd /path/to/tribal
    docker-start
  2. 데스크톱에 Claude 구성:

    {
      "mcpServers": [
        {
          "name": "tribal",
          "url": "http://localhost:5000"
        }
      ]
    }

Claude Code CLI 통합

# For Docker container
claude mcp add tribal http://localhost:5000

# For directly launched server
claude mcp add tribal --launch "tribal"

# Test the connection
claude mcp list
claude mcp test tribal

문제 해결

  1. 부족 설치 확인: which tribal

  2. 구성 확인: claude mcp list

  3. 테스트 서버 상태: tribal status

  4. Claude 출력에서 오류 메시지를 찾으세요.

  5. 데이터베이스 디렉토리가 존재하고 적절한 권한이 있는지 확인하세요.

클라우드 배포

이 프로젝트에는 AWS 서비스에 대한 플레이스홀더 구현이 포함되어 있습니다.

  • S3Storage : Amazon S3에 오류 레코드를 저장하기 위한 저장소

  • DynamoDBStorage : DynamoDB를 데이터베이스로 사용하기 위한 것입니다.

특허

MIT 라이센스

Available Tools

6 tools
delete_errorB
Delete an error record.

Args:
    error_id: UUID of the error record

Returns:
    True if deleted, False if not found
ParametersJSON Schema
NameRequiredDescriptionDefault
error_idYes

TDQS

B3.1/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 ('Delete') and return values, but lacks critical details: it doesn't specify if deletion is permanent/reversible, mention authentication or permission requirements, indicate side effects (e.g., cascading deletions), or note rate limits. For a destructive tool, 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 well-structured and front-loaded with the core purpose. It uses three concise sentences (purpose, args, returns) with zero wasted words. Each sentence earns its place by adding distinct value: action, parameter meaning, and outcome.

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 no annotations and no output schema), the description is incomplete. It lacks context on safety (e.g., confirmation prompts, irreversible effects), error handling beyond 'not found', and integration with sibling tools. The return value explanation is minimal, but without an output schema, more detail on responses would be helpful.

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

Parameters4/5

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

The schema description coverage is 0%, so the description must compensate. It adds essential semantics: it clarifies that 'error_id' is a 'UUID of the error record', which is not in the schema (which only lists 'Error Id' as the title). This provides meaningful context beyond the schema, though it doesn't elaborate on UUID format or sourcing.

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 verb ('Delete') and resource ('an error record'), making the purpose unambiguous. It distinguishes itself from siblings like 'get_error_by_id' (read) and 'track_error' (create). However, it doesn't explicitly differentiate from potential destructive siblings beyond the verb, so it's not a perfect 5.

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 'search_errors' or 'find_similar_errors'. It doesn't mention prerequisites (e.g., needing the error_id from another operation) or warn against misuse. The only implied usage is when you have an error_id to delete, but this is basic and insufficient for a destructive operation.

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

find_similar_errorsC
Find errors similar to the given query.

Args:
    query: Text to search for in the knowledge base
    max_results: Maximum number of results to return

Returns:
    List of similar error records
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

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 mentions returning a list of similar error records but doesn't disclose behavioral traits such as how similarity is determined, whether it's read-only, performance characteristics, or error handling. This is a significant gap for a search 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.

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose. The Args and Returns sections are structured clearly, though the 'Returns' part could be more specific. Every sentence adds value, but it could be slightly more concise by integrating the sections more fluidly.

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 similarity search tool with no annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain what 'similar' means, the return format beyond 'List of similar error records', or how results are ordered, leaving gaps for the agent to infer behavior.

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 0%, so the schema provides no parameter descriptions. The description adds basic semantics for 'query' ('Text to search for in the knowledge base') and 'max_results' ('Maximum number of results to return'), which compensates partially but lacks details like format constraints or default behavior beyond the schema's default 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 states 'Find errors similar to the given query' which provides a clear verb ('Find') and resource ('errors'), but it's vague about what constitutes 'similar' and doesn't distinguish from sibling tools like 'search_errors'. It's not tautological but lacks specificity about the similarity mechanism.

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 'search_errors' or 'get_error_by_id'. The description implies usage for finding similar errors but doesn't specify contexts, prerequisites, or exclusions, leaving 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.

get_api_statusC
Check the API status.

Returns:
    API status information
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/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 states the tool 'Check[s] the API status' and 'Returns API status information', but doesn't disclose behavioral traits like whether it's read-only, requires authentication, has rate limits, or what specific information is included in the return. For a tool with zero annotation coverage, 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.

Conciseness3/5

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

The description is concise with two sentences, but it's not front-loaded effectively. The first sentence states the purpose, but the second ('Returns: API status information') is redundant and doesn't add value beyond what's implied. It could be more structured to emphasize key details.

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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'API status information' includes, how it's formatted, or any behavioral context. For a tool that might be critical for monitoring, this leaves too many gaps for effective agent 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, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter semantics, but this is appropriate given the lack of parameters, warranting a baseline score of 4.

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 'Check[s] the API status', which is a clear verb+resource combination. However, it doesn't differentiate this from sibling tools like 'track_error' or 'get_error_by_id' that might also provide status-related information, nor does it specify what aspects of API status are checked (health, uptime, version, etc.).

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 how it differs from sibling tools like 'track_error' or 'search_errors' that might overlap in monitoring contexts. This leaves 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.

get_error_by_idA
Get an error record by its ID.

Args:
    error_id: UUID of the error record

Returns:
    The error record or None if not found
ParametersJSON Schema
NameRequiredDescriptionDefault
error_idYes

TDQS

A3.6/5.0
Behavior3/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 an error record or returns None if not found, which clarifies the read-only nature and potential outcomes. However, it lacks details on permissions, rate limits, or error handling beyond the basic return behavior, leaving gaps 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.

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by structured sections for Args and Returns, making it highly efficient and easy to parse. Every sentence adds value without redundancy, adhering to best practices for conciseness.

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 low complexity (one parameter, no output schema, no annotations), the description is adequate but has clear gaps. It covers the basic operation and parameter semantics but lacks details on behavioral aspects like authentication or error scenarios. Without annotations or output schema, more context would improve completeness.

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

Parameters4/5

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

The schema description coverage is 0%, so the description must compensate. It adds meaningful context by specifying that 'error_id' is a UUID, which clarifies the parameter's format beyond the schema's generic string type. Since there's only one parameter, this is sufficient to elevate the score above the baseline.

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 ('Get') and resource ('an error record by its ID'), making it immediately understandable. It distinguishes this from siblings like 'search_errors' or 'find_similar_errors' by focusing on direct ID-based retrieval rather than search operations. However, it doesn't explicitly contrast with 'delete_error' or 'track_error', keeping it from 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 Guidelines3/5

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

The description implies usage when you have a specific error ID, as opposed to searching or finding similar errors, but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'delete_error' or 'track_error'. There's no mention of prerequisites or exclusions, leaving some ambiguity in context.

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

search_errorsC
Search for errors in the knowledge base.

Args:
    error_type: Type of error to filter by
    language: Programming language to filter by
    framework: Framework to filter by
    error_message: Error message to search for
    code_snippet: Code snippet to search for
    task_description: Task description to search for
    max_results: Maximum number of results to return

Returns:
    List of matching error records
ParametersJSON Schema
NameRequiredDescriptionDefault
error_typeNo
languageNo
frameworkNo
error_messageNo
code_snippetNo
task_descriptionNo
max_resultsNo

TDQS

C2.9/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 searches and returns a list, but lacks critical details: whether it's read-only, how results are ordered, if there's pagination, error handling, or performance characteristics. For a search tool with 7 parameters, 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.

Conciseness4/5

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

The description is well-structured with clear sections ('Args:', 'Returns:') and uses bullet points for parameters, making it easy to scan. It's appropriately sized for a tool with 7 parameters, though the parameter explanations are minimal. There's no wasted text, but it could be more front-loaded with key usage information.

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 (7 parameters, no annotations, no output schema), the description is incomplete. It covers the basic purpose and parameters but lacks behavioral details, usage guidelines, and output specifics. For a search tool in a knowledge base context, this leaves the agent with insufficient information to use it effectively without trial and error.

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

Parameters3/5

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

The description lists all 7 parameters with brief labels, but schema description coverage is 0%, so the schema provides no additional documentation. The description adds basic semantic context (e.g., 'error_type: Type of error to filter by'), which helps interpret parameters beyond their names. However, it doesn't explain formats, constraints, or interactions between parameters, leaving room for ambiguity.

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: 'Search for errors in the knowledge base.' This specifies the verb ('search') and resource ('errors in the knowledge base'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'find_similar_errors' or 'get_error_by_id', 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. It doesn't mention sibling tools like 'find_similar_errors' or 'get_error_by_id', nor does it specify contexts where this search tool is preferred. The agent must infer usage from the tool name alone, which is insufficient for optimal selection.

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

track_errorA
Track an error and its solution in the knowledge base.

Args:
    error_type: Type of error (e.g., ImportError, TypeError)
    error_message: The error message
    language: Programming language (e.g., python, javascript)
    framework: Framework used (e.g., fastapi, react)
    code_snippet: The code that caused the error
    task_description: What the user was trying to accomplish
    solution_description: Brief description of the solution
    solution_code_fix: Code that fixes the error
    solution_explanation: Detailed explanation of why the solution works
    solution_references: List of reference links

Returns:
    The created error record
ParametersJSON Schema
NameRequiredDescriptionDefault
error_typeYes
error_messageYes
languageYes
frameworkNo
code_snippetNo
task_descriptionNo
solution_descriptionNo
solution_code_fixNo
solution_explanationNo
solution_referencesNo

TDQS

A3.5/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. It states the tool creates a record ('track an error'), implying a write operation, but doesn't mention permissions needed, whether the operation is idempotent, rate limits, or what happens on failure. The return statement is minimal ('The created error record') without format details.

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

Conciseness4/5

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

The description is well-structured with clear sections (purpose, args, returns) and uses bullet-like formatting for parameters. Every sentence earns its place by explaining functionality or parameters. It could be slightly more concise in the parameter explanations but remains efficient overall.

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?

For a 10-parameter creation tool with no annotations and no output schema, the description provides good parameter documentation but lacks behavioral context. It explains what data to provide but not how the tool behaves operationally (e.g., error handling, authentication). The return value is mentioned but not described in detail.

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?

With 0% schema description coverage and 10 parameters, the description provides comprehensive parameter semantics beyond the schema. It clearly explains each parameter's purpose with examples (e.g., 'error_type: Type of error (e.g., ImportError, TypeError)'), adding significant value that compensates for the schema's lack of 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 with a specific verb ('track') and resource ('error and its solution in the knowledge base'). It distinguishes from sibling tools like 'delete_error', 'find_similar_errors', and 'search_errors' by focusing on creation rather than deletion, retrieval, or search 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 like 'search_errors' or 'find_similar_errors'. It mentions no prerequisites, exclusions, or specific contexts for usage, leaving the agent to infer when this creation tool is appropriate versus other operations.

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 updates
    • First observeddelete_error
    • First observedfind_similar_errors
    • First observedget_api_status
    • First observedget_error_by_id
    • First observedsearch_errors
    • First observedtrack_error

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have distinct purposes: track_error creates records, get_error_by_id retrieves single records, delete_error removes them, search_errors filters by multiple criteria, and find_similar_errors performs semantic similarity searches. However, search_errors and find_similar_errors could potentially be confused as both search for errors, though their approaches differ (filtering vs. similarity).

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case: delete_error, find_similar_errors, get_api_status, get_error_by_id, search_errors, and track_error. The naming is predictable and readable throughout the set.

Tool Count5/5

With 6 tools, this is well-scoped for a knowledge base service focused on error tracking. Each tool serves a clear purpose (CRUD operations, searching, and status checks), and none feel redundant or missing given the domain.

Completeness4/5

The toolset covers core CRUD operations (create via track_error, read via get_error_by_id, delete via delete_error) and searching (search_errors, find_similar_errors), with get_api_status for monitoring. A minor gap is the lack of an update tool to modify existing error records, which agents might need to work around by deleting and recreating.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers