Skip to main content
Glama
Abhinav-Prabhakar

MonkeyType MCP Server

Servidor MCP MonkeyType

Este es un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso a todos los puntos finales de la API MonkeyType . El servidor expone herramientas MCP que permiten que los Modelos de Lenguaje Grandes (LLM) interactúen con la API MonkeyType.

Características

  • Expone todos los puntos finales de la API de MonkeyType como herramientas MCP

  • Compatible con cualquier LLM que admita el Protocolo de Contexto de Modelo

  • Autenticación simple basada en clave API por llamada a la herramienta

  • Manejo integral de errores

  • Conciencia del límite de velocidad (respeta los límites de velocidad de MonkeyType)

Related MCP server: Strava MCP Server

Instalación

Uso de npx (recomendado)

La forma más sencilla de ejecutar el servidor es usando npx:

npx monkeytype-mcp

Esto descargará y ejecutará la última versión del servidor directamente.

Instalación global

También puedes instalar el paquete globalmente:

npm install -g monkeytype-mcp
monkeytype-mcp

Instalación manual

Si prefieres clonar el repositorio:

git clone https://github.com/CodeDreamer06/MonkeytypeMCP.git
cd MonkeytypeMCP
npm install
npm start

Herramientas disponibles

El servidor expone los siguientes puntos finales de API MonkeyType como herramientas MCP:

Herramientas de usuario

  • check_username - Comprueba si un nombre de usuario está disponible

  • get_personal_bests - Obtener las mejores marcas personales del usuario

  • get_tags - Obtener las etiquetas del usuario

  • get_stats - Obtener las estadísticas del usuario

  • get_profile - Obtener el perfil del usuario

  • send_forgot_password_email - Enviar correo electrónico de contraseña olvidada

  • get_current_test_activity - Obtener la actividad de prueba actual

  • get_streak - Obtener la racha del usuario

Herramientas de resultados de pruebas

  • get_results - Obtenga hasta 1000 resultados de pruebas

  • get_result_by_id - Obtener resultado por ID

  • get_last_result - Obtener el último resultado

Herramientas públicas

  • get_speed_histogram - Obtener histograma de velocidad

  • get_typing_stats - Obtener estadísticas de mecanografía

Herramientas de tablas de clasificación

  • get_leaderboard - Obtener la tabla de clasificación

  • get_leaderboard_rank - Obtener la clasificación en la tabla de clasificación

  • get_daily_leaderboard - Obtener la tabla de clasificación diaria

  • get_weekly_xp_leaderboard - Obtener la tabla de clasificación semanal de XP

Herramientas de anuncios de servicio público

  • get_psas - Obtener anuncios de servicio público

Herramientas de cotizaciones

  • is_submission_enabled - Verifica si el envío de cotizaciones está habilitado

Herramientas de configuración del servidor

  • get_configuration - Obtener la configuración del servidor

Cómo obtener tu clave API de MonkeyType (ApeKey)

Para obtener su propia clave API de MonkeyType (ApeKey), siga estos pasos:

  1. Inicie sesión en su cuenta de MonkeyType

  2. Haz clic en el icono de tu perfil en la esquina superior derecha.

  3. Seleccione "Cuenta" en el menú desplegable.

  4. Vaya a la pestaña "Ape Keys"

  5. Haga clic en "Generar nuevo" para crear una nueva clave API

  6. Dale un nombre a tu clave (por ejemplo, "Servidor MCP")

  7. Seleccione los ámbitos adecuados en función de los puntos finales a los que necesita acceder

  8. Haga clic en "Generar"

  9. Copiar la clave generada

Importante : mantenga su clave API segura y nunca la comparta públicamente.

Uso del servidor MCP con LLM

Para usar este servidor con un LLM, deberá configurar el LLM para que use este servidor para las llamadas a herramientas MCP. Debe proporcionar su clave API de MonkeyType (ApeKey) configurando la variable de entorno MONKEYTYPE_API_KEY en la configuración de su servidor MCP.

Variables de entorno

  • MONKEYTYPE_API_KEY : (Obligatorio) Tu clave API de MonkeyType. Puedes obtenerla en la configuración de tu cuenta en monkeytype.com.

  • MONKEYTYPE_USERNAME : (Opcional) Su nombre de usuario o UID de MonkeyType. Ciertas herramientas (como get_profile ) pueden usarlo por defecto o al usar palabras clave específicas.

