inpi-marcas-mcp-server
This MCP server lets Claude and other AI agents search INPI (Brazilian trademark office) brands through the official public pePI system, using each user's own login, returning structured JSON plus readable Markdown — optionally saving HTML reports or raw evidence packages.
Search by process number (
inpi_search_by_process_number) — look up a trademark by process/petition number, GRU, protocol, or Madrid Protocol international registration.Search by mark text (
inpi_search_by_mark) — exact or radical (partial) text search, optionally filtered by Nice class.Advanced mark search (
inpi_search_by_mark_advanced) — boolean/fuzzy search with filters for presentation form (nominative, mixed, figurative, 3D, position), nature (product/service/collective/certification), and "live applications only."Search by owner (
inpi_search_by_owner) — list a holder's trademark portfolio by CNPJ/CPF or name (name search is two-step, like the official site).Search by Vienna code (
inpi_search_by_figurative_code) — find figurative/mixed marks by international figurative-element classification (up to 3 ANDed codes).Paginate results (
inpi_next_page) — advance to further pages of a prior search on the pePI session.Full process detail (
inpi_get_process_detail) — retrieve complete record using the CodPedido: Nice classes, holders, attorney, key dates, Paris Convention priority, and petition history.Local caching — repeated identical searches return instantly (default 6h TTL), skip with
forcar_atualizacao.Save readable HTML reports (
salvar_html: true) — writes a self-contained table-style report to disk and returns its path.Save raw evidence packages (
salvar_evidencia: true) — captures original pePI HTML plus offline snapshot and hashed assets (sha256 manifest) for audit/proof; always hits the live site.Provenance & status — every response includes source, consult URL, timestamp, and an auxiliary operational classification (e.g.,
registro_vigente,pedido_em_andamento).
Click on "Deploy 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., "@inpi-marcas-mcp-serverpesquisar a marca "Aurora" no INPI e listar os pedidos vivos"
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.
inpi-marcas-mcp-server
Servidor MCP para a busca oficial de marcas do INPI
(pePI, busca.inpi.gov.br/pePI) — o mesmo sistema público que qualquer pessoa usa no
navegador, só que disponível como ferramenta para Claude e outros agentes de IA.
Cada usuário entra com o próprio login do pePI (gratuito, cadastro em gov.br/inpi/cadastro-no-e-inpi). Este servidor não guarda, expõe nem compartilha credencial nenhuma — cada instância roda local, autenticada como você.
Projeto independente, sem vínculo oficial com o INPI. Automatiza o mesmo formulário que existe no site público; não é um canal alternativo, não pula fila nem burla limite nenhum.
O que dá pra fazer
Ferramenta | Para quê |
| Achar um processo pelo número, GRU, protocolo ou inscrição internacional (Madri) |
| Buscar marca por texto, exata ou por radical |
| Busca booleana/fuzzy, filtro por apresentação, natureza e "Pedidos Vivos" |
| Levantar o portfólio de marcas de um titular (CNPJ/CPF ou nome) |
| Buscar marcas figurativas pelo Código de Viena |
| Paginar um resultado grande |
| Ficha completa: classes, titulares, procurador, datas, prioridade unionista, petições |
Related MCP server: SEI MCP Server
Exemplo de uso
Três exemplos com dado real, capturado ao vivo do pePI durante o desenvolvimento (nenhum
campo aqui é inventado — vem de test/fixtures/ ou de uma captura de evidência real).
1. Busca simples
inpi_search_by_mark({ marca: "GOOGLE", busca_exata: true })content (Markdown, trecho):
## GOOGLE — processo 821480880
- Prioridade: 16/09/1998
- Situação: Registro de marca em vigor (registro_vigente)
- Titular: GOOGLE LLC
- Classe: NCL(8) 09
- CodPedido (use em inpi_get_process_detail): 1164582structuredContent (trecho):
{
"totalEncontrado": 48,
"totalPaginas": 2,
"resultados": [
{
"numeroProcesso": "821480880",
"marca": "GOOGLE",
"situacao": "Registro de marca em vigor",
"situacaoOperacional": "registro_vigente",
"titular": "GOOGLE LLC",
"classe": "NCL(8) 09",
"codPedido": "1164582"
}
]
}2. Detalhe com prioridade unionista — usando o codPedido do exemplo acima:
inpi_get_process_detail({ cod_pedido: "1164582" })structuredContent (trecho — a proveniência e o aviso jurídico vêm junto em todo content,
omitidos aqui por brevidade):
{
"numeroProcesso": "821480880",
"apresentacao": "Nominativa",
"dataDeposito": "12/03/1999",
"dataConcessao": "18/10/2005",
"dataVigencia": "18/10/2035",
"prioridadeUnionista": {
"numero": "75/554,461",
"pais": "US",
"data": "16/09/1998"
}
}Isso é a Convenção de Paris: o depósito no Brasil herda a data de prioridade do depósito original nos EUA, 16/09/1998 — seis meses antes do depósito brasileiro.
3. Evidência bruta — mesmo processo, agora pedindo o pacote de prova:
inpi_get_process_detail({ cod_pedido: "1164582", salvar_evidencia: true })manifest.json gerado (trecho — a captura real teve 10 assets, aqui 3):
{
"capturadoEm": "2026-09-11T15:20:56.741Z",
"rawHtml": { "path": "raw.html", "sha256": "7a99723ffa02766...", "bytes": 104003 },
"assets": [
{
"urlOriginal": "https://busca.inpi.gov.br/pePI/jsp/imagens/faleconosco.png",
"path": "assets/e0852aea4297da97...b779c69.png",
"contentType": "image/png",
"bytes": 5359,
"sha256": "e0852aea4297da97...b779c69",
"ok": true
},
{
"urlOriginal": "https://busca.inpi.gov.br/pePI/jsp/css/inpi.css",
"path": "assets/ccd945416a55143d...09095a63.css",
"contentType": "text/css",
"bytes": 7607,
"sha256": "ccd945416a55143d...09095a63",
"ok": true
}
]
}Cada asset tem sha256 conferível contra o arquivo em disco — é isso que separa "relatório bonito" de evidência auditável. Ver § Evidência bruta abaixo.
Instalação
git clone https://github.com/<seu-usuario>/inpi-marcas-mcp-server.git
cd inpi-marcas-mcp-server
npm install
npm run buildConfigure o login no claude_desktop_config.json (ou equivalente do seu cliente MCP):
{
"mcpServers": {
"inpi-marcas": {
"command": "node",
"args": ["/caminho/completo/para/inpi-marcas-mcp-server/dist/index.js"],
"env": {
"INPI_USERNAME": "seu_login_pepi",
"INPI_PASSWORD": "sua_senha_pepi"
}
}
}
}Veja .env.example se preferir rodar localmente com npm run dev durante o desenvolvimento.
Limites (os mesmos do pePI, não deste servidor)
O pePI é um sistema de governo sem API oficial nem SLA. Este servidor espaça as chamadas (~1 por segundo) para não martelar um serviço público além do que uma pessoa navegando manualmente faria. Não existe teto diário embutido aqui — o que existir é do lado do INPI. Se o layout do site mudar, os parsers podem quebrar; abra uma issue com o HTML que veio, sem incluir nenhuma credencial.
Configure um timeout generoso no seu cliente MCP. Medido sob carga: uma busca legítima
pode levar até ~70-90s pra voltar do pePI. O servidor já espera até 90s antes de desistir
(REQUEST_TIMEOUT_MS), mas o SDK do MCP tem o próprio timeout do lado do cliente
(padrão de 60s) — se ele for igual ou menor que o do servidor, o cliente desiste antes do
servidor ter chance de responder, mesmo quando o pePI ia responder com sucesso. Configure pelo
menos 120s por chamada ({ timeout: 120_000 } na opção RequestOptions do callTool, se você
estiver integrando via SDK TypeScript — veja test/e2e.mjs para um exemplo).
O que este servidor NÃO é
Ele só espelha a busca pública do pePI: dado que qualquer pessoa já acessa de graça, formatado para um agente de IA ler. Não faz jurimetria, não cruza fonte, não monitora colidência ao longo do tempo, não analisa risco. Quem quiser isso de forma pronta, sem precisar orquestrar ferramenta nenhuma, é o que o INCISO faz — plataforma de inteligência de marca construída em cima do acervo completo de RPIs do INPI, não só da busca ao vivo.
Fronteira jurídica: anterioridade × colidência
As ferramentas de busca fazem busca de anterioridade — mostram o que já está registrado
ou em processo, hoje, no pePI. Isso não é uma análise de colidência: colidência avalia
semelhança gráfica, fonética, ideológica e afinidade mercadológica entre sinais, conforme o
item 5.11 do Manual de Marcas do INPI,
e exige avaliação humana (idealmente de advogado especialista em PI). Toda resposta de busca
traz esse aviso, e structuredContent nunca inclui um veredito de "pode registrar" — só o dado
bruto do pePI, mais uma classificação auxiliar (ver abaixo).
Proveniência e situação operacional
Todo structuredContent (de busca ou de detalhe) traz um campo proveniencia — fonte,
urlConsulta e consultadoEm (ISO 8601) — pra dar rastreabilidade: de onde e quando aquele
dado específico veio, útil pra quem precisa auditar ou anexar a um parecer.
Cada resultado também traz situacaoOperacional — uma classificação (registro_vigente,
registro_extinto, pedido_em_andamento, pedido_arquivado, pedido_indeferido,
indeterminado) derivada por padrão de texto sobre o campo bruto situacao do pePI. Não é
exaustiva nem tem valor jurídico próprio — o pePI é sistema legado sem enum fechado de status,
então isso é conveniência de filtro, não fonte de verdade. O campo situacao bruto continua
disponível e é sempre a referência final.
Formato da resposta
Cada ferramenta devolve duas coisas na mesma chamada: um content em texto (Markdown,
pra ler direto) e um structuredContent com os mesmos dados em JSON (pra outro programa
processar). Isso é o padrão do protocolo MCP e não muda.
Além disso, toda ferramenta de busca e a de detalhe aceitam salvar_html: true — aí, além
do Markdown e do JSON, o servidor também escreve um relatório HTML autocontido (tabela, sem
depender de MCP nem de internet pra abrir) em ~/inpi-marcas-mcp-server/relatorios/ (ou em
INPI_HTML_DIR, se definido), e devolve o caminho do arquivo na resposta.
Cache local
Toda busca (exceto inpi_next_page, que depende da sessão do servidor do pePI) passa primeiro
por um cache em disco — ~/.cache/inpi-marcas-mcp-server/ por padrão, configurável em
INPI_CACHE_DIR. A mesma busca repetida dentro de INPI_CACHE_TTL_HORAS (padrão: 6h) volta
instantânea, sem chamada nenhuma ao pePI. Use forcar_atualizacao: true em qualquer ferramenta
pra ignorar o cache e ir direto ao pePI ao vivo. INPI_CACHE_TTL_HORAS=0 desliga o cache.
Isso existe pra não martelar um sistema de governo sem SLA com a mesma pergunta de novo — e pra deixar buscas repetidas (ex: um agente checando a mesma marca em turnos diferentes de uma conversa) instantâneas.
Evidência bruta
salvar_html: true gera um relatório legível — bom pra humano ler, mas é uma tabela
formatada por nós, sem o HTML original, sem as imagens. Pra prova de marca de verdade —
sobretudo mista/figurativa, onde a imagem é o dado — isso não basta. Regra: parser é
conveniência; snapshot completo é evidência.
Toda ferramenta de busca e a de detalhe também aceitam salvar_evidencia: true, que grava um
pacote completo em ~/inpi-marcas-mcp-server/evidencias/ (ou INPI_EVIDENCE_DIR):
evidencias/<contexto>-<timestamp>/
manifest.json # URL original, sha256, tamanho e content-type de cada arquivo; falha nunca some
raw.html # exatamente o que o pePI devolveu, sem edição nenhuma
snapshot.html # cópia reescrita pra abrir offline, sem pedir nada de rede
assets/<sha256>.<ext> # cada imagem/CSS baixado, nomeado pelo próprio hashstructuredContent.proveniencia.evidencia aponta pros caminhos (não duplica o conteúdo dentro
do JSON). Escopo dos assets: só mesma origem (busca.inpi.gov.br) — é o que compõe a prova
em si (logo/figura da marca, estilo da página); script de terceiro ou CDN externo não entra, pra
não inflar o pacote com o que não é o dado.
salvar_evidencia: true sempre vai ao pePI ao vivo (ignora o cache), porque a evidência precisa
do HTML da requisição real — um resultado servido do cache não carrega o HTML bruto consigo.
Limite conhecido do "offline": snapshot.html reescreve src/href/url(...) estáticos
(imagem, CSS) pros arquivos locais, e neutraliza <script src> de mesma origem — mas o pePI é
HTML legado com alguns efeitos de rollover via onmouseover/onmouseout inline (ex: um ícone
decorativo "Fale Conosco" no rodapé) que trocam o src de volta pro domínio real no hover.
Reescrever string dentro de JS arbitrário com segurança é um problema maior que o valor de
corrigir um ícone decorativo que não é dado de marca — o conteúdo evidencial (imagem/dado da
marca) sempre fica local; só esse tipo pontual de elemento decorativo pode tentar uma chamada de
rede se o usuário passar o mouse em cima.
Desenvolvimento
npm run dev # roda com tsx, recarrega ao salvar
npm run build # compila pra dist/Testar com o MCP Inspector — guia curto em MCP_INSPECTOR.md (login, timeout, primeiro teste):
INPI_USERNAME=seu_login_pepi INPI_PASSWORD=sua_senha npx @modelcontextprotocol/inspector node dist/index.jsTeste de ponta a ponta de verdade — sobe o servidor compilado, conecta como um cliente MCP conectaria (stdio + JSON-RPC, não a lógica interna direto) e faz uma busca real contra o pePI:
INPI_USERNAME=seu_login INPI_PASSWORD=sua_senha npm run test:e2eFaz chamada de rede de verdade contra um sistema de governo sem SLA — se der timeout uma vez, rode de novo antes de abrir issue.
Teste offline dos parsers — sem rede, sem credencial, contra um corpus de HTML real salvo
(test/fixtures/, ver test/fixtures/README.md pro que cada caso
guarda: marca com/sem prioridade unionista, processo extinto/arquivado, pedido em andamento,
designação via Protocolo de Madri, processo sem seção de representante legal, etc.):
npm run test:parsersCI (.github/workflows/ci.yml) roda typecheck, build, test:parsers e npm audit a cada
push/PR — não roda test:e2e, porque isso exigiria uma credencial pessoal do pePI como
secret de CI pública, o que não faz sentido pedir de quem for contribuir. test:parsers roda
em CI porque é offline. Rode npm run test:e2e localmente com sua própria credencial antes de
abrir um PR.
Segurança
Veja SECURITY.md para a postura de credenciais — resumo: a senha nunca sai do seu processo local, nunca é logada, nunca é gravada em disco (nem no cache, nem no relatório HTML).
Limitações conhecidas
Existe um portal novo de busca de marcas do INPI, ainda não mapeado. servicos.busca.inpi.gov.br/marcas — confirmado real e em produção (versão 2, 21/08/2026; dados atualizados em 07/07/2026; telas de "Busca rápida" e "Busca", PT/ES/EN). Ainda não sei se substitui o pePI ou só o espelha, nem como são tráfego/endpoints, login, limites, exportação de imagem — é SPA (JavaScript), então fetch simples não basta pra mapear. Este servidor continua sobre o pePI, a fonte implementada e provada; o portal novo é candidato a fonte futura, sujeito a um estudo dedicado antes de qualquer código.
Licença
MIT — veja LICENSE. Use, modifique, redistribua. Só não venda como se fosse canal oficial do INPI, porque não é.
Available Tools
7 toolsinpi_get_process_detailVer detalhe completo de um processo de marcaARead-onlyIdempotent
Busca o detalhe completo de um processo de marca no pePI (INPI oficial): classes de Nice com especificação, todos os titulares, procurador/representante legal, datas de depósito/concessão/vigência, prioridade unionista e histórico de petições protocoladas.
Precisa do "cod_pedido" (CodPedido), que vem no campo "CodPedido (use em inpi_get_process_detail)" das ferramentas de busca — não é o número do processo público, é um ID interno do pePI.
| Name | Required | Description | Default |
|---|---|---|---|
| cod_pedido | Yes | CodPedido retornado por uma busca anterior | |
| salvar_html | No | true = também salva o resultado como um relatório HTML legível (tabela, sem depender de MCP) em disco e devolve o caminho do arquivo. | |
| salvar_evidencia | No | true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real. | |
| forcar_atualizacao | No | Ignora o cache local (padrão 6h) e busca de novo no pePI ao vivo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, idempotent, and non-destructive behavior. The description adds that it queries official pePI data and requires an internal CodPedido, but it does not discuss auth, rate limits, or the optional local file-writing behavior beyond what the parameter schema explains.
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 paragraphs: the first states what detail is returned, and the second gives the critical ID prerequisite. The field enumeration earns its space by setting expectations, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description summarizes the returned content: Nice classes, owners, legal representative, deposit/grant/validity dates, unionist priority, and petition history. Optional save/update behavior is covered by the input schema, so the main context is complete enough.
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%, so the optional flags are already documented. The description adds critical meaning for cod_pedido: it comes from a specific search-result field and is an internal pePI ID, not the public process number.
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?
States a specific verb ('Busca') and resource ('detalhe completo de um processo de marca'), enumerates the returned data, and distinguishes itself from search siblings by requiring a CodPedido from prior search results rather than the public process number.
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?
Gives a strong prerequisite: cod_pedido must come from a previous search, and it is not the public process number. It does not explicitly name the alternative sibling to use when only the public process number is available, but the routing context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inpi_next_pageBuscar próxima página de resultadosARead-onlyIdempotent
Avança para outra página de uma busca de marcas já realizada no pePI (INPI oficial). Use depois de qualquer uma das ferramentas de busca quando a resposta indicar que há mais páginas.
Não tem cache próprio: pagina a ÚLTIMA busca feita nesta sessão (o pePI guarda isso no servidor, não aqui). Se a busca anterior tiver vindo do cache local, esta ferramenta reenvia ela ao pePI ao vivo primeiro, automaticamente, pra não paginar a coisa errada.
| Name | Required | Description | Default |
|---|---|---|---|
| pagina | Yes | Número da página a buscar (2 = segunda página, etc) | |
| salvar_html | No | true = também salva o resultado como um relatório HTML legível (tabela, sem depender de MCP) em disco e devolve o caminho do arquivo. | |
| salvar_evidencia | No | true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: no own cache, pagination of the last session search, and automatic live re-send if the previous search was cached. It also details optional side effects for salvar_html and salvar_evidencia. However, the readOnlyHint annotation contradicts the file-writing side effects, and error/rate-limit behavior is not covered.
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 tight paragraphs with no redundant text. It front-loads purpose and usage, then explains caching behavior concisely.
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?
The definition covers purpose, usage, caching, and optional evidence/report saving, giving enough context for an agent to call it correctly. It lacks return format details and error handling, but for a pagination tool with no output schema this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema itself provides clear descriptions for 'pagina', 'salvar_html', and 'salvar_evidencia'. The description does not add parameter-specific details beyond the schema, so baseline 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 identifies the verb 'Avança para outra página' and the resource 'busca de marcas já realizada no pePI', specifying it is for pagination of search results. It distinguishes itself from search tools by stating it should be used after a search when more pages are indicated.
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 explicitly states when to use: 'Use depois de qualquer uma das ferramentas de busca quando a resposta indicar que há mais páginas.' It also explains the prerequisite of a prior search and cache behavior, including automatic re-send to live pePI if the previous search came from local cache.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inpi_search_by_figurative_codeBuscar marcas figurativas por código de VienaARead-onlyIdempotent
Busca marcas figurativas/mistas no pePI (INPI oficial) pelo Código de Viena (a classificação internacional de elementos figurativos — ex: 27.05.01 para letras estilizadas). Use quando estiver checando colidência de logotipo/elemento gráfico, não de texto.
Cada campo (viena_1/2/3) é um código COMPLETO (grupo.divisão.seção). Preencher mais de um campo busca marcas que tenham TODOS os códigos ao mesmo tempo (AND), não é mais preciso — na dúvida, use só viena_1.
A Classificação de Viena completa está em https://www.gov.br/inpi — se não souber o código, descreva o elemento gráfico ao usuário e peça para consultar a tabela oficial antes de buscar.
| Name | Required | Description | Default |
|---|---|---|---|
| viena_1 | No | Primeiro código da Classificação de Viena (grupo.divisão.seção), ex: 27.05.01 | |
| viena_2 | No | Segundo código, ANDado com o primeiro (só use se precisar que a marca tenha os dois elementos) | |
| viena_3 | No | Terceiro código, ANDado com os outros dois | |
| classe_nice | No | Filtra pela Classificação de Nice, ex: 09, 42 | |
| salvar_html | No | true = também salva o resultado como um relatório HTML legível (tabela, sem depender de MCP) em disco e devolve o caminho do arquivo. | |
| salvar_evidencia | No | true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real. | |
| forcar_atualizacao | No | Ignora o cache local (padrão 6h) e busca de novo no pePI ao vivo. | |
| resultados_por_pagina | No | Resultados por página. Valores aceitos pelo pePI: 20, 40, 60, 80, 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/safe/idempotent profile. The description adds non-obvious behavioral context the schema annotations don't: AND semantics across viena fields, the need to know the Vienna code first, and where to find the classification. However it doesn't state anything about result format, the cache freshness for ordinary searches, or rate limits.
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?
Three tight sentences front-loaded with purpose, then semantics, then precondition. No wasted filler; the URL reference is the only slightly disruptive element and still earns its place as guidance.
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?
Annotations cover safety, schema documents all 8 params with examples, and the description supplies the when-to-use, the AND-semantics warning, and the code-precondition. Missing only a note about output shape/pagination behavior, which is not critical given the read-only annotation and complete schema.
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% – each field is documented, including examples. The description adds the AND-across-fields semantics which mirrors the schema's own wording, plus a short-form-code reminder. Baseline 3 is appropriate since the schema already does the heavy lifting.
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?
States a specific verb+resource ('Busca marcas figurativas/mistas no pePI pelo Código de Viena') and explicitly distinguishes itself from text-based sibling searches ('Use quando estiver checando colidência de logotipo/elemento gráfico, não de texto'). An agent can tell this apart from inpi_search_by_mark without opening either schema.
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 states when to use it (figurative/graphic element collision checks) and implicitly when not (text searches). Advises using only viena_1 when unsure and consulting the official Vienna table before searching, but the descriptions of the sibling tools aren't referenced as explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inpi_search_by_markBuscar marca por texto (exata ou radical)ARead-onlyIdempotent
Busca marcas no pePI (INPI oficial) pelo texto da marca, igual à aba "Marca" do site oficial. Suporta busca exata (o termo inteiro) ou por radical (o termo aparece em qualquer parte do nome). Pode filtrar por Classificação de Nice.
Use esta busca para descobrir se um nome já está registrado e quem são os titulares. Para busca mais avançada com apresentação, natureza ou operadores booleanos, use inpi_search_by_mark_advanced.
| Name | Required | Description | Default |
|---|---|---|---|
| marca | Yes | Texto da marca a buscar, ex: GOOGLE | |
| busca_exata | No | true = busca exata; false = busca por radical (contém o texto) | |
| classe_nice | No | Filtra pela Classificação de Nice, ex: 09, 42 | |
| salvar_html | No | true = também salva o resultado como um relatório HTML legível (tabela, sem depender de MCP) em disco e devolve o caminho do arquivo. | |
| salvar_evidencia | No | true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real. | |
| forcar_atualizacao | No | Ignora o cache local (padrão 6h) e busca de novo no pePI ao vivo. | |
| resultados_por_pagina | No | Resultados por página. Valores aceitos pelo pePI: 20, 40, 60, 80, 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds meaningful context: it queries the official INPI pePI source, supports exact/radical matching, and is intended to reveal registration status and titulars. It omits caching/rate-limit details, but those are covered in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short paragraphs front-load purpose and search modes, then give usage and the sibling alternative. Every sentence supports tool selection or parameter understanding, with no wasted text.
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 read-only search tool with full schema coverage and no output schema, the description supplies source, search modes, Nice filter, intended discovery use, and an explicit alternative. It is complete enough for an agent to call correctly; return details are reasonably implied.
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%, so all seven parameters are documented in the schema. The description repeats the main search semantics (exact/radical and Nice filter) but adds little syntax or meaning beyond what the schema already provides, making the baseline 3 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?
States a specific verb 'Busca marcas' and resource 'pePI (INPI oficial)' by mark text, and distinguishes exact versus radical search plus Nice filter. It also names the advanced sibling for broader scope, so an agent can differentiate the 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 says to use this search to discover whether a name is registered and who the titulars are. It also states that for advanced search with apresentação, natureza, or boolean operators, use inpi_search_by_mark_advanced, providing a clear alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inpi_search_by_mark_advancedBusca avançada de marca (booleana/fuzzy, apresentação, natureza)ARead-onlyIdempotent
Busca avançada de marcas no pePI (INPI oficial), igual à Pesquisa Avançada do site oficial. Permite operadores booleanos (AND/OR) ou busca fuzzy, filtrar por forma de apresentação (nominativa/mista/figurativa/tridimensional/posição), natureza (produto/serviço/coletiva/certificação) e restringir a "Pedidos Vivos" (só processos ainda ativos).
Use quando a busca básica (inpi_search_by_mark) for imprecisa demais ou quando precisar filtrar por apresentação/natureza específica — por exemplo, checar colidência só entre marcas mistas na mesma classe.
| Name | Required | Description | Default |
|---|---|---|---|
| marca | Yes | Texto da marca. Aceita operadores booleanos quando fuzzy=false, ex: GOOGLE AND CLOUD | |
| natureza | No | Natureza da marca | qualquer |
| busca_fuzzy | No | false = busca booleana (padrão do pePI); true = busca fuzzy/aproximada | |
| classe_nice | No | Filtra pela Classificação de Nice, ex: 09, 42 | |
| salvar_html | No | true = também salva o resultado como um relatório HTML legível (tabela, sem depender de MCP) em disco e devolve o caminho do arquivo. | |
| apresentacao | No | Forma de apresentação da marca | qualquer |
| salvar_evidencia | No | true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real. | |
| forcar_atualizacao | No | Ignora o cache local (padrão 6h) e busca de novo no pePI ao vivo. | |
| apenas_pedidos_vivos | No | true = só processos ativos (Pedidos Vivos); false = inclui arquivados/extintos | |
| resultados_por_pagina | No | Resultados por página. Valores aceitos pelo pePI: 20, 40, 60, 80, 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context (boolean vs. fuzzy mode, active-process filtering, equivalence to the official advanced search), but it omits any mention of the optional file-writing side effects (salvar_html, salvar_evidencia) that are documented only in the parameter descriptions. Given the readOnlyHint, that omission is a noticeable gap, though the schema does disclose it.
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 front-loaded with purpose and key capabilities, then moves to usage guidance. It is dense but not bloated, and every sentence serves a clear role. Minor room for tightening the long first sentence, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema (100% coverage), three annotations, and no output schema, the description provides enough context to select and invoke the tool correctly. It covers the core search modes and filters; return format and pagination are left to the schema, and the only notable omission is a reconciliation of the file-writing flags with the readOnlyHint annotation.
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%, so the schema already fully documents all 10 parameters, including their enums, defaults, and behaviors. The description adds a high-level summary of the filter categories (presentation, nature, active processes, boolean/fuzzy), but no syntax or semantics beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
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 states a specific verb and resource ('Busca avançada de marcas no pePI'), lists the defining capabilities (boolean/fuzzy search, presentation and nature filters, active-process restriction), and explicitly distinguishes itself from the basic sibling 'inpi_search_by_mark'. An agent can tell exactly what this tool does differently from the basic search without opening the schema.
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 gives an explicit condition for use: when the basic search ('inpi_search_by_mark') is too imprecise or when filtering by presentation/nature is needed. It also supplies a concrete example ('checar colidência só entre marcas mistas na mesma classe'), making the routing decision unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inpi_search_by_ownerBuscar marcas por titular (CNPJ/CPF ou nome)ARead-onlyIdempotent
Lista as marcas registradas por um titular no pePI (INPI oficial), buscando por CNPJ/CPF ou por nome/razão social.
A busca por CNPJ/CPF é direta. A busca por nome é em DUAS ETAPAS, igual ao site oficial: primeiro devolve os nomes de titular parecidos com o termo (cada um com um número 'pos'), depois é preciso chamar de novo com esse 'pos' para ver as marcas do titular escolhido — não existe atalho, o próprio pePI funciona assim.
Útil para levantar o portfólio de marcas de uma empresa ou pessoa antes de uma due diligence de M&A, ou para conferir se um cliente já tem registros anteriores.
| Name | Required | Description | Default |
|---|---|---|---|
| pos | No | Quando a busca por nome retorna uma lista de titulares candidatos (nomes parecidos), refaça a chamada com o mesmo nome e este 'pos' para ver as marcas do titular escolhido. | |
| nome | No | Nome ou razão social do titular | |
| cnpj_cpf | No | CNPJ ou CPF do titular, só números ou formatado | |
| salvar_html | No | true = também salva o resultado como um relatório HTML legível (tabela, sem depender de MCP) em disco e devolve o caminho do arquivo. | |
| salvar_evidencia | No | true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real. | |
| forcar_atualizacao | No | Ignora o cache local (padrão 6h) e busca de novo no pePI ao vivo. | |
| resultados_por_pagina | No | Resultados por página. Valores aceitos pelo pePI: 20, 40, 60, 80, 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, idempotent, and non-destructive behavior. The description adds critical workflow context: name searches are two-stage and require a second call with 'pos', with no shortcut.
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?
Front-loads the core purpose, then explains the non-obvious two-stage name search, then gives useful scenarios. The paragraphs are compact and every sentence earns its place.
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 seven-parameter, no-output-schema, open-world search tool, the description covers the core purpose and tricky two-stage retrieval well. Minor gaps remain around sibling routing, pagination, and optional file-saving behavior, though those are partly covered by the schema.
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%, so the schema already documents all seven parameters. The description reinforces the name/pos two-step behavior but does not add meaning beyond the schema for other parameters such as salvar_html, salvar_evidencia, forcar_atualizacao, or resultados_por_pagina.
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?
States a specific verb and resource: 'Lista as marcas registradas por um titular no pePI (INPI oficial)'. It clearly distinguishes this tool as an owner-based trademark search using CNPJ/CPF or name.
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 usage context: portfolio research, M&A due diligence, and checking previous client registrations. It also explains the CNPJ/CPF direct path versus the two-stage name path, but it does not explicitly compare against sibling search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inpi_search_by_process_numberBuscar marca por número de processoARead-onlyIdempotent
Busca uma marca no pePI (INPI oficial) por número de processo, GRU, protocolo de petição ou inscrição internacional (Protocolo de Madri). Use exatamente um desses números — é a forma mais direta de achar um processo específico quando você já sabe o número.
Retorna o(s) processo(s) encontrado(s) com número, marca, situação, titular e classe. Para o detalhe completo (classes, titulares, datas, petições), use inpi_get_process_detail com o CodPedido retornado.
| Name | Required | Description | Default |
|---|---|---|---|
| numero_gru | No | Número da GRU (Guia de Recolhimento da União) | |
| salvar_html | No | true = também salva o resultado como um relatório HTML legível (tabela, sem depender de MCP) em disco e devolve o caminho do arquivo. | |
| numero_processo | No | Número do processo/pedido, ex: 821480880 | |
| numero_protocolo | No | Número do protocolo de petição | |
| salvar_evidencia | No | true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real. | |
| forcar_atualizacao | No | Ignora o cache local (padrão 6h) e busca de novo no pePI ao vivo. | |
| numero_inscricao_internacional | No | Número da inscrição internacional (Protocolo de Madri) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, open-world, non-destructive operation, so the safety bar is met structurally. The description adds value beyond that by listing the fields returned (número, marca, situação, titular, classe) and by pointing to the detail tool, useful since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short paragraphs: the first front-loads the identifier constraint, the second states return fields and the escalation path. No filler, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately covers the return shape and the hand-off to inpi_get_process_detail. Caching and evidence-save behavior live in the schema parameter docs, so nothing an agent needs to call this correctly is missing.
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%, so the baseline is 3, but the description adds a constraint the schema does not convey: the identifier parameters are mutually exclusive and exactly one must be supplied (all are individually optional in the schema, with no oneOf). That is genuine semantic value beyond the structured fields.
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?
States a specific verb (Busca) and resource (marca no pePI) plus the four accepted identifier types, and distinguishes itself by routing detail lookups to inpi_get_process_detail. An agent can tell it apart from the broader search siblings (by_mark, by_owner) without opening a schema.
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 says to use exactly one of these numbers and that this is the most direct way when you already know the number. It names the follow-up alternative (inpi_get_process_detail), but gives no guidance for the reverse case (what to use when you don't know the number), which the other search_* siblings cover.
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.
7 tool updates
v0.2.0- Changed
inpi_get_process_detail1 field changed- added
Input schema / properties / salvar_evidenciaAdded value: +{ + "default": false, + "description": "true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real.", + "type": "boolean" +}
- Changed
inpi_next_page1 field changed- added
Input schema / properties / salvar_evidenciaAdded value: +{ + "default": false, + "description": "true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real.", + "type": "boolean" +}
- Changed
inpi_search_by_figurative_code1 field changed- added
Input schema / properties / salvar_evidenciaAdded value: +{ + "default": false, + "description": "true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real.", + "type": "boolean" +}
- Changed
inpi_search_by_mark1 field changed- added
Input schema / properties / salvar_evidenciaAdded value: +{ + "default": false, + "description": "true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real.", + "type": "boolean" +}
- Changed
inpi_search_by_mark_advanced1 field changed- added
Input schema / properties / salvar_evidenciaAdded value: +{ + "default": false, + "description": "true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real.", + "type": "boolean" +}
- Changed
inpi_search_by_owner1 field changed- added
Input schema / properties / salvar_evidenciaAdded value: +{ + "default": false, + "description": "true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real.", + "type": "boolean" +}
- Changed
inpi_search_by_process_number1 field changed- added
Input schema / properties / salvar_evidenciaAdded value: +{ + "default": false, + "description": "true = grava um PACOTE DE EVIDÊNCIA bruta em disco (HTML original do pePI, cópia offline com imagens/CSS baixados, manifest com sha256 de cada arquivo) — pra prova/auditoria, não só leitura. Diferente de salvar_html (que é só um relatório bonito). Sempre vai ao pePI ao vivo, ignorando o cache, porque a evidência precisa do HTML da requisição real.", + "type": "boolean" +}
7 tool updates
v0.1.0- First observed
inpi_get_process_detail - First observed
inpi_next_page - First observed
inpi_search_by_figurative_code - First observed
inpi_search_by_mark - First observed
inpi_search_by_mark_advanced - First observed
inpi_search_by_owner - First observed
inpi_search_by_process_number
TDQS
Scored across 7 tools
Each tool targets a distinct query type (basic text, advanced filters, process number, owner, Vienna code, pagination, detailed record) and descriptions cross-reference each other well. However, inpi_search_by_mark and inpi_search_by_mark_advanced overlap functionally since advanced subsumes basic filters, which could cause occasional misselection.
All tool names use snake_case with a consistent 'inpi_' prefix and predictable verbs (search_by_*, get_*, next_page). The family of search tools is especially uniform and readable.
Seven tools is well-scoped for a read-only trademark search server; each tool (multiple search axes, pagination, detail retrieval) clearly earns its place without redundancy.
The surface covers multiple search dimensions (text, owner, process number, figurative code, advanced filters), pagination, and full process detail, which is strong for inquiry workflows. Minor gaps exist, such as no standalone Nice-class search tool or classification code lookup/export, but agents can work around them.
Maintenance
Related MCP Connectors
Brazilian INPI trademark & patent lookup by name, process number or holder (CPF/CNPJ).
Monitors Brazilian trademarks at INPI and alerts on new RPI publications and deadlines.
Trademark search, monitoring and conflict research across 30+ registers, with provenance.
INPI: Marcas, official-source lookup. Platform-hosted, pay per query with prepaid credit.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceEnables LLMs to search and retrieve detailed information from the Turkish Patent and Trademark Office (TÜRKPATENT) database for trademarks, patents, and industrial designs. It provides comprehensive intellectual property research tools through the Model Context Protocol.47-
- FlicenseNot gradedqualityCmaintenanceBridges AI agents to the Brazilian SEI system, enabling listing processes, reading documents, searching, and downloading files via session cookies.2-
- AlicenseAqualityDmaintenanceExposes the BrasilAPI as MCP tools, enabling AI agents to query Brazilian public data such as CEP, CNPJ, DDD, IBGE, banks, PIX, FIPE, NCM, exchange rates, taxes, weather, CVM information, holidays, ISBN, domains, stock tickers, and TUSS.41Apache 2.0
- AlicenseNot gradedqualityBmaintenanceBrazilian company-registry lookup via Receita Federal, allowing AI agents to query CNPJ data.155 npmMIT