Skip to main content
Glama
zNetinho

MCP Runrun.it

by zNetinho

MCP Runrun.it

Servidor MCP (Model Context Protocol) para comunicação com a API do Runrun.it. Expõe ferramentas de Tasks e Comments para uso no Cursor ou em outros clientes MCP.

Arquitetura

O projeto adota o padrão Arquitetura Hexagonal (Ports & Adapters): o núcleo da aplicação fica isolado de detalhes de transporte (stdio, HTTP) e do cliente HTTP do Runrun.it. As portas definem contratos de entrada (MCP) e saída (acesso à API); os adaptadores implementam esses contratos (transporte e cliente HTTP).

Mapeamento no projeto

  • Núcleo / aplicação: regras e orquestração dos casos de uso (Tasks e Comments). Arquivos: src/application/tasks.ts, src/application/comments.ts; em uma evolução podem depender apenas de uma abstração de "cliente Runrun.it" (porta de saída).

  • Porta de entrada (driving): protocolo MCP (ListTools, CallTool). Implementada em src/adapters/driving/app.ts (registro de tools e handler que delega para a aplicação).

  • Adaptadores de entrada: como o MCP é acessado — src/index.ts (stdio) e src/server.ts (HTTP). Ambos usam o mesmo createMcpServer().

  • Porta de saída (driven): contrato para acessar o Runrun.it (listar/criar tarefas, comentários, etc.). Hoje usada implicitamente; em uma evolução pode ser uma interface TypeScript injetada.

  • Adaptador de saída: implementação HTTP da API Runrun.it em src/adapters/driven/api.ts (auth, runrunitFetch, tratamento de erros).

Fluxo

flowchart LR
  subgraph driving [Driving]
    Client[Cursor / Cliente MCP]
    Transport[Adaptadores stdio / HTTP]
    MCP[app.ts - MCP Tools]
  end
  subgraph core [Núcleo]
    App[Application - tasks.ts / comments.ts]
  end
  subgraph driven [Driven]
    Port[Porta Runrun.it]
    Adapter[api.ts - Cliente HTTP]
    API[API Runrun.it]
  end
  Client --> Transport
  Transport --> MCP
  MCP --> App
  App --> Port
  Port --> Adapter
  Adapter --> API

Estrutura de pastas

Pasta / Arquivos

Papel

src/index.ts, src/server.ts

Pontos de entrada (adaptadores de transporte stdio e HTTP)

src/domain/

Domínio (tipos e portas para evolução futura)

src/application/

Núcleo de aplicação: tasks.ts, comments.ts (casos de uso)

src/adapters/driving/

Adaptador de entrada: app.ts (MCP — definição de tools e handler CallTool)

src/adapters/driven/

Adaptador de saída: api.ts (cliente HTTP Runrun.it)

A separação permite trocar o transporte (stdio vs HTTP) sem alterar o núcleo e, no futuro, mockar ou trocar a implementação da API Runrun.it para testes ou outros backends.

Related MCP server: ClickUp Multi-Workspace MCP Server

Autenticação

A API do Runrun.it exige dois headers em toda requisição:

  • App-Key: identifica a conta (obtido em Integração e Apps → API e Webhooks)

  • User-Token: token do usuário em nome do qual as ações são executadas

Configure as variáveis de ambiente (ou no JSON de configuração do MCP no Cursor):

  • RUNRUNIT_APP_KEY — chave da aplicação

  • RUNRUNIT_USER_TOKEN — token do usuário

Cloudinary (opcional, para as skills de evidências e upload de imagens):

  • CLOUDINARY_CLOUD_NAME — nome da cloud no Cloudinary

  • CLOUDINARY_API_KEY — API key

  • CLOUDINARY_API_SECRET — API secret (nunca expor no client-side)

Instalação e utilização local

cd mcp-runrunit
npm install
npm run build

Uso no Cursor

  1. Abra as configurações do Cursor (MCP).

  2. Adicione o servidor no arquivo de configuração de MCP (por exemplo em .cursor/mcp.json ou nas configurações do Cursor).

Exemplo de configuração (ajuste o caminho para o seu projeto):

{
  "mcpServers": {
    "runrunit": {
      "command": "node",
      // Use o caminho absoluto para `dist/index.js` no seu ambiente. 
      "args": ["caminho-do-repositório-local/mcp-runrunit/dist/index.js"],
      "env": {
        "RUNRUNIT_APP_KEY": "sua_app_key",
        "RUNRUNIT_USER_TOKEN": "seu_user_token",
        "CLOUDINARY_CLOUD_NAME": "sua_cloud",
        "CLOUDINARY_API_KEY": "sua_api_key",
        "CLOUDINARY_API_SECRET": "seu_api_secret"
      }
    }
  }
}

// ou

"runrunit-mcp": {
      "url": "http://localhost:3000/mcp",
      "env": {
        // Nesse modo é importante criar o arquivo .env na raiz do mcp ./plugin-sentinel-mcp/mcp-runrunit
      }
    },

Uso via npm (para outras pessoas)

Depois de publicado no npm, qualquer pessoa pode usar com npx sem clonar o repositório:

{
  "mcpServers": {
    "runrunit": {
      "command": "npx",
      "args": ["-y", "mcp-runrunit"],
      "env": {
        "RUNRUNIT_APP_KEY": "<RUNRUNIT_APP_KEY>",
        "RUNRUNIT_USER_TOKEN": "<RUNRUNIT_USER_TOKEN>",
        "CLOUDINARY_CLOUD_NAME": "<CLOUDINARY_CLOUD_NAME>",
        "CLOUDINARY_API_KEY": "<CLOUDINARY_API_KEY>",
        "CLOUDINARY_API_SECRET": "<CLOUDINARY_API_SECRET>",
        "BOT_DISCORD_TOKEN_PUBLIC_ID": "<BOT_DISCORD_TOKEN_PUBLIC_ID>",
        "BOT_RUNRUNIT_REPORT_PRIVATE_KEY": "<BOT_RUNRUNIT_REPORT_PRIVATE_KEY>",
        "DISCORD_GUILD_ID": "<DISCORD_GUILD_ID>",
        "DISCORD_CHANNEL_ID": "<DISCORD_CHANNEL_ID>"
      }
    }
  }
}

Cursor Skills (evidências, PR, comentários na task, agents)

O pacote inclui a pasta cursor-skills/ com skills para uso no Cursor: registrar-evidencias, upload-image-cloudinary, create-pr-github, comentar-task-runrunit, code-reviewer, install-cursor-team-skills (atalho que orienta usar a tool abaixo). Para instalar ou sincronizar tudo no PC de um colega, use a tool MCP runrunit_install_cursor_skills (recomendado: dry_run: true primeiro; usa os.homedir() e funciona em Windows, macOS e Linux). Parâmetros opcionais: skill_names, target (global ou project + project_root), source_dir se a pasta não for encontrada ao lado do pacote.

Alternativa manual: copie (ou crie link) das pastas em node_modules/mcp-runrunit/cursor-skills/ para um destes diretórios:

  • Global: ~/.cursor/skills/ (ex.: ~/.cursor/skills/registrar-evidencias, etc.)

  • Por projeto: .cursor/skills/ ou .agents/skills/ na raiz do projeto

As skills que fazem upload de imagens (evidências em PRs e comentários Runrun.it) usam Cloudinary; configure CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY e CLOUDINARY_API_SECRET no env do MCP ou no ambiente.

Ferramentas (Tools)

Tasks

Ferramenta

Descrição

runrunit_list_tasks

Lista tarefas com filtros opcionais (ids, responsible_id, assignee_id, filter_id, board_stage_id, project_id, etc.)