Ejemplo de llamada a herramienta

{
  "name": "get_configuration",
  "arguments": {}
}

Integración con plataformas LLM

Para integrar este servidor con plataformas LLM como OpenAI, Anthropic u otras:

  1. Inicie el servidor MCP utilizando uno de los métodos de instalación anteriores

  2. Configure su plataforma LLM para utilizar este servidor como proveedor de herramientas MCP

  3. Pasar el stdio del servidor como canal de comunicación

Integración IDE

Configuración de MCP

Para agregar MonkeyType MCP a su IDE, agregue esto al archivo de configuración MCP de su IDE:

{
  "mcpServers": {
    "monkeytype": {
      "command": "sh",
      "args": ["-c", "cd $(mktemp -d) && npm install monkeytype-mcp && npx monkeytype-mcp"],
      "env": {
        "MONKEYTYPE_API_KEY": "YOUR_APE_KEY_HERE"
      }
    }
  }
}

Ubicaciones de los archivos de configuración:

  • Cursor: ~/.cursor/mcp.json

  • Windsurf: ~/.codeium/windsurf/mcp_config.json

  • Cline: ~/.cline/mcp_config.json

  • Claude: ~/.claude/mcp_config.json

Integración de VS Code

Para utilizar este servidor MCP en VS Code:

  1. Abrir la configuración de VS Code

  2. Buscar "Servidor MCP"

  3. Agregue un nuevo servidor MCP con la siguiente configuración:

    • Nombre: MonkeyType MCP

    • Comando: npx monkeytype-mcp

    • Tipo: Entrada/Salida estándar (stdio)

Herramientas disponibles

El servidor expone los siguientes puntos finales de API MonkeyType como herramientas MCP:

Herramientas de usuario

  • check_username - Comprueba si un nombre de usuario está disponible

  • get_personal_bests - Obtener las mejores marcas personales del usuario

  • get_tags - Obtener las etiquetas del usuario

  • get_stats - Obtener las estadísticas del usuario

  • get_profile - Obtener el perfil del usuario

  • send_forgot_password_email - Enviar correo electrónico de contraseña olvidada

  • get_current_test_activity - Obtener la actividad de prueba actual

  • get_streak - Obtener la racha del usuario

get_profile

Obtiene el perfil público de un usuario.

Parámetros:

  • uidOrName (cadena, opcional): el UID o nombre de usuario del usuario cuyo perfil se desea obtener.

    • Si proporciona un nombre de usuario o UID específico, se obtendrá el perfil de ese usuario.

    • Puedes usar palabras clave como "me", "self", "current" o "my". Si se usa alguna de estas palabras clave, la herramienta usará la variable de entorno MONKEYTYPE_USERNAME (si está configurada).

    • Si este parámetro se omite por completo, la herramienta también intentará utilizar la variable de entorno MONKEYTYPE_USERNAME (si está configurada).

    • Si se omite el parámetro uidOrName (o se utiliza una palabra clave) y no se establece la variable de entorno MONKEYTYPE_USERNAME , se producirá un error.

Herramientas de resultados de pruebas

  • get_results - Obtenga hasta 1000 resultados de pruebas

  • get_result_by_id - Obtener resultado por ID

  • get_last_result - Obtener el último resultado

Herramientas públicas

  • get_speed_histogram - Obtener histograma de velocidad

  • get_typing_stats - Obtener estadísticas de mecanografía

Herramientas de tablas de clasificación

  • get_leaderboard - Obtener la tabla de clasificación

  • get_leaderboard_rank - Obtener la clasificación en la tabla de clasificación

  • get_daily_leaderboard - Obtener la tabla de clasificación diaria

  • get_weekly_xp_leaderboard - Obtener la tabla de clasificación semanal de XP

Herramientas de anuncios de servicio público

  • get_psas - Obtener anuncios de servicio público

Herramientas de cotizaciones

  • is_submission_enabled - Verifica si el envío de cotizaciones está habilitado

Herramientas de configuración del servidor

  • get_configuration - Obtener la configuración del servidor

