Skip to main content
Glama
Endrews-DFL

protheus-mcp-server (piloto)

by Endrews-DFL

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 .prw sã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_IDempresa,filial (ex.: 03,01). Deixe vazio para não enviar o header.

  • PROTHEUS_DFL_TOKEN — token dos WS customizados (só se a MV DFL_TOKEN estiver 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 stdio

As variáveis de ambiente precisam estar carregadas (via .env do seu runner, Docker, ou export).

Tools (10 endpoints do piloto)

Tool

Endpoint

Observação

protheus_limite_credito_cliente

/api/fat/v1/CustomerCreditLimit

✅ com dados

protheus_condicoes_pagamento

/api/fat/v1/paymentcondition

✅ com dados

protheus_produtos_mrp

/api/pcp/v1/mrpproduct

base pode estar vazia

protheus_saldo_estoque_mrp

/api/pcp/v1/mrpstockbalance

base pode estar vazia

protheus_armazens_mrp

/api/pcp/v1/mrpwarehouse

base pode estar vazia

protheus_solicitacoes_compra_mrp

/api/pcp/v1/mrppurchaseorder

= Solicitações (ambiente DFL)

protheus_pedidos_compra_mrp

/api/pcp/v1/mrppurchaserequest

= Pedidos (ambiente DFL)

protheus_folha_pagamento

/payment/...

RH — dado sensível (LGPD)

protheus_clientes_por_vendedor

/WSRCLIENTE?email=

e-mail do VENDEDOR

protheus_saldo_cliente

/WSRSALDOCLIENTE?cliente=

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 dos WSR* 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 tools
protheus_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoCódigo do armazém (com branchId).
pageNoNúmero da página (opcional).
orderNoCampo(s) de ordenação (opcional).
fieldsNoLista de campos desejados, separada por vírgula (opcional).
branchIdNoFilial (com code).
pagesizeNoRegistros por página (opcional).

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesE-mail do vendedor/gerente (obrigatório).

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoCódigo da condição de pagamento. Opcional.
pageNoNúmero da página (opcional).
orderNoCampo(s) de ordenação (opcional).
fieldsNoLista de campos desejados, separada por vírgula (opcional).
pagesizeNoRegistros por página (opcional).

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
employeeIdNoMatrícula do funcionário. Opcional (dado sensível).

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNúmero da página (opcional).
orderNoCampo(s) de ordenação (opcional).
fieldsNoLista de campos desejados, separada por vírgula (opcional).
pagesizeNoRegistros por página (opcional).
internalIdNoIdentificador do cliente (código+loja). Opcional.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoCódigo (com branchId).
pageNoNúmero da página (opcional).
orderNoCampo(s) de ordenação (opcional).
fieldsNoLista de campos desejados, separada por vírgula (opcional).
branchIdNoFilial (com code).
pagesizeNoRegistros por página (opcional).

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNúmero da página (opcional).
orderNoCampo(s) de ordenação (opcional).
fieldsNoLista de campos desejados, separada por vírgula (opcional).
productNoCódigo do produto (com branchId).
branchIdNoFilial do produto (com product).
pagesizeNoRegistros por página (opcional).

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
clienteYesCódigo do cliente (E1_CLIENTE) — obrigatório.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/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 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoCódigo do registro (com branchId).
pageNoNúmero da página (opcional).
orderNoCampo(s) de ordenação (opcional).
fieldsNoLista de campos desejados, separada por vírgula (opcional).
branchIdNoFilial (com code).
pagesizeNoRegistros por página (opcional).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoCódigo (com branchId).
pageNoNúmero da página (opcional).
orderNoCampo(s) de ordenação (opcional).
fieldsNoLista de campos desejados, separada por vírgula (opcional).
branchIdNoFilial (com code).
pagesizeNoRegistros por página (opcional).

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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

Given no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 10 tool updatesv0.1.0
    • First observedprotheus_armazens_mrp
    • First observedprotheus_clientes_por_vendedor
    • First observedprotheus_condicoes_pagamento
    • First observedprotheus_folha_pagamento
    • First observedprotheus_limite_credito_cliente
    • First observedprotheus_pedidos_compra_mrp
    • First observedprotheus_produtos_mrp
    • First observedprotheus_saldo_cliente
    • First observedprotheus_saldo_estoque_mrp
    • First observedprotheus_solicitacoes_compra_mrp

TDQS

A4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
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
    C
    maintenance
    A read-only MCP server exposing TOTVS support tickets (Portal do Cliente) as tools for LLMs in Claude Code, Claude Desktop, and Cursor.
    11
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for the Omie API to list products, consult clients, and create budgets
    57
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Read-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

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