runrunit_list_task_filters

Lista filtros de tarefas (para obter filter_id de "Minhas partes abertas")

runrunit_list_board_stages

Lista stages do board (Task, Ongoing, Manager Validation) — use com runrunit_move_task_stage ao mover por nome

runrunit_move_task_stage

Move uma tarefa para uma etapa/coluna do board (task_id + board_stage_id ou board_stage_name). Para etapas que exigem "Link da branch", preencher antes com runrunit_update_task

runrunit_get_task

Retorna uma tarefa pelo ID

runrunit_list_subtasks

Lista subtarefas de uma tarefa

runrunit_create_task

Cria tarefa (obrigatório: title, type_id; opcional: project_id, assignments, desired_date, etc.)

runrunit_update_task

Atualiza tarefa (id + objeto com campos a atualizar, ex.: title, desired_date, link_da_branch). Para mover entre colunas use runrunit_move_task_stage

runrunit_delete_task

Remove uma tarefa

runrunit_create_workflow

Cria workflow para uma tarefa (permite iniciar tracking)

runrunit_assignment_play

Inicia tracking (play) em um assignment de tarefa

Comments

Ferramenta

Descrição

runrunit_list_task_comments

Lista comentários de uma tarefa

runrunit_get_comment

Retorna um comentário pelo ID

runrunit_create_comment

Cria comentário em tarefa (task_id, text)

runrunit_create_external_comment

Cria comentário na sessão externa/guest (compartilhada com clientes; channel_name: guest)

runrunit_update_comment

Edita o texto de um comentário

runrunit_delete_comment

Remove um comentário

runrunit_comment_reaction

Adiciona reação (emoji) a um comentário

Discord

Ferramenta

Descrição

runrunit_discord_send_message

Envia mensagem em um canal do Discord (channel_id, content; opcional task_id, project_id). Requer BOT_RUNRUNIT_REPORT.

runrunit_discord_create_channel

Cria um canal de texto no servidor (guild). Parâmetros: name (slug, ex.: client-1); opcional guild_id, parent_id, topic. Usa DISCORD_GUILD_ID se guild_id não for passado.

runrunit_discord_list_channels

Lista canais do servidor Discord. guild_id opcional (usa DISCORD_GUILD_ID ou resolve por DISCORD_CHANNEL_ID).

runrunit_discord_get_or_create_channel

Obtém ou cria um canal por cliente Runrun.it (1 canal por cliente). client_id ou client_name (ex.: "Client 1" → slug client-1). Retorna channel_id e channel_name; use antes de enviar mensagens.

Cursor (skills do pacote)

Ferramenta

Descrição

runrunit_install_cursor_skills

Copia as pastas de cursor-skills/ do pacote para ~/.cursor/skills (global) ou para <project_root>/.cursor/skills (target: project). Útil para onboard da equipe; escrita no diretório home do usuário que executa o processo do MCP.

Skills

Skills em cursor-skills/:

Skill

Descrição

code-reviewer

Revisão de código alinhada aos padrões da agência. Use ao revisar PRs, sugerir melhorias ou validar implementações.

registrar-evidencias

Captura screenshots em múltiplos viewports (mobile, tablet, desktop) a partir de URLs "antes" e "depois". Usar para evidências visuais, comparar antes/depois, documentar mudanças de UI ou preparar imagens para PRs e relatórios.

upload-image-cloudinary

Upload de imagens para Cloudinary e retorno de URLs públicas. Usar quando screenshots ou evidências precisarem ser hospedadas (ex.: body da PR, docs). Requer CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY e CLOUDINARY_API_SECRET.

comentar-task-runrunit

Orquestra evidências e comentário na tarefa do Runrun.it: captura antes/depois, upload no Cloudinary, opcionalmente abre PR e cria comentário na task com resumo, passo a passo de teste e links; grava link_da_branch na task se houver PR.

create-pr-github

Cria um pull request bem estruturado, com descrição, rótulos, revisores e evidências visuais. Inclui preparar branch, descrição, checklist e output obrigatório (link da PR, branch, ambiente de destino).

install-cursor-team-skills

Skill mínima que indica chamar a tool runrunit_install_cursor_skills para sincronizar as demais skills do pacote no Cursor.

Agents

Agente

Nome exibido

Descrição

Quando usar

context-bridge

Doc-Brief (Implementation Brief)

Filtro de documentação técnica: extrai lógica de implementação, assinaturas e dependências em Implementation Briefs de alta densidade; remove marketing e redundância.

Quando precisar transformar documentação longa em um resumo técnico pronto para implementação (Quick Start, Core Logic, API Reference, Gotchas).

kieran-typescript-reviewer

kieran-typescript-reviewer

Revisa código TypeScript com barra de qualidade alta em type safety, padrões modernos e manutenibilidade.

Após implementar features, modificar código ou criar novos componentes TypeScript; para garantir convenções e boas práticas.

mentor

Mentor mode

Ajuda a mentorar o engenheiro com orientação e suporte, sem editar código.

Quando quiser desafiar premissas, fazer perguntas socráticas e guiar a solução sem dar a resposta pronta.

performance-optimizer

performance-optimizer

Especialista em otimização de performance, profiling, Core Web Vitals e otimização de bundle.

Para melhorar velocidade, reduzir tamanho de bundle e otimizar runtime; termos: performance, optimize, speed, slow, memory, cpu, benchmark, lighthouse.

prd

Create PRD Chat Mode

Gera um PRD (Product Requirements Document) em Markdown com user stories, critérios de aceite, considerações técnicas e métricas; opcionalmente cria issues no GitHub.

Para documentar requisitos de produto de forma estruturada e, se desejado, gerar issues a partir das user stories.

toph

Toph

Especialista em acessibilidade web (WCAG 2.1/2.2), UX inclusiva e testes de a11y.

Para revisar acessibilidade, teclado, foco, ARIA, formulários, mídia, testes com leitores de tela e ferramentas (axe, pa11y, Lighthouse).

security-reviewer

security-reviewer

Revisor focado em segurança: vulnerabilidades e boas práticas.

Para checar injeção (SQL, XSS, comandos), autenticação/autorização, dados sensíveis, criptografia, dependências e validação de entrada.

Contexto para o agente (uso assertivo das tools)

Para que o Cursor/IA use as tools de forma assertiva e inteligente, consulte:

  • docs/CONTEXTO-AGENTE.md — quando usar cada tool, parâmetros (tipos, formatos), fluxos recomendados, erros comuns e glossário Runrun.it.

  • docs/Atlassian-Jira-com-Runrun.it.md — como usar Atlassian (Jira) junto com o MCP Runrun.it (dois MCPs no Cursor, vínculo task ↔ issue, automação via Zapier).

No workspace do plugin existe também a regra Runrun.it MCP em .cursor/rules/runrunit-mcp.mdc, que resume essas orientações para o agente.

Documentação da API

Os endpoints seguem a documentação oficial do Runrun.it. No repositório do plugin, a pasta docs/ contém os markdowns de referência (por exemplo docs/Tasks.md e docs/Comments.md). Use docs/Indíce.md para localizar os demais endpoints. Para configurar o fluxo de trabalho (Task, Ongoing, Manager Validation), consulte docs/Workflow-Config-Exemplo.md.

Base URL da API

  • https://runrun.it/api/v1.0/

Respostas são JSON; datas em ISO 8601. Limite de 100 requisições por minuto.

Available Tools

27 tools
runrunit_assignment_playA

Start tracking work on a task (play). Pauses current task if assignee is already working on another. Always ensure that the task is in the Ongoing column (board_stage_id: 96356) before calling this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
assignment_idYesAssignment ID (from task.assignments[].id)