Publicación

Si está realizando cambios en este servidor y desea publicar su propia versión:

npm login
npm publish

Repositorio de GitHub

Este proyecto está alojado en GitHub en https://github.com/CodeDreamer06/MonkeytypeMCP .

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

Expresiones de gratitud

Descargo de responsabilidad

Este proyecto no está afiliado oficialmente a MonkeyType. Úselo bajo su propia responsabilidad y asegúrese de cumplir con los términos de servicio y los límites de velocidad de la API de MonkeyType.

Available Tools

20 tools
check_usernameC

Check if a username is available on MonkeyType

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesUsername to check for availability

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 full burden. It states what the tool does but doesn't disclose behavioral traits such as rate limits, authentication requirements, error responses, or whether it's a read-only operation. For a tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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 the return value will be (e.g., boolean availability status, error messages for invalid usernames) or address potential edge cases. For a tool with no structured output documentation, more context is needed.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'name' fully documented in the schema. The description adds no additional parameter semantics beyond implying the parameter is a username. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('check') and resource ('username availability on MonkeyType'). It distinguishes from siblings by focusing on username validation rather than data retrieval or user actions. However, it doesn't explicitly differentiate from non-existent username-related siblings, keeping it at 4 rather than 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. It doesn't mention prerequisites (e.g., whether the user needs to be logged in), or clarify if this is for new account creation versus existing username verification. With no usage context provided, this scores low.

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

get_configurationC

Get server configuration

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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. 'Get server configuration' implies a read operation, but it doesn't specify what the configuration includes, whether it's cached, requires authentication, or has rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is extremely concise with a single sentence ('Get server configuration'), which is front-loaded and wastes no words. For a simple tool with no parameters, this brevity is appropriate 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?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'configuration' includes, the return format, or how it differs from sibling tools. For a tool in a context with many similar siblings, more detail is needed to ensure the agent can use it correctly.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description doesn't add parameter details, but since there are no parameters, this is acceptable. A baseline of 4 is appropriate as the description doesn't need to compensate for missing param info.

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 what the tool does ('Get server configuration') with a clear verb and resource, but it's vague about what 'configuration' entails. It doesn't distinguish this tool from siblings like 'get_stats' or 'get_typing_stats', which might also retrieve server-related data. The purpose is understandable 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?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_stats' and 'get_typing_stats' that might overlap in retrieving server data, there's no indication of context, prerequisites, or exclusions. It's a basic statement without usage instructions.

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

get_current_test_activityB

Get user's current test activity

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states a read operation ('Get') but doesn't disclose behavioral traits like authentication needs, rate limits, or what 'current' means (e.g., real-time vs. cached). This is a significant gap for a tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'current test activity' entails (e.g., type, format, or timing) or the return values, leaving gaps in understanding the tool's behavior and 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 tool has 0 parameters with 100% schema coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter details, and it correctly implies no inputs are required, earning a baseline 4 for adequate coverage in this context.

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 ('Get') and resource ('user's current test activity'), making the purpose understandable. However, it doesn't differentiate from siblings like 'get_last_result' or 'get_results' which might also relate to test activities, leaving some ambiguity about scope.

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. With siblings like 'get_last_result' and 'get_results' that might overlap, the description lacks explicit context or exclusions, leaving usage unclear.

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

get_daily_leaderboardC

Get daily typing test leaderboard

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLanguage for the leaderboard
modeNoMode for the leaderboard (time, words, quote, zen)
mode2NoSecondary mode parameter (e.g., 15, 60, etc.)
skipNoNumber of entries to skip
limitNoNumber of entries to return

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't describe what data is returned (e.g., format, fields), whether it's paginated, rate-limited, or requires authentication. For a read operation with 5 parameters, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a straightforward retrieval tool and front-loads the core purpose immediately.

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

Completeness2/5

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

For a tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the leaderboard contains, how results are structured, or clarify the relationship between 'daily' and other leaderboard tools. The agent would need to guess about return values and proper usage context.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information beyond what's already in the schema descriptions. This meets the baseline expectation when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('daily typing test leaderboard'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_leaderboard' or 'get_weekly_xp_leaderboard', which would require specifying what makes the 'daily' leaderboard 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?

The description provides no guidance on when to use this tool versus alternatives like 'get_leaderboard' or 'get_weekly_xp_leaderboard'. There's no mention of prerequisites, context, or exclusions, 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.

get_last_resultB

Get user's last typing test result

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states it 'gets' data, implying a read operation, but doesn't disclose behavioral traits like authentication needs, rate limits, error conditions, or what 'last' means chronologically. The description is minimal and lacks essential context for safe invocation.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose with zero waste. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations, no output schema, and a read operation, the description is incomplete. It doesn't explain what the return value includes (e.g., speed, accuracy), how 'last' is determined, or any error handling. For a tool with contextual complexity, this leaves significant gaps for the agent.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, but that's appropriate here. A baseline of 4 is applied as it meets the requirement for a parameterless 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 the verb ('Get') and resource ('user's last typing test result'), making the purpose specific and understandable. It distinguishes from siblings like 'get_results' (multiple results) and 'get_result_by_id' (specific ID), though it doesn't explicitly name these alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_results' or 'get_result_by_id'. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the name alone.

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

