Skip to main content
Glama

mcp-ferramentas-dev

CI

Servidor MCP em TypeScript com ferramentas úteis para quem desenvolve para o Brasil: CPF/CNPJ, Pix (BR Code), boleto, parcelas e faixas salariais.

O que é MCP

O Model Context Protocol (MCP) é um protocolo aberto que padroniza como aplicações de IA conversam com ferramentas e fontes de dados externas. Um servidor MCP expõe ferramentas (funções com entrada e saída tipadas), recursos (dados para leitura) e prompts (modelos de pedido). Um cliente MCP se conecta ao servidor, descobre o que ele oferece e chama as ferramentas quando necessário.

Related MCP server: mcp-latam-validate

Instalação

Requer Node.js 18 ou superior.

git clone https://github.com/Guilherme-Jardim/mcp-ferramentas-dev.git
cd mcp-ferramentas-dev
npm install
npm run build

O servidor usa o transporte stdio: node dist/index.js.

Registrar em um cliente MCP

A maioria dos clientes aceita uma configuração JSON neste formato (o nome do arquivo e do campo raiz variam de cliente para cliente):

{
  "mcpServers": {
    "ferramentas-dev": {
      "command": "node",
      "args": ["/caminho/absoluto/para/mcp-ferramentas-dev/dist/index.js"],
      "env": {
        "MCP_FAIXAS_PATH": "/caminho/opcional/para/minhas-faixas.json"
      }
    }
  }
}

MCP_FAIXAS_PATH é opcional. Sem ele, a ferramenta de salário usa config/faixas-salariais.json.

Ferramentas

Todas validam a entrada com Zod, descrevem o schema de saída e devolvem structuredContent além de um resumo em texto. Erros de execução voltam com isError: true e uma mensagem clara.

validar_documento

Valida CPF (11 dígitos) ou CNPJ (14 dígitos numéricos) e formata.

{ "documento": "52998224725" }
{ "valido": true, "tipo": "cpf", "somenteDigitos": "52998224725", "formatado": "529.982.247-25" }

gerar_pix

Gera o Pix copia e cola estático com CRC16. Campos: chave, nome, cidade, e opcionais valor, txid, descricao.

{ "chave": "12345678909", "nome": "Loja Exemplo", "cidade": "Curitiba", "valor": 49.9, "txid": "PEDIDO1" }
{
  "payload": "00020101021226330014br.gov.bcb.pix011112345678909520400005303986540549.905802BR5912Loja Exemplo6008Curitiba62110507PEDIDO16304C74D",
  "tamanho": 125,
  "crc": "C74D"
}

validar_pix

Confere o CRC16, os campos obrigatórios e extrai chave, nome, cidade, valor e txid.

{ "payload": "0002010102122633...6304C74D" }
{ "valido": true, "erros": [], "crcInformado": "C74D", "crcCalculado": "C74D", "chave": "12345678909", "valor": 49.9, "tipo": "uso_unico" }

O campo tipo reflete o ponto de iniciação do BR Code: reutilizavel (11) ou uso_unico (12, usado quando há valor).

validar_boleto

Confere os dígitos verificadores da linha digitável de 47 dígitos (bancário) ou 48 dígitos (arrecadação).

{ "linhaDigitavel": "23790.00115 ..." }
{ "valido": true, "tipo": "bancario", "erros": [], "banco": "237", "moeda": "9", "fatorVencimento": 9500, "valor": 150, "codigoDeBarras": "..." }

calcular_parcelas

Tabela Price (parcelas fixas, juros compostos). A taxa é em % ao mês.

{ "valor": 10000, "taxaMensal": 1, "parcelas": 12 }
{
  "valorParcela": 888.49,
  "totalPago": 10661.86,
  "totalJuros": 661.86,
  "taxaMensal": 1,
  "tabela": [{ "numero": 1, "parcela": 888.49, "juros": 100, "amortizacao": 788.49, "saldoDevedor": 9211.51 }]
}