TDQS

A4.3/5.0
Behavior4/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 clearly states a key side effect: pausing the current task if the assignee is already working on another. It also discloses the staging requirement, giving agents important context beyond a simple 'start tracking' phrase.

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 brief and efficient: two sentences, front-loaded with the action, followed by the side effect and the critical precondition. Every sentence earns its place with no filler or repetition.

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

Completeness5/5

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

For a simple two-parameter action tool with no output schema, the description is complete. It explains what the tool does, the side effect, and the required board state, giving an agent everything necessary to decide and prepare for invoking it correctly.

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 task_id and assignment_id are already documented. The description adds no parameter-specific detail beyond the schema, which meets the baseline but does not elevate it.

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 uses a specific verb-resource combination: 'Start tracking work on a task (play).' This unambiguously identifies the tool as a time-tracking/play action and distinguishes it from sibling tools like create, update, delete, or move operations.

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

Usage Guidelines4/5

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

The description provides a clear precondition: the task must be in the Ongoing column (board_stage_id: 96356) before calling. It implies when the tool should not be used, but it does not explicitly name an alternative tool like runrunit_move_task_stage for cases where the task is not already Ongoing.

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

runrunit_comment_reactionB

Add a reaction (emoji) to a comment on Runrun.it.

ParametersJSON Schema
NameRequiredDescriptionDefault
emojiYesEmoji character (e.g. 👍)
comment_idYesComment ID

TDQS

B3.3/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 burden of behavioral disclosure, but it only states the primary action. It does not mention whether adding the same emoji twice creates duplicates or is idempotent, whether an existing reaction is replaced, or what happens if the comment does not exist.

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

Conciseness5/5

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

A single, front-loaded sentence contains only the essential action and resource. No filler or repeated schema information.

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 tool is simple and the schema fully documents its two parameters, so the description is nearly sufficient. However, with no annotations and no output schema, it leaves open behavioral questions like idempotency and failure behavior, making it only minimally 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?

Schema coverage is 100%, and both parameters already have clear descriptions (comment_id as number, emoji as character with example). The description adds no new semantic detail beyond the schema, so the baseline score of 3 applies.

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 uses a specific verb ('Add') and resource ('reaction...to a comment on Runrun.it'), making the operation unambiguous. It distinguishes this from sibling comment tools (get/create/update/delete_comment) by naming the emoji-reaction action.

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 given about when to choose this tool over alternatives, such as updating a comment or creating a reaction via another endpoint. The context is implied only by the description and schema, with no explicit exclusions or preconditions.

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

runrunit_create_commentA

Create a comment on a task in Runrun.it. Format: plain text and raw URLs only (no Markdown). Optional url_antes + url_depois: when both are provided, (1) capture visual evidence (skill registrar-evidencias), (2) upload images (e.g. Cloudinary), (3) append to text plain labels and image URLs (e.g. 'Antes: ' and 'Depois: '), (4) call this tool with the enriched text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesComment text (can be enriched with an evidence block when url_antes/url_depois are used)
task_idYesTask ID
url_antesNoOptional. URL of the page in the 'before' state; when provided with url_depois, agent should capture evidence and append it to text
url_depoisNoOptional. URL of the page in the 'after' state; when provided with url_antes, agent should capture evidence and append it to text

TDQS

A4.4/5.0
Behavior4/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 discloses the format constraints (no Markdown), the optional evidence capture workflow (capture, upload, append to text), and the required order of operations. It does not mention potential side effects (e.g., notifications) or return values, but for a creation tool, the key behaviors are well covered.

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 highly concise: two sentences, the first covering purpose and format, the second outlining the evidence capture steps in a clear, bullet-point-like structure. Every sentence serves a purpose with no redundancy.

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

Completeness4/5

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

The tool has 4 parameters, 2 required, no output schema. The description covers the main creation behavior, format constraints, and the complex optional workflow. It does not explain behavior when only one of url_antes/url_depois is provided, nor does it mention error handling or response format, but overall it is sufficiently complete for a creation tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the format of 'text' (plain text and raw URLs only, no Markdown) and the conditional behavior of 'url_antes' and 'url_depois' (when both are provided, trigger evidence capture). This goes beyond the 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 'Create a comment on a task in Runrun.it' with specific details about format (plain text and raw URLs only) and an optional evidence capture workflow using url_antes and url_depois. This distinguishes it from sibling tools like runrunit_get_comment, runrunit_update_comment, and runrunit_delete_comment by highlighting a unique behavior.

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

Usage Guidelines4/5

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

The description provides explicit context for when to use the tool, especially the multi-step evidence capture process when both url_antes and url_depois are provided. However, it does not explicitly state when not to use this tool versus alternatives like runrunit_update_comment or runrunit_create_external_comment, leaving some ambiguity.

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

runrunit_create_external_commentA

For create a comment in the external/guest channel on a task in Runrun.it, use only text simple, without Markdown. Use this for comments shared with external clients (channel_name: guest).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesComment text
task_idYesTask ID

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description must carry the burden. It discloses the plain-text requirement (no Markdown) and external visibility, which are meaningful behavioral constraints. It does not mention response format, permission requirements, or failure behavior for tasks without a guest channel, leaving some 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?

Two short sentences, with purpose and usage front-loaded. Grammar is awkward ('For create a comment', 'use only text simple') and 'external/guest'/'external clients' is slightly redundant, but no sentence is wasted.

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 two-parameter create operation with no output schema, the description covers purpose, channel scope, and text formatting constraint. It doesn't explain what happens if the task lacks a guest channel, but this is a relatively minor gap.

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 descriptions are 100% for both parameters, so baseline is 3. The tool description adds the concrete constraint that text must be simple plain text without Markdown and clarifies that the comment targets the guest channel, going slightly 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?

States the verb 'create', resource 'comment', and scope 'external/guest channel' explicitly. This clearly distinguishes it from the sibling runrunit_create_comment by channel type, so an agent can tell them apart.

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

Usage Guidelines4/5

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

Gives an explicit when-to-use condition: comments shared with external clients (channel_name: guest). It doesn't explicitly name runrunit_create_comment as the alternative for internal comments, but the channel qualifier makes the applicable context clear.

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

runrunit_create_taskA

Create a task on Runrun.it in board Ongoing (ID: 96356) in column Task by default and assignee from who is call the tool. Requires title (eg.: [project_name] - task_name) and type_id. Optional: description (rich description via Task Description API, appended to any existing text), project_id, assignments, desired_date, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTask title
type_idYesTask type ID
on_goingNoOngoing task
tag_listNoComma-separated tags
board_nameNoBoard name
project_idNoProject ID
assignmentsNoAssignments
descriptionNoTask description body (optional). Stored via PUT /tasks/:id/description after create; new text is appended after any content already on the task, never replacing it outright.
desired_dateNoDesired delivery date (ISO)
project_nameNoProject name
board_stage_nameNoBoard stage name
desired_start_dateNoDesired start date (ISO)

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full disclosure burden. It does this well by revealing non-obvious behaviors: default assignment to the caller, the fixed default board/column, and the description append semantics ('appended to any existing text, never replacing it outright'). It stops short of covering failure modes or permission requirements, but the key behavioral quirks an agent would trip on are disclosed.

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 key facts are front-loaded in the opening sentence (action, defaults, assignee), followed by requirements and optionals. It is reasonably compact, though the grammar is awkward ('assignee from who is call the tool') and the description-append clause partially duplicates the schema's own description text.

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 12-parameter create tool with no output schema and no annotations, the description covers the essentials — defaults, required params, key optionals — but leaves gaps. It doesn't hint at the return value (an agent will likely need the created task ID for subsequent calls like runrunit_get_task), and it doesn't clarify whether parameters like board_name/board_stage_name override the stated defaults.

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 100%, placing the baseline at 3. The description adds value beyond the schema with a concrete title format convention ('[project_name] - task_name') and by flagging which optional parameters matter most (description, project_id, assignments, desired_date). The trailing 'etc.' is vague, but the meaningful additions justify a step above baseline.

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