get_leaderboardC

Get typing test leaderboard

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesTarget language for the leaderboard
modeYesTyping mode for the leaderboard
mode2YesSecondary mode parameter
pageNoPage number, 0-indexed. Default 0.
pageSizeNoNumber of entries per page. Default 50, min 10, max 200.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic operation without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, what authentication might be required, rate limits, pagination behavior beyond what's in the schema, or what format the leaderboard data returns. For a tool with 5 parameters and no output schema, this is inadequate.

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 just 4 words, front-loading the essential information with zero wasted words. It efficiently communicates the core purpose without unnecessary elaboration or redundancy.

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

Completeness2/5

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

For a tool with 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the leaderboard contains, how results are sorted/ranked, what data format to expect, or any behavioral aspects. The agent would need to infer too much from just the parameter 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?

The description provides no parameter information beyond what's already in the schema, which has 100% description coverage. Since the schema thoroughly documents all 5 parameters with descriptions, constraints, and enums, the baseline score of 3 is appropriate - the description adds no value but the schema compensates fully.

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 'Get typing test leaderboard' clearly states the action (get) and resource (typing test leaderboard), but it's vague about scope and doesn't differentiate from siblings like get_daily_leaderboard or get_weekly_xp_leaderboard. It provides basic purpose but lacks specificity about what type of leaderboard it retrieves.

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 about when to use this tool versus alternatives like get_daily_leaderboard or get_weekly_xp_leaderboard. The description doesn't mention any prerequisites, exclusions, or contextual factors that would help an agent choose between similar leaderboard tools.

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

get_leaderboard_rankC

Get user's rank on the leaderboard

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesLanguage for the leaderboard
modeYesMode for the leaderboard (time, words, quote, zen)
mode2YesSecondary mode parameter (e.g., 15, 60, etc.)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, it doesn't specify whether this requires authentication, what user context it operates on (current user? specified user?), rate limits, or what format the rank information returns. The description is too minimal for a tool that presumably accesses user-specific competitive data.

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 at just 5 words, with zero wasted language. It's front-loaded with the core purpose and contains no unnecessary elaboration. This is an example of efficient communication.

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

Completeness2/5

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

For a tool with 3 required parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'rank' means in this context (global rank? percentile?), doesn't clarify whose rank is being retrieved, and provides no context about the leaderboard system or how the parameters interact. The minimal description leaves too many questions unanswered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (language, mode, mode2) with basic descriptions. The description adds no additional parameter context beyond what's in the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Get user's rank on the leaderboard', which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_leaderboard' or 'get_daily_leaderboard', which appear to be related leaderboard 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. With multiple leaderboard-related tools available (get_leaderboard, get_daily_leaderboard, get_weekly_xp_leaderboard), there's no indication of when this specific 'rank' tool is appropriate versus those other leaderboard tools.

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

get_personal_bestsB