(a tabela completa traz as 12 linhas; a última parcela é ajustada para o saldo fechar em zero)

comparar_salario

Diz em qual faixa um salário cai, segundo um JSON configurável. Mínimo é inclusivo, máximo é exclusivo, e só a última faixa pode ter maximo: null.

{ "salario": 7000 }
{
  "salario": 7000,
  "faixa": { "nome": "Pleno", "minimo": 6000, "maximo": 10000 },
  "indice": 2,
  "abaixoDaPrimeira": false,
  "proximaFaixa": { "nome": "Sênior", "minimo": 10000, "maximo": 16000 },
  "faltaParaProxima": 3000,
  "arquivo": ".../config/faixas-salariais.json"
}

Formato do arquivo de faixas:

{
  "faixas": [
    { "nome": "Júnior", "minimo": 3000, "maximo": 6000 },
    { "nome": "Pleno", "minimo": 6000, "maximo": null }
  ]
}

Recurso e prompt

  • Recurso ferramentas://catalogo: JSON com a lista das ferramentas e suas descrições.

  • Prompt conferir_cobranca (argumentos documento e pix): pede ao cliente que confira o CPF/CNPJ e o Pix de uma cobrança usando as ferramentas acima.

Desenvolvimento

npm run lint    # ESLint
npm run build   # compila para dist/
npm test        # compila e roda os testes (unitários + integração por stdio)

A lógica pura fica em src/core (sem dependência do MCP) e o servidor em src/servidor.ts.

Limites

  • A validação de CPF/CNPJ é só matemática (dígitos verificadores). Não consulta a Receita Federal, então não diz se o documento existe ou está regular. CNPJ alfanumérico (novo formato) não é suportado.

  • O Pix gerado é estático, sem consulta ao PSP. Não valida se a chave existe nem cria cobrança dinâmica (campo url). Nome e cidade perdem acentos e são truncados, como pede o BR Code.

  • O boleto é verificado apenas pelos dígitos. Não consulta banco ou câmara, então não informa pagamento, vencimento real ou valor atualizado. O fator de vencimento é devolvido cru: ele reinicia a cada 9000 dias (houve reinício em 22/02/2025), então a data exata fica ambígua sem contexto. A conferência de arrecadação cobre os DVs dos quatro blocos, e não a validação do convênio.

  • Price assume taxa nominal mensal constante, sem IOF, tarifas, seguros, CET nem carência. Arredondamento em centavos, com ajuste na última parcela. Use como estimativa, não como proposta financeira.

  • As faixas salariais são só as que você configurar; o arquivo de exemplo é ilustrativo e não representa nenhuma tabela oficial ou de mercado.

  • Pensado para uso local por stdio. Não há autenticação nem transporte HTTP.

Licença

MIT. Veja LICENSE.

Available Tools

6 tools
calcular_parcelasCalcular parcelas (Price)A

Calcula parcelas fixas pela tabela Price com juros compostos. A taxa é percentual ao mês (ex.: 1.99). Não inclui IOF, tarifas nem seguros.

NameRequiredDescriptionDefault
valorYesValor financiado em reais
parcelasYesQuantidade de parcelas
taxaMensalYesTaxa de juros em % ao mês

Output Schema

NameRequiredDescription
tabelaYes
totalPagoYes
taxaMensalYes
totalJurosYes
valorParcelaYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it declares the amortization system (Price), the compounding model (juros compostos), and explicitly enumerates what is excluded from the result (IOF, fees, insurance). It does not disclose rounding behavior, which matters for a financial calculation.

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?

Three short sentences with zero filler; the computation method is front-loaded and the unit clarification and exclusions follow in order of importance. Nothing is redundant.

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 pure computation tool with 3 required numeric params, full schema coverage and an output schema, the definition covers method, rate unit and result scope. The only meaningful gaps are rounding/precision conventions and the absence of any annotations, which the description partly offsets.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented, establishing a baseline of 3. The example '1.99' usefully reinforces that the rate is a percentage (not a decimal fraction), but that repeats what the schema already says ('Taxa de juros em % ao mês').

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?