Purpose5/5

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

The description states a specific verb ('Create'), a concrete resource ('task on Runrun.it'), and precise default behavior: board Ongoing (ID: 96356), column Task, assignee = the caller. This clearly differentiates it from sibling tools like runrunit_update_task, runrunit_delete_task, and runrunit_move_task_stage.

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 gives clear invocation context — default board, column, assignee, and which parameters are required vs optional — so an agent knows how to call it. However, it never explicitly states when to prefer this tool over alternatives (e.g., runrunit_update_task for modifications, runrunit_move_task_stage for stage changes) or when NOT to use it. Usage is implied by the name and defaults rather than spelled out.

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

runrunit_create_workflowA

Create a workflow for a task (starts tracking eligibility). Task must not be closed, ongoing, or already have a workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It does disclose that creating a workflow 'starts tracking eligibility' and states prerequisite conditions. However, it does not describe the return value, failure modes, or whether any existing task state changes beyond workflow creation.

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 crisp sentences with no wasted words. The core action and its effect come first, followed by the eligibility restrictions. Every part serves a clear purpose.

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 single-parameter create tool, the description covers the action, the effect, and the required preconditions. The absence of an output schema means return-value behavior is not explained, which is a minor gap, but the description is otherwise sufficient for an agent to invoke the tool correctly.

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 coverage is 100%: the only parameter, task_id, has a description 'Task ID'. The tool description adds contextual meaning by linking task_id to the eligibility constraints, but does not provide additional parameter-level detail beyond what the schema already includes.

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

Purpose5/5

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

The description states a specific verb and resource: 'Create a workflow for a task'. The parenthetical '(starts tracking eligibility)' adds a meaningful effect that helps distinguish this from generic create tools and from sibling tools like runrunit_create_task.

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

Usage Guidelines4/5

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

The description gives explicit eligibility constraints: 'Task must not be closed, ongoing, or already have a workflow.' This clearly indicates when the tool can be used. It does not explicitly name alternative tools for other cases, but the constraints provide enough guidance for the agent to decide.

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

runrunit_delete_commentA

Delete a comment on Runrun.it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment ID

TDQS

A3.5/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 only that a comment is deleted, but it does not say whether deletion is permanent, whether it cascades to related data, or whether special permissions are required. This is a meaningful gap for a destructive operation.

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, front-loaded sentence with no filler. For a tool with one required parameter, this is appropriately concise and every word earns its place.

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 low-complexity tool with one well-documented parameter, the description provides enough to understand the core operation and how to invoke it. However, because there is no output schema and no annotation coverage, it would be more complete if it mentioned permanence, error behavior, or access requirements.

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 covers 100% of parameters: id is a required number described as 'Comment ID'. The description adds no additional meaning beyond the schema, so the baseline of 3 applies.

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 names a specific verb and resource: deleting a comment on Runrun.it. This clearly distinguishes it from sibling comment tools like create_comment, update_comment, get_comment, and list_task_comments, because the action is explicit 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 Guidelines3/5

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

Usage is implied by the verb: use this tool when the desired outcome is to remove a comment. However, the description gives no explicit context, prerequisites, or contrast with alternatives, such as when updating a comment would be more appropriate than deleting it.

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

runrunit_delete_taskC

Delete a task on Runrun.it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask ID

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 needs to disclose whether deletion is permanent, whether it cascades to subtasks or comments, and any permission requirements. It only says 'Delete,' leaving the destructive implications and side effects unspecified.

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 single sentence is concise and contains no filler, but it is also underspecified for a destructive operation. It lacks any front-loaded caveats or contextual detail that would help an agent use the tool safely.

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 one-parameter tool the schema covers the required id, so the description is minimally viable. However, absent annotations and output schema, useful context such as irreversibility and side effects is missing.

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 coverage is 100%: the id parameter is described as 'Task ID' and marked required. The description adds no extra meaning about the parameter, so the baseline 3 applies.

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 verb 'Delete' and resource 'a task on Runrun.it,' so the basic purpose is clear. However, it is essentially a restatement of the tool name and adds no distinguishing detail beyond what the name already conveys.

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 about when to use this tool, prerequisites, or alternatives. It neither explains when deletion is appropriate nor warns against using it when another task-related tool might be relevant.

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

runrunit_discord_create_channelA

Create a text channel in the Discord server (guild) if not exists, use comparison with name 'Client 1' -> 'client-1' to avoid create duplicate channels. Use guild_id from env (DISCORD_GUILD_ID) or pass explicitly. One channel per client pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesChannel name (slug, e.g. client-name alaways for legible, ex: 'Client 1' -> 'client-1')
topicNoChannel topic (optional)
guild_idNoDiscord guild (server) ID (optional if DISCORD_GUILD_ID set)
parent_idNoCategory channel ID (optional)

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden and does real work: it reveals idempotency ('if not exists', 'avoid create duplicate channels'), name normalization ('Client 1' -> 'client-1'), and guild_id resolution via env fallback. The main gap is that it doesn't state what happens when the channel already exists (return existing vs error) or what the return value looks like.

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?

Three tight sentences front-load the core function, then add normalization and configuration details. The only inefficiencies are minor redundancy with the schema's name-parameter description, which repeats the 'Client 1' -> 'client-1' example, and slight grammar friction ('avoid create duplicate channels').

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 no annotations and no output schema, the description covers the essentials: action, idempotency, naming pattern, and guild resolution. It is incomplete on the duplicate-channel outcome (no statement of return behavior), and it fails to clarify how this tool relates to the similarly-named runrunit_discord_get_or_create_channel sibling.

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 baseline is 3 and the schema already documents all four parameters. The description adds no new parameter-level meaning: its normalization example ('Client 1' -> 'client-1') and the env-var fallback for guild_id both duplicate text already present in the schema descriptions.

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: 'Create a text channel in the Discord server (guild)', with the 'if not exists' qualifier conveying idempotent creation. It is clear about the core action. However, it does not differentiate itself from the sibling runrunit_discord_get_or_create_channel, which covers nearly the same behavior, so it stops short of a 5.

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 provides operational context: 'Use guild_id from env (DISCORD_GUILD_ID) or pass explicitly' and 'One channel per client pattern', which implies the intended use case. But it never names alternatives or exclusion conditions — notably runrunit_discord_get_or_create_channel and runrunit_discord_list_channels — leaving the when-to-use decision ambiguous.

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

runrunit_discord_get_or_create_channelA

Get or create a Discord text channel for a Runrun.it client (1 channel per client, use client_name always avaliable transform to slug. ex: 'Client 1' -> 'client-1'). Returns channel_id and channel_name. Use before runrunit_discord_send_message to ensure the channel exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idNoDiscord guild ID (optional)
client_idNoRunrun.it client ID (or number as string)
client_nameNoClient name (used for channel name if client_id not provided)

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and delivers: it discloses the naming convention (client_name slug transformation with a concrete example), the one-channel-per-client dedup rule, and the return value (channel_id, channel_name). It doesn't explicitly state what happens when the channel already exists, though 'Get or create' plus '1 channel per client' strongly implies idempotent return of the existing channel.

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?

