mcp-dir Legal MCP
An open-source legal discovery tool for AI agents that searches public court databases. It allows users to find lawsuits by name, CPF, CNPJ, or case number, retrieve DJEN publications, and access sanctions and municipal mentions without requiring a login.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.mcp.ai/legalWhat its tools do
30 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (25)
djen_search_comunicacoesdjen_processos_por_partedjen_get_certidaoprocessos_buscar_por_nomeprocessos_buscar_por_documentoprocessos_obter_pecasprocessos_get_resultadocnpj_consultarcnpj_processoscpf_validarcpf_processostransparencia_sancoestransparencia_peptransparencia_despesas_favorecidotransparencia_despesas_documentosquerido_diario_buscarjurisprudencia_buscarjurisprudencia_sumulasjurisprudencia_documentolegal_dossielegal_listar_monitoramentoslegal_checar_novidadesshow_versionconnecttoolkit_info
Can change data (5)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Find lawsuits by name, CPF, CNPJ or case number
- Retrieve publications from the National Electronic Justice Diary (DJEN)
- Access sanctions and municipal mentions attached to a legal dossier
- Search for processes by party name across public tribunal portals
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- Legal MCP 0.9.410
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 30 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
30 advertised
djen_search_comunicacoes
Busca publicações/intimações no Diário de Justiça Eletrônico Nacional (DJEN) por OAB, nome de advogado, número de processo, tribunal e data. Cada item traz o texto completo da comunicação. (É o Diário de Justiça — não é base de jurisprudência/ementas, nem cadastro de processos: só tem o que foi PUBLICADO, a partir de 2020 e com cada tribunal entrando numa data própria.) Resultado vazio NÃO devolve só `count: 0`: vem um bloco `ausencia` com o motivo provável (numero_invalido | fora_da_cobertura | sem_publicacao) — leia antes de concluir que o processo não existe, e confirme no `datajud_get_processo`, que é o índice histórico.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"meio": {
"type": "string"
},
"texto": {
"type": "string"
},
"pagina": {
"type": "number"
},
"uf_oab": {
"type": "string"
},
"data_fim": {
"type": "string"
},
"nome_parte": {
"type": "string"
},
"numero_oab": {
"type": "string"
},
"data_inicio": {
"type": "string"
},
"nome_advogado": {
"type": "string"
},
"sigla_tribunal": {
"type": "string"
},
"numero_processo": {
"type": "string"
},
"itens_por_pagina": {
"type": "number"
}
}
}{
"title": "djen_search_comunicacoes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}djen_processos_por_parte
DESCOBERTA por NOME de parte (grátis, sem captcha): busca o DJEN por quem figura no processo e agrupa por número — devolve a lista de processos da pessoa/empresa, com partes e tribunal. Cobre processos COM publicação no Diário a partir de 2020 (não o acervo histórico completo), então `count_processos: 0` NÃO significa que a pessoa não tem processo — nesse caso vem um bloco `ausencia` explicando. Para entrada por CPF/CNPJ ou processos dormentes, use as tools processos_* (engine). Com os numero_processo, enriqueça com datajud.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"nome_parte"
],
"properties": {
"pagina": {
"type": "number"
},
"data_fim": {
"type": "string"
},
"nome_parte": {
"type": "string"
},
"data_inicio": {
"type": "string"
},
"sigla_tribunal": {
"type": "string"
},
"itens_por_pagina": {
"type": "number"
}
}
}{
"title": "djen_processos_por_parte",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}djen_get_certidao
Retorna a URL da certidão (PDF) de uma comunicação do DJEN pelo seu hash (campo `hash` retornado na busca).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string"
}
}
}{
"title": "djen_get_certidao",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}processos_buscar_por_nome
DESCOBERTA: busca processos pelo NOME de uma parte (pessoa ou empresa) raspando os portais públicos dos tribunais (ESAJ/PJe/eproc/Projudi) — o gap que datajud (só por número) e djen (OAB/advogado) não cobrem. É ASSÍNCRONO e lento: retorna { job_id }; chame processos_get_resultado(job_id) para obter a lista. Com os numero_cnj, use datajud_*/djen_* para enriquecer de graça.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"nome"
],
"properties": {
"nome": {
"type": "string"
},
"platforms": {
"type": "array",
"items": {
"enum": [
"esaj",
"pje",
"eproc",
"projudi"
],
"type": "string"
}
},
"tribunais": {
"type": "array",
"items": {
"type": "string"
}
},
"max_results": {
"type": "number"
}
}
}{
"title": "processos_buscar_por_nome",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}processos_buscar_por_documento
DESCOBERTA por CPF ou CNPJ. CPF/CNPJ não são chave de busca pública nos tribunais, então o serviço resolve o documento em nome(s) e busca por NOME nos portais: CNPJ→razão social (automático) e CPF→`nome_titular`, que você PRECISA informar (CPF→nome não é dado público). ASSÍNCRONO: retorna { job_id }; faça o polling com processos_get_resultado(job_id). Sem o nome do titular do CPF, use processos_buscar_por_nome.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"documento"
],
"properties": {
"documento": {
"type": "string"
},
"platforms": {
"type": "array",
"items": {
"enum": [
"esaj",
"pje",
"eproc",
"projudi"
],
"type": "string"
}
},
"tribunais": {
"type": "array",
"items": {
"type": "string"
}
},
"max_results": {
"type": "number"
},
"nome_titular": {
"type": "string"
}
}
}{
"title": "processos_buscar_por_documento",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}processos_obter_pecas
DOWNLOAD das DECISÕES PÚBLICAS de um processo (acórdãos/inteiro teor): busca as decisões públicas do processo, baixa o PDF e converte em Markdown (o teor da decisão), com link temporário. Escopo PÚBLICO (CNJ Res. 121/2010): retorna o inteiro teor das decisões/acórdãos, NÃO os autos completos (petições/documentos exigem credencial de advogado). É ASSÍNCRONO (captcha por busca): retorna { job_id }; faça o polling com processos_get_resultado(job_id). Quando 'done', cada item traz `markdown` (texto da decisão) + `pdf_url`/`expires_at` (link expira, nada fica arquivado). Use o numero_cnj de processos_get_resultado/datajud. Processo sem decisão pública (ex.: só 1º grau em andamento) volta lista vazia.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"numero_cnj"
],
"properties": {
"formato": {
"enum": [
"markdown",
"pdf"
],
"type": "string"
},
"peca_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"tribunal": {
"type": "string"
},
"numero_cnj": {
"type": "string"
}
}
}{
"title": "processos_obter_pecas",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}processos_get_resultado
Polling de um job de busca (de processos_buscar_por_nome/documento). Retorna { status, progress, items[], errors[] }. status: queued|running|done|error. Quando 'done', items[] traz os processos (numero_cnj, partes, advogados/OAB, classe/assunto) prontos para enriquecer com datajud_*/djen_*. Continue chamando até 'done' (a busca é lenta). IMPORTANTE: um 'done' pode vir DEGRADADO, e nesse caso vem um bloco `aviso` — leia antes de usar os dados. `vinculacao_nome: "nao_confirmada"` significa que o resultado NÃO foi validado contra o nome buscado (não apresente como processo da pessoa sem conferir), e `tribunais_inacessiveis` lista portais que não responderam: isso NÃO quer dizer que o tribunal não tenha o processo. Bulk support: accepts job_ids for batched execution.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string"
},
"job_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
}{
"title": "processos_get_resultado",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}cnpj_consultar
Consulta cadastral de um CNPJ (grátis): razão social, nome fantasia, situação cadastral, CNAE principal, porte, município/UF e SÓCIOS (QSA). Útil pra identificar a empresa e seus sócios antes de buscar processos.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string"
}
}
}{
"title": "cnpj_consultar",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}cnpj_processos
DESCOBERTA por CNPJ: resolve o CNPJ em razão social (e sócios) e busca os processos por NOME no Diário (DJEN) — grátis, com número de processo completo. Opcionalmente inclui os processos dos sócios. Com os números, enriqueça com as tools datajud.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string"
},
"incluir_socios": {
"type": "boolean"
}
}
}{
"title": "cnpj_processos",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}cpf_validar
Valida os dígitos verificadores de um CPF (mod 11) e informa se há broker de identidade disponível. Não revela a identidade do titular.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cpf"
],
"properties": {
"cpf": {
"type": "string"
}
}
}{
"title": "cpf_validar",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}cpf_processos
DESCOBERTA por CPF: busca os processos da pessoa por NOME no Diário (DJEN), grátis. IMPORTANTE: CPF→nome não é dado público — informe o parâmetro `nome` (recomendado). Sem nome, só resolve se houver um broker pago configurado na plataforma; caso contrário retorna instrução pedindo o nome.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cpf"
],
"properties": {
"cpf": {
"type": "string"
},
"nome": {
"type": "string"
}
}
}{
"title": "cpf_processos",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}transparencia_sancoes
Consulta sanções de uma pessoa ou empresa por CPF/CNPJ no Portal da Transparência (consolida CEIS — inidôneas/suspensas, CNEP — empresas punidas, e CEPIM — entidades impedidas). Retorna `tem_sancao` + lista com tipo, órgão, fundamentação e datas. Due diligence / compliance.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cpf_cnpj"
],
"properties": {
"cpf_cnpj": {
"type": "string"
}
}
}{
"title": "transparencia_sancoes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}transparencia_pep
Verifica se um CPF é de Pessoa Exposta Politicamente (PEP) e retorna função/órgão/período. Importante para compliance/KYC.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cpf"
],
"properties": {
"cpf": {
"type": "string"
}
}
}{
"title": "transparencia_pep",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}transparencia_despesas_favorecido
DESPESAS recebidas por uma empresa ou pessoa (CPF/CNPJ) do Governo Federal num período: 'quanto a empresa recebeu da União'. Soma os recursos recebidos e quebra por órgão pagador e por mês. IMPORTANTE: cobre só o Executivo FEDERAL, não inclui estados nem municípios (cada ente tem portal próprio). Sem datas, usa os últimos 12 meses.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cpf_cnpj"
],
"properties": {
"cpf_cnpj": {
"type": "string"
},
"mes_ano_fim": {
"type": "string"
},
"mes_ano_inicio": {
"type": "string"
}
}
}{
"title": "transparencia_despesas_favorecido",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}transparencia_despesas_documentos
Documentos de despesa (Empenho, Liquidação ou Pagamento) emitidos pelo Governo Federal para um favorecido (CPF/CNPJ) num ano, item-a-item: data, documento, espécie, valor, órgão, elemento de despesa e nº do processo. `fase` default = 3 (Pagamento, o dinheiro efetivamente pago). Só Executivo FEDERAL. Para o total agregado use transparencia_despesas_favorecido.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cpf_cnpj"
],
"properties": {
"ano": {
"type": "number"
},
"fase": {
"enum": [
"empenho",
"liquidacao",
"pagamento"
],
"type": "string"
},
"pagina": {
"type": "number"
},
"cpf_cnpj": {
"type": "string"
},
"ordenacao": {
"type": "number"
}
}
}{
"title": "transparencia_despesas_documentos",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}querido_diario_buscar
Busca em diários oficiais MUNICIPAIS (milhares de prefeituras) por termo/nome — útil pra menções fora do Judiciário: licitações, nomeações, contratos, sanções municipais. Complementa o DJEN (que é judicial). Cada resultado traz trechos (excerpts) + URL do diário. Para nome exato, use aspas no termo.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"termo"
],
"properties": {
"size": {
"type": "number"
},
"termo": {
"type": "string"
},
"data_fim": {
"type": "string"
},
"data_inicio": {
"type": "string"
},
"territory_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
}{
"title": "querido_diario_buscar",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}jurisprudencia_buscar
Busca jurisprudência (acórdãos, súmulas, orientações jurisprudenciais, temas) por termo ou tese. Devolve, por registro: identificação da decisão, órgão julgador, relator, data, o trecho que casou a busca e o link para o documento no site oficial. Quando o registro traz `texto_integral_disponivel: true`, o inteiro teor pode ser lido com jurisprudencia_documento usando o `id`. Alguns registros vêm sem relator/órgão/número quando a publicação não permite afirmar esses campos — campo nulo é ausência de informação na fonte, não defeito. Informe `tribunais` para restringir a busca; sem isso a pesquisa é ampla. Zero resultado não significa que a decisão não exista: costuma ser vocabulário (o termo do tribunal difere do coloquial) ou filtro estreito demais. No termo funcionam os operadores: espaço = E, "entre aspas" = frase exata, OR = ou, -palavra = exclui.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"termo"
],
"properties": {
"max": {
"type": "number"
},
"tipo": {
"type": "string"
},
"termo": {
"type": "string"
},
"data_de": {
"type": "string"
},
"ordenar": {
"enum": [
"relevancia",
"recencia"
],
"type": "string"
},
"data_ate": {
"type": "string"
},
"tribunais": {
"type": "array",
"items": {
"type": "string"
}
}
}
}{
"title": "jurisprudencia_buscar",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}jurisprudencia_sumulas
Busca SÚMULAS (incluindo vinculantes) por termo. Atalho do jurisprudencia_buscar com tipo=Súmula. Quando o texto completo do enunciado está disponível ele vem na ementa, e enunciado cancelado/revogado é marcado no próprio texto.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"termo"
],
"properties": {
"max": {
"type": "number"
},
"termo": {
"type": "string"
}
}
}{
"title": "jurisprudencia_sumulas",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}jurisprudencia_documento
Lê o INTEIRO TEOR de uma decisão (texto completo do acórdão, não o resumo). Use o campo `id` de um resultado de jurisprudencia_buscar que traga `texto_integral_disponivel: true` (o `id` já identifica o tribunal, basta repassá-lo), ou o número CNJ do processo. Resultado sem `id` não é legível por aqui, abra a `url`. Quando o processo tem mais de uma decisão, as outras vêm listadas em `outras_decisoes_do_processo`. Bulk support: accepts ids for batched execution.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"ids": {
"type": "array",
"items": {
"type": "string"
}
},
"tribunal": {
"type": "string"
},
"numeracao": {
"type": "string"
}
}
}{
"title": "jurisprudencia_documento",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}legal_dossie
Raio-X jurídico de uma pessoa ou empresa: descobre os processos e (opcional) o andamento, num relatório consolidado. Aceita `nome`, `cnpj`, `cpf` (com `nome_titular`) ou `numero_processo` — informe APENAS um. Retorna a lista de processos (número, partes, tribunal) + um aviso. IMPORTANTE: confirme sempre o número e o andamento no site oficial do tribunal — os dados podem estar incompletos/desatualizados.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"cpf": {
"type": "string"
},
"cnpj": {
"type": "string"
},
"nome": {
"type": "string"
},
"nome_titular": {
"type": "string"
},
"max_processos": {
"type": "number"
},
"incluir_socios": {
"type": "boolean"
},
"sigla_tribunal": {
"type": "string"
},
"incluir_sancoes": {
"type": "boolean"
},
"numero_processo": {
"type": "string"
},
"incluir_andamento": {
"type": "boolean"
},
"incluir_mencoes_municipais": {
"type": "boolean"
}
}
}{
"title": "legal_dossie",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}legal_monitorar
Cria um monitoramento: avisa quando houver NOVIDADE — nova movimentação (numero_processo), novo processo de uma pessoa/empresa (nome/cnpj), ou nova publicação/intimação de uma OAB (oab+uf). Os alertas chegam pelo webhook do install (evento legal.movimentacao_nova); use legal_checar_novidades para checar na hora.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"uf": {
"type": "string"
},
"oab": {
"type": "string"
},
"cnpj": {
"type": "string"
},
"nome": {
"type": "string"
},
"label": {
"type": "string"
},
"sigla_tribunal": {
"type": "string"
},
"intervalo_horas": {
"type": "number"
},
"numero_processo": {
"type": "string"
}
}
}{
"title": "legal_monitorar",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}legal_listar_monitoramentos
Lista os monitoramentos ativos do workspace.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "legal_listar_monitoramentos",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}legal_remover_monitoramento
Remove (desativa) um monitoramento pelo seu id (`watch_id`). Bulk support: accepts watch_ids for batched execution.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"watch_id"
],
"properties": {
"watch_id": {
"type": "string"
},
"watch_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
}{
"title": "legal_remover_monitoramento",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}legal_checar_novidades
Checa AGORA se há novidade nos monitoramentos (sem esperar o ciclo automático). Passe `watch_id` para um específico, ou nada para checar todos. Atualiza o estado e retorna o que mudou. Bulk support: accepts watch_ids for batched execution.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"watch_id": {
"type": "string"
},
"watch_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
}{
"title": "legal_checar_novidades",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}show_version
Show the current MCP platform and adapter versions.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "Show Version",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}report_bug
Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"message"
],
"properties": {
"context": {
"type": "string",
"default": ""
},
"message": {
"type": "string"
},
"conversation": {
"type": "string",
"default": "[]"
}
}
}{
"title": "Report Bug",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}connect
Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "Connection Status",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}toolkit_info
Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "Toolkit Info",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}marketplace
The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "number",
"default": 10
},
"query": {
"type": "string",
"default": ""
},
"action": {
"enum": [
"search",
"describe",
"install",
"uninstall",
"subscribe",
"cancel",
"resume",
"report_bug",
"request_mcp",
"list_tools",
"invoke",
"search_prompts",
"get_prompt",
"publish_prompt"
],
"type": "string",
"default": "search"
},
"mcp_id": {
"type": "string",
"default": ""
},
"message": {
"type": "string",
"default": ""
},
"tool_id": {
"type": "string",
"default": ""
},
"arguments": {
"type": "string",
"default": "{}"
},
"immediate": {
"type": "boolean",
"default": false
},
"tier_slug": {
"type": "string",
"default": ""
},
"prompt_body": {
"type": "string",
"default": ""
},
"prompt_slug": {
"type": "string",
"default": ""
},
"prompt_tool": {
"type": "string",
"default": ""
},
"prompt_vars": {
"type": "string",
"default": "{}"
},
"conversation": {
"type": "string",
"default": "[]"
},
"prompt_title": {
"type": "string",
"default": ""
},
"request_name": {
"type": "string",
"default": ""
},
"cancel_reason": {
"enum": [
"too_expensive",
"missing_features",
"switched_service",
"unused",
"customer_service",
"too_complex",
"low_quality",
"other"
],
"type": "string"
},
"cancel_comment": {
"type": "string",
"default": ""
},
"prompt_targets": {
"type": "array",
"items": {
"enum": [
"claude",
"chatgpt",
"cursor",
"lovable"
],
"type": "string"
},
"default": []
},
"report_context": {
"type": "string",
"default": ""
},
"prompt_category": {
"type": "string",
"default": ""
},
"request_details": {
"type": "string",
"default": ""
},
"prompt_description": {
"type": "string",
"default": ""
}
}
}{
"title": "Marketplace",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}authenticate
MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "<jwt>" } after the user pastes, or with no args to get the link.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"token": {
"type": "string"
}
}
}{
"title": "Authenticate",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 514 ms
- 95th percentile latency
- 514 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 514 ms · metadata changed · 30 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http legal-mcp https://api.mcp.ai/legalCodex
codex mcp add legal-mcp --url https://api.mcp.ai/legalCursor
{
"mcpServers": {
"legal-mcp": {
"url": "https://api.mcp.ai/legal"
}
}
}Cline
{
"mcpServers": {
"legal-mcp": {
"type": "streamableHttp",
"url": "https://api.mcp.ai/legal",
"disabled": false
}
}
}VS Code
{
"servers": {
"legal-mcp": {
"type": "http",
"url": "https://api.mcp.ai/legal"
}
}
}Gemini CLI
gemini mcp add --transport http legal-mcp https://api.mcp.ai/legalClaude Desktop
https://api.mcp.ai/legalWindsurf
{
"mcpServers": {
"legal-mcp": {
"serverUrl": "https://api.mcp.ai/legal"
}
}
}Let your agent find its tools
Find servers like mcp-dir Legal MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.