Skip to main content
Glama
miyamamoto

JVLink MCP Server

by miyamamoto

JVLink MCP Server

Анализируйте данные о скачках свободно, просто общаясь с Claude.

Вам не нужно писать SQL. Задавайте вопросы на естественном японском языке, чтобы изучить любые данные о скачках: результаты прошлых забегов, статистику жокеев, тенденции родословных и многое другое.

Что можно спросить

«Каков процент побед у фаворитов под номером 1?»

Количество забегов

Количество побед

Процент побед

6,294

2,474

39.3%

«У кого из жокеев больше всего побед в этом году?»

Жокей

Количество заездов

Победы

Процент побед

Лемер

537

142

26.4%

Кейта Тодзаки

832

135

16.2%

Кохэй Мацуяма

863

125

14.5%

Рюсэй Сакаи

729

119

16.3%

Масаёси Кавада

542

118

21.8%

«У каких жеребцов-производителей больше всего побед среди потомства?»

Жеребец-производитель

Количество заездов

Победы

Kizuna

1,717

207

Lord Kanaloa

1,633

178

Drepon

1,382

150

Epiphaneia

1,488

138

Real Steel

1,106

125

Другие примеры вопросов

  • Что выгоднее на ипподроме Токио (трава, 1600 м): внутренний или внешний бокс?

  • Расскажи о скачках G1, где фаворит под номером 1 проиграл.

  • Каковы результаты потомства Deep Impact на траве?

  • Каковы результаты лошадей весом более 500 кг?

  • Найди лошадей, победивших с самым быстрым финишным отрезком (3F).


Related MCP server: mcp-f1analisys

Установка одной строкой

Интерактивный установщик выполнит всё за один раз: клонирование → разрешение зависимостей → поиск БД → настройка клиента.

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/miyamamoto/jvlink-mcp-server/master/install.sh | bash

Windows (PowerShell):

irm https://raw.githubusercontent.com/miyamamoto/jvlink-mcp-server/master/install.ps1 | iex

💡 Если файл keiba.db не найден, браузер автоматически откроет страницу контракта JRA-VAN DataLab. Также можно выбрать одновременную установку jrvltsql.


Ручная установка

Шаг 1: Создание базы данных скачек

Используйте jrvltsql для получения данных из JRA-VAN и создания keiba.db.

Требуется контракт с JRA-VAN DataLabhttps://jra-van.jp/dlb/

Если вам также нужны данные о местных скачках (NAR), используйте 地方競馬DATAhttps://www.keiba-data.com/

Шаг 2: Клонирование репозитория

git clone https://github.com/miyamamoto/jvlink-mcp-server.git
cd jvlink-mcp-server
pip install uv
uv sync

Шаг 3: Настройка MCP-клиента

Обратитесь к соответствующему разделу для вашего клиента.

💡 При первом запуске зависимые пакеты будут установлены автоматически (30–60 секунд).


Настройка по MCP-клиентам

Claude Desktop

Добавьте в claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "jvlink": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/jvlink-mcp-server", "python", "-m", "jvlink_mcp_server.server"],
      "env": {
        "DB_TYPE": "sqlite",
        "DB_PATH": "/path/to/keiba.db"
      }
    }
  }
}

Для Windows: измените command на "uv.exe". Также возможна автоматическая установка с использованием файла .mcpb из Releases.


Claude Code (CLI)

claude mcp add jvlink \
  -e DB_TYPE=sqlite \
  -e DB_PATH=/path/to/keiba.db \
  -- uv run --directory /path/to/jvlink-mcp-server python -m jvlink_mcp_server.server

Если вы хотите добавить его в область видимости проекта, добавьте -s project.


Cursor

Создайте .cursor/mcp.json в корне проекта:

{
  "mcpServers": {
    "jvlink": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/jvlink-mcp-server", "python", "-m", "jvlink_mcp_server.server"],
      "env": {
        "DB_TYPE": "sqlite",
        "DB_PATH": "/path/to/keiba.db"
      }
    }
  }
}

Убедитесь, что сервер распознан в Cursor Settings → MCP.


VS Code + GitHub Copilot

Создайте .vscode/mcp.json:

{
  "servers": {
    "jvlink": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/jvlink-mcp-server", "python", "-m", "jvlink_mcp_server.server"],
      "env": {
        "DB_TYPE": "sqlite",
        "DB_PATH": "/path/to/keiba.db"
      }
    }
  }
}

Включите "chat.mcp.enabled": true в настройках VS Code.


Windsurf