Three sentences, all earning their place, with purpose front-loaded. However, the first sentence is overloaded — the parenthetical crams in the dedup rule, the slug rule, and the example — and it contains a typo ('avaliable') that could confuse an agent. The information density is right but the packaging is rough.

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 no annotations and no output schema, the description covers return values, naming, and usage context reasonably well. The notable gap: the schema marks all 3 parameters optional, and the description calls client_name 'always avaliable' without clarifying what happens when zero arguments are supplied or which identifier takes precedence when both client_id and client_name are provided.

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 coverage is 100%, so the baseline is 3. The description adds meaningful operational value beyond the schema: it specifies that client_name must be slugified for the channel name and gives a concrete example ('Client 1' -> 'client-1'). This is essential since Discord channel names have strict format constraints and agents might otherwise pass the raw name.

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 operation ('Get or create a Discord text channel for a Runrun.it client') with a clear verb and resource. The one-channel-per-client constraint distinguishes it from the runrunit_discord_create_channel sibling, though not by explicit name. It is clear but stops short of fully differentiating from the create/list siblings.

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

Usage Guidelines4/5

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

Provides explicit when-to-use context: 'Use before runrunit_discord_send_message to ensure the channel exists.' This routes the agent to the correct call ordering in a common workflow. However, it doesn't say when not to use it or when to prefer runrunit_discord_create_channel or runrunit_discord_list_channels instead.

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

runrunit_discord_list_channelsA

List channels in the Discord server. Uses DISCORD_GUILD_ID or resolves from DISCORD_CHANNEL_ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idNoDiscord guild ID (optional if env set)

TDQS

A4.1/5.0
Behavior3/5

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

The description discloses one meaningful behavior: the target guild is obtained from DISCORD_GUILD_ID or resolved from DISCORD_CHANNEL_ID. However, with no annotations present, the full burden falls on the description, and it does not mention that the operation is read-only, what the response contains, or failure behavior when env vars are missing.

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 the main purpose first and the targeting detail second. There is no filler, and every sentence contributes useful information.

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 one-parameter tool with no output schema, this description is usable but slightly incomplete. It does not describe the returned channel data, such as whether channel IDs, names, or both are returned, which an agent may need when passing results to send_message or get_or_create_channel. With no annotations, there is also no safety context beyond the word 'list'.

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 already documents guild_id as 'optional if env set', but the description adds extra value by explaining that DISCORD_CHANNEL_ID can be used to resolve the guild. This helps the agent decide whether to supply guild_id or rely on environment configuration.

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 uses a specific verb ('List') and a clear resource ('channels in the Discord server'), making the tool's purpose immediately obvious. It is also clearly distinct from sibling Discord tools like send_message, create_channel, and get_or_create_channel.

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

Usage Guidelines4/5

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

The description clearly frames when this tool is relevant: when channel enumeration from the configured Discord server is needed. It does not explicitly contrast with discord_get_or_create_channel or discord_send_message, but the read-only list intent is unambiguous enough for an agent to select it correctly.

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

runrunit_discord_send_messageA

Send a message to a Discord channel. Use for execution history or notifications. Requires BOT_RUNRUNIT_REPORT and channel_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesMessage text (max 2000 characters)
task_idNoOptional Runrun.it task ID for context
channel_idYesDiscord channel ID
project_idNoOptional project ID for context

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden and does disclose an auth dependency ('Requires BOT_RUNRUNIT_REPORT and channel_id'). However, it does not mention side effects beyond sending, failure modes, or response behavior, so coverage is adequate but not rich.

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

Conciseness5/5

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

Two short sentences front-load the action and use cases, then state the requirements. Every sentence adds value and there is no redundant or vague wording.

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 4-parameter tool with no output schema, the description provides purpose, use cases, and required credentials. It does not explain return values or failure behavior, but an agent has enough to invoke it correctly.

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 four parameters. The description only repeats channel_id and adds no new parameter semantics 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?

The description states a specific action ('Send a message to a Discord channel') with a clear resource and intended use cases ('execution history or notifications'). This distinguishes it from sibling Discord channel-management tools like runrunit_discord_create_channel and runrunit_discord_list_channels.

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

Usage Guidelines4/5

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

It explicitly says this tool is for sending messages for execution history or notifications, giving an agent clear context for when to select it. It does not name alternatives or state when not to use it, but the use-case framing is sufficient for this simple tool.

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

runrunit_get_commentA

Get a single comment by ID from Runrun.it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment ID

TDQS

A3.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' implies a safe read operation, but the description reveals nothing about the return shape, possible errors, permissions, or pagination behavior. It adds little beyond what the tool name already communicates.

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?

One concise sentence with no filler. The key information — operation, resource, lookup key, and platform — is all present and front-loaded.

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 single-ID getter with one required parameter, the description is sufficiently complete. No output schema exists, but the return value of a get-by-ID operation is self-evident. The lack of explicit safety annotations is mitigated by the read-only nature of the verb 'Get'.

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 coverage is 100%, and the single parameter 'id' is already described as 'Comment ID' in the schema. The description repeats the by-ID concept but adds no additional semantic detail, so the baseline score of 3 applies.

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 uses a specific verb ('Get'), a specific resource ('a single comment'), and a specific retrieval key ('by ID'), making it clearly distinct from sibling tools like runrunit_list_task_comments, runrunit_create_comment, and runrunit_update_comment. The scope is unambiguous.

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

Usage Guidelines3/5

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

The description implies usage when an agent already has a comment ID and needs that one comment, but it offers no explicit guidance about when to prefer list_task_comments or other comment-related tools. The usage context is inferable but not stated.

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

runrunit_get_taskA

Get a single task by ID from Runrun.it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask ID

TDQS

A3.5/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 only states 'Get a single task by ID' without disclosing behavioral traits such as authentication requirements, rate limits, error handling for missing IDs, or response structure. This is insufficient for a mutation-free read 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?

One sentence, no wasted words. Front-loaded with verb and object. 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?

Tool is simple (one required param, no output schema). Description covers the essential action but omits return value information. Without an output schema, the agent has no hint about what data is returned.

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 coverage is 100% and the description adds no additional meaning beyond the schema's 'Task ID' field. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'a single task by ID'. It distinguishes from sibling tools like runrunit_list_tasks (which returns multiple tasks) and runrunit_create/update/delete_task (which modify).

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?

No explicit guidance on when to use this tool vs alternatives. The description implies it's for retrieving a specific task by ID, but doesn't compare with runrunit_list_tasks or mention prerequisites.

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

runrunit_install_cursor_skillsA

Copies bundled Cursor skills from the mcp-runrunit package (cursor-skills/) into the user's Cursor skills directory (~/.cursor/skills on any OS: uses os.homedir). Use to onboard teammates or sync team SKILL.md workflows. Prefer dry_run:true first to preview. Optional skill_names limits which folders to copy; target:global (default) or project with project_root for .cursor/skills in a repo; source_dir overrides auto-discovery of cursor-skills.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoglobal = ~/.cursor/skills (default). project = <project_root>/.cursor/skills — requires project_root when target is project.
dry_runNoIf true, only lists what would be copied (no writes). Recommended before first sync.
source_dirNoOptional absolute path to a cursor-skills directory. If omitted, resolves next to the installed mcp-runrunit package.
skill_namesNoOptional folder names under cursor-skills to copy (e.g. registrar-evidencias). If omitted, copies every subfolder that contains SKILL.md.
project_rootNoAbsolute path to the project root when target is project. Ignored when target is global.

TDQS

