Skip to main content
Glama

ado-mcp-server

CI

MCP server local que dá ao Claude Code acesso controlado e seguro-por-padrão ao Azure DevOps Server on-premise: gestão completa de work items (epic, feature, PBI, task, bug — campos, hierarquia, links, discussão, anexos), pull requests e repos. Ver DESIGN.md para o modelo de arquitetura e SECURITY.md para o modelo de ameaças.

Instalação

git clone https://github.com/andrelopes-code/ado-mcp-server.git ~/dev/ado-mcp-server
cd ~/dev/ado-mcp-server
npm install
cp .env.example .env
# edite o .env (ver abaixo)

Requer Node 20 ou superior.

Related MCP server: Azure DevOps MCP Server

PAT de privilégio mínimo (obrigatório)

No Azure DevOps: User settings → Personal access tokens → New Token. Escopos:

  • Work Items — Read & Write

  • Code — Read & Write

  • Pull Request Threads — Read & Write

Nunca marque Full access nem escopos Manage. Use expiração curta. Cole em DEVOPS_PAT no .env.

.env

Var

Papel

DEVOPS_URL

base da coleção, ex. https://servidor/colecao. Prefira https — sobre http o PAT viaja em Basic auth sem TLS, e o server avisa no stderr ao subir

DEVOPS_PROJECT

projeto padrão de toda tool

DEVOPS_PAT

o PAT mínimo acima

API_VERSION

versão da REST API do DevOps on-prem (default 6.0)

ADO_MODE

read (default, só lê) | write (habilita mutações). Relido ao vivo do .env a cada escrita — trocar vale na próxima chamada, sem reiniciar o server

ADO_PROJECT_ALLOWLIST

outros projetos alcançáveis pelo parâmetro project das tools, separados por vírgula (vazio = só DEVOPS_PROJECT; * = todos da coleção)

ADO_WIT_TYPE_ALLOWLIST

tipos que wit_create pode criar (vazio = todos os do processo)

ADO_WIT_AREA_ALLOWLIST

area paths onde a escrita de work item é permitida, por prefixo (vazio = todo o projeto)

ADO_ATTACH_MAX_MB

limite de tamanho por anexo em wit_attach (default 25)

ADO_ATTACH_EXT_ALLOWLIST

extensões de anexo permitidas (vazio = todas)

ADO_REPO_ALLOWLIST

repos permitidos, separados por vírgula (vazio = todos)

ADO_PROTECTED_BRANCHES

branches sob sinalização reforçada em pr_create/pr_update (default main,master,develop,release/*)

ADO_AUDIT_LOG

caminho da trilha de auditoria (relativo = a partir do diretório do server; default ./ado-mcp-audit.log)

ADO_TIMEOUT_MS

timeout das chamadas HTTP em ms (default 30000)

Registrar no Claude Code (user scope)

claude mcp add --scope user ado -- node ~/dev/ado-mcp-server/src/index.js

Verifique: claude mcp list deve mostrar ado.

Segurança — como não destruir o DevOps

  • Read-only por padrão. Mutações só com ADO_MODE=write no .env (fora do alcance do Claude).

  • Preview → confirm. Toda escrita retorna um preview e só executa com confirm: true. Em wit_create, wit_update e wit_link o preview é validado pelo próprio ADO (validateOnly=true): regra de processo violada aparece antes do confirm, sem persistir nada.

  • Nada destrutivo existe. Sem delete/abandon/merge. O merge de PR é sempre manual no web UI.

  • Blast radius. Um projeto padrão, imposto no servidor em toda leitura de work item e em todo alvo de link; outros projetos só com ADO_PROJECT_ALLOWLIST. Allowlists opcionais de repo, tipo de work item, area path e extensão de anexo.

  • Concorrência. expectedRev emite um test /rev: se o card mudou entre a leitura e a escrita, o patch inteiro falha em vez de sobrescrever.

  • Auditoria. Toda tentativa de escrita — aplicada, bloqueada ou falhada — vai para ado-mcp-audit.log, que rotaciona ao passar de 5 MB.

Modo de escrita e permissões (recomendado)

O gate de aprovação por-ação numa sessão interativa é o prompt de permissão do próprio Claude Code — ele pergunta antes de cada tool. Postura recomendada:

  • Deixe ADO_MODE=write fixo (sem editar arquivo no dia a dia).

  • Não marque "don't ask again" nas tools de escrita (wit_create/update/link/unlink/comment/attach, pr_create/update/add_reviewers/comment) — deixe-as perguntando. As de leitura pode liberar à vontade.

  • Assim cada escrita para 2×: o preview do server + o seu "Yes" no Claude Code. Nada é enviado sem sua aprovação.

ADO_MODE=read é o backstop para sessões autônomas / auto-aprovadas (sem humano no loop). Como o modo é relido ao vivo do .env, virar para read antes de um run desatendido vale na próxima chamada, sem reiniciar.

Uso pelo Claude

Leitura (sempre): wit_query, wit_get, wit_tree, wit_comments, wit_history, wit_meta, pr_list, pr_get, repo_list, branch_list, commit_list, project_list. Escrita (write + confirm): wit_create, wit_update, wit_link, wit_unlink, wit_comment, wit_attach, pr_create, pr_update, pr_add_reviewers, pr_comment.

Work items

Tool

Para quê

wit_query

WIQL, preset (my_active/my_recent) ou query salva; aceita fields e expand

wit_get

detalha ids com os campos pedidos (System.Description, critérios de aceite) e, com expand: relations, pai, filhos, PRs e anexos

wit_tree

WIQL FROM WorkItemLinks devolvida como árvore epic → feature → item

wit_comments

discussão com autor e data (API de comments; cai para System.History onde o preview não existe)

wit_history

revisões campo a campo, com valor anterior e novo

wit_meta

types, states, fields, categories, relationtypes, areas, iterations, tags do processo

wit_create

cria qualquer tipo com campos, tags, área, iteração, pai e links

wit_update

campos, estado e tags de um id ou de um lote (ids, via /wit/$batch)

wit_link / wit_unlink

hierarquia, related, predecessor/sucessor, duplicado, hyperlink e artefato de código (pull_request, commit, branch)

wit_comment

publica na discussão

wit_attach

sobe um arquivo local e o anexa ao card

wit_meta é o caminho para descobrir tipos, estados e campos válidos antes de escrever — o processo do projeto define quais existem.

Pull requests

pr_update edita título, descrição, rascunho e branch de destino. Status fica de fora de propósito: o mesmo PATCH da API aceita abandoned (fecha) e completed (mergeia), e nenhum dos dois deve ser alcançável por uma tool de edição.

Reviewers em pr_create/pr_add_reviewers usam ids (GUID) de identidade, não nomes.

Trocar de projeto sem subir outro server

Toda tool aceita project opcional. Sem ele vale DEVOPS_PROJECT. Qualquer outro nome precisa estar em ADO_PROJECT_ALLOWLIST (* libera a coleção inteira), senão a chamada falha antes de qualquer request. project_list mostra os projetos da coleção e quais estão liberados. O projeto efetivo entra no preview e na linha de auditoria de toda escrita.

Fluxo típico de escrita: o Claude chama a tool sem confirm → você lê o preview → ele repete com confirm: true.

Desenvolvimento

npm test     # vitest
npm run lint # eslint

docs/PLAN.md guarda o plano de construção original.

Uma nota para quem for mexer nas dependências: stdout é o canal do protocolo MCP stdio. Qualquer biblioteca que escreva em stdout no import corrompe o transporte — é por isso que o dotenv é carregado com quiet: true. Use console.error para qualquer diagnóstico.

Licença

MIT — ver LICENSE.

Available Tools

22 tools
branch_listB

Lista branches de um repo. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
filterNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

B3.4/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 behavioral burden. It explicitly signals read-only behavior with 'Leitura', which is useful, but it does not disclose return format, pagination, required permissions, or any other behavioral traits that could affect invocation.

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

Conciseness4/5

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

The description is very short and front-loaded, with no filler. Every word earns its place, though the brevity leaves out useful detail. It is appropriately concise for a simple listing tool.

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

Completeness2/5

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

For a tool with 3 parameters, low schema coverage, and no output schema, the description is not complete enough. It lacks explanations of the required 'repo' parameter and the 'filter' parameter, and provides no return-value context. An agent could call it but may guess at parameter behavior.

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

Parameters2/5

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

Schema coverage is only 33%, with only the 'project' parameter described. The description adds almost no parameter-level meaning: it references 'repo' generically but does not explain the required 'repo' parameter format or the semantics of 'filter'. The low schema coverage is not compensated.

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: 'Lista branches de um repo' (lists branches of a repo). The resource type clearly distinguishes it from sibling list tools like pr_list, commit_list, and repo_list.

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 intended use is implied clearly by the tool name and description—list branches of a repository—but there is no explicit guidance about when to choose this over other list tools, nor any exclusions or alternative recommendations. The context is adequate but relies on inference.

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

commit_listA

Lista commits recentes de um repo/branch. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
repoYes
branchNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

A3.6/5.0
Behavior3/5

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

The description explicitly says 'Leitura' (read-only), which is a useful behavioral disclosure since no annotations are provided. However, it does not describe auth requirements, default branch behavior, pagination, or output format, so the burden is only partially met.

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 very concise: a single informative sentence plus one clarifying read-only label. It is front-loaded and contains no filler.

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

Completeness3/5

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

For a simple read-only list tool with only one required parameter, the description plus schema is minimally adequate. Still, the low parameter coverage, lack of output schema, and absence of behavioral details like defaults or limits leave meaningful gaps for correct invocation.

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

Parameters2/5

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

Schema description coverage is only 25%, and the description adds minimal parameter meaning. It mentions repo/branch indirectly, but does not clarify the semantics of 'top', branch optionality, or project allowlist behavior beyond what is already in 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 and resource: 'Lista commits recentes de um repo/branch' (list recent commits of a repo/branch). This clearly distinguishes it from sibling list tools like pr_list, branch_list, and repo_list.

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

Usage Guidelines3/5

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

The description implies the tool is for retrieving commit history, but it does not explicitly state when to use it over alternatives or mention any exclusions. The context is clear enough for basic selection, but there is no direct guidance about sibling tools.

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

pr_add_reviewersB

Adiciona reviewers a um PR. Escrita: write + confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
prIdYes
repoYes
confirmNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.
reviewersYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. 'Escrita: write + confirm' does disclose that this is a mutating operation and signals a confirmation requirement, which is useful. However, it does not describe side effects, permissions, idempotence, or what the confirmation step involves, leaving a substantial gap.

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

Conciseness4/5

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

The description is compact, front-loaded with the main action, and adds a behavioral note without padding. The second sentence is terse and slightly cryptic but still scannable and short.

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

Completeness2/5

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

For a 5-parameter write operation with no annotations and no output schema, the description is too thin. It lacks detail on required parameters, confirm behavior, project allowlisting, and expected outcomes, so an agent cannot reliably invoke it from the description alone.

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

Parameters2/5

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

Schema description coverage is only 20%, yet the description contributes meaning only for 'reviewers' ('adiciona reviewers'). It does not explain repo, prId, or the critical confirm boolean, and it fails to compensate for the undocumented majority of the input schema.

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 ('Adiciona reviewers a um PR') with a clear object, and 'reviewers' clearly distinguishes it from generic PR operations like pr_create/pr_update. However, it does not explicitly disambiguate from pr_update or mention the scope of the addition, 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 phrase 'Adiciona reviewers a um PR' implies the use case: when reviewers must be added to a pull request. There is no explicit guidance on when to prefer this over pr_update/pr_comment, no exclusions, and no mention of the confirmation workflow beyond 'write + confirm', so guidance is only implicit.

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

pr_commentB

Comenta num PR (abre thread). Escrita: write + confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
prIdYes
repoYes
textYes
confirmNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

B3.4/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. It does disclose that the operation is a write requiring confirmation and that it opens a thread, which is useful. However, it does not clarify side effects, permission requirements, whether this creates a top-level thread or replies to an existing one, or failure behavior.

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

Conciseness4/5

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

The description is very short and front-loaded with the core action. There is no padding, though 'Escrita: write + confirm' is cryptic and mixes languages, slightly reducing clarity.

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

Completeness2/5

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

For a mutating tool with five parameters, no annotations, and no output schema, the description omits important usage context: how confirm is used, what the comment body should contain, how repo/prId/project relate, and what the response indicates. It is not complete enough for confident invocation.

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

Parameters2/5

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

Schema description coverage is only 20%, so the description must compensate, but it only alludes to 'confirm' via 'write + confirm' and does not explain repo, prId, text, or the confirm behavior in detail. The parameter names are somewhat self-explanatory, but the description adds little beyond the bare 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 verb ('Comenta'), a specific resource ('num PR'), and a distinguishing behavior ('abre thread'). This clearly differentiates it from sibling tools like wit_comment (work item comments) and pr_update.

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

Usage Guidelines3/5

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

The description gives a clear context cue ('num PR') but does not explicitly state when to use this tool over alternatives such as wit_comment, nor does it provide exclusion criteria. 'Escrita: write + confirm' describes operation mode, not tool selection.

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

pr_createA

Cria um pull request (NÃO faz merge). Escrita: write + confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
titleYes
sourceYes
targetYes
confirmNo
isDraftNocria o PR como rascunho (draft)
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.
reviewersNoids (GUID) de reviewers
descriptionNo
workItemIdsNo

TDQS

A3.7/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 transparency burden. It does disclose that this is a write operation requiring confirmation ('Escrita: write + confirm') and explicitly says it does not merge. However, it omits other behavioral details such as permissions, side effects, reversibility, or response format. The added context is helpful but not comprehensive.

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 contain all the essential information with no filler. The primary purpose is stated first, followed by a key non-behavior and a write/confirmation signal. Every word earns its place.

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

Completeness2/5

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

Given 10 parameters, no output schema, and no annotations, the description is too sparse to be fully actionable. It does not clarify required parameter semantics, return values, or failure conditions. The minimal caution about merge and confirmation is useful, but an agent would still face ambiguity about how to fill source, target, and other fields correctly.

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

Parameters2/5

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

Schema description coverage is only 30%, so the description should compensate for undocumented parameters. It only hints at the confirm parameter via 'write + confirm' and does not explain meaning for repo, source, target, title, description, or workItemIds. Although some names are self-explanatory, the critical source/target branch semantics are not clarified.

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 explicitly states the action and resource: 'Cria um pull request' (creates a pull request). It also disambiguates by saying 'NÃO faz merge' (does NOT merge), which clearly distinguishes the operation from a merge action. This is specific and immediately understandable.

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 main use case is clear: use this tool to create a pull request. The explicit warning 'NÃO faz merge' tells the agent not to use this tool when a merge is intended. It does not name alternatives like pr_update or pr_add_reviewers, but the sibling list and the verb 'create' make the intended context clear.

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

pr_getB

Detalha um pull request. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
prIdYes
repoYes
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

B3/5.0
Behavior3/5

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

The description discloses that the operation is read-only ('Leitura') and that it returns details of a pull request, which is useful behavioral context. However, with no annotations provided, the description carries the full transparency burden and does not mention potential caveats such as the ADO_PROJECT_ALLOWLIST restriction, error behavior, or what specific fields are returned.

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

Conciseness5/5

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

The description is extremely concise, with no filler words. 'Detalha um pull request' states the action and object, and 'Leitura' adds the read-only distinction. Both sentences earn their place, and the information is front-loaded.

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

Completeness2/5

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

For a simple get operation this is minimal but not fully complete. There is no output schema and no annotations, so the description should provide more context about return format, the optional project parameter, or how the project allowlist works. It gives the basic idea but leaves an agent under-informed about important operational details.

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

Parameters2/5

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

The description adds no parameter-level meaning; it does not explain prId, repo, or project. Schema coverage is only 33%, so the description should compensate, but it does not. Parameter names like prId and repo are somewhat self-explanatory, yet the description contributes no value beyond the schema for the undocumented parameters.

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 ('Detalha') and resource ('um pull request'), making its purpose clear: retrieve details for a single pull request. 'Leitura' further signals it is a read operation, which separates it from write siblings like pr_create, pr_update, and pr_comment. It does not explicitly differentiate from pr_list, but the singular 'um' implies a single-item detail lookup.

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

Usage Guidelines2/5

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

The description only says 'Leitura' (reading), which implies this is for read use but provides no explicit guidance on when to choose it over pr_list or other PR-related tools. It does not mention alternatives, exclusions, or any conditions that would select this tool.

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

pr_listB

Lista pull requests de um repo. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
statusNo
targetNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.
creatorIdNo

TDQS

B3/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 it does state 'Leitura' (read-only), a useful side-effect hint. However, it discloses nothing else, such as pagination, ordering, or potential permission needs.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core purpose is front-loaded and the read-only note earns its place.

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

Completeness2/5

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

For a tool with 5 parameters, no output schema, and no annotations, this description provides only the bare purpose. It lacks enough detail about filters and behavior for an agent to confidently select correct parameters.

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

Parameters2/5

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

Schema description coverage is only 20%, and the description does not compensate for the undocumented parameters (status, target, creatorId). It only clarifies that the listing is scoped to a repo, leaving most parameter meanings to be inferred from names and the enum.

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 starts with 'Lista pull requests de um repo', stating a specific action and resource. 'Leitura' clarifies it is a read operation, which helps distinguish it from mutating PR tools like pr_create or pr_update, 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 about when to use this tool versus alternatives such as pr_get or wit_query. The name implies listing, but no context is given about filtering scenarios or when another PR-related tool would be more appropriate.

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

project_listA

Lista os projetos da coleção e marca quais podem ser usados no parâmetro project das demais tools. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description discloses that this is a read operation ('Leitura'), which is important safety-relevant behavior. It also states that it marks which projects can be used elsewhere, adding output semantics beyond the tool name. It does not detail output format, but for a zero-parameter list tool this is acceptable.

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 entire description is one concise sentence that front-loads the main action and includes a useful behavioral note. 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 parameterless, read-only list tool, the description sufficiently states what it returns (projects) and why it matters (valid values for the project parameter). No output schema exists, but the description covers enough for an agent to invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4 and there is no need to explain parameter syntax. The description still adds value by clarifying the meaning of the 'project' parameter used by sibling tools.

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 and resource: it lists projects in the collection. It also adds the unique purpose of marking which projects are valid for the 'project' parameter of other tools, which clearly distinguishes it from siblings like repo_list or commit_list.

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 implies the tool should be used before other tools to discover valid project values for their project parameter. It gives clear context but does not explicitly state when not to use it or name alternatives as exclusions.

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

pr_updateA

Edita título, descrição, rascunho ou branch de destino de um PR. NÃO altera status: abandonar e mergear não passam por aqui. Escrita: write + confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
prIdYes
repoYes
titleNo
targetNonova branch de destino
confirmNo
isDraftNofalse tira o PR de rascunho
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.
descriptionNo

TDQS

A4.1/5.0
Behavior4/5

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

Sem anotações, a descrição precisa carregar o comportamento. Ela revela que se trata de uma operação de escrita que exige confirmação ('Escrita: write + confirm') e delimita o que a ferramenta não faz. Isso adiciona contexto além do schema, embora não detalhe efeitos colaterais ou permissões.

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?

Duas frases curtas e diretas, com a ação principal e as restrições apresentadas no início. Não há redundância ou conteúdo desnecessário.

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?

A descrição é suficiente para o uso básico, mas não há output schema e a ferramenta tem 8 parâmetros. Faltam detalhes sobre o retorno da operação, validações de confirmação e como o agente deve lidar com o campo confirm obrigatório. Ainda assim, o essencial para uma chamada simples está presente.

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?

Com cobertura de schema de apenas 38%, a descrição ajuda ao mapear os campos editáveis (título, descrição, rascunho, branch), mas não explica parâmetros obrigatórios como repo e prId nem aprofunda o papel de confirm. O schema já documenta target, isDraft e project, então a descrição cobre parcialmente a lacuna.

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?

A descrição usa o verbo 'Edita' com o recurso PR e especifica os campos afetados (título, descrição, rascunho, branch de destino). Diferencia-se de operações de status ao afirmar explicitamente que abandonar e mergear não passam pela ferramenta.

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?

A frase 'NÃO altera status: abandonar e mergear não passam por aqui' estabelece uma condição clara de quando não usar a ferramenta. Não nomeia alternativas específicas, como pr_create ou pr_add_reviewers, mas o escopo de uso fica bem delimitado.

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

repo_listA

Lista repositórios do projeto. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral information, and 'Leitura' does state that this is a read operation. It does not disclose auth requirements, result shape, or whether the default project applies when omitted, though the schema partially covers the default.

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 entire description is two short sentences with no filler; purpose and safety trait are front-loaded. Every word contributes.

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 the tool's low complexity and full schema coverage for its only parameter, the description covers the core use case completely. It could be improved by an explicit note about which sibling to use for projects or write operations, but those are inferable.

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 single optional parameter is already fully described in the schema, including the default and the allowlist condition, so the description does not need to add parameter detail. It adds no extra semantic value beyond 'do projeto', consistent with the high schema coverage 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 the exact operation ('Lista'), the resource ('repositórios'), and the scope ('do projeto'), which is enough to distinguish it from sibling tools like project_list and pr_list. The explicit read-only label reinforces its role.

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 intended use is implied: call it to read a project's repositories. It names no alternatives or exclusion criteria, so the agent must infer when to choose this over project_list or pr_list.

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

wit_attachB

Anexa um arquivo local ao work item (upload + relação AttachedFile). Escrita: write + confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
commentNo
confirmNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.
filePathYesCaminho local do arquivo.

TDQS

B3.3/5.0
Behavior3/5

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

The description discloses that this is a write operation requiring confirmation ('Escrita: write + confirm'), which is behavior beyond the schema. It also mentions the upload and AttachedFile relationship. However, with no annotations, it leaves out side effects, permission details, and irreversibility, so it only partially carries the burden.

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 minimal and front-loaded: one sentence states the core purpose, followed by a short tag for the write/confirm behavior. There is no filler or redundant content.

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

Completeness2/5

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

For a write operation with five parameters, two required, and no output schema, this description is too sparse. It omits rationale for the confirm flag, project allowlisting implications, return values, and enough parameter detail to ensure correct invocation.

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

Parameters2/5

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

Schema description coverage is only 40%, and the tool description does not explain the id, comment, confirm, or project parameters. It only indirectly mentions 'confirm' and 'upload' (implying filePath), failing to compensate for the large undocumented portion of the schema.

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

Purpose5/5

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

The description clearly states a specific action ('attaches a local file to a work item') and resource ('work item'), and even explains the mechanism ('upload + AttachedFile relationship'). This distinguishes it from sibling tools like wit_link or wit_create.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as wit_link or wit_create. It does not state prerequisites, when not to use it, or any exclusion conditions. An agent would have to infer usage solely from the tool name.

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

wit_commentA

Publica comentário na discussão do work item (API de comments, com fallback para System.History). Escrita: write + confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
textYes
confirmNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

A3.7/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 disclosing behavior. It does disclose that this is a write operation requiring confirmation ('Escrita: write + confirm') and that it falls back to System.History. But it omits side effects, permission needs, idempotency, and failure behavior beyond the fallback.

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

Conciseness5/5

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

The description is extremely compact: one action sentence plus a short confirmation flag. There is no filler, and the core purpose is front-loaded.

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

Completeness3/5

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

For a write tool with no annotations and no output schema, the description provides the essential action, the API fallback, and the confirmation requirement. Still, an agent is left without a description of the response, return value, or exact failure semantics, so it is 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 description coverage is only 25%, but the prose adds meaning by clarifying that 'confirm' gates the write operation. The 'id' and 'text' parameters are self-explanatory from their names, yet the description adds no constraints such as text length or formatting. The project parameter's default and allowlist requirement are already in 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 and resource: 'Publica comentário na discussão do work item' (publishes a comment in the work item discussion). It also names the underlying API and fallback, which helps distinguish it from read-oriented siblings like wit_comments and from pr_comment.

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 intended context is clear: use this to post work item comments rather than PR comments. However, there is no explicit when-to-use or when-not-to-use guidance, nor does it compare itself with alternatives such as wit_update or pr_comment.

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

wit_commentsB

Lê a discussão de um work item (autor, data, texto). Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
topNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

B3.1/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 behavioral disclosure burden. It explicitly signals a safe read-only operation with 'Leitura' and hints at the response content (author, date, text). However, it omits pagination, ordering, and any auth or rate-limit context, making the disclosure only partially complete.

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 very short and front-loaded: it opens with the verb and object, then adds an explicit read-only label. Every word contributes; the slight redundancy between 'Lê' and 'Leitura' is acceptable because it adds an unambiguous safety signal.

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

Completeness3/5

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

For a simple read tool, the description covers the main action and some return fields, but it does not explain the semantics of `top` or distinguish this tool from its siblings. Since there is no output schema, the author/date/text hint partially compensates but does not fully complete the picture.

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

Parameters2/5

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

The schema only documents `project` (33% coverage), and the description does not explain `id` or `top`. The phrase 'work item' loosely ties `id` to the resource, and the read intent hints that `top` is a limit, but this is implicit rather than explicit. The description under-compensates for the schema coverage gap.

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

Purpose4/5

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

The description clearly states the action and resource: 'Lê a discussão de um work item' ('reads a work item's discussion') and reinforces its read-only nature with 'Leitura.' It does not explicitly differentiate from siblings like wit_comment or wit_get, so it does not reach 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 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 use this tool over wit_comment, wit_get, or wit_query. The description only implies a discussion-reading use case and offers no exclusions, prerequisites, or alternative routing conditions.

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

wit_createA

Cria work item (epic, feature, PBI, task, bug...) com campos, tags, área, iteração, pai e links. Escrita: exige ADO_MODE=write e confirm:true.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
typeYesEpic, Feature, Product Backlog Item, Task, Bug...
titleYes
fieldsNoRefNames, ex.: System.Description (HTML), Microsoft.VSTS.Common.AcceptanceCriteria.
confirmNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.
areaPathNo
parentIdNo
relationsNoLinks adicionais criados junto do item.
iterationPathNo

TDQS

A3.9/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 disclose that the tool performs a write and requires a confirmation flag, which is valuable. Still, it does not mention what happens on success, whether creation is atomic, or potential side effects such as generated links or validation failures.

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 compact sentence that front-loads the core action and then adds the essential write-mode requirement. No filler or redundant restatement of the schema.

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 (10 parameters, nested relations, no output schema, no annotations), the description covers the core purpose and a key prerequisite but leaves out important behavioral context like return value, error behavior, and creation semantics. The schema fills some gaps, but the description alone is not fully sufficient.

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 only 40%, but the description maps several parameters to plain concepts: 'campos, tags, área, iteração, pai e links' correspond to fields, tags, areaPath, iterationPath, parentId, and relations. This adds some meaning, but confirm, title, and tags semantics remain unexplained, so compensation is only partial.

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 begins with a clear verb ('Cria') and resource ('work item'), enumerating the item types and the main action dimensions (fields, tags, area, iteration, parent, links). It is immediately distinguishable from sibling tools like wit_update, wit_link, and wit_query.

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 states that this is a write operation and requires ADO_MODE=write and confirm:true, giving the agent actionable invocation conditions. However, it does not explicitly contrast with alternatives such as wit_update or wit_link, so it stops short of full when-to-use/when-not-to-use guidance.

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

wit_getA

Detalha work items por id, com campos e relações opcionais. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes
asOfNoData ISO para leitura histórica.
expandNorelations traz pai, filhos, PRs e anexos.
fieldsNoEx.: System.Description, Microsoft.VSTS.Common.AcceptanceCriteria.
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

A3.8/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 it does add a clear read-only signal ('Leitura'). However, it does not mention response shape, limits (max 200 ids), historical asOf semantics, or the project allowlist requirement, leaving much of the behavior implicit.

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 carry the core message with no filler, and the most important information (details by ID) is front-loaded. 'Leitura' is a worthwhile standalone addition given the absence of annotations.

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 schema supplies strong parameter documentation, and the description adds the read-only scope and the optionality of fields/relations. No output schema exists, but the only meaningful missing context for invocation is an explicit statement of return shape; the core calling contract is otherwise discoverable.

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 80%, so the schema already explains most parameters. The description adds only the general idea that fields and relationships are optional, which is helpful but does not materially extend the schema's own descriptions of expand, fields, asOf, and project.

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 ('Detalha'), a concrete resource ('work items'), and the selection key ('por id'), while also noting optional fields and relations. This distinguishes wit_get from siblings like wit_query (search) and wit_tree (hierarchy), and 'Leitura' separates it from create/update tools.

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

Usage Guidelines3/5

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

The description implies the tool is for reading a known work item by ID and optionally expanding fields/relations, which gives an agent a hint of when to call it. It does not explicitly name alternatives such as wit_query for searching or wit_history for historical changes, nor does it state when not to use wit_get.

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

wit_historyC

Lê o histórico de revisões de um work item, campo a campo. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
topNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

C2.9/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 disclosing behavior. It does state 'Leitura' (read-only), which is valuable, and 'campo a campo' indicates per-field history granularity. However, it does not disclose output shape, ordering, or pagination behavior.

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

Conciseness4/5

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

The text is very short and front-loaded with the action and resource. The final 'Leitura.' is slightly redundant with 'Lê', but it usefully reinforces the read-only nature.

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?

There is no output schema, yet the description does not explain return values, revision order, or how 'top' interacts with paging. For a history tool, this leaves the agent without enough context to anticipate the result.

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

Parameters2/5

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

Schema coverage is only 33%, and the description does not compensate. It does not explain that 'id' is the work item identifier or that 'top' caps the number of returned revisions; only 'project' is described in the schema.

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: reads the revision history of a work item, field by field. This distinguishes it from siblings like wit_get or wit_comments, though it does not explicitly name an alternative.

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 on when to use this tool instead of wit_get, wit_comments, or other siblings. The usage context is only implied by the word 'histórico'.

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

wit_metaA

Metadados do processo: types | states | fields | categories | relationtypes | areas | iterations | tags. Use antes de criar/atualizar para descobrir tipos, estados e campos válidos. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
typeNoTipo do work item, exigido em 'states' e 'fields'.
depthNoProfundidade em 'areas' e 'iterations'.
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

TDQS

A3.9/5.0
Behavior4/5

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

There are no annotations, so the description carries the full behavioral burden. It explicitly states 'Leitura' (reading), clearly signaling a non-mutating, safe operation. It also implies the tool returns metadata rather than performing work-item changes, which is valuable behavioral context.

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

Conciseness4/5

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

The description is compact and front-loaded: it states the resource, lists the supported kinds, gives a concrete usage directive, and notes read-only behavior in just two sentences. There is minimal waste, even though the kind list partially duplicates the schema enum.

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 read-only metadata lookup with four parameters, the description provides the essential information: what kinds of metadata exist, when to call it, and that it is safe. There is no output schema, but the return value is reasonably inferable from the requested kind. A minor gap is the lack of detail about what each kind returns.

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 75% and all parameters have useful descriptions or enums in the schema itself. The description adds little beyond repeating the kind enum, but because the schema already documents parameters well, 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.

Purpose4/5

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

The description clearly identifies the resource as process metadata and enumerates the supported kinds ('types | states | fields | categories | relationtypes | areas | iterations | tags'). It also states the intended role ('Use antes de criar/atualizar para descobrir tipos, estados e campos válidos'), making it distinguishable from the query/get/create sibling 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?

The description gives explicit usage context: 'Use antes de criar/atualizar para descobrir tipos, estados e campos válidos.' This tells an agent when to call the tool. It does not name alternatives or exclusions, but for a metadata lookup the primary routing cue is the before-create/update context.

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

wit_queryA

Busca work items via WIQL, preset (my_active | my_recent) ou query salva. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
wiqlNoConsulta WIQL plana (FROM WorkItems).
expandNoIgnora fields e traz o item completo.
fieldsNoRefNames a retornar; default = campos resumidos.
presetNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.
queryIdNoGUID de query salva no projeto.

TDQS

A3.5/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; 'Leitura' is a useful read-only signal. It does not, however, mention output shape, pagination behavior, project allowlist requirements, or any other runtime behavior beyond read-only.

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 compact sentence plus the two-word safety qualifier 'Leitura.' It is front-loaded and every word 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?

The description gives enough to understand the tool's core purpose and read-only nature, and the schema covers parameters. Still, with no output schema and no annotations, an agent is left without guidance on return defaults, pagination, or project restrictions when selecting parameters.

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 71%, so the schema already explains most parameters. The description groups wiql, preset, and queryId into three mutually exclusive query modes, which adds a little semantic structure, but it adds no detail for top, expand, fields, or project.

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 the specific verb 'Busca' (searches) with the resource 'work items' and lists three concrete query mechanisms (WIQL, preset, saved query). 'Leitura' clarifies this is a read operation, but no sibling tool is named, so differentiation is implicit rather than explicit.

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 intended use is implied: it is for searching work items through WIQL, presets, or saved queries. However, the description never says when to prefer this over wit_get, wit_tree, or other sibling tools, nor does it state exclusions or prerequisites.

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

wit_treeA

Executa WIQL de hierarquia (FROM WorkItemLinks) e devolve a árvore epic → feature → item. Leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
wiqlYesWIQL FROM WorkItemLinks, normalmente com mode(Recursive).
fieldsNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.

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 explicitly states 'Leitura' (read-only), which is the key behavioral trait for this tool, and it describes the returned object as a tree. It does not mention auth, rate limits, or error behavior, but for a simple read-only query tool the disclosure is adequate.

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

Conciseness5/5

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

The description is a single efficient sentence that front-loads the action and resource, states the return shape, and closes with the read-only note. Every element earns its place 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?

For a tool with one required parameter and no output schema, the description gives the purpose, return shape, and read-only behavior. It leaves exact output formatting to inference, but the core information needed to select and call the tool is present.

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 50%, and the description adds useful meaning for 'wiql' by emphasizing hierarchy and the epic → feature → item result. However, it does not compensate for 'top' or 'fields', whose semantics are only implied by their names and schema types.

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: 'Executa WIQL de hierarquia (FROM WorkItemLinks)' and names the exact return shape, 'árvore epic → feature → item'. This clearly distinguishes wit_tree from siblings like wit_query, which would handle flat WIQL executions.

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 makes the usage context explicit: this tool is for hierarchical WIQL queries over WorkItemLinks and returns a tree. It does not name alternatives or state when not to use it, so it stops short of a 5, but the context is unambiguous.

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

wit_updateB

Atualiza campos, estado e tags de um ou mais work items. Escrita: write + confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
idsNoLote; usa /wit/$batch acima de um id.
tagsNo
stateNo
fieldsNo
confirmNo
projectNoProjeto alvo; default = DEVOPS_PROJECT. Outros exigem ADO_PROJECT_ALLOWLIST.
expectedRevNoRevisão lida; a escrita falha se o item mudou desde então.

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description itself must disclose behavioral traits. It does label the operation as a write requiring confirmation ('Escrita: write + confirm') and notes batch capability, but it does not describe what confirm does, whether updates merge or replace existing fields/tags, or how expectedRev affects writes.

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

Conciseness4/5

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

The description is short and front-loaded with the main operation; there is no filler. The second fragment 'Escrita: write + confirm' is cryptic and mixed-language, so the structure is efficient but slightly unclear.

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

Completeness2/5

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

For a tool with 8 parameters, nested objects, batch behavior, and no output schema or annotations, this description is underspecified. An agent lacks enough information to safely construct a call, especially around confirm semantics, id/ids selection, and tag/field update behavior.

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

Parameters3/5

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

Schema description coverage is only 38%, so the description needs to compensate. It names the updated entities (fields, state, tags) and hints that confirm is part of the write, but it leaves key semantics unexplained: singular id vs ids, nested tags add/remove behavior, and what confirm=true/false actually does.

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 clear action ('Atualiza') and a specific resource ('campos, estado e tags de um ou mais work items'), so an agent knows what the tool changes and that it supports single or batch targets. It does not explicitly contrast with sibling mutators like wit_link or wit_create, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

No guidance is given for when to prefer this tool over wit_query, wit_create, wit_link, or other siblings. The only contextual hint, 'Escrita: write + confirm', alludes to confirmation but does not state conditions or alternatives.

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

Tool Schema Changelog

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

  1. 22 tool updatesv1.1.0
    • First observedbranch_list
    • First observedcommit_list
    • First observedpr_add_reviewers
    • First observedpr_comment
    • First observedpr_create
    • First observedpr_get
    • First observedpr_list
    • First observedpr_update
    • First observedproject_list
    • First observedrepo_list
    • First observedwit_attach
    • First observedwit_comment
    • First observedwit_comments
    • First observedwit_create
    • First observedwit_get
    • First observedwit_history
    • First observedwit_link
    • First observedwit_meta
    • First observedwit_query
    • First observedwit_tree
    • First observedwit_unlink
    • First observedwit_update

TDQS

B3.4/5.0
Disambiguation4/5

Tools are clearly grouped by domain prefix (wit_, pr_, repo_, branch_, commit_, project_) and each maps to a distinct resource or action. The only mild ambiguity is wit_comments (read) vs wit_comment (write), but their descriptions clearly separate discussion reading from comment posting.

Naming Consistency4/5

The snake_case domain-prefixed naming is consistent and predictable overall, but verb placement varies: reads use both generic verbs (wit_get, pr_get) and resource nouns (wit_comments, wit_history, repo_list). This is a minor deviation rather than a chaotic mix.

Tool Count3/5

At 22 tools, the server sits in the heavy 16-25 band, though the count is partially justified by covering work items, PRs, repos, branches, commits, and projects. Each tool appears non-redundant, so the set is broad rather than bloated.

Completeness3/5

Work item coverage is strong: query, get, tree, comments, history, meta, create, update, link/unlink, comment, and attach are all present. However, the PR lifecycle has a notable gap: pr_update explicitly cannot change status and there is no merge or abandon tool, leaving PRs incomplete after creation.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andrelopes-code/ado-mcp-server'

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