В Windsurf Settings → MCP выберите «Add custom server» и добавьте в ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "jvlink": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/jvlink-mcp-server", "python", "-m", "jvlink_mcp_server.server"],
      "env": {
        "DB_TYPE": "sqlite",
        "DB_PATH": "/path/to/keiba.db"
      }
    }
  }
}

Codex CLI (OpenAI)

# codex の設定ファイル (~/.codex/config.yaml) に追加するか、
# MCP_SERVERS 環境変数で指定
export MCP_SERVERS='[{"name":"jvlink","transport":{"type":"stdio","command":"uv","args":["run","--directory","/path/to/jvlink-mcp-server","python","-m","jvlink_mcp_server.server"],"env":{"DB_TYPE":"sqlite","DB_PATH":"/path/to/keiba.db"}}}]'

codex

Другие MCP-клиенты

Общий шаблон настроек для любого клиента:

Параметр

Значение

Команда

uv

Аргументы

run --directory /path/to/jvlink-mcp-server python -m jvlink_mcp_server.server

Переменные окружения

DB_TYPE=sqlite, DB_PATH=/path/to/keiba.db

Протокол

stdio


Настройка базы данных

SQLite (рекомендуется)

DB_TYPE=sqlite
DB_PATH=/path/to/keiba.db

DuckDB

DB_TYPE=duckdb
DB_PATH=/path/to/keiba.duckdb

PostgreSQL

Укажите через отдельные переменные окружения:

DB_TYPE=postgresql
DB_HOST=localhost
DB_PORT=5432
DB_NAME=keiba
DB_USER=postgres
DB_PASSWORD=your_password

Или через строку подключения:

DB_TYPE=postgresql
DB_CONNECTION_STRING=host=localhost;port=5432;database=keiba;username=postgres;password=your_password

Использование на Mac / Linux

Получение данных JRA-VAN (jrvltsql) предназначено только для Windows, но этот MCP-сервер будет работать, если перенести базу данных на Mac/Linux.

Способ 1: Копирование файла SQLite — просто скопируйте keiba.db через Dropbox, Google Drive и т.д.

Способ 2: Через PostgreSQL — jrvltsql поддерживает запись в PostgreSQL. Подключившись к PostgreSQL на Windows с Mac/Linux, вы сможете использовать актуальные данные в реальном времени.


Поддержка NAR (местные скачки)

Поддержка данных местных скачек включена в стандартный функционал (инструменты NAR: nar_favorite_performance, nar_jockey_stats, nar_horse_history). Можно анализировать данные основных ипподромов, таких как Ои, Фунабаси, Кавасаки, Урава, Нагоя, Сонода и др.

Для получения данных местных скачек требуется NV-Link.


Советы по использованию

Совет

Описание

Спрашивайте свободно

Просто задавайте вопросы так, как они приходят в голову

Добавляйте условия

Уточняйте детали: «в Токио», «на траве», «1600 м» для более глубокого анализа

Просите сравнить

Сервер отлично справляется с запросами типа «сравни А и Б» или «покажи динамику по годам»

Углубляйтесь

Если ответ вызвал интерес, задавайте уточняющие вопросы. Анализ можно углублять в процессе диалога

→ Больше примеров вопросов можно найти в Сборнике примеров


Устранение неполадок

Сервер не запускается

  1. Проверьте, установлен ли uv: uv --version

  2. Проверьте правильность пути: существует ли файл DB_PATH

  3. Переустановите зависимости: cd /path/to/jvlink-mcp-server && uv sync

Данные не извлекаются

  1. Проверьте, правильно ли создан keiba.db

  2. Проверьте наличие таблиц: sqlite3 keiba.db ".tables"

  3. Проверьте логи MCP-клиента

Ошибка подключения к PostgreSQL

  1. Проверьте, запущен ли PostgreSQL

  2. Проверьте, открыт ли порт в брандмауэре

  3. Проверьте формат DB_CONNECTION_STRING (разделитель — точка с запятой)


Об использовании данных JRA-VAN

Данные, анализируемые с помощью этого ПО, предоставлены JRA-VAN.

Запрещено: перераспределение данных, предоставление третьим лицам, совместное использование файлов базы данных.

Разрешено: личный анализ и исследования скачек, использование внутри компании.

Подробности см. в Условиях использования JRA-VAN.

История обновлений