A4.2/5.0
Behavior4/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 discloses that the tool copies files into ~/.cursor/skills, uses os.homedir, supports dry-run preview, and allows scoping to specific skills or project directories. Missing details on what happens on conflicts or error handling, but the core behaviors are transparent.

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 few sentences long, front-loaded with the main action. It efficiently conveys usage and key options. Could be slightly more structured (e.g., bullet points), but it's clear and avoids verbosity.

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 complexity (5 optional parameters, no output schema), the description covers the operation and parameter interactions well. However, it lacks information about return values (e.g., success message, counts) and potential side effects (e.g., overwriting existing files). This is a gap, lowering completeness to a 3.

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 100% (all 5 parameters have descriptions). The tool description adds contextual nuance: explaining the default for target ('global'), when project_root is needed, and that source_dir overrides auto-discovery. This goes beyond repeating schema information, so a 4 is warranted.

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 copies bundled Cursor skills to the user's Cursor skills directory, specifying the verb 'copies' and the resource. It distinguishes from sibling tools which are unrelated (comments, tasks, workflows, Discord, etc.), making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides explicit use cases: 'onboard teammates or sync team SKILL.md workflows' and recommends 'Prefer dry_run:true first to preview.' It also explains parameter usage (dry_run, skill_names, target, project_root, source_dir). However, it does not explicitly state when not to use this tool or mention alternatives.

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

runrunit_list_board_stagesA

List board stages (Task, Ongoing, Manager Validation, etc.). Use board_id from a task. Returns stages with id and name — use with runrunit_move_task_stage when moving tasks by stage name.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYesBoard ID (from task.board_id)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that the operation returns stages with id and name, implying a read-only lookup, and provides no misleading side-effect information. For a simple list operation this is adequate, though it does not mention pagination or error 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?

Two sentences deliver the core action, example output, parameter provenance, and a downstream-use note. Everything is front-loaded and every sentence earns its place with no filler.

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

Completeness5/5

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

For a simple one-parameter read-only list tool with no output schema, the description is complete: it names the action, the return shape, the source of the input, and the likely follow-up tool. An agent has enough context to call it correctly without additional fields.

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 only parameter, board_id, is already fully described in the schema as 'Board ID (from task.board_id)'. The description repeats this guidance ('Use board_id from a task') but adds little semantic value beyond the schema, so the baseline of 3 is appropriate.

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 names a specific verb ('List'), a specific resource ('board stages'), and gives concrete examples of stages. It also clarifies that the tool returns stage id/name pairs, making it easy to distinguish from task-listing and task-mutation siblings.

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

Usage Guidelines4/5

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

It states where to get the required board_id ('from a task') and explicitly connects the tool to runrunit_move_task_stage for moving tasks by stage name. It does not explicitly list alternatives or when not to use the tool, but the usage context is clear and sufficient for a single-purpose list tool.

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

runrunit_list_projectsA

List all projects from Runrun.it. Optional filters: client_id, project_group_id, is_closed, is_active, page, limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
limitNoItems per page (1-100)
client_idNoFilter by client ID
is_activeNoFilter by active state
is_closedNoFilter by closed state
project_group_idNoFilter by project group ID

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavior disclosure. It states a read-only listing operation and enumerates filters, which is transparent about scope. However, it does not disclose pagination defaults, whether filters are mutually exclusive, or what the response contains.

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 short sentences front-load the action and then list filters in compact form. There is no filler or redundant wording.

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 list tool with six optional parameters fully documented in the schema, the description supplies adequate contextual shorthand. It could mention response shape or default pagination behavior, but the low complexity and lack of an output schema keep this gap minor.

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 already describes every parameter at 100% coverage. The description restates parameter names but adds no extra semantics beyond confirming they are optional.

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 opens with 'List all projects from Runrun.it', a concrete verb-resource pair that clearly identifies the operation. The 'projects' resource distinguishes it from sibling task-centric tools like runrunit_list_tasks.

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

Usage Guidelines4/5

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

The description establishes a clear context: use this tool when the goal is to enumerate projects, and the optional filter list indicates how to narrow results. It does not explicitly name exclusions or compare with sibling list tools, but the resource distinction is sufficiently clear.

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

runrunit_list_subtasksA

Use for listing subtasks of a task from Runrun.it.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesParent task ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Listing' reasonably implies a read-only operation and makes the target resource clear, but the description does not address output shape, pagination, error cases, or any side effects. This is acceptable for a simple list tool but not rich.

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

Conciseness5/5

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

The description is a single, direct sentence that leads with the intended action and names the object. Every word earns its place, and there is no redundancy or filler.

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 one-parameter list operation with no output schema, the description plus the schema provide enough information to invoke the tool correctly. It could be more complete by explicitly stating the read-only nature or the response format, but nothing essential is missing for basic 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 only parameter, task_id, is fully covered by the schema with the description 'Parent task ID'. The tool description adds no additional semantic detail, so the schema already handles the burden; a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('listing'), a concrete resource ('subtasks of a task'), and the platform ('Runrun.it'). It directly matches the tool name without merely repeating it and clearly differentiates it from siblings like runrunit_list_tasks and runrunit_list_task_comments.

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 phrase 'Use for listing subtasks of a task' establishes the intended scenario, which is helpful but generic. It does not mention alternatives, exclusions, or conditions for choosing this tool over a sibling, so an agent gets adequate but not explicit guidance.

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

runrunit_list_task_commentsC

List all comments on a task in Runrun.it.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID

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, but it only says 'List all comments.' It does not state whether the operation is read-only, whether pagination or ordering applies, what permissions are required, or what the response shape looks like. The word 'List' implies a read operation, but that is not explicitly confirmed or elaborated.

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, short sentence with no filler or redundant wording. It front-loads the action ('List all comments') and the resource ('a task in Runrun.it'), making it efficient and easy to scan.

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?

The definition is minimal and lacks important behavioral context such as return format, pagination, read-only status, and differentiation from sibling comment tools. Since there are no annotations and no output schema, the description alone is not enough for an agent to understand the full behavior of the 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?

The only parameter, task_id, is fully described in the input schema as 'Task ID' with type number, so schema coverage is 100%. The description does not add any extra meaning about where the task_id comes from or how it is used, but because the schema already documents the parameter adequately, this is acceptable.

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 action ('List all comments') on a clear resource ('a task in Runrun.it'), so the tool's primary purpose is immediately understandable. However, it does not explicitly differentiate itself from sibling comment tools like runrunit_get_comment or runrunit_create_comment, relying mostly on the tool name and the word 'all' for distinction.

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 such as runrunit_get_comment for a single comment or runrunit_list_tasks for finding tasks. The description simply states what the tool does, leaving the agent to infer the appropriate use case without any exclusions, prerequisites, or routing hints.

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

runrunit_list_task_filtersA

List all task filters available to the current user. Use to find filter_id for 'Minhas partes abertas' or other filters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. The word 'List' clearly indicates a non-mutating read operation, and 'available to the current user' conveys access scoping. It does not mention pagination or output shape, but these are less critical for a simple no-parameter list operation.

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 short sentences with no filler: the first states the operation, the second explains the practical use case and includes a concrete example. Every sentence earns its place.

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

Completeness4/5

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

For a parameterless list tool with no output schema, the description gives essential context: what is listed, for whom, and how the result should be used. It is nearly complete; only minor details like return format or whether custom filters are included are left unspecified.

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 accepts zero parameters, so there are no parameter semantics to document. The description adds value by explaining what to do with the result (find filter_id), which is sufficient at the baseline for a parameterless tool.

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?

States a specific action ('List') and resource ('all task filters available to the current user'), clearly distinguishing it from sibling tools that operate on tasks, projects, comments, or stages. The mention of finding filter_id reinforces the tool's concrete purpose without ambiguity.

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

Usage Guidelines4/5

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

Provides clear context by explaining the tool is used to find filter_id, including a concrete Portuguese filter example. It does not explicitly name alternatives or exclusions, but the use case is specific enough for an agent to select it appropriately among siblings.

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

runrunit_list_tasksC

List tasks from Runrun.it. Optional filters: ids, user_id, follower_id, responsible_id, assignee_id, filter_id, board_stage_id, project_id, is_closed, is_working_on, sort, sort_dir, page, limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoComma-separated task IDs
pageNoPage number (default 1)
sortNoSort field (e.g. close_date, queue_position)
limitNoItems per page (1-100)
user_idNoCreator user ID
sort_dirNoSort direction
filter_idNoID of a task filter (e.g. 'Minhas partes abertas')
is_closedNoFilter by delivered tasks
project_idNoProject ID
assignee_idNoAssignee/executor principal user ID
follower_idNoFollower user ID
is_working_onNoFilter by in progress
board_stage_idNoFilter by board stage (e.g. Ongoing)
responsible_idNoResponsible/assignee user ID (e.g. for 'Minhas partes abertas')

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and lists filters; it does not disclose pagination behavior, default limits, filter combinability, read-only nature, or any side effects.

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 front-loaded sentence, which is concise. However, the trailing list of filters adds no new information beyond the schema and is somewhat redundant, though not bloated.

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?

With 14 optional parameters, no output schema, and no annotations, the description is too thin to fully support correct invocation. Missing are the response shape, pagination defaults, and whether filters combine; an agent would need to infer or probe.

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 baseline is 3. The description only repeats parameter names already present in the schema and provides no additional meaning about formats, dependencies, or how filters interact.

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 uses a specific verb+resource ('List tasks from Runrun.it') with an explicit filter list, making its primary action clear. It is distinguishable from siblings like get_task, create_task, and list_subtasks, although it doesn't explicitly contrast itself with them.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus get_task, list_subtasks, or other list tools. The phrase 'Optional filters' implies filtering capability but does not state contexts, exclusions, or alternatives.

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

runrunit_move_task_stageA

Moves a task to a board stage (column). Tasks must only advance; backward move is allowed only to 'Task' or 'Blocked Task' (e.g. impediment or not finished). Use board_stage_name or board_stage_id. For stages that require 'Link da branch', fill it first with runrunit_update_task.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID to move
board_stage_idNoStage ID (from runrunit_list_board_stages)
board_stage_nameNoStage name (e.g. 'Task', 'Ongoing', 'Manager Validation', 'Ready for production'). Partial match, case-insensitive.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It adds meaningful context beyond the schema: stage-advancement rules and a required prerequisite field. It does not, however, describe what happens on failure or what the tool returns, which would be useful for a mutation without an 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?

Three tight sentences: action, constraint, parameter guidance, and prerequisite. Every sentence earns its place and the most important info is front-loaded.

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

Completeness4/5

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

The description is sufficient for a competent agent to invoke the tool correctly, including edge-case constraints and a prerequisite. The main gap is the absence of any mention of return values or failure behavior, especially since there is no output schema and no annotations to cover these.

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 100%, so the baseline is 3. The description adds value by clarifying that board_stage_name and board_stage_id are alternative ways to specify the destination, which is not obvious from the schema alone. It also ties the 'Link da branch' prerequisite to a separate tool.

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

Purpose5/5

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

The description states a specific action ('Moves a task to a board stage (column)') with a clear resource and target. It is easily distinguishable from sibling tools like create_task, update_task, and list_board_stages.

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

Usage Guidelines5/5

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

It gives explicit constraints on when moves are allowed ('Tasks must only advance; backward move is allowed only to Task or Blocked Task'), explains the two acceptable destination parameters, and names a prerequisite tool (runrunit_update_task) for stages requiring 'Link da branch'.

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

runrunit_project_detect_platformA

Identifies the project platform based on task tags in Runrun.it (Node, Python, Ruby, Go, Rust, etc.) and suggests the command to upload the development environment. The platform is defined by task tags (tags_data/tag_list), not by repository files.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesID da task no Runrun.it. As tags dessa task definem a plataforma (ex.: node, react, python).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that the tool does not infer platform from repository files, relies on tags_data/tag_list, and only 'suggests' a command rather than executing it. It does not detail failure modes or exact output, but the core behavior is 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?

Two sentences, with the main action and scoping condition front-loaded. Every clause adds value: the tag examples, the command-suggestion behavior, and the explicit exclusion of repository files.

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 one-parameter tool with no output schema, the description gives enough to invoke it correctly and understand the returned artifact (a suggested upload command). It omits edge cases such as unrecognized tag sets, but the scope is simple enough that this is a minor gap.

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 coverage is 100%, with the task_id property already explaining that the task's tags define the platform. The description reinforces this but adds no new parameter-level detail, so it meets the baseline without going beyond it.

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 uses a specific verb ('Identifies') and resource ('project platform'), and adds the exact mechanism: task tags in Runrun.it. It also mentions the secondary purpose ('suggests the command to upload the development environment') and explicitly differentiates from file-based detection, which distinguishes it from sibling task tools.

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

Usage Guidelines4/5

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

It clearly states the required context: platform detection is driven by task tags, so the agent should not attempt repository-file inspection. There is no explicit alternative tool named, but no sibling tool has the same detection role, and the description gives enough situational guidance.

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

runrunit_suggest_devs_with_free_queueA

Sugere desenvolvedores com fila mais livre com base em tarefas na coluna Task, considerando estimativas e filtros opcionais (time, projeto, tags).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNúmero máximo de devs sugeridos (1 a 10, padrão 3).
team_idNoID de time para filtrar desenvolvedores.
board_idNoID do board Kanban onde está a coluna Task. Necessário se task_stage_ids não for informado.
squad_idNoID de squad para filtrar desenvolvedores.
tribe_idNoID de tribo para filtrar desenvolvedores.
project_idNoID de projeto para filtrar tarefas.
project_tagNoTag de projeto para filtrar tarefas.
developer_idsNoLista explícita de IDs de desenvolvedores candidatos (Runrun.it).
load_strategyNoEstratégia de cálculo de carga: tasks_and_time (padrão), only_tasks ou only_time.
task_stage_idsNoIDs de estágios/colunas que representam a coluna Task. Se não informado, tenta identificar por convenção de nome no board informado.
only_developersNoSe verdadeiro, considera apenas desenvolvedores; exclui Gestor, Social, Inovação, etc. (padrão true).
only_active_devsNoSe verdadeiro, tenta considerar apenas desenvolvedores ativos (por exemplo, não de férias).
include_zero_tasksNoSe verdadeiro, inclui devs elegíveis sem tarefas na coluna Task (padrão true).

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does explain the core logic (based on tasks in the Task column, estimates, and optional filters), but it doesn't mention whether the operation is read-only, what the return format is, or any edge-case behavior. Still, 'sugere' implies a non-mutating suggestion operation, adding some transparency beyond the tool name.

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 Portuguese sentence with no fluff or redundancy. It front-loads the main purpose and includes the key qualifiers (Task column, estimates, filters). It could be slightly better structured, but it earns its place and remains highly readable.

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 13 optional parameters and no output schema, the one-sentence description plus the rich parameter schema is mostly adequate for a simple call. However, it doesn't describe the return value (e.g., a list of developer IDs with queue scores), nor does it summarize which parameters are typically needed together for useful results. The schema covers individual parameter dependencies, so this is a partial gap rather than a critical one.

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 13 parameters are already documented with meanings, defaults, and constraints. The description adds no additional parameter semantics beyond mentioning optional filters (time, projeto, tags), which are already covered in the schema. Baseline 3 applies because the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb and resource: 'sugere desenvolvedores com fila mais livre' based on tasks in the Task column with estimates and optional filters. This clearly distinguishes it from sibling tools like list_tasks or get_task, which focus on listing or retrieving tasks rather than suggesting developers by queue load.

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 use case — finding developers with the freest workload — but does not explicitly say when to prefer this over alternatives or when not to use it. It doesn't name any sibling tools or provide exclusions, so the agent must infer the context from the description alone.

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

