totvs-tickets-mcp
Allows listing, filtering, and reading TOTVS support tickets (chamados) from the TOTVS Portal (suporte.totvs.com), including ticket details, comments, and user information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@totvs-tickets-mcplist my open tickets for TOTVS Protheus"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-setupPede tres coisas, guardadas no keyring do OS (servico totvs-tickets-mcp):
Segredo | O que e |
Username | login Fluig (ex: |
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 tudoSe o login falhar, rode o probe (diagnostico verboso e seguro):
totvs-tickets-probeEle 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-mcpApos 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 |
| (token) | userId, customerCode, organizacoes, validade do token |
|
| dados cadastrais do contato logado |
|
| busca por org + |
|
| detalhe de um ticket |
|
| andamentos/comentarios (com anexos) |
|
| lista oficial de status (value+label) |
|
| opcoes de produto/modulo/rotina pro filtro |
|
| motivos de priorizacao |
|
| qtd de notificacoes nao lidas |
|
| busca usuarios/contatos por termo (min 3 chars) |
|
| 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 viatotvs_whoami). Eticket_views=3(default) = tickets de outros;1= meus,2= em copia. VerCLAUDE.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 viatotvs_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 toolstotvs_contatoARead-onlyIdempotent
Dados cadastrais do contato logado no portal (nome, email, telefone, empresa/customerCode, cargo). Endpoint contact/find-contact.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_departamentosARead-onlyIdempotent
Lista os departamentos/areas de atendimento do portal (key, label, nome, tags). Endpoint chats-departaments/get-departament-by-area.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_countARead-onlyIdempotent
Numero de notificacoes nao lidas do usuario no portal (ex: {'unread': 44}).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_comentariosARead-onlyIdempotent
Comentarios/andamentos de um ticket, com anexos. ticket_id = numero do
ticket. sort_order: 'DESC' (mais recentes primeiro) ou 'ASC'.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| ticket_id | Yes | ||
| sort_order | No | DESC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_detalheARead-onlyIdempotent
Detalhe completo de um ticket (solicitante, colaboradores, organizacao,
status, produto/modulo, etc). ticket_id = numero do ticket (ex: '29586485').
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_filtrosARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| tipo | Yes | ||
| filtro | No | ||
| page_size | No |
TDQS
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.
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.
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.
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.
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.
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_listarARead-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 viatotvs_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,1e2costumam vir vazios; a busca util fica em3.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| status | No | ||
| sort_by | No | updated_at | |
| keywords | No | ||
| sort_order | No | desc | |
| created_end | No | ||
| module_tags | No | ||
| updated_end | No | ||
| product_tags | No | ||
| requester_id | No | ||
| routine_tags | No | ||
| ticket_views | No | ||
| created_start | No | ||
| updated_start | No | ||
| organization_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_prioridadeARead-onlyIdempotent
Lista de motivos de priorizacao (priority-reasons) usados no portal.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_statusARead-onlyIdempotent
Lista oficial de status usaveis no filtro status de totvs_tickets_listar
(value + label). Ex: {value:'new_open_hold', label:'Aberto'}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_buscarARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| termo | Yes | ||
| organization_ids | No |
TDQS
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.
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.
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.
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.
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.
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_whoamiARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
v0.1.0- First observed
totvs_contato - First observed
totvs_departamentos - First observed
totvs_notificacoes_count - First observed
totvs_ticket_comentarios - First observed
totvs_ticket_detalhe - First observed
totvs_tickets_filtros - First observed
totvs_tickets_listar - First observed
totvs_tickets_motivos_prioridade - First observed
totvs_tickets_status - First observed
totvs_usuarios_buscar - First observed
totvs_whoami
TDQS
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.
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.
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.
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
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
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server providing access to Brazilian public data (CNPJ, CEP, banks, holidays) via BrasilAPI. For Claude Desktop, Claude Code, Cursor, and other MCP-compatible clients.15235MIT
- FlicenseNot gradedqualityDmaintenanceRead-only MCP server for querying Movidesk tickets through the public Movidesk API.14-
- FlicenseNot gradedqualityDmaintenanceRead-only MCP server that exposes the Poli Júnior Pipedrive CRM to Claude as composable tools.-
- AlicenseAqualityBmaintenanceMCP server to manage GestSup tickets via an LLM, with tools for creating, reading, commenting, and searching tickets.13MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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