v0.5.0 (2026-04-18)

  • Безопасность: добавлена валидация (validate_identifier()) для предотвращения SQL-инъекций в именах таблиц и столбцов.

  • Безопасность: улучшено использование параметризованных запросов в get_table_schema() для PostgreSQL.

  • Исправление ошибок: исправлены условия фильтра NL_SE в sample_data_provider.py (KakuteiJyuni > 0, поддержка типа INTEGER).

  • Исправление ошибок: удалены дублирующиеся ключи GRADE_CODES в high_level_api.py.

  • Исправление ошибок: ненужные преобразования типов в _horse_history_impl унифицированы через pd.to_numeric.

  • Переименование инструмента: MCP-инструмент generate_sql_from_natural_languageget_sql_generation_prompt.

  • Поддержка NAR (местных скачек) интегрирована в ветку master (отдельная ветка больше не нужна).

  • CI/CD: добавлены автоматическое тестирование для каждого PR (ci.yml) и синхронизация схемы jrvltsql с автоматическим релизом (sync-parent.yml).

Лицензия

  • Коммерческое использование: пожалуйста, свяжитесь с нами заранее → oracle.datascientist@gmail.com

  • Некоммерческое использование: Apache License 2.0

Available Tools

22 tools
check_updateA

サーバーの最新バージョンを確認する。アップデートがあるか確認します。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It states the tool checks version and update existence, implying a read-only operation. However, it does not disclose output format or potential side effects, though for a simple check, the behavior is fairly transparent.

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

Conciseness5/5

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

The description is two short sentences with no unnecessary words. It is front-loaded and efficient, earning its place.

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

Completeness4/5

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

For a simple parameterless tool, the description is mostly complete, but it lacks details on the output (e.g., whether it returns a version string, boolean, etc.). No output schema exists to compensate, so slightly incomplete.

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 the input schema is empty. The description does not need to add parameter info. Baseline 4 is appropriate as the description adds no extra meaning beyond schema coverage (100%).

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 checks the server's latest version and whether an update exists. It uses specific verbs ('確認する') and resources ('バージョン', 'アップデート'), and distinguishes itself from the sibling 'update_server' which would perform the update.

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 the tool is for checking updates, not performing them, but does not explicitly state when to use it versus alternatives like 'update_server'. No exclusion criteria or context are given.

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

execute_template_queryC

テンプレートからSQLを生成して実行

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
template_nameYes

TDQS

C2.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'generate and execute', implying potential write operations, but no warnings about destructive effects, authentication needs, or side effects are given.

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 a single short sentence, which is concise, but it sacrifices informative value. It provides no structure or additional detail, making it minimally adequate.

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 (executing SQL), the description is severely incomplete. It lacks parameter details, output specification, and behavioral context, leaving significant gaps for safe and correct invocation.

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?

The input schema has 0% description coverage, and the description adds no meaning to the parameters. 'template_name' and 'params' are unexplained, leaving the agent to guess their format or role.

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 generates and executes SQL from a template, but it does not clarify what 'template' means or how it relates to sibling tools like get_sql_generation_prompt or validate_sql_query. The purpose is vaguely clear but lacks 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. It does not mention prerequisites, context, or exclusions, leaving the agent to infer usage from the name and siblings.

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

favorite_performanceC

指定した人気順位の馬の成績を分析

1番人気、2番人気など、人気順位別の勝率・複勝率を調べられます。 競馬場やグレード、距離でフィルタリングも可能です。

ParametersJSON Schema
NameRequiredDescriptionDefault
gradeNo
ninkiNo
venueNo
distanceNo
year_fromNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, and the description only mentions performance analysis and filtering. It does not disclose output format, data scope, or behavior of filters (e.g., exact match vs. range).

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?

Short and front-loaded with the main purpose, but lacks detail. Every sentence is necessary but not sufficient for full understanding.

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 no annotations, no output schema, and 5 parameters with zero schema coverage, the description is incomplete. Agent cannot determine how to set filter parameters or interpret results.

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 coverage is 0%, and the description does not explain individual parameters. For example, 'ninki' (popularity rank) and 'year_from' are not described; only generic filtering terms are used.

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 it analyzes horse performance by popularity rank, with filtering options. However, it does not explicitly differentiate from sibling tools like nar_favorite_performance, though naming suggests context.

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 on when to use this tool vs. alternatives, nor when not to use it. Sibling tools exist (e.g., nar_favorite_performance) but no differentiation is provided.

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

frame_statsB

枠番(1〜8枠)別の成績を分析

内枠・外枠の有利不利を調べられます。 競馬場や距離でフィルタリングすると、コース特性が見えます。

ParametersJSON Schema
NameRequiredDescriptionDefault
venueNo
distanceNo
year_fromNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits beyond stating it analyzes and filters. It does not mention if it is read-only, required permissions, rate limits, or output format, leaving 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.