runrunit_update_commentB

Update a comment's text on Runrun.it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment ID
textYesNew comment text

TDQS

B3.2/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 behavioral disclosure. It clearly states that the mutation affects the comment's text, which is transparent about the primary effect. However, it does not disclose side effects, permission requirements, reversibility, or return behavior, leaving notable gaps for a write operation.

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, front-loaded sentence with no filler, efficiently conveying the core purpose. It is appropriately sized for a simple tool, though the brevity contributes to the missing usage and behavioral guidance.

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 two-parameter tool with full schema coverage, the description plus schema is enough to construct a basic call. However, there is no output schema, no annotations, and no guidance about the comment lifecycle or when to prefer sibling tools. It is minimally viable but not 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 input schema provides 100% coverage with descriptions for both parameters ('Comment ID' and 'New comment text'). The tool description adds no additional semantic meaning beyond what the schema already provides, so the baseline of 3 applies.

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 ('Update') and a specific resource ('a comment's text') with a platform qualifier, making the tool's purpose unambiguous. It can be distinguished from sibling comment tools like create_comment, delete_comment, and comment_reaction without opening the schema, though it does not explicitly name 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?

There is no guidance on when to use this tool versus alternatives. The description does not mention that it is for existing comments only, that create_comment should be used for new comments, or that delete_comment should be used for removal. The agent must infer usage solely from the tool name and general update semantics.

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

runrunit_update_taskA

Update a task on Runrun.it. Pass task ID and an object with fields to update (e.g. title, desired_date). For the PR/branch link use link_da_branch (URL); it is stored in the custom field 'Link da branch' (custom_32). To move a task between columns (Task, Ongoing, Manager Validation), use runrunit_move_task_stage.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask ID
taskYesFields to update (e.g. { title: 'New title' }, { link_da_branch: 'https://github.com/.../pull/21' }). link_da_branch maps to custom field Link da branch.

TDQS

A4.7/5.0
Behavior4/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 discloses the mapping of 'link_da_branch' to a custom field and explains that it expects a URL. While it doesn't detail all side effects (e.g., overwrite vs. merge), it gives enough behavioral context for a mutation 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?

Two sentences with no redundancy. The first sentence states the purpose and required parameters; the second adds a crucial note about a special field and directs to a sibling tool. Every sentence earns its place.

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

Completeness5/5

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

Given the parameter count (2, one nested), lack of output schema, and no annotations, the description covers the essentials: what the tool does, what fields can be updated (with examples), and how to handle a non-obvious custom field. It also addresses an ambiguous scenario (stage moves) by referencing the correct sibling tool.

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

Parameters4/5

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

Schema coverage is 100% (both parameters documented). The description adds value beyond the schema by explaining that 'link_da_branch' maps to custom field 'custom_32', providing an example URL, and clarifying that the task object should contain fields to update. This is more informative than the schema alone.

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 'Update a task on Runrun.it' with a specific verb and resource. It distinguishes from the sibling tool 'runrunit_move_task_stage' by explicitly mentioning that moving between columns should use that tool instead.

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

Usage Guidelines5/5

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

The description explicitly indicates when to use this tool (update task fields) and when not to (moving stages), naming the alternative tool. This provides clear guidance for an agent.

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

runrunit_upload_image_cloudinaryA

Faz upload de uma imagem para a Cloudinary e retorna a URL pública (secure_url). Usa as variáveis CLOUDINARY_* já configuradas no MCP (ex.: em mcp.json). Use para screenshots, evidências, PRs e comentários.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesCaminho absoluto ou relativo do arquivo de imagem no disco (ex.: path retornado por browser_take_screenshot).
public_idNoID público opcional na Cloudinary (ex.: pr-evidencia-desktop, docs-screenshot-1).

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It discloses that uploads go to Cloudinary and return a secure_url, and mentions env vars are already configured. However, it omits details about whether overwriting occurs, allowed image formats, error handling, or any destructive potential. The description is adequate but could be more 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 sentences, perfectly front-loaded: first sentence defines purpose and output, second provides usage guidance. No wasted words.

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

Completeness4/5

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

Given no output schema, the description hints at return value (secure_url). It covers the 2 parameters (1 required) with 100% schema coverage. It could mention file size limits or format restrictions, but for a straightforward upload tool it is sufficient.

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 coverage is 100%, so baseline is 3. The description adds useful context: for file_path it gives examples of absolute/relative paths and references browser_take_screenshot; for public_id it provides pattern examples. This enhances understanding beyond the schema alone.

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 uploads an image to Cloudinary and returns a public URL. It lists specific use cases (screenshots, evidence, PRs, comments), and no sibling tools perform similar uploads, so differentiation 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 Guidelines4/5

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

The description explicitly tells when to use the tool (for screenshots, evidence, etc.) and mentions pre-configured environment variables. It does not state when not to use it, but there are no alternative upload tools among siblings, so it's clear.

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. 27 tool updatesv1.3.0
    • First observedrunrunit_assignment_play
    • First observedrunrunit_comment_reaction
    • First observedrunrunit_create_comment
    • First observedrunrunit_create_external_comment
    • First observedrunrunit_create_task
    • First observedrunrunit_create_workflow
    • First observedrunrunit_delete_comment
    • First observedrunrunit_delete_task
    • First observedrunrunit_discord_create_channel
    • First observedrunrunit_discord_get_or_create_channel
    • First observedrunrunit_discord_list_channels
    • First observedrunrunit_discord_send_message
    • First observedrunrunit_get_comment
    • First observedrunrunit_get_task
    • First observedrunrunit_install_cursor_skills
    • First observedrunrunit_list_board_stages
    • First observedrunrunit_list_projects
    • First observedrunrunit_list_subtasks
    • First observedrunrunit_list_task_comments
    • First observedrunrunit_list_task_filters
    • First observedrunrunit_list_tasks
    • First observedrunrunit_move_task_stage
    • First observedrunrunit_project_detect_platform
    • First observedrunrunit_suggest_devs_with_free_queue
    • First observedrunrunit_update_comment
    • First observedrunrunit_update_task
    • First observedrunrunit_upload_image_cloudinary

TDQS

A3.5/5.0

Scored across 27 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: comments, tasks, projects, workflows, assignments, Discord channels, image upload, etc. Even similar tools (e.g., create_comment vs create_external_comment) are differentiated by channel type. No overlapping or ambiguous tools.

Naming Consistency4/5

All tools start with 'runrunit_' and mostly follow verb_noun pattern (e.g., get_comment, list_tasks). However, 'assignment_play' and 'suggest_devs_with_free_queue' deviate from the pattern, and 'project_detect_platform' places verb after noun. Still, the majority are consistent.

Tool Count3/5

27 tools is moderately high, but the server covers multiple domains (task management, comments, Discord integration, Cloudinary upload, Cursor skills). While each tool has its place, the breadth feels slightly excessive and could be trimmed.

Completeness3/5

Core task CRUD and comment lifecycle are covered, along with Discord and image upload. However, missing project update/delete, assignment management beyond play, and time tracking leave notable gaps for a complete Runrun.it integration.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers