protheus-mcp-server (piloto)
Provides read-only access to TOTVS Protheus ERP system, enabling queries for customer credit limits, payment conditions, products, stock balances, warehouses, purchase orders, and more via OAuth2 authenticated API endpoints.
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., "@protheus-mcp-server (piloto)Show me the credit limit for customer 123456"
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.
protheus-mcp-server (piloto)
Conector MCP somente-leitura para consulta ao Protheus (TOTVS) da DFL. Expõe 10 endpoints GET como tools MCP, com autenticação OAuth2 (password grant + refresh automático) e tratamento amigável de respostas vazias/erros.
Este conector apenas consulta (GET). Não altera nada no Protheus. Os fontes
.prwsão usados só como referência de contrato — nunca são modificados.
Configuração
Copie .env.example para .env e preencha:
PROTHEUS_BASE_URL— base REST (inclui/rest/03).PROTHEUS_USER/PROTHEUS_PASSWORD— credenciais OAuth2. Use um usuário de serviço só-leitura.PROTHEUS_TENANT_ID—empresa,filial(ex.:03,01). Deixe vazio para não enviar o header.PROTHEUS_DFL_TOKEN— token dos WS customizados (só se a MVDFL_TOKENestiver ligada).
Related MCP server: TOTVS RM Database MCP Server
Build e execução
npm install
npm run build
node dist/index.js # inicia o servidor MCP via stdioAs variáveis de ambiente precisam estar carregadas (via .env do seu runner, Docker, ou export).
Tools (10 endpoints do piloto)
Tool | Endpoint | Observação |
|
| ✅ com dados |
|
| ✅ com dados |
|
| base pode estar vazia |
|
| base pode estar vazia |
|
| base pode estar vazia |
|
| = Solicitações (ambiente DFL) |
|
| = Pedidos (ambiente DFL) |
|
| RH — dado sensível (LGPD) |
|
| e-mail do VENDEDOR |
|
| saldo em aberto (SE1) |
Tratamento amigável de respostas
Regra geral aplicada a toda tool (protheusClient.normalize):
Lista vazia (
items: []), 404 "Nenhum registro foi encontrado" → mensagem "Nenhum registro encontrado para os filtros informados." (não é erro).500 (inclui o comportamento conhecido de alguns WS customizados quando não há registro ou falta parâmetro) → mensagem explicativa pedindo revisão dos parâmetros.
401 → renova o token uma vez e repete; persistindo, retorna erro de autorização.
Formatos: envelope padrão
{hasNext, items}e o formato custom dosWSR*são ambos aceitos.
Regra de autenticação (token/refresh)
O endpoint OAuth2 do Protheus é sensível à codificação dos parâmetros: se username/password/
refresh_token forem 100% percent-encoded (ex.: @ → %40), a autenticação falha. Por isso o
cliente monta as URLs de token e refresh com os parâmetros direto na URL, escapando apenas
o que quebraria a própria URL (#, &, +, espaço e %) e preservando @, !, etc.
Ver ProtheusClient.encTokenParam. Não trocar por URLSearchParams — ele reescapa o @ e
volta a dar erro de autenticação.
Contratos
Os contratos completos (rotas, parâmetros, campos de retorno, bugs conhecidos) estão em
../protheus-piloto-contratos.json e ../Protheus_Piloto_Spec_10_Endpoints.md.
Available Tools
10 toolsprotheus_armazens_mrpArmazéns (MRP)A
Consulta os armazéns do MRP. Sem ID, retorna a lista; com branchId+code, um armazém específico. Obs.: base pode estar sem registros.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Código do armazém (com branchId). | |
| page | No | Número da página (opcional). | |
| order | No | Campo(s) de ordenação (opcional). | |
| fields | No | Lista de campos desejados, separada por vírgula (opcional). | |
| branchId | No | Filial (com code). | |
| pagesize | No | Registros por página (opcional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description bears full responsibility. It indicates a read-only operation ('Consulta') and includes a caveat that the database may be empty. However, it lacks explicit safety disclosure, rate limit info, or side effects. The read-only nature is implied but not confirmed.
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 sentences plus a short note, with no extraneous information. The core purpose is stated first, followed by usage patterns and a caveat. Every sentence adds value.
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 absence of an output schema and annotations, the description covers the main retrieval modes and warns about empty results. It does not detail the output format or fields, but the schema covers parameter details. Some minor gaps remain, but overall it is sufficient for a simple query 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?
Schema description coverage is 100%, but the tool description adds critical usage semantics: the interaction between branchId and code for retrieving a specific warehouse versus omitting them for a list. This goes beyond individual parameter descriptions in 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 queries MRP warehouses (Consulta os armazéns do MRP) and explains two modes: without ID returns a list, with branchId+code returns a specific warehouse. This differentiates it from sibling tools, which cover different entities like products or stock balances.
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 two distinct usage patterns (list vs. specific warehouse via branchId+code), providing clear guidance on parameter combinations. However, it does not explicitly compare to sibling tools or mention when not to use it. The sibling tools are clearly separate resources, so the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_clientes_por_vendedorClientes por vendedor (WSRCLIENTE)A
Retorna os clientes vinculados a um vendedor/gerente, identificado pelo e-mail (SA3.A3_EMAIL). Atenção: o e-mail é do VENDEDOR, não do cliente.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | E-mail do vendedor/gerente (obrigatório). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It warns that the email is the seller's, not the client's, but does not disclose other behaviors like read-only nature, authentication needs, or response format.
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 focused sentences: the first states the core function, the second adds a crucial caveat. No 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?
For a simple query tool with one parameter and no output schema, the description is fairly complete. It covers the main function and a key clarification, though it could mention potential missing information like response structure.
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 covers 100% of parameters with a description that already identifies the email as belonging to the vendedor/gerente. The description reinforces this, adding minimal extra value 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 action (retorna), the resource (clientes vinculados a um vendedor/gerente), and the identifying criterion (e-mail). It distinguishes from sibling tools that focus on saldo, limite, 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?
No guidance on when to use this tool versus alternatives. It does not specify prerequisites, exclusions, or comparative context with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_condicoes_pagamentoCondições de pagamentoA
Consulta as condições de pagamento (Faturamento/Financeiro). Sem code, retorna a lista; com code, uma condição específica.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Código da condição de pagamento. Opcional. | |
| page | No | Número da página (opcional). | |
| order | No | Campo(s) de ordenação (opcional). | |
| fields | No | Lista de campos desejados, separada por vírgula (opcional). | |
| pagesize | No | Registros por página (opcional). |
TDQS
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 indicates the tool is a query ('Consulta'), implying read-only behavior, but does not disclose authentication needs, rate limits, or any potential side effects. This is minimal but not misleading.
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 highly concise, consisting of two short sentences that front-load the purpose and key usage. Every word contributes meaning without waste.
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 no output schema, the description lacks details about the return format or pagination behavior. For a simple query tool with five optional parameters, it covers the core functionality but leaves some gaps in expected 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?
Schema description coverage is 100%, but the description adds value by explaining that the 'code' parameter changes the output from a list to a specific condition. This goes beyond the schema's simple parameter description.
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 verb 'Consulta' and the resource 'condições de pagamento', and distinguishes behavior based on the 'code' parameter: list all without code, specific condition with code. This differentiates it from sibling tools like 'protheus_saldo_cliente'.
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 states when to use the tool without 'code' (to get a list) and with 'code' (to get a specific condition). Although it does not mention when not to use it or alternatives, the context is clear and sufficient for basic usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_folha_pagamentoFolha de pagamento (RH)A
Demonstrativo de pagamento (RH). Sem employeeId, retorna os tipos de alteração salarial (sem dado pessoal). Com employeeId, retorna o demonstrativo do funcionário — DADO PESSOAL SENSÍVEL (LGPD).
| Name | Required | Description | Default |
|---|---|---|---|
| employeeId | No | Matrícula do funcionário. Opcional (dado sensível). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that without employeeId no personal data is returned, and with employeeId sensitive data is returned. Does not mention read-only nature or side effects, but the core behavioral trait (data sensitivity) is well communicated. Could add a note about being 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, minimal words. Front-loaded: first sentence states tool, second explains behavior. No redundancy, every sentence adds value.
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 single parameter, no output schema, and no annotations, the description is complete. It fully explains both modes and data sensitivity. No missing information for selecting and invoking the tool correctly.
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?
Schema description already covers employeeId as optional sensitive data. Description adds meaning by explaining the different outputs based on presence/absence of this parameter, which goes beyond the schema. Baseline 3 due to 100% coverage, but extra context raises score.
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 'Demonstrativo de pagamento (RH)' and distinguishes two modes: without employeeId returns types of salary changes (no personal data), with employeeId returns employee statement (sensitive personal data). It is a specific verb-resource pair that differentiates from sibling tools.
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?
Explicitly tells when to use each mode: 'Sem employeeId, retorna os tipos de alteração salarial ... Com employeeId, retorna o demonstrativo do funcionário'. Provides clear context and warns about sensitive data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_limite_credito_clienteLimite de crédito do clienteB
Consulta o limite de crédito dos clientes (Faturamento). Sem internalId, retorna a lista; com internalId (código+loja), um cliente específico.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Número da página (opcional). | |
| order | No | Campo(s) de ordenação (opcional). | |
| fields | No | Lista de campos desejados, separada por vírgula (opcional). | |
| pagesize | No | Registros por página (opcional). | |
| internalId | No | Identificador do cliente (código+loja). Opcional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. However, it only states that the tool returns a list or a specific client, with no disclosure of read-only behavior, authentication requirements, rate limits, or other side effects. For a query tool, this is minimal.
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 that conveys the essential behavior. It is front-loaded with the main purpose and condition. Minor improvement could be splitting into two sentences for clarity.
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 query tool with 5 optional parameters and no output schema, the description explains the list vs specific behavior but does not cover pagination, sorting, or return format. The schema descriptions fill some gaps, but overall completeness is adequate but could be improved.
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 covers 100% of parameter descriptions (e.g., 'Número da página (opcional)'), so the description adds no additional semantic meaning. Baseline score of 3 is appropriate.
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 verb 'Consulta' (consult) and the resource 'limite de crédito dos clientes' (client credit limit). It also distinguishes the behavior based on whether internalId is provided (list vs specific client), which differentiates it from sibling tools like protheus_saldo_cliente and protheus_condicoes_pagamento.
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 querying client credit limits, but does not explicitly state when to use this tool versus alternatives like protheus_saldo_cliente or protheus_clientes_por_vendedor. No exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_pedidos_compra_mrpPedidos de compra (MRP)A
Pedidos de compra do MRP (endpoint MRPPurchaseRequest — no ambiente DFL retorna PEDIDOS). Sem ID, lista; com branchId+code, um específico. Obs.: base pode estar sem registros.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Código (com branchId). | |
| page | No | Número da página (opcional). | |
| order | No | Campo(s) de ordenação (opcional). | |
| fields | No | Lista de campos desejados, separada por vírgula (opcional). | |
| branchId | No | Filial (com code). | |
| pagesize | No | Registros por página (opcional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description notes the endpoint name and a key behavioral detail: in the DFL environment it returns PEDIDOS. Also warns that the base may be empty. Adequate for a list tool.
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?
Extremely concise—two sentences with no fluff. The purpose is front-loaded, and critical notes are included without 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 moderate complexity, no output schema, and involved sibling tools, the description provides enough context to operate correctly. The note about empty data and the endpoint name add 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?
All 6 parameters are described in the schema (100% coverage). The description adds meaning by explaining that omitting ID returns a list, while providing branchId+code returns a specific record, which complements 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 'Pedidos de compra do MRP' and specifies the endpoint. It distinguishes between listing all (no ID) and retrieving a specific order (with branchId+code). Among sibling tools focused on MRP, this tool is unique.
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?
Provides clear guidance on how to list all versus get a specific record. Lacks explicit when-not or alternatives, but the context is sufficient for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_produtos_mrpProdutos (MRP)B
Consulta produtos do MRP. Sem ID, retorna a lista; com branchId+product, um produto específico. Obs.: base pode estar sem registros.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Número da página (opcional). | |
| order | No | Campo(s) de ordenação (opcional). | |
| fields | No | Lista de campos desejados, separada por vírgula (opcional). | |
| product | No | Código do produto (com branchId). | |
| branchId | No | Filial do produto (com product). | |
| pagesize | No | Registros por página (opcional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It mentions that the database might be empty, which is useful, but fails to disclose other important aspects such as auth requirements, rate limits, or potential side effects. The basic read behavior is implied but not explicitly stated.
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 at two sentences, with no filler. It uses a clear structure: first sentence states the overall purpose, second sentence explains the two modes. It earns a high score for efficiency.
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 6 parameters, no output schema, and no annotations, the description should provide more context. It does not describe the return format, pagination behavior, or what fields are available. The note about an empty database is helpful, but overall the agent is left with gaps in understanding the full tool behavior.
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?
Since schema coverage is 100% and all parameters are documented in the schema, the description does not need to add much. It does note that branchId and product are used together for a specific product, which aligns with the schema but adds no new semantics beyond what is already in the property descriptions.
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 consults MRP products and specifies the two modes (list all vs. single product), making the purpose unmistakable. However, it does not differentiate from sibling tools like protheus_saldo_estoque_mrp, which also deal with MRP 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 explains when to use the tool with or without parameters, but it does not provide guidance on when not to use it or mention alternative tools for similar queries. This leaves the agent without exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_saldo_clienteSaldo em aberto do cliente (WSRSALDOCLIENTE)A
Retorna o saldo em aberto (títulos a receber, SE1) de um cliente. Informe o código do cliente. Empresa/filial são fixadas em 03/01 pelo web service.
| Name | Required | Description | Default |
|---|---|---|---|
| cliente | Yes | Código do cliente (E1_CLIENTE) — obrigatório. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It reveals that company/branch are fixed to '03/01', which is helpful. But it does not mention if the operation is read-only, whether authentication is needed, or what database table is accessed (SE1).
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 concise sentences, front-loaded with the purpose. Every word is relevant.
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 simple query with one parameter and no output schema, the description is adequate. It provides enough context for an agent to use the tool correctly, though it omits the output format.
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?
Schema coverage is 100% (one parameter). The description adds meaning by stating the parameter is mandatory, specifying the SAP field name (E1_CLIENTE), and noting it's the client code.
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 open balance (receivables) of a client, using the verb 'Retorna' and specifying the resource. It differentiates from sibling tools like 'protheus_limite_credito_cliente' but could be more explicit.
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?
It tells the user to provide the client code and notes that company/branch are fixed. However, it does not explicitly state when to use this tool versus alternatives, or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_saldo_estoque_mrpSaldo em estoque (MRP)A
Consulta os saldos em estoque do MRP. Sem ID, retorna a lista; com branchId+code, um registro específico. Obs.: base pode estar sem registros.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Código do registro (com branchId). | |
| page | No | Número da página (opcional). | |
| order | No | Campo(s) de ordenação (opcional). | |
| fields | No | Lista de campos desejados, separada por vírgula (opcional). | |
| branchId | No | Filial (com code). | |
| pagesize | No | Registros por página (opcional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses behavior for two scenarios (list vs. specific record) and warns that the database may be empty. This is sufficient for a read-only query tool.
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 sentences plus a short note, all essential. No redundancy or fluff. It is front-loaded with the core 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 6 optional parameters and no output schema, the description covers the basic usage and a possible state (empty DB). It lacks integration of pagination and field selection details, but schema covers those.
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?
Schema coverage is 100% with parameter descriptions. The description adds value by explaining how parameters affect output (e.g., branchId+code returns specific record), though it does not elaborate on pagination or ordering beyond 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 'Consulta os saldos em estoque do MRP' which is a specific verb (consult/saldo) and resource (estoque MRP). It also distinguishes between list vs. specific record, and sibling tools have distinct domains (client balance, credit limits, 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?
While the description explains behavior with and without ID, it does not provide explicit guidance on when to use this tool over alternatives or when not to use it. Context from sibling names implies distinct purposes, but no direct comparison is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protheus_solicitacoes_compra_mrpSolicitações de compra (MRP)A
Solicitações de compra do MRP (endpoint MRPPurchaseOrder — no ambiente DFL retorna SOLICITAÇÕES). Sem ID, lista; com branchId+code, uma específica. Obs.: base pode estar sem registros.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Código (com branchId). | |
| page | No | Número da página (opcional). | |
| order | No | Campo(s) de ordenação (opcional). | |
| fields | No | Lista de campos desejados, separada por vírgula (opcional). | |
| branchId | No | Filial (com code). | |
| pagesize | No | Registros por página (opcional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the endpoint mapping, environment behavior (DFL returns SOLICITAÇÕES), and that the base may be empty. However, it lacks statements about idempotency, safety, authentication, or rate limits, which would be expected for a read operation.
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 concise (two sentences plus a note) and front-loaded with the core purpose. Every sentence adds value without redundancy. It is well-structured and easy to parse.
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 output schema, the description explains the purpose and basic usage adequately. It covers list vs specific retrieval and notes possible empty results. However, lacking details on return format or error handling, but the schema covers parameters well. Overall, it is mostly complete for a simple 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?
Schema coverage is 100% with descriptions for all 6 parameters. The description adds integration context by stating that branchId+code together retrieve a specific record, which clarifies their relationship beyond the schema's individual descriptions. This extra meaning justifies a score above baseline 3.
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 lists MRP purchase requisitions (solicitações de compra) and can retrieve a specific one with branchId+code. It also mentions the endpoint name and environment behavior, distinguishing it from sibling tools like protheus_produtos_mrp or protheus_pedidos_compra_mrp.
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 basic guidance: 'Sem ID, lista; com branchId+code, uma específica.' This tells when to use for list vs specific retrieval, but it does not exclude when not to use or compare with alternatives among siblings. More explicit context would be helpful.
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.
10 tool updates
v0.1.0- First observed
protheus_armazens_mrp - First observed
protheus_clientes_por_vendedor - First observed
protheus_condicoes_pagamento - First observed
protheus_folha_pagamento - First observed
protheus_limite_credito_cliente - First observed
protheus_pedidos_compra_mrp - First observed
protheus_produtos_mrp - First observed
protheus_saldo_cliente - First observed
protheus_saldo_estoque_mrp - First observed
protheus_solicitacoes_compra_mrp
TDQS
Each tool targets a distinct business entity or operation: customer balance, credit limit, payment conditions, various MRP entities (products, stock, warehouses, purchase requests, orders), payroll, and clients by seller. No two tools overlap in purpose; descriptions clearly differentiate them.
All tool names follow the pattern 'protheus_<entity>_<specifier>' with underscores and consistent use of Portuguese nouns. The naming is predictable and uniform, making it easy to infer functionality from the name.
With 10 tools covering financial, MRP, HR, and sales domains, the count is well-scoped for a pilot consultation server. Each tool serves a clear purpose without bloat or redundancy.
The tool set provides essential read-only consultations across multiple ERP modules (financial, MRP, HR, sales). Minor omissions exist, such as a general customer list or inventory movements, but given the pilot nature, coverage is adequate for common queries.
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
TOTVS Protheus ERP for AI: stock, sales, orders, customers and MRP. Read-only, official API.
Conta Azul ERP MCP — sales, customers, finance and NF-e via OAuth 2.0. Read + write, 35 tools.
Authenticated, user-scoped MCP connectors for 30+ business systems.
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
Related MCP Servers
- AlicenseAqualityCmaintenanceA read-only MCP server exposing TOTVS support tickets (Portal do Cliente) as tools for LLMs in Claude Code, Claude Desktop, and Cursor.11MIT
- FlicenseNot gradedqualityCmaintenanceProvides a standardized MCP interface to query and interact with TOTVS RM databases over HTTP, secured via API key.-
- AlicenseNot gradedqualityBmaintenanceMCP server for the Omie API to list products, consult clients, and create budgets57MIT
- AlicenseNot gradedqualityFmaintenanceRead-only MCP server for Olist Tiny ERP, enabling querying of products, inventory, orders, invoices, accounts, contacts, shipping, purchase orders, CRM, and price lists via the official REST API v3.MIT
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/Endrews-DFL/mcp-protheus-tdn'
If you have feedback or need assistance with the MCP directory API, please join our Discord server