Conciseness4/5

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

The description is concise with two short sentences. It front-loads the core purpose in the first sentence. While structured, it could include more details without being verbose.

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 tool with 3 optional parameters and no output schema or annotations, the description provides adequate context for basic usage but lacks details on output format, parameter combinations, and edge cases.

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%. The description mentions venue and distance in context of filtering, but does not explain the year_from parameter. It adds minimal meaning beyond the schema names and types.

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 it analyzes results by frame number (1-8) and examines inner/outer frame advantages. It is specific about the resource (frame stats) but does not explicitly differentiate from sibling tools like jockey_stats or horse_history.

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

Usage Guidelines3/5

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

The description implies usage for investigating course characteristics by filtering venue and distance, but it lacks explicit guidance on when not to use this tool or mention of alternative tools. No exclusions or conditions provided.

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

get_column_examplesB

特定カラムの値の例を取得(データ形式理解用)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
table_nameYes
column_nameYes

TDQS

B3.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 responsibility. It only states 'get examples' without disclosing behavioral traits like the effect of the limit parameter, ordering of results, required permissions, or the response format. This is insufficient for a data retrieval tool.

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

Conciseness5/5

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

The description is a single sentence with no redundancy. Every word contributes meaning, making it appropriately sized and front-loaded.

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 (3 parameters, no output schema), the description covers the basic purpose but omits important details like the limit parameter's role and the return format. It is missing nuanced context that would fully guide an 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 input schema has 3 parameters with titles but no descriptions (0% coverage). The description does not elaborate on any parameter, adding no semantic value beyond the schema. While parameter names are self-explanatory, the description fails to compensate for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states it retrieves examples of column values for understanding data format. The verb 'get' and resource 'column value examples' are specific. It distinguishes from sibling tools like get_table_sample_data which retrieve multiple rows/columns.

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 includes a use case ('for understanding data format') but does not provide explicit guidance on when to use this tool versus alternatives such as get_table_sample_data or get_database_schema. No exclusions or when-not-to-use criteria are mentioned.

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

get_database_overviewB

データベース全体の概要を取得

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description only states the tool retrieves an overview. It lacks details on the output format, data structure, or any side effects, which is insufficient for a tool with no other documentation.

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, concise sentence that front-loads the core purpose. However, the brevity leaves no room for additional useful context; it is not overly verbose but could be more informative.

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 no output schema and no annotations, the description is too minimal. It does not explain what the overview contains (e.g., database size, table counts, status), leaving the agent uncertain about the return value.

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?

There are no parameters, so the description cannot add parameter-level meaning. The baseline for zero parameters is high, and no additional information is needed.

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

Purpose5/5

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

The description 'Get overview of entire database' uses a specific verb and resource, and effectively distinguishes from sibling tools like get_database_schema or list_tables by indicating a high-level summary.

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 on when to use this tool versus alternatives such as get_database_schema or get_table_info. The description implies a broad use case but does not specify exclusions or contexts.

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

get_database_schemaB

データベーススキーマ情報を取得

Returns:
    テーブル一覧、カラム情報、との対応表
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the tool returns table list, column info, and correspondence, but misses other traits like read-only behavior, performance considerations, or authentication requirements.

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 very concise with two short sentences, front-loading the purpose. It could benefit from a structured format but avoids unnecessary fluff.

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

Completeness4/5

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

For a parameterless tool with no output schema, the description adequately explains return values. It provides sufficient context for an agent to understand the tool's output.

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 input schema has zero parameters (100% coverage), so the description cannot add parameter-level meaning. Baseline of 4 applies as parameters are absent.

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 retrieves database schema information, including table list, column details, and a correspondence table. It distinguishes itself from siblings like 'get_table_info' or 'list_tables' by implying a broader scope, but does not explicitly differentiate.

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 on when to use this tool versus alternatives or any prerequisites. The description lacks context for its preferred use case or exclusions.

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

get_feature_by_categoryC

カテゴリ別に特徴量を取得

Args:
    category: カテゴリ名(過去成績、適性、人的要因、血統など)

Returns:
    該当カテゴリの特徴量リスト
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are present, and the description only implies a read operation ('get') without confirming safety, auth requirements, or disclosing any behavioral traits. The agent must infer behavior from the tool name alone.

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, using a single line for purpose and structured parameter/return sections. No superfluous text—every word is necessary.

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 simple tool with one parameter and no output schema, the description covers the essential information. However, it lacks context about edge cases, limitations, or how the returned list is ordered, which could be important for practical use.

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 has 0% description coverage, but the description lists example category values ('past performance, aptitude, human factors, pedigree') which adds meaningful context beyond the schema's generic string type. However, it does not enumerate all allowed values or specify format.

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 gets features by category, specifying a parameter and return type. However, it does not distinguish from sibling tools like 'get_important_features' or 'search_features', leaving ambiguity about when to use this specific tool.

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, nor any conditions or exclusions. The agent receives no help in choosing among feature-related tools.

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

get_important_featuresB

競馬予測で重要な特徴量の知見を提供

Returns:
    重要特徴量のリスト、説明、での活用方法
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

The description lacks behavioral details such as whether the tool accesses a database, caches results, or has any side effects. With no annotations, 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 concise with two sentences, but it could be more informative. It front-loads the purpose but lacks detail.

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 no output schema, the description should provide more details about the returned list and how to use them. It mentions 'list, explanation, how to use' but lacks specifics.

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?

There are no parameters, so the schema coverage is 100%. The description adds minimal context about the return value, which is adequate for a zero-parameter tool.

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 that the tool provides insights on important features for horse racing prediction. However, it does not differentiate from sibling tools like 'get_feature_by_category', which might serve a similar purpose.

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 usage guidelines are provided. The description does not specify when to use this tool over alternatives, nor does it mention any prerequisites or context.

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

get_query_examplesA

クエリ例集を取得

Returns:
    よく使うクエリのサンプル集
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, but the description indicates a read-only operation returning samples. No behavioral traits beyond basic function are disclosed; however, given simplicity, a score of 3 is adequate.

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 with no unnecessary words. It efficiently conveys purpose and return value in two short sentences.

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

Completeness4/5

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

For a zero-parameter tool returning a static collection, the description is complete. It could mention format or examples of returned queries, but not essential.

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?

No parameters exist, so schema coverage is 100%. The description does not need to add parameter details, meeting the baseline of 4.

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 it gets query examples (クエリ例集を取得). The resource is distinct from sibling tools like get_column_examples or get_database_schema, so purpose is clear.

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 on when to use this tool versus alternatives (e.g., get_column_examples or list_query_templates). It only states what it does without context.

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

get_sql_generation_promptA

自然言語クエリをSQLに変換するためのLLMプロンプトを生成

このツールはSQLを直接実行しません。LLMにSQLを生成させるためのプロンプトを返します。
生成されたSQLは keiba_data_search ツールで実行してください。

Args:
    query_text: 自然言語のクエリ
        例: "過去3年で東京競馬場の芝1600mで1番人気だった馬の成績を教えて"
        例: "ディープインパクト産駒の距離別成績を集計して"

Returns:
    LLM用プロンプトとスキーマ情報
ParametersJSON Schema
NameRequiredDescriptionDefault
query_textYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states the tool returns a prompt and schema info, but does not disclose behavioral details like rate limits, authentication requirements, or error handling. It provides minimal transparency beyond the basic function.

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 in Japanese and English, and front-loads the core purpose and usage. It is slightly verbose with examples but the examples are useful. Every sentence adds value.

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

Completeness4/5

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

Given only one parameter, no output schema, and no annotations, the description covers the essential aspects: what it does, what it returns, and how to use the result. It lacks detail about the exact return format but is sufficient for a tool that generates prompts for LLM consumption.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates by explaining the 'query_text' parameter with natural language examples. The description adds meaning beyond the bare schema type definition, helping the agent understand the format and scope of input.

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 generates LLM prompts for converting natural language to SQL, and explicitly distinguishes itself from direct SQL execution tools like keiba_data_search, which is listed as a sibling. The verb 'generate' and resource 'LLM prompt for SQL' are specific and unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'このツールはSQLを直接実行しません' (this tool does not execute SQL) and '生成されたSQLは keiba_data_search ツールで実行してください' (execute the generated SQL using keiba_data_search). This tells the agent when to use this tool and what alternative to use for execution.

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

get_table_infoB

指定テーブルのスキーマ情報を取得(詳細説明付き)

Args:
    table_name: テーブル名

Returns:
    カラム情報、テーブル説明、クエリヒントを含む辞書
ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. It only states it retrieves schema info without disclosing side effects, read-only nature, or limitations.

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?

Description is very short and includes Args/Returns in a structured format. No unnecessary sentences.

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?

Adequate for a simple tool with one parameter, but lacks details on return format, error cases, and examples. No output schema to supplement.

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 coverage is 0%, but description only restates 'table_name: テーブル名' (table name). No format, examples, or constraints added beyond the schema.

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

Purpose5/5

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

Description clearly states 'Get schema information for specified table' with a specific verb and resource. It distinguishes from sibling tools like get_database_schema or list_tables.

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 on when to use this tool vs alternatives. No mention of context or prerequisites.

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

get_table_sample_dataB

テーブルのサンプルデータを取得(データ形式理解用)

ParametersJSON Schema
NameRequiredDescriptionDefault
num_rowsNo
table_nameYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description only mentions the purpose without disclosing behavioral traits such as speed, limits on num_rows, or that it is read-only. The description adds minimal behavioral context.

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 sentence, concise and front-loaded with purpose. However, it lacks detail that could be added without harming 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?

The description covers the basic purpose but does not mention that it returns sample rows, the default number of rows (5), or any constraints. For a simple tool with 2 parameters and no output schema, the description is minimally adequate but not complete.

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%, and the tool description does not explain the parameters 'table_name' or 'num_rows' beyond their names. The description adds no additional meaning to the schema.

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

Purpose5/5

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

The description clearly states 'Get sample data of table' with a specific purpose 'for understanding data format'. This distinguishes it from sibling tools like 'get_table_info' or 'get_database_schema'.

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

Usage Guidelines3/5

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

The description implies usage for understanding data format but provides no explicit guidance on when to use this tool versus alternatives or when not to use it.

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

horse_historyC

特定の馬の過去レース戦績を取得

馬名を指定して、過去の出走履歴・着順・タイムなどを一覧できます。

ParametersJSON Schema
NameRequiredDescriptionDefault
year_fromNo
horse_nameYes

TDQS

C2.6/5.0
Behavior2/5

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

Without annotations, the description only minimally indicates this is a read operation fetching race history. It does not elaborate on potential error conditions, data freshness, or limits.

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 short and to the point, with two sentences that convey the core purpose efficiently.

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 has 2 parameters and no output schema, the description does not adequately explain the optional parameter or the output format, leaving an agent uncertain about correct usage.

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?

The description only mentions specifying the horse name, but fails to explain the optional 'year_from' parameter or any details about how parameters affect results. With 0% schema coverage, this is a significant gap.

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 retrieves past race results for a specific horse by name, listing history, finishing order, and time. However, it does not differentiate from the sibling tool 'nar_horse_history'.

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, nor any prerequisites or context for usage.

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

jockey_statsC

騎手の成績を分析

騎手名を指定して、勝率・複勝率・騎乗数などを調べられます。 競馬場や距離でのフィルタリングも可能です。

ParametersJSON Schema
NameRequiredDescriptionDefault
venueNo
distanceNo
year_fromNo
jockey_nameYes

TDQS

C2.9/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. It does not mention if the operation is read-only, any authentication needs, rate limits, or data freshness. As a stats tool, safety is implied but not disclosed, and behavioral traits beyond basic stats are absent.

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

Conciseness4/5

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

Two sentences, no fluff. Clearly states purpose in first sentence and filtering in second. Appropriate length, though could front-load the key verb 'analyze' more explicitly.

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?

No output schema exists, yet description does not explain return format (e.g., table, single summary). Missing details on error handling (jockey not found), result structure, or what 'stats' specifically are provided beyond win/place rate. Incomplete for a stats tool.

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

Parameters3/5

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

Schema description coverage is 0%, so description must add meaning. It clarifies that 'venue' means racecourse and 'distance' is for filtering, but does not specify formats, units, or allowed values for any parameter. Partial compensation but not comprehensive.

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

Purpose4/5

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

The description states the tool analyzes jockey stats including win rate, place rate, and rides, and mentions filtering. It clearly identifies the resource (jockey stats) and the action (analyze). However, it does not explicitly differentiate from sibling tools like 'nar_jockey_stats' for NAR jockeys, relying on the naming convention.

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 on when to use this tool vs. alternatives. Sibling tools like horse_history or frame_stats exist but no comparisons or conditions are provided. The description only states basic functionality without usage context.

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

list_query_templatesB

利用可能なクエリテンプレート一覧を取得

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?

With no annotations, the description carries full burden but only states it 'gets a list'. It does not disclose whether the operation has side effects, requires permissions, or any other behavioral traits 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.

Conciseness5/5

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

The description is a single concise sentence that directly conveys the purpose with no extraneous words. It is front-loaded and efficient.

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 simple no-parameter tool, the description is minimally adequate. However, it does not describe the return data structure or explain what query templates are, which could leave the agent uncertain about the tool's output.

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?

There are no parameters, and schema coverage is 100%. The description does not need to add parameter details, but it could clarify what a 'query template' is. Baseline for 0 parameters is 4.

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 indicates the tool retrieves a list of available query templates, which is a specific verb+resource combination. However, it does not explicitly distinguish itself from sibling tools like 'get_query_examples' or 'get_database_overview', though the resource 'query templates' appears unique.

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 or any prerequisites. The description lacks any context about its ideal usage scenario.

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

list_tablesB

データベース内のテーブル一覧を取得

Returns:
    テーブル名のリスト
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the return value (list of table names) but does not mention any behavioral traits like read-only, error conditions, or required permissions.

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 very concise (two lines) and front-loaded with purpose. However, it could be slightly more structured with clear sections; the current format is acceptable given the tool's simplicity.

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 has no parameters and an output schema exists (not shown), the description provides minimal return information. It lacks context about permissions, error handling, or edge cases, which is adequate for a simple list but not fully complete alongside many sibling tools.

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 input schema has no parameters, so schema coverage is complete by default. The description adds meaning by specifying the return value (list of table names), which is not in the schema. This is useful for an agent.

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 retrieves a list of tables from the database, which is a specific verb+resource. It distinguishes from sibling tools like get_table_info and get_database_schema that focus on details or overview.

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 get_database_overview or get_table_info. The description lacks exclusions or context for selection.

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

search_featuresB

キーワードで特徴量を検索

Args:
    keyword: 検索キーワード(例: "人気", "距離", "騎手")

Returns:
    該当する特徴量のリスト
ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes

TDQS

B3.1/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 for behavioral disclosure. It mentions returning a list of features but omits details like search behavior (exact or fuzzy match), performance, or authentication requirements.

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 very short but structured with Args and Returns sections in a Python docstring format. Every line provides useful information, though it could be slightly more verbose without losing 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?

For a simple search tool, the description covers the basic purpose and parameter. However, it lacks details on the return structure (list of what?), search algorithm, and edge cases. Given no output schema, it would benefit from explaining the result format.

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 has no description for the keyword parameter (0% coverage), but the description adds concrete examples ('人気', '距離', '騎手') that clarify expected usage. This adds significant meaning beyond the bare schema definition.

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 it searches features by keyword, using a specific verb and resource. However, it does not explicitly distinguish itself from sibling tools like get_feature_by_category or get_important_features, which could cause confusion about when to use each.

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 does not include any context about use cases, prerequisites, or limitations, leaving the agent to 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.

sire_statsB

種牡馬(父馬)の産駒成績を分析

種牡馬名を指定して、産駒の勝率・複勝率を調べられます。 距離や競馬場でフィルタリングすると、血統の適性傾向が見えます。

ParametersJSON Schema
NameRequiredDescriptionDefault
venueNo
distanceNo
sire_nameYes
year_fromNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions return of win rate and place rate and filtering, but fails to disclose rate limits, authentication needs, or whether the operation is read-only. Minimal behavioral context.

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

Conciseness5/5

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

Two sentences with no wasted words. Front-loaded with main purpose, followed by filtering capabilities. Highly concise and efficient.

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?

No output schema exists, so description should detail return structure. Only mentions 'win rate and place rate' without explaining format or aggregation. Also omits the year_from parameter. Incomplete for a 4-parameter tool with no output schema.

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?

Description explains the sire_name, venue, and distance parameters, adding context beyond the schema titles. However, the year_from parameter is not mentioned, and schema coverage is 0%, so description partially compensates but leaves a gap.

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 analyzes progeny performance of stallions, specifying win rate and place rate. This verb-resource combination ('analyze progeny performance') is specific and distinguishes it from sibling tools like jockey_stats or horse_history.

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 implies use for analyzing a sire's progeny with filtering options, but does not explicitly state when not to use or provide alternatives such as horse_history for individual horse data. Guidance is present but not comprehensive.

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

update_serverB

サーバーを更新する。Git checkoutは自動更新し、wheel導入時は手順を返します。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of disclosure. It does reveal two modes of behavior: Git checkout auto-updates, and wheel installation returns the procedure. However, it does not mention side effects, changes to the server, required permissions, or what happens in the Git checkout case regarding the return value.

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

Conciseness5/5

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

The description is two short sentences with no wasted words. It front-loads the primary action and then provides specific behavioral details in the second sentence, making it both concise and structured.

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 zero-parameter tool, the description is mostly adequate, but it leaves important gaps. It does not clarify the return value for the Git checkout case, nor the relationship with the sibling 'check_update'. Since there is no output schema or annotations, these omissions mean the description is not fully complete.

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

Parameters4/5

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

The tool has zero parameters, so there is nothing to document. Per the baseline for no parameters, this score is appropriate; the description does not need to explain parameter details.

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

Purpose4/5

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

The description states a specific verb and resource: 'サーバーを更新する' (updates the server), making the core purpose clear. It does not explicitly distinguish itself from the sibling 'check_update', though the action verb 'update' vs 'check' provides implicit 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?

There is no guidance on when to use this tool versus alternatives such as 'check_update'. The description mentions conditional behavior (Git checkout auto-updates, wheel returns steps) but no context about when this tool is the right choice or when it is not.

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

validate_sql_queryC

SQLクエリの安全性を検証

Args:
    sql_query: 検証するSQLクエリ

Returns:
    検証結果と安全性チェック
ParametersJSON Schema
NameRequiredDescriptionDefault
sql_queryYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden. It only mentions 'validation result and safety check' without specifying side effects, state changes, or whether it modifies data. The behavior is minimally disclosed.

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 short but mixes Japanese and English, and the structure (Args/Returns) is standard. It is not verbose, but the brevity sacrifices clarity. It earns its place but could be more explicit.

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 simplicity (1 param, no output schema), the description is incomplete. It does not explain what 'safety' entails, the format of the return, or how it relates to sibling tools. More context is needed for an agent to use it 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%, yet the description only repeats the parameter name ('sql_query') without adding constraints, format, or meaning. It fails to compensate for the lack of schema documentation.

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

Purpose4/5

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

The description states 'Validate SQL query safety' which clearly indicates the verb (validate) and resource (SQL query). While it doesn't explicitly differentiate from siblings like execute_template_query, the purpose is specific enough for an AI agent.

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 vs alternatives like execute_template_query or other query-related tools. No context on prerequisites or when not to use it.

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

Tool Schema Changelog

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

  1. 3 tool updatesv0.7.0
    • Removednar_favorite_performance
    • Removednar_horse_history
    • Removednar_jockey_stats
  2. 2 tool updatesv0.5.1
    • Removedgenerate_sql_from_natural_language
    • Addedget_sql_generation_prompt
  3. 25 tool updatesv0.5.0
    • First observedcheck_update
    • First observedexecute_template_query
    • First observedfavorite_performance
    • First observedframe_stats
    • First observedgenerate_sql_from_natural_language
    • First observedget_column_examples
    • First observedget_database_overview
    • First observedget_database_schema
    • First observedget_feature_by_category
    • First observedget_important_features
    • First observedget_query_examples
    • First observedget_table_info
    • First observedget_table_sample_data
    • First observedhorse_history
    • First observedjockey_stats
    • First observedkeiba_data_search
    • First observedlist_query_templates
    • First observedlist_tables
    • First observednar_favorite_performance
    • First observednar_horse_history
    • First observednar_jockey_stats
    • First observedsearch_features
    • First observedsire_stats
    • First observedupdate_server
    • First observedvalidate_sql_query

TDQS

C2.9/5.0

Scored across 22 tools

Disambiguation2/5

Tools like get_database_schema, list_tables, get_database_overview, and get_table_info all appear to expose overlapping schema/table metadata, and get_query_examples, list_query_templates, and execute_template_query blur the line between examples, templates, and execution. The specialized analytics tools are well-separated, but there is still real ambiguity between arbitrary SQL search and template-driven execution.

Naming Consistency3/5

Most tool names use snake_case with a get_ or list_ prefix, which is readable and mostly predictable. However, the specialized stats tools are noun-first (jockey_stats, frame_stats, favorite_performance), and keiba_data_search does not follow the verb-first pattern, creating a mixed convention.

Tool Count3/5

At 22 tools, the server is on the heavy side, and several schema/template helpers overlap rather than earning a clearly distinct place. The specialized horse-racing analytics tools justify much of the count, but the maintenance tools and redundant metadata tools could be consolidated.

Completeness4/5

The server covers schema exploration, SQL validation, query generation/execution, templates, sample data, and common horse-racing analytics, which avoids most dead ends. Dedicated conveniences for race results or odds are missing, but the universal keiba_data_search tool makes the overall surface functionally complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language interaction with local SQLite databases through Claude Desktop, translating plain English queries into SQL for data analysis and exploration.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Formula 1 data analysis through natural language, providing tools like track dominance, lap time analysis, and team performance comparisons.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying personal data synced from services like Lunch Money and Strava using SQL via Claude.
    6 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude to query and manage databases (SQLite, SQL Server, PostgreSQL, MySQL) through natural language, supporting read/write operations and schema management.
    676 npm
    MIT