Get user's personal best typing scores

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoMode for personal bests (time, words, quote, zen). Defaults to 'time'
mode2NoSecondary mode parameter for time mode (e.g., 15, 30, 60, 120). Defaults to '15'

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 the full burden of behavioral disclosure. While 'Get' implies a read-only operation, it doesn't specify authentication requirements, rate limits, error conditions, or what happens if no personal bests exist. For a tool with no annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a simple retrieval tool and front-loads the essential information, making it easy to parse quickly.

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 read operation with 2 parameters and no output schema, the description is minimally adequate. It states what the tool does but lacks context about authentication, error handling, or return format. With no annotations and no output schema, the description should ideally provide more behavioral context to be fully complete.

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

Parameters3/5

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

The description mentions 'typing scores' which relates to the tool's purpose but doesn't explain the parameters. However, with 100% schema description coverage, the schema fully documents both parameters with descriptions and defaults. The description adds no parameter-specific information beyond what's in the schema, meeting the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('user's personal best typing scores'), making it immediately understandable. However, it doesn't differentiate from siblings like 'get_stats' or 'get_typing_stats' which might also retrieve user statistics, leaving some ambiguity about uniqueness.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools like 'get_stats' and 'get_typing_stats' that might overlap in functionality, there's no indication of when this specific tool is appropriate or what distinguishes it from similar options.

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

get_profileC

Get user's profile information

ParametersJSON Schema
NameRequiredDescriptionDefault
uidOrNameNoThe UID or username of the user. If omitted or set to a keyword like 'me', 'self', 'current', or 'my', the value from the MONKEYTYPE_USERNAME environment variable will be used.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't mention authentication requirements, rate limits, error conditions, what specific profile information is returned, or whether this is a read-only operation (though implied by 'Get'). For a tool with zero annotation coverage, this is insufficient 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?

The description is extremely concise at just four words, front-loading the essential information with zero wasted words. Every element ('Get', 'user's', 'profile', 'information') contributes directly to understanding the tool's purpose without unnecessary elaboration.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and multiple similar sibling tools, the description is inadequate. It doesn't explain what 'profile information' includes, how it differs from other user data tools, what authentication is needed, or what the return format looks like. The context demands more completeness than this minimal description provides.

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 adds no parameter information beyond what's already in the schema, which has 100% coverage. The schema fully documents the single parameter's purpose, optional nature, and special keyword behavior. The description doesn't compensate with additional context about parameter usage or implications, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('user's profile information'), making the purpose immediately understandable. However, it doesn't distinguish this tool from potential siblings like 'get_stats' or 'get_typing_stats' that might also retrieve user information, so it doesn't reach the highest level of sibling 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?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools like 'get_stats', 'get_typing_stats', and 'get_streak' that might retrieve overlapping user information, there's no indication of what makes 'get_profile' distinct or when it should be preferred over other options.

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

get_psasC

Get public service announcements

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 full burden. It states 'Get' implying a read operation, but doesn't disclose behavioral traits like authentication needs, rate limits, response format, or whether it returns all PSAs or a filtered subset. For a tool with zero annotation coverage, this minimal description is inadequate.

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

Conciseness5/5

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

The description is a single, clear sentence with zero waste. It's appropriately sized and front-loaded, efficiently conveying the core purpose without unnecessary elaboration.

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

Completeness2/5

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

Given no annotations, no output schema, and a simple tool with 0 parameters, the description is incomplete. It doesn't explain what 'public service announcements' entail, the return format, or any behavioral context. For even a simple tool, more information is needed to guide effective 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 input schema has 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description doesn't add parameter details, but since there are no parameters, this is acceptable. Baseline is 4 for 0 parameters, as no compensation is needed.

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 'Get public service announcements' states the action (get) and resource (public service announcements), providing a basic purpose. However, it lacks specificity about scope or format, and doesn't differentiate from sibling tools like 'get_configuration' or 'get_stats' that also retrieve information. It's not tautological but remains vague about what exactly is retrieved.

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 context, prerequisites, or exclusions, leaving the agent to infer usage based on the name alone. With multiple sibling tools for retrieving data, this lack of differentiation is a significant gap.

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

get_result_by_idC