States a specific verb and resource ('Calcula parcelas fixas') and names the exact method used ('tabela Price com juros compostos'), which is the key disambiguator versus other amortization systems. An agent can tell precisely what computation this tool performs without consulting the schema.

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 scopes the result ('Não inclui IOF, tarifas nem seguros'), which implicitly tells the agent when the output is or isn't sufficient, and clarifies the rate unit. However, it never states when to prefer this tool over alternatives or what preconditions apply (e.g. rate must be non-negative, max 1200 installments).

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

comparar_salarioComparar salário com faixasA

Diz em qual faixa um salário se encaixa, segundo um arquivo JSON de faixas configurável (variável MCP_FAIXAS_PATH ou parâmetro caminhoConfig).

NameRequiredDescriptionDefault
salarioYesSalário em reais
caminhoConfigNoCaminho de um JSON de faixas; padrão: config/faixas-salariais.json

Output Schema

NameRequiredDescription
faixaYes
indiceYes
arquivoYes
salarioYes
proximaFaixaYes
abaixoDaPrimeiraYes
faltaParaProximaYes

TDQS

A3.5/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 does disclose a genuinely useful behavioral detail: the bands come from an external JSON resolved via the MCP_FAIXAS_PATH environment variable or the caminhoConfig parameter. However it does not say what happens when the file is missing, malformed, or when the salary falls outside all bands, which are the main failure modes an agent would want to anticipate.

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?

A single sentence that front-loads the core purpose and then adds the configuration caveat, with no filler. It is efficient, though the parenthetical config detail makes the sentence slightly heavy for a two-parameter tool.

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?

An output schema exists, so the return shape need not be explained, and the input schema fully documents both parameters. For a simple lookup tool the description is nearly sufficient, with the only real gap being error behavior around the external config file.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema, setting a baseline of 3. The description adds a little value by naming the environment variable MCP_FAIXAS_PATH that the configurable file may come from, which the schema does not mention, but it does not clarify precedence between the env var and the parameter.

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?

States a specific verb and resource: it tells which salary band ('faixa') a salary falls into, and names the data source (a configurable JSON of bands). That is unambiguous and no sibling tool does anything similar, so no differentiation is needed. It stops just short of 5 because the phrase is dense and the notion of 'faixa' is left to the config file to define.

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

Usage Guidelines3/5

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

The description implies the use case (classifying a salary against bands) but never states when to use it versus alternatives or any precondition such as the config file needing to exist. With unrelated siblings there is no routing ambiguity, so implied usage is adequate rather than deficient.

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

gerar_pixGerar Pix copia e colaA

Gera o payload Pix estático (BR Code, padrão EMV) com CRC16. Sem valor, o pagador informa o valor. Nome e cidade são normalizados para ASCII e truncados em 25 e 15 caracteres.

NameRequiredDescriptionDefault
nomeYesNome do recebedor
txidNoIdentificador da transação (alfanumérico)
chaveYesChave Pix (CPF, CNPJ, e-mail, telefone ou aleatória)
valorNoValor em reais
cidadeYesCidade do recebedor
descricaoNoMensagem opcional ao pagador

Output Schema

NameRequiredDescription
crcYes
payloadYes
tamanhoYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and discloses key traits: it generates a static EMV BR Code with CRC16, allows payer-entered amount when no value is supplied, and normalizes/truncates name and city. It does not discuss side effects or error conditions, but the output schema covers return values.

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 tight sentences and front-loads the core purpose before adding behavioral details. No sentence is wasted.

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

Completeness4/5

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

The schema and output schema are rich and already document parameters and returns. The description supplies the critical generation behavior and normalization details, though it does not cover error handling or edge cases.

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%, so the baseline is 3. The description adds meaningful semantics beyond the schema: optional 'valor' means the payer supplies the amount, and 'nome'/'cidade' are ASCII-normalized and truncated to 25/15 characters.

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

