Skip to main content
Glama
Guipegoraro

totvs-tickets-mcp

by Guipegoraro

totvs-tickets-mcp

Servidor MCP (Model Context Protocol) local, somente leitura, que expoe os tickets de suporte da TOTVS (Portal do Cliente / Central de Atendimento, suporte.totvs.com) como tools para LLMs no Claude Code, Claude Desktop e Cursor.

Escrito em Python, mesmo molde do tspace-mcp: keyring nativo do OS pra credenciais, cache de token cifrado (Fernet), headers de browser e re-login transparente.

Escopo: read-only. Lista, filtra e le tickets/comentarios. Nao cria, nao atualiza, nao fecha chamados.

Como autentica (o ponto nao-obvio)

O portal da TOTVS nao usa um bearer/cookie simples. A cadeia e:

Fluig Identity (usuario + senha + MFA/TOTP)  ->  SAML SSO  ->  sessao no portal
                                                                    |
                          GET .../portal/jwt/create  ->  token (JWT Zendesk, ~13h)
                                                                    |
   ti-services.totvs.com.br/customer-portal-backend/help-center/tickets/*
                          (o token vai no BODY do POST, nao em header)

O client.py replica isso automaticamente (login com senha, gera o codigo TOTP a partir do seed do autenticador, faz a danca SAML, emite o token). O token de ~13h fica cacheado cifrado em ~/.totvs-tickets-mcp-token.json, entao a danca so acontece ~1x por turno de trabalho.

Related MCP server: mcp-movidesk

Instalacao

pip install -e .          # le pyproject.toml (mcp, httpx, keyring, cryptography, pyotp)

Isso instala os comandos totvs-tickets-mcp, totvs-tickets-setup e totvs-tickets-probe em <python>/Scripts/.

Configuracao (primeira vez)

totvs-tickets-setup

Pede tres coisas, guardadas no keyring do OS (servico totvs-tickets-mcp):

Segredo

O que e

Username

login Fluig (ex: nome.sobrenome)

Senha

senha do acesso TOTVS

Seed TOTP

a chave secreta base32 do app autenticador (a que aparece em "inserir manualmente" ao cadastrar o MFA)

O seed TOTP e o que permite gerar o codigo de 6 digitos sem o app. Se voce so tem o app e nao guardou o seed, precisa re-cadastrar o MFA no Fluig pra obter um seed novo (o app e este MCP passam a usar o mesmo seed).

Depois, teste o login de ponta a ponta:

totvs-tickets-setup --test      # loga e imprime seu userId / customerCode / organizacoes
totvs-tickets-setup --show      # mostra o que esta cadastrado (mascarado)
totvs-tickets-setup --remove    # apaga tudo

Se o login falhar, rode o probe (diagnostico verboso e seguro):

totvs-tickets-probe

Ele executa a cadeia inteira imprimindo apenas o formato das respostas (segredos redigidos como <str:len>), revelando onde quebrou (WAF, captcha, seed) ou confirmando os nomes de campo do fluxo.

Registrar no Claude Code

claude mcp add -s user totvs-tickets -- totvs-tickets-mcp

Apos editar client.py/server.py, reinicie a sessao do Claude Code (o MCP roda em processo persistente e nao recarrega sozinho).

Tools (todas read-only)

Tool

Endpoint

O que faz

totvs_whoami

(token)

userId, customerCode, organizacoes, validade do token

totvs_contato

contact/find-contact

dados cadastrais do contato logado

totvs_tickets_listar

tickets/get-tickets

busca por org + ticket_views (status, datas, produto/modulo/rotina, keywords) + paginacao

totvs_ticket_detalhe

tickets/get-ticket

detalhe de um ticket

totvs_ticket_comentarios

tickets/get-comments

andamentos/comentarios (com anexos)

totvs_tickets_status

tickets/get-tickets/filter-status

lista oficial de status (value+label)

totvs_tickets_filtros

tickets/filter/lookup/{tipo}

opcoes de produto/modulo/rotina pro filtro

totvs_tickets_motivos_prioridade

tickets/priority-reasons

motivos de priorizacao

totvs_notificacoes_count

user-notifications/count

qtd de notificacoes nao lidas

totvs_usuarios_buscar

users/get-users-zendesk-by-term...

busca usuarios/contatos por termo (min 3 chars)

totvs_departamentos

chats-departaments/get-departament-by-area

departamentos/areas de atendimento

Busca de tickets (load-bearing): a org primaria/pessoal do usuario costuma vir VAZIA — configure a org que concentra os chamados via TOTVS_DEFAULT_ORG (id via totvs_whoami). E ticket_views=3 (default) = tickets de outros; 1 = meus, 2 = em copia. Ver CLAUDE.md.

Variaveis de ambiente uteis

  • TOTVS_USERNAME / TOTVS_PASSWORD / TOTVS_TOTP_SEED — override do keyring.

  • TOTVS_DEFAULT_ORG — org padrao da busca (id Zendesk da org; veja via totvs_whoami). Vazio = todas as orgs visiveis.

  • TOTVS_DEBUG=1 — log verboso do login em stderr (formato das respostas).

  • TOTVS_NO_TOKEN_CACHE=1 — desliga o cache de token em disco.

  • TOTVS_AUDIT_LOG=1 — apende timestamp+verbo+path+status em ~/.totvs-tickets-mcp-audit.log.

  • TOTVS_TIMEOUT — timeout de request em segundos (default 60).

Arquivos sensiveis (nao commitar)

.gitignore bloqueia *.har, .totvs-tickets-mcp-token.json, *.env, chaves. O login usa credenciais reais — nunca capture o HAR do login sem cuidado (o request de senha vaza a senha em texto puro; ver docs/CLAUDE.md).

Estado

Funcionando (validado ponta a ponta em 03/07/2026): login automatico Fluig+MFA/TOTP+SAML, cache do token, e as tools totvs_tickets_listar, totvs_ticket_detalhe, totvs_ticket_comentarios, totvs_tickets_status, totvs_contato, totvs_whoami retornando dados reais.

Detalhe nao-obvio do login (o SPA seta o access_token como cookie via JS, que o cloudpass usa pra continuar o SSO) esta documentado em CLAUDE.md.

O esqueleto TypeScript anterior deste projeto esta arquivado em archive-ts/.

Available Tools

11 tools
totvs_contatoA
Read-onlyIdempotent

Dados cadastrais do contato logado no portal (nome, email, telefone, empresa/customerCode, cargo). Endpoint contact/find-contact.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare it as readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by specifying the specific fields returned (nome, email, telefone, empresa/customerCode, cargo), which provides beyond-annotation context. No contradictions.

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 concise sentences: first summarizing the data, second giving the endpoint. It is front-loaded with key information and contains no unnecessary 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?

With no parameters, annotations covering safety, and an output schema present, the description sufficiently explains the return fields. It could mention potential conditions or errors, but the output schema likely covers structure. Overall complete for a read-only contact info 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?

The tool has zero parameters with 100% schema coverage. The description adds no parameter information, but for a no-parameter tool, baseline is 4 as per guidelines.

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 that the tool returns the logged-in contact's data (name, email, phone, company, role) and provides the endpoint. It distinguishes from siblings like totvs_whoami by specifying the fields returned and the context of the logged-in contact.

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 does not explicitly provide when to use this tool versus alternatives. It only describes what it returns. While it is a simple zero-parameter tool, guidance on when to prefer it over similar tools like totvs_whoami is lacking.

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

totvs_departamentosA
Read-onlyIdempotent

Lista os departamentos/areas de atendimento do portal (key, label, nome, tags). Endpoint chats-departaments/get-departament-by-area.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the specific return fields and endpoint, which is helpful but does not disclose additional behavioral traits like performance, rate limits, or error handling.

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 concise sentences with no superfluous information. It front-loads the main action and provides necessary details efficiently.

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 no parameters and no output schema, the description covers the return fields and endpoint. It is mostly complete, but lacks information about output format or potential errors, which would enhance completeness.

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

Parameters4/5

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

No parameters exist, so the description does not need to explain them. It compensates by specifying the output fields. With 100% schema coverage and 0 parameters, baseline is 4, and the description meets expectations.

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

Purpose5/5

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

The description clearly states it lists departments/service areas with specific fields (key, label, nome, tags). It includes the endpoint, making the purpose unambiguous and distinct from sibling tools that focus on tickets or users.

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

Usage Guidelines3/5

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

The description implies usage for retrieving department listings but provides no explicit guidance on when to choose this tool over siblings like totvs_contato or totvs_tickets_listar. Contextual usage hints are absent.

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

totvs_notificacoes_countA
Read-onlyIdempotent

Numero de notificacoes nao lidas do usuario no portal (ex: {'unread': 44}).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by specifying the exact output (unread count) with an example, and clarifies it is user-specific. No contradictions.

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

Conciseness5/5

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

The description is a single concise sentence with an example, front-loading the key information without any wasted words.

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 tool's simplicity (no parameters, straightforward output), the description is complete. It includes an example output and clarifies the scope (user in the portal). The existence of an output schema further supports completeness.

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

Parameters4/5

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

There are no parameters, and schema coverage is 100%. The description does not need to add parameter semantics, and it appropriately provides an example output to clarify the return format.

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 returns the number of unread notifications for the user in the portal, with an example output format. It distinguishes from siblings, none of which relate to notification counts.

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 versus alternatives. The sibling list implies differentiation (other tools handle tickets, contacts, etc.), but the description does not provide usage context or exclusions.

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

totvs_ticket_comentariosA
Read-onlyIdempotent

Comentarios/andamentos de um ticket, com anexos. ticket_id = numero do ticket. sort_order: 'DESC' (mais recentes primeiro) ou 'ASC'.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
ticket_idYes
sort_orderNoDESC

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the main safety profile is covered. The description adds that results include attachments and sort order behavior but does not mention pagination or limits despite the 'page' parameter, leaving some behavioral gaps.

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

Conciseness4/5

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

The description is a single, compact paragraph that front-loads the main purpose. Backticks for parameters aid readability. It is efficient but lacks explicit structure like bullet points.

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 presence of an output schema and annotations, the description does not need to cover return values or safety. However, it misses the 'page' parameter and does not explain pagination behavior. For a simple list tool, the description is nearly complete but has a clear 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?

With 0% schema description coverage, the description must compensate. It explains 'ticket_id' as the ticket number and 'sort_order' as DESC/ASC with examples, but it omits the 'page' parameter entirely. This partial coverage is adequate for core usage but incomplete.

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

Purpose5/5

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

The description clearly states the tool retrieves comments/status updates of a ticket with attachments. It uses specific verbs ('Comentarios/andamentos') and resource ('ticket'), and it distinguishes from siblings like totvs_ticket_detalhe that likely provide ticket details instead of 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 description explains the meaning of 'ticket_id' and 'sort_order' but does not provide explicit guidance on when to use this tool versus alternatives like totvs_ticket_detalhe or totvs_tickets_filtrar. No when-not-to-use or context for selecting among siblings is given.

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

totvs_ticket_detalheA
Read-onlyIdempotent

Detalhe completo de um ticket (solicitante, colaboradores, organizacao, status, produto/modulo, etc). ticket_id = numero do ticket (ex: '29586485').

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds transparency about the returned information (e.g., solicitante, colaboradores, status), which is useful beyond annotations. No contradiction.

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

Conciseness5/5

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

The description is a single sentence plus a parameter clarification, with no wasted words. It is front-loaded with the key information and efficiently communicates the tool's purpose.

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 tool's simplicity (1 parameter, idempotent read), the description adequately covers what the tool does. The presence of an output schema means return values don't need elaboration. The description lists enough details to understand the scope.

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

Parameters4/5

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

The input schema has 0% description coverage for the parameter ticket_id, but the tool description explains what ticket_id is and provides an example format ('ex: '29586485''). This adds semantic meaning beyond the schema's bare property definition.

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 provides 'complete detail of a ticket' and lists specific data fields (requester, collaborators, organization, status, product/module). This distinguishes it from sibling tools like totvs_ticket_comentarios (comments) and totvs_tickets_listar (list) by emphasizing completeness.

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 implicitly suggests use when full ticket details are needed, but it does not explicitly state when to use this tool versus alternatives (e.g., for comments or list of tickets). No exclusions or when-not-to-use guidance is provided.

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

totvs_tickets_filtrosA
Read-onlyIdempotent

Opcoes do catalogo para os filtros de totvs_tickets_listar.

  • tipo: 'product', 'module' ou 'routine'.

  • filtro: texto pra buscar dentro das opcoes (vazio = primeiras).

  • page / page_size: paginacao. Retorna itens com as tags usadas em product_tags/module_tags/routine_tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
tipoYes
filtroNo
page_sizeNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, etc. The description adds that it returns items with tags and clarifies parameter behavior, but does not reveal additional behavioral traits beyond what annotations convey.

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 compact—four bullet points—with the main purpose front-loaded. Every sentence adds value, and there is no extraneous or redundant content.

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 has four parameters, no output schema, and annotations providing safety hints, the description sufficiently covers what the tool does and its return type (items with tags). It could mention pagination details more explicitly, but it's largely complete.

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

Parameters5/5

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

With 0% schema coverage, the description fully explains all parameters: tipo as 'product/module/routine', filtro as search text (empty = defaults), and pagination via page/page_size. This adds substantial meaning 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 clearly states the tool provides 'Opcoes do catalogo para os filtros de totvs_tickets_listar', specifying the verb (options) and resource (catalog for filters). It also explains that it returns items with tags, distinguishing it from sibling tools like totvs_ticket_detalhe or totvs_contato.

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 in conjunction with totvs_tickets_listar for filtering, but does not explicitly state when to use or avoid this tool versus alternatives. No when-not or alternative tool guidance is provided.

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

totvs_tickets_listarA
Read-onlyIdempotent

Busca/lista tickets de suporte TOTVS por ORGANIZACAO, com filtros e paginacao.

A busca ve tickets de qualquer solicitante da(s) organizacao(oes) — nao so os do usuario logado. keywords casa por numero, titulo e conteudo.

  • keywords: texto livre (numero do ticket, palavra do titulo/descricao/comentario).

  • status: lista de valores (ver totvs_tickets_status). None/[] = todos.

  • product_tags / module_tags / routine_tags: tags do catalogo (ver totvs_tickets_filtros). Ex Protheus: product_tags=['cattotvs_nivel_3_linha_protheus'].

  • organization_ids: IDs de org (ver totvs_whoami). None = org padrao (env TOTVS_DEFAULT_ORG, ou todas se nao configurada). [] = TODAS as orgs visiveis. ATENCAO: a org primaria/pessoal do usuario costuma retornar VAZIO; configure a org que concentra os chamados via TOTVS_DEFAULT_ORG (id via totvs_whoami).

  • requester_id: filtra por solicitante.

  • created_start/created_end/updated_start/updated_end: filtros de data (formato a confirmar).

  • page: pagina (1-based).

  • sort_by: campo de ordenacao (default updated_at). sort_order: asc/desc.

  • ticket_views: qual VISAO/aba de tickets (load-bearing, semantica confirmada pelo usuario): 1 = meus tickets (abertos por mim); 2 = tickets em que estou em copia (colaborador); 3 = tickets criados por OUTROS usuarios da org (default — e onde esta o volume). Sao conjuntos DISJUNTOS: pra cobrir tudo, consulte as 3 visoes e una os resultados. Nesta conta, 1 e 2 costumam vir vazios; a busca util fica em 3.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
statusNo
sort_byNoupdated_at
keywordsNo
sort_orderNodesc
created_endNo
module_tagsNo
updated_endNo
product_tagsNo
requester_idNo
routine_tagsNo
ticket_viewsNo
created_startNo
updated_startNo
organization_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, etc.), the description adds key behavioral traits: ticket_views are disjoint sets, organization_ids default behavior with caveats, keywords search across multiple fields, and status treatment of empty/null. No contradictions with annotations.

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

Conciseness4/5

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

The description is well-structured with a summary line followed by bullet points for each parameter. It front-loads the main purpose. While somewhat long due to 15 parameters, every sentence adds value. Minor redundancy could be trimmed but overall efficient.

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 high complexity (15 parameters, 0% schema coverage, no enums) and existence of output schema, this description is remarkably complete. It covers parameter semantics, behavioral nuances, caveats, and sibling references. The only missing detail is exact date format, which is noted as to be confirmed.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter's meaning, default behavior, and cross-references to other tools. For example, keywords matches number/title/content, status uses values from totvs_tickets_status, tags from catalog, and ticket_views semantics are detailed. Only minor gap is date format (noted as to confirm).

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 it 'Busca/lista tickets de suporte TOTVS por ORGANIZACAO' with filters and pagination. This clearly identifies the tool's function and distinguishes it from siblings like totvs_ticket_detalhe or totvs_ticket_comentarios.

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

Usage Guidelines5/5

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

The description provides explicit guidance: it searches across organizations, not just owned tickets; explains how organization_ids work and warns about primary org being empty; details ticket_views as disjoint sets requiring union for full coverage; and references sibling tools for filter values (totvs_tickets_status, totvs_tickets_filtros, totvs_whoami).

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

totvs_tickets_motivos_prioridadeA
Read-onlyIdempotent

Lista de motivos de priorizacao (priority-reasons) usados no portal.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is clear. However, the description adds no additional behavioral context such as ordering, caching, or authentication requirements, which would be useful beyond the annotations.

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

Conciseness5/5

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

The description is a single sentence of 10 words, frontloaded with the key action and resource. Every word is necessary; there is no redundancy or extraneous 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?

Given the tool's simplicity (no parameters, no output schema, and annotations covering safety), the description is minimally complete. It states what the tool returns ('motivos de priorizacao'), but lacks details on the return format or whether the list is static, limiting an agent's ability to fully anticipate the output.

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

Parameters4/5

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

The tool has zero parameters, and schema coverage is 100% (vacuously). The baseline score for 0 parameters is 4, and the description adds no parameter-specific info since none exist. It is adequate 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?

The description clearly states that the tool lists priority reasons (motivos de priorizacao) used in the portal, using a specific verb ('Lista') and resource. It is easily distinguishable from sibling tools like totvs_tickets_listar or totvs_tickets_status.

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 when filling a priority field in a ticket or filtering. No when-not-to-use or context is given.

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

totvs_tickets_statusA
Read-onlyIdempotent

Lista oficial de status usaveis no filtro status de totvs_tickets_listar (value + label). Ex: {value:'new_open_hold', label:'Aberto'}.

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?

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint. The description adds that the output is a set of value+label pairs, which is key behavioral information beyond annotations.

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 sentence with an example, front-loaded with the core purpose. No unnecessary words.

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 no parameters and a simple output format, the description fully explains the tool's functionality and how to use its result. It is complete for an enumeration list 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?

No parameters exist, so baseline 4 applies. The description does not need to add param info, and the schema is fully covered (100%).

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

Purpose5/5

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

The description clearly states it lists official statuses (value+label) for use in the `status` filter of `totvs_tickets_listar`, with an example. It distinguishes from siblings like `totvs_tickets_filtros` by specifying the exact filter and providing sample data.

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 the tool's purpose: to provide valid status values for filtering in another tool. It does not include when-not-to-use or alternatives, but for a simple list, the context is clear.

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

totvs_usuarios_buscarA
Read-onlyIdempotent

Busca usuarios/contatos do Zendesk por termo (nome/email), opcionalmente escopado por organizacao. Util pra descobrir o requester_id de alguem.

  • termo: minimo 3 caracteres (a API rejeita menos).

  • organization_ids: IDs de org (None/[] = todas as visiveis).

ParametersJSON Schema
NameRequiredDescriptionDefault
termoYes
organization_idsNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds valuable behavioral context beyond annotations, such as the minimum 3-character requirement for 'termo' and the default behavior of 'organization_ids' (None/[] means all visible orgs). This compensates well.

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: one sentence stating purpose followed by two bullet points for parameter details. Every sentence adds value, and the structure is front-loaded with the main 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?

Given the tool has only 2 parameters and no output schema, the description adequately covers input constraints and purpose. However, it does not mention response format or pagination, which might be helpful but is not critical for a simple search tool.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining both parameters: 'termo' has a 3-character minimum, and 'organization_ids' can be None/[] for all visible organizations. This provides essential meaning beyond the raw 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 the tool searches for Zendesk users/contacts by name/email, optionally scoped by organization, and is useful for finding a requester_id. It distinguishes itself from sibling tools that deal with tickets, departments, etc., though it doesn't explicitly differentiate from the very similar sibling 'totvs_contato'.

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 a specific use case ('Util pra descobrir o requester_id de alguem') and explains the optional organization scoping. It lacks explicit when-not-to-use or alternatives, but the context provided is clear enough for an agent to decide when to invoke it.

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

totvs_whoamiA
Read-onlyIdempotent

Identidade do usuario no portal TOTVS derivada do token: userId Zendesk, customerCode padrao, organizacoes as quais pertence e validade do token. Use pra descobrir os organization_ids/customerCode disponiveis.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so safety profile is clear. Description adds behavioral context: the tool derives data from the token and returns specific fields (userId, customerCode, organizations, token validity), which goes beyond annotations but does not contradict them.

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 in Portuguese: first states the tool's function, second provides usage guidance. Every word earns its place; no redundancy.

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 no parameters and the presence of an output schema, the description sufficiently covers the tool's purpose and output (enumerating key fields) and provides actionable use guidance. It is complete for a simple identity retrieval 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?

Tool has zero parameters, so baseline is 4. No parameter semantics needed; description adds no parameter info but that is acceptable.

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

Purpose5/5

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

Description clearly states the tool retrieves the logged-in user's identity (userId, customerCode, organizations, token validity) from the TOTVS portal token. It explicitly directs to use it for discovering available organization_ids and customerCode, which distinguishes it from sibling tools dealing with contacts, departments, tickets, etc.

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?

Description explicitly tells when to use: to discover organization_ids/customerCode. It provides clear context for an identity lookup tool, and no alternative is needed given its specific purpose.

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. 11 tool updatesv0.1.0
    • First observedtotvs_contato
    • First observedtotvs_departamentos
    • First observedtotvs_notificacoes_count
    • First observedtotvs_ticket_comentarios
    • First observedtotvs_ticket_detalhe
    • First observedtotvs_tickets_filtros
    • First observedtotvs_tickets_listar
    • First observedtotvs_tickets_motivos_prioridade
    • First observedtotvs_tickets_status
    • First observedtotvs_usuarios_buscar
    • First observedtotvs_whoami

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: contact info, departments, notifications count, ticket comments, ticket detail, filter options, ticket listing, priority reasons, status list, user search, and identity info. No two tools overlap in functionality.

Naming Consistency4/5

All tools start with 'totvs_' followed by a descriptive noun or noun_action. There is a minor inconsistency between singular and plural forms (e.g., 'totvs_ticket_comentarios' vs 'totvs_tickets_listar'), but the overall pattern is predictable and clear.

Tool Count5/5

With 11 tools covering identity, search, filtering, and ticket details, the count is well-scoped for a ticket support portal. It provides sufficient functionality without being excessive.

Completeness2/5

The tool set is heavily read-oriented, lacking essential create, update, or close operations for tickets. While it covers querying and listing well, there are no tools to modify tickets, making the surface incomplete for full ticket lifecycle management.

Maintenance

ActivityStale
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

  • A
    license
    A
    quality
    A
    maintenance
    MCP server providing access to Brazilian public data (CNPJ, CEP, banks, holidays) via BrasilAPI. For Claude Desktop, Claude Code, Cursor, and other MCP-compatible clients.
    15
    23
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Read-only MCP server that exposes the Poli Júnior Pipedrive CRM to Claude as composable tools.
    -

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/Guipegoraro/totvs-tickets-mcp'

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