Get a specific typing test result by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
resultIdYesID of the result to retrieve

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 full burden. It states the tool retrieves a result but lacks behavioral details: it doesn't disclose if this is a read-only operation, what happens if the ID doesn't exist (e.g., returns null or error), rate limits, or authentication requirements. This is inadequate for a tool with potential failure modes.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the returned result contains (e.g., speed, accuracy), error handling, or dependencies. For a retrieval tool with potential complexities like missing IDs, this leaves significant gaps for an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'resultId' fully documented in the schema. The description adds no additional semantic context beyond implying the ID is for a typing test result, which is already clear from the tool name. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('specific typing test result by ID'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'get_results' (plural) by specifying retrieval of a single result. However, it doesn't explicitly contrast with other ID-based tools if they exist, 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 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 when to choose this over 'get_results' for multiple results or 'get_last_result' for the most recent one, nor does it specify prerequisites like authentication or error conditions for invalid IDs.

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

get_resultsC

Get user's typing test results

ParametersJSON Schema
NameRequiredDescriptionDefault
timestampNoTimestamp of the earliest result to fetch
offsetNoOffset of the item at which to begin the response
limitNoLimit results to the given amount

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states a read operation ('Get') but doesn't disclose authentication needs, rate limits, pagination behavior, error conditions, or what 'user's' implies (e.g., current authenticated user). This is inadequate for a tool with parameters and no output schema.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded and appropriately sized for its purpose, earning full marks for conciseness.

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

Completeness2/5

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

Given 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain return values, error handling, or behavioral traits, leaving significant gaps for the agent. For a data retrieval tool with multiple parameters, more context is needed to be fully helpful.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional meaning beyond implying results are fetched, which the schema already covers with its parameter descriptions. Baseline 3 is appropriate as the schema does the heavy lifting.

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 'Get user's typing test results' clearly states the action (get) and resource (typing test results), but it's somewhat vague about scope and doesn't differentiate from siblings like get_last_result, get_result_by_id, or get_personal_bests. It doesn't specify whether this retrieves all results, recent results, or filtered results beyond what parameters indicate.

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 get_last_result or get_result_by_id. The description implies fetching multiple results but doesn't clarify context, prerequisites, or exclusions, leaving the agent to infer usage from parameters alone.

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

get_speed_histogramC

Get speed histogram data

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesTarget language for the speed histogram (e.g., 'english')
modeYesTyping mode (e.g., 'time', 'words')
mode2YesSecondary mode parameter (e.g., '60' for time mode)

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 the full burden of behavioral disclosure. 'Get speed histogram data' implies a read-only operation but doesn't specify whether it requires authentication, how data is returned (e.g., format, pagination), or any rate limits. For a tool with no annotation coverage, this leaves significant behavioral 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 a single, efficient sentence with no wasted words, making it appropriately concise. However, it lacks front-loading of critical details like purpose differentiation or usage context, which slightly reduces its effectiveness despite the brevity.

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

Completeness2/5

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

Given the tool's complexity (3 required parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what the histogram data represents, how it's structured, or any dependencies, leaving the agent with insufficient context to use the tool effectively beyond basic parameter input.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for all parameters (language, mode, mode2), including an enum for mode. The description adds no parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without adding 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 'Get speed histogram data' states the basic action (get) and resource (speed histogram data), but it's vague about what 'speed histogram data' entails and doesn't distinguish this tool from similar-sounding siblings like 'get_typing_stats' or 'get_stats'. It provides minimal differentiation beyond the tool name.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives like 'get_typing_stats' or 'get_stats', nor does it mention prerequisites or context for retrieving histogram data. Usage is implied only by the tool name and parameters, with no explicit when/when-not instructions.

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

get_statsC

Get user's typing statistics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states it's a read operation ('Get'), but doesn't mention authentication needs, rate limits, what specific stats are returned, or any side effects. For a stats tool with zero annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and gets straight to the point without unnecessary elaboration.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what typing statistics are returned (e.g., speed, accuracy, duration), how they're formatted, or any behavioral context. For a stats retrieval tool, this leaves significant gaps.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to compensate for any parameter gaps, making it adequate for this parameterless tool.

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 'Get user's typing statistics' clearly states the verb ('Get') and resource ('typing statistics'), but it's vague about scope and doesn't distinguish from sibling tools like 'get_typing_stats' which appears to serve a similar purpose. The description is functional 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?

The description provides no guidance on when to use this tool versus alternatives like 'get_typing_stats' or other stats-related tools. There's no mention of prerequisites, context, or exclusions, leaving the agent with no usage direction.

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

get_streakB

Get user's typing streak information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't specify if it requires authentication, returns real-time or cached data, or handles errors. This is a significant gap for a tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple tool, making it highly concise and well-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?

Given the tool's simplicity (0 params, no output schema), the description is minimally adequate. However, with no annotations and siblings that might overlap, it lacks context on behavior and usage, leaving gaps that could confuse an agent in a real scenario.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param details, which is appropriate, but it could hint at implicit inputs like user context. Baseline is 4 since no params exist.

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 'Get' and the resource 'user's typing streak information', making the purpose specific and understandable. However, it doesn't explicitly distinguish this tool from similar siblings like 'get_stats' or 'get_typing_stats', which might also provide streak-related data, preventing a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_stats' and 'get_typing_stats' that might overlap, there's no indication of context, prerequisites, or exclusions, leaving usage ambiguous.

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

get_tagsC

Get user's tags

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states a read operation ('Get'), implying it's likely safe, but doesn't disclose behavioral traits like authentication needs, rate limits, error conditions, or what 'tags' represent. For a tool with zero annotation coverage, 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 a single, efficient sentence with no wasted words. It's appropriately sized for a simple tool, though it could be more front-loaded with additional context to improve clarity without sacrificing brevity.

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 'tags' are, how they're returned, or any constraints (e.g., user authentication required). For a tool with no structured data to rely on, this minimal description leaves too much unspecified for effective 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 details beyond the schema, but with no parameters, a baseline of 4 is appropriate as there's nothing to compensate for.

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 'Get user's tags' clearly states the action (get) and resource (user's tags), but it's vague about scope and doesn't distinguish from siblings. It doesn't specify whether this retrieves all tags, current user's tags, or tags for a specific user, and many sibling tools also retrieve user data (e.g., get_profile, get_stats).

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, context, or exclusions, and with many sibling 'get_' tools available, there's no indication of how this differs from them or when it's the appropriate choice.

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

get_typing_statsC

Get global typing statistics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a read operation ('get'), but doesn't mention any behavioral traits such as rate limits, authentication needs, data freshness, or what 'global' entails. This leaves significant gaps for a tool with no annotation support.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded and appropriately sized for a simple tool, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'global typing statistics' includes (e.g., metrics, time ranges, aggregation), nor does it provide context on behavior or output. For a tool in this environment, more detail is needed to be fully 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 tool has 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description doesn't need to add parameter details, and it doesn't contradict the schema. A baseline of 4 is appropriate as no parameters exist to explain.

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 'Get global typing statistics' clearly states the action (get) and resource (typing statistics), but it's vague about what 'global' means and doesn't differentiate from sibling tools like 'get_stats' or 'get_speed_histogram'. It provides basic purpose 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 like 'get_stats' or 'get_speed_histogram'. The description implies a global scope but doesn't specify contexts or exclusions, leaving the agent with no usage direction.

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

get_weekly_xp_leaderboardC

Get weekly XP leaderboard

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoNumber of entries to skip
limitNoNumber of entries to return

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 the full burden of behavioral disclosure. It only states the action ('Get') without details on permissions, rate limits, pagination behavior, or what the leaderboard includes (e.g., user rankings, XP values). For a read operation with no annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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

Conciseness4/5

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

The description is a single, efficient sentence with no wasted words, making it easy to parse. However, it's overly concise to the point of under-specification, lacking necessary details for a tool with no annotations or output schema. While front-loaded, it could benefit from more context without sacrificing brevity.

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 leaderboard tool with no annotations, no output schema, and sibling tools, the description is incomplete. It doesn't explain what data is returned, how results are sorted, or how it differs from other leaderboard tools. For a tool that likely returns structured ranking data, more context is needed to guide effective 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 input schema has 100% description coverage, with clear documentation for 'skip' and 'limit' parameters. The description adds no additional meaning beyond what the schema provides, such as default values or usage context. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema handles parameter documentation adequately.

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 'Get weekly XP leaderboard' clearly states the verb ('Get') and resource ('weekly XP leaderboard'), making the basic purpose understandable. However, it doesn't differentiate from sibling tools like 'get_leaderboard' or 'get_daily_leaderboard', leaving ambiguity about what makes this tool distinct. The description is functional but lacks specificity about scope or format.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_leaderboard' and 'get_daily_leaderboard' available, there's no indication of whether this tool is for weekly data only, how it differs in output, or any prerequisites. Usage is implied by the name but not explicitly stated.

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

is_submission_enabledB

Check if quote submission is enabled

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 provided, the description carries full burden but only states what the tool does without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, if it requires authentication, rate limits, or what the return value looks like (e.g., boolean, status object).

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function with zero waste. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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 0-parameter check tool with no output schema, the description is minimally adequate but lacks completeness. It doesn't explain the return type or format, which is crucial for an agent to interpret results correctly, leaving gaps in contextual understanding.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter explanation. The description appropriately focuses on the tool's purpose without redundant parameter details, earning a high baseline score.

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 ('Check') and resource ('quote submission'), making it immediately understandable. However, it doesn't differentiate from sibling tools, which are mostly data retrieval functions, so it doesn't reach the highest 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 prerequisites, context, or exclusions, leaving the agent to infer usage from the purpose alone.

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

send_forgot_password_emailC

Send a forgot password email to a user

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address to send password reset link

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether this requires admin permissions, what the email contains, if it's rate-limited, or what happens on success/failure, leaving critical operational details unspecified.

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

Conciseness5/5

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

The description is a single, clear sentence with zero wasted words, perfectly front-loaded and appropriately sized for the tool's simple function. Every word earns its place.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns, error conditions, or security implications, leaving significant gaps in understanding how to properly invoke and interpret results.

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 doesn't add any parameter information beyond what's already in the schema, which has 100% coverage and clearly documents the single 'email' parameter. This meets the baseline for adequate but unenhanced parameter 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 clearly states the action ('send') and target resource ('forgot password email to a user'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools, which are all read-only data retrieval functions, so this stands out as a mutation operation but without explicit sibling comparison.

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, prerequisites, or context. It doesn't mention authentication requirements, rate limits, or what triggers the email, leaving the agent with no usage context beyond the basic function.

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. 20 tool updates
    • First observedcheck_username
    • First observedget_configuration
    • First observedget_current_test_activity
    • First observedget_daily_leaderboard
    • First observedget_last_result
    • First observedget_leaderboard
    • First observedget_leaderboard_rank
    • First observedget_personal_bests
    • First observedget_profile
    • First observedget_psas
    • First observedget_result_by_id
    • First observedget_results
    • First observedget_speed_histogram
    • First observedget_stats
    • First observedget_streak
    • First observedget_tags
    • First observedget_typing_stats
    • First observedget_weekly_xp_leaderboard
    • First observedis_submission_enabled
    • First observedsend_forgot_password_email

TDQS

B3.1/5.0

Scored across 20 tools

Disambiguation3/5

Most tools have distinct purposes focused on different aspects of MonkeyType (leaderboards, results, stats, profile), but there is some overlap between tools like get_stats and get_typing_stats, get_leaderboard and get_daily_leaderboard, and get_results and get_last_result/get_result_by_id that could cause confusion. The descriptions help differentiate them, but the boundaries aren't always clear.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly. All tools start with verbs like 'get', 'check', 'send', or 'is' followed by descriptive nouns, making them predictable and readable.

Tool Count3/5

With 20 tools, the count is borderline high for a typing test server, feeling slightly heavy. While many tools cover specific features, some could potentially be consolidated (e.g., multiple leaderboard tools), making the set feel a bit bloated.

Completeness4/5

The tool set provides comprehensive coverage for reading data from MonkeyType, including user stats, leaderboards, results, and profile info. Minor gaps exist, such as no tools for submitting typing tests or updating user settings, but agents can likely work around these for most common workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides language models with access to Strava API data, allowing them to query and analyze athlete activities from Strava.
    4
    25
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables language models to interact with Strava data, including activities, athlete statistics, routes, achievements, and social features.
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol Server that enables LLMs to interact with and execute REST API calls through natural language prompts, supporting GET/PUT/POST/PATCH operations on configured APIs.
    6
    Apache 2.0