Purpose5/5

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

The description states a specific verb and resource: 'Gera o payload Pix estático (BR Code, padrão EMV) com CRC16.' It clearly identifies the tool as a Pix payload generator, distinguishing it from validation-focused siblings such as validar_pix.

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

Usage Guidelines3/5

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

The description explains the conditional behavior when 'valor' is omitted: 'Sem valor, o pagador informa o valor.' However, it does not explicitly say when to use this tool versus alternatives like validar_pix, so usage is implied rather than fully guided.

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

validar_boletoValidar linha digitável de boletoA

Confere os dígitos verificadores da linha digitável: 47 dígitos (boleto bancário) ou 48 dígitos (arrecadação/convênio). Não consulta o banco, então não diz se o boleto está pago ou vencido.

NameRequiredDescriptionDefault
linhaDigitavelYesLinha digitável, com ou sem pontos e espaços

Output Schema

NameRequiredDescription
tipoYes
bancoNo
errosYes
moedaNo
valorNo
validoYes
codigoDeBarrasNo
fatorVencimentoNo

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 carries the behavioral burden and does well: it discloses that validation is local/check-digit based and that the bank is not queried. It does not describe error behavior or the exact result format, but an output schema exists to cover return values.

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, both front-loaded with the essential operation and the key limitation. There is no filler, and the most important constraint (no bank consultation) is stated directly.

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

Completeness5/5

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

For a single-parameter validation tool with an output schema, the description covers what is validated, which formats are accepted, and the major limitation that it does not check payment or due status. Nothing critical is missing for correct invocation.

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 already 100%, but the description adds meaningful domain constraints: the input must correspond to a 47- or 48-digit linha digitável, depending on boleto type. The schema separately handles punctuation and spacing, so this is a useful complement rather than a repetition.

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

Purpose5/5

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

The description states a specific verb and resource: 'Confere os dígitos verificadores da linha digitável'. It also distinguishes the two supported boleto formats (47 digits for bancário, 48 for arrecadação/convênio), which is more precise than the title alone.

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

Usage Guidelines4/5

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

It clearly frames the intended use as checking check digits and explicitly excludes bank lookup, so the agent knows not to use it for payment status. It does not name alternative sibling tools such as validar_documento, but the usage boundary is still clear.

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

validar_documentoValidar CPF ou CNPJA

Valida CPF (11 dígitos) ou CNPJ (14 dígitos numéricos) pelos dígitos verificadores e devolve o número formatado. Aceita com ou sem pontuação.

NameRequiredDescriptionDefault
documentoYesCPF ou CNPJ, com ou sem máscara

Output Schema

NameRequiredDescription
tipoYes
motivoNo
validoYes
formatadoYes
somenteDigitosYes

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 behavioral burden. It does disclose the validation mechanism (check digits), the accepted input formats, and that the output is the formatted number — genuine value. It does not say what happens on an invalid document (error vs. boolean), which is the key behavioral question for a validator.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and augmented with the one detail that matters (input formatting). No filler.

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

Completeness4/5

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

With an output schema present, the return value needn't be explained, and the description covers input formats and validation logic. The only real gap is failure behavior for invalid documents, which no annotation covers.

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% and the single parameter is already documented as 'CPF ou CNPJ, com ou sem máscara'. The description goes slightly beyond it by giving the digit counts (11/14) and naming the validation rule, which helps an agent pre-validate input before calling.

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?

States a specific verb (validar) and specific resources (CPF de 11 dígitos / CNPJ de 14 dígitos), plus the mechanism (dígitos verificadores) and the shape of the result (número formatado). This clearly distinguishes it from siblings like validar_pix and validar_boleto, which validate different artifact types.

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 makes the input context clear (accepts with or without punctuation) but never says when to prefer this over validar_pix or validar_boleto, nor what to do when a document is invalid. Usage is implied by the resource name rather than routed explicitly.

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

validar_pixValidar Pix copia e colaA

Confere o CRC16 e os campos obrigatórios de um payload Pix e extrai chave, nome, cidade e valor.

NameRequiredDescriptionDefault
payloadYesTexto do Pix copia e cola

Output Schema

NameRequiredDescription
nomeNo
tipoNo
txidNo
chaveNo
errosYes
valorNo
cidadeNo
validoYes
crcCalculadoNo
crcInformadoNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses that CRC16 verification and required-field checking occur and what is extracted, which implies a read-only validation. It does not describe outcomes for invalid payloads (error vs. validity flag) or any side effects, leaving a real gap.

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

Conciseness5/5

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

A single sentence, front-loaded with the verification action and ending with the extraction outcome. No redundant or filler text.

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?

An output schema exists, so return values needn't be explained, and the single parameter is fully documented in the schema. The description covers the core behavior and extraction output; only failure-mode behavior for invalid payloads is missing.

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?

There is a single parameter with 100% schema description coverage ('Texto do Pix copia e cola'), so the schema does the documentation work. The description references the payload concept but adds no format details, syntax, or size constraints beyond the schema — the baseline 3 applies.

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 names two specific verbs ('Confere' and 'extrai') on a concrete resource ('payload Pix') and enumerates the extracted fields (chave, nome, cidade, valor). This clearly separates it from generation-oriented siblings like gerar_pix without ambiguity.

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?

Usage is implied by the purpose: an agent can infer the tool applies to a Pix copia e cola string. However, there is no explicit statement of when to prefer this over gerar_pix or validar_boleto, nor any exclusion or prerequisite guidance.

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.

  1. 6 tool updatesv0.1.0
    • First observedcalcular_parcelas
    • First observedcomparar_salario
    • First observedgerar_pix
    • First observedvalidar_boleto
    • First observedvalidar_documento
    • First observedvalidar_pix

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct artifact: salary bands, CPF/CNPJ, Pix payload generation, Pix validation, boleto validation, and loan installments. The only mild friction is the 'validar_*' trio — an agent handed an arbitrary numeric/EMV string could initially hesitate between validar_documento, validar_boleto and validar_pix — but descriptions make the input shapes clear enough.

Naming Consistency5/5

All six names follow the same snake_case verb_noun convention in Portuguese (comparar_, validar_, gerar_, calcular_), with singular nouns. No mixed casing or stylistic outliers.

Tool Count4/5

Six tools sit comfortably in the reasonable range and each covers a separate utility. The set is a grab-bag of Brazilian finance helpers rather than a deep domain, so six is defensible but feels slightly thin for the broad 'ferramentas-dev' framing.

Completeness3/5

There is a clear asymmetry: Pix has both gerar_pix and validar_pix, but boleto only has validar_boleto with no generation counterpart, and parcelas has no reverse calculation (rate/term inference) or formatting helper for currency. Document validation is also limited to CPF/CNPJ, so agents will hit dead ends for adjacent tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Latin American business compliance suite — 28 tools for tax ID validation (CPF, CNPJ, RFC, RUT, CUIT, NIT), banking (PIX, CLABE, CBU), VAT rules, e-invoicing (NF-e, CFDI, DTE), holidays, and labor calendar across Brazil, Mexico, Chile, Argentina, and Colombia.
    28
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Validates LatAm banking and tax IDs (Mexican CLABE, Brazilian CNPJ/CPF checksums) and performs BrasilAPI company, CEP, and bank lookups, enabling AI agents to verify financial and tax information in Latin America.
    10 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables lookup of Brazilian public data including companies (CNPJ), postal codes (CEP), banking, economy, geography, and more through 15 tools and 2 guided prompts, powered by BrasilAPI with no API key required.
    15
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables LLM clients to query public Brazilian data through tools for CEP addresses, CNPJ registrations, banks, FIPE vehicle prices, national holidays, and DDD area codes, with no API key required.
    8
    MIT