API e servidor MCP
Conecte a sua IA ou o seu sistema ao DevSkin Licitações: busque licitações, leia editais, veja as exigências e analise os documentos com a sua própria IA.
- MCP (Model Context Protocol):
https://api-licitacoes.devskin.com/mcp - API REST:
https://api-licitacoes.devskin.com/api/v1
1. Token de acesso
No painel, em Configurações → API e MCP (administradores), crie um token por integração. Ele começa com lic_api_, aparece uma única vez e dá acesso apenas aos dados da empresa em que foi criado.
| Permissão | O que permite |
|---|---|
| Somente leitura | Buscar licitações; consultar editais já lidos, requisitos, pré-análise, texto, análises existentes, documentos do cofre e a lei. |
| Leitura e escrita | Tudo acima, mais: trazer edital do PNCP, enviar texto ou arquivo para análise, acompanhar licitação e pedir análise por IA (consome a cota da empresa). |
Envie o token em Authorization: Bearer lic_api_… (ou no cabeçalho x-api-key). Limite: 120 chamadas por minuto por token. O token deixa de valer se for revogado ou se o usuário que o criou for desativado. Guarde-o como uma senha.
2. Conectar por MCP
Servidor remoto com transporte Streamable HTTP, sem estado: cada POST leva uma mensagem JSON-RPC 2.0 e recebe a resposta em JSON. Não há sessão nem fluxo SSE. Versões de protocolo aceitas: 2025-06-18, 2025-03-26 e 2024-11-05.
Claude Code
claude mcp add --transport http licitacoes https://api-licitacoes.devskin.com/mcp \
--header "Authorization: Bearer lic_api_SEU_TOKEN"
Clientes com MCP por HTTP e cabeçalhos (Cursor e outros)
O nome das chaves varia entre clientes e versões — confira a documentação do seu.
{
"mcpServers": {
"licitacoes": {
"type": "http",
"url": "https://api-licitacoes.devskin.com/mcp",
"headers": { "Authorization": "Bearer lic_api_SEU_TOKEN" }
}
}
}
Clientes que só aceitam servidores locais (stdio)
Use a ponte mcp-remote:
{
"mcpServers": {
"licitacoes": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api-licitacoes.devskin.com/mcp", "--header", "Authorization: Bearer lic_api_SEU_TOKEN"]
}
}
}
Agente próprio (SDK oficial do MCP, TypeScript)
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport(new URL('https://api-licitacoes.devskin.com/mcp'), {
requestInit: { headers: { Authorization: 'Bearer lic_api_SEU_TOKEN' } },
});
const client = new Client({ name: 'minha-ia', version: '1.0.0' });
await client.connect(transport);
const { tools } = await client.listTools();
const r = await client.callTool({ name: 'buscar_licitacoes', arguments: { texto: 'notebook', limite: 5 } });
console.log(r.structuredContent);
Direto em JSON-RPC
curl -X POST https://api-licitacoes.devskin.com/mcp \
-H "Authorization: Bearer lic_api_SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"valores_legais_vigentes","arguments":{}}}'
O resultado de cada ferramenta vem em result.structuredContent (objeto) e, como texto JSON, em result.content[0].text. Erros de uso voltam com isError: true e a mensagem, para a IA se corrigir.
Fluxo recomendado para analisar um edital
buscar_licitacoes— encontra a licitação (ou use obter_licitacao com o número de controle do PNCP).ler_edital_do_pncp— a plataforma baixa edital, termo de referência e anexos, extrai o texto e roda a análise por regras. Devolve o documentoId. (Se o documento é seu, use enviar_texto_para_analise ou o upload da API REST.)obter_requisitos— tudo o que o edital exige — habilitação, declarações, proposta, documentos técnicos — com item do edital, fase e situação de cada documento no cofre da empresa.obter_pre_analise— prazos, valores, garantias, modo de disputa e pontos de atenção com a base legal.obter_texto_edital / buscar_trechos_edital— a sua IA lê o texto integral em fatias, ou só os trechos sobre um assunto, e faz a própria análise.obter_analise_ia— opcional: o parecer da IA da plataforma, se já tiver sido gerado (solicitar_analise_ia gera e consome cota).
As etapas 1 a 5 não consomem a cota de IA da plataforma: são busca, regras e leitura de texto. Só solicitar_analise_ia consome.
3. API REST
| Método | Caminho | O que faz |
|---|---|---|
| GET | /api/v1/tools | Lista as ferramentas com o esquema de entrada. |
| POST | /api/v1/tools/{nome} | Executa a ferramenta. O corpo JSON são os parâmetros; a resposta é o resultado. |
| POST | /api/v1/editais/upload | Envia PDF, DOCX ou ZIP (multipart, campo file, até 40 MB). Exige token de escrita. Devolve o documentoId. |
curl -X POST https://api-licitacoes.devskin.com/api/v1/tools/buscar_licitacoes \
-H "Authorization: Bearer lic_api_SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "texto": "notebook", "ufs": ["SP"], "limite": 5 }'
curl -X POST https://api-licitacoes.devskin.com/api/v1/editais/upload \
-H "Authorization: Bearer lic_api_SEU_TOKEN" \
-F "[email protected]" \
-F "titulo=Pregão 12/2026 — Prefeitura"
Erros
Na API REST: { "error": "mensagem", "code": "CODIGO" } com o status HTTP abaixo.
| HTTP | Código | Quando |
|---|---|---|
| 401 | UNAUTHENTICATED | Token ausente, inválido, revogado, ou o usuário que o criou foi desativado. |
| 403 | SCOPE_REQUIRED | A ferramenta altera dados ou consome IA e o token é somente leitura. |
| 400 | VALIDATION_ERROR | Parâmetro ausente ou inválido (a mensagem diz qual). |
| 404 | NOT_FOUND / UNKNOWN_TOOL | Licitação, documento ou ferramenta não encontrados nesta empresa. |
| 422 | EDITAL_SEM_TEXTO | O arquivo é digitalizado (imagem) ou ilegível: não há texto para analisar. |
| 402 | AI_BUDGET_EXCEEDED / AI_NOT_INCLUDED | Cota mensal de IA esgotada ou plano sem IA (só em solicitar_analise_ia). |
| 429 | RATE_LIMITED | Mais de 120 chamadas por minuto com o mesmo token. |
| 502 | PNCP_UNAVAILABLE | O PNCP não respondeu ao baixar o edital; tente de novo. |
4. Referência das ferramentas
buscar_licitacoes
Busca contratações públicas na base espelhada do PNCP (Lei 14.133/2021) por texto do objeto, UF, modalidade, valor e situação. Devolve um resumo de cada licitação com o id usado nas outras ferramentas.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
texto | texto | não | Palavras do objeto (ex.: "notebook", "material de limpeza"). |
ufs | lista de textos | não | Siglas das UFs. |
modalidades | lista de inteiros | não | Códigos de modalidade do PNCP: 6=Pregão - Eletrônico, 7=Pregão - Presencial, 8=Dispensa, 4=Concorrência - Eletrônica, 5=Concorrência - Presencial, 9=Inexigibilidade, 12=Credenciamento, 1=Leilão - Eletrônico, 13=Leilão - Presencial, 2=Diálogo Competitivo, 3=Concurso, 10=Manifestação de Interesse, 11=Pré-qualificação. |
situacao | texto | não | Padrão: abertas (recebendo propostas agora). Valores: abertas, encerradas, todas. |
valorMin | número | não | Valor estimado mínimo, em reais. |
valorMax | número | não | Valor estimado máximo, em reais. |
pagina | inteiro | não | Página (padrão 1). |
limite | inteiro | não | Itens por página, até 25 (padrão 10). |
obter_licitacao
Detalhes de uma licitação: dados gerais, itens (descrição, quantidade, valor estimado, benefício ME/EPP) e arquivos publicados no PNCP (edital, termo de referência, anexos). Informe o id ou o número de controle do PNCP ("CNPJ-1-SEQ/ANO").
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | texto | não | Id da licitação (devolvido por buscar_licitacoes). |
numeroControlePncp | texto | não | Número de controle do PNCP, ex.: 63025530000104-1-003836/2026. |
ler_edital_do_pncp · exige token de escrita
Baixa do PNCP o edital de uma licitação junto com termo de referência e anexos, extrai o texto e roda a pré-análise por regras (sem custo de IA). Devolve o documentoId usado pelas ferramentas de análise. Com "sequencial", lê só aquele arquivo.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
licitacaoId | texto | sim | Id da licitação. |
sequencial | inteiro | não | Opcional: número do arquivo (ver obter_licitacao → arquivos). |
enviar_texto_para_analise · exige token de escrita
Envia o texto de um documento que você já tem (edital, termo de referência, aviso) para a plataforma analisar por regras: identificação, prazos, valores, exigências de habilitação, documentos técnicos e pontos de atenção. Sem custo de IA. Para arquivos PDF/DOCX/ZIP use o upload da API REST.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
titulo | texto | sim | Nome para identificar o documento. |
texto | texto | sim | Texto integral do documento (até 3 milhões de caracteres). |
listar_editais
Lista os editais já lidos pela empresa (do PNCP, enviados ou colados), com documentoId, páginas, quantidade de pontos de atenção e se já existe análise por IA.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
pagina | inteiro | não | Página (20 por página). |
obter_pre_analise
Resultado da pré-análise por regras de um edital: identificação (modalidade, número, critério de julgamento, modo de disputa), datas, valores, campos-chave (prazo de entrega, vigência, pagamento, garantias, visita técnica, amostra, consórcio...) cada um com o trecho do edital, e os pontos de atenção com a base legal.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
documentoId | texto | sim | Id do documento. |
obter_requisitos
Lista explícita de tudo o que o edital exige da empresa — habilitação jurídica, fiscal e trabalhista, econômico-financeira e técnica, declarações, documentos da proposta, documentos técnicos do objeto (catálogos, certificações, laudos, registros, declaração do fabricante, amostra) e o exigido para contratar — com item do edital, fase e a situação de cada documento no cofre da empresa: OK, VENCE_ANTES (da sessão), VENCIDO, FALTA ou A_PREPARAR.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
documentoId | texto | sim | Id do documento. |
obter_texto_edital
Devolve o texto extraído do edital (e anexos), em fatias, para a sua IA ler e analisar por conta própria. Use "inicio" para continuar de onde parou; "total" diz o tamanho completo em caracteres.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
documentoId | texto | sim | Id do documento. |
inicio | inteiro | não | Posição inicial em caracteres (padrão 0). |
tamanho | inteiro | não | Quantidade de caracteres, de 1.000 a 60.000 (padrão 30.000). |
buscar_trechos_edital
Encontra no edital os trechos mais relevantes para uma pergunta ou assunto (busca BM25, sem IA) — útil para a sua IA responder sobre um ponto específico sem ler o documento inteiro.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
documentoId | texto | sim | Id do documento. |
consulta | texto | sim | Pergunta ou termos (ex.: "atestado de capacidade técnica quantitativo mínimo"). |
quantidade | inteiro | não | Quantos trechos, até 12 (padrão 6). |
obter_analise_ia
Devolve a análise profunda feita pela IA da plataforma para o edital, se já existir: resumo executivo, recomendação (participar ou não), requisitos detalhados, especificações técnicas, prazos, riscos, cláusulas questionáveis, perguntas de esclarecimento e checklist. Não consome cota. Se não existir, informa o status.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
documentoId | texto | sim | Id do documento. |
solicitar_analise_ia · exige token de escrita
Pede à IA da plataforma a análise profunda do edital. CONSOME a cota mensal de IA da empresa (cerca de 70 a 100 mil tokens por edital; o resultado fica guardado e não é cobrado de novo). Roda em segundo plano: consulte o resultado com obter_analise_ia.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
documentoId | texto | sim | Id do documento. |
listar_documentos_empresa
Lista os documentos de habilitação guardados pela empresa (certidões, atestados, balanço, contrato social...) com validade e situação (válido, vencendo, vencido). Não devolve o arquivo.
Sem parâmetros.
listar_licitacoes_acompanhadas
Lista as licitações que a empresa acompanha (funil de Gerenciar Licitações), com etapa, data da sessão, valores e pendências do checklist de documentos.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
etapa | texto | não | Filtra por etapa. Valores: TRIAGEM, ANALISE, PROPOSTA, DISPUTA, HABILITACAO, GANHA, PERDIDA, DESISTENCIA, SUSPENSA. |
acompanhar_licitacao · exige token de escrita
Coloca uma licitação no funil da empresa (etapa Triagem). Em segundo plano a plataforma lê o edital e os anexos e monta o checklist de documentos exigidos (sem custo de IA).
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
licitacaoId | texto | sim | Id da licitação. |
consultar_lei_14133
Busca artigos da Lei nº 14.133/2021 (Lei de Licitações e Contratos) por assunto ou número ("art. 75"). Devolve o texto dos artigos. Atenção: os valores em reais do texto original foram atualizados por decreto — use valores_legais_vigentes.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
consulta | texto | sim | Assunto ou artigo (ex.: "prazo para impugnar edital", "art. 75"). |
valores_legais_vigentes
Tabela dos valores da Lei 14.133/2021 atualizados pelo decreto em vigor (dispensa de licitação por valor, grande vulto etc.), com a norma e a data de vigência.
Sem parâmetros.
5. Custos e limites
- Busca, leitura de edital, pré-análise, requisitos, texto e consulta à lei rodam por algoritmos e não gastam a cota de IA.
solicitar_analise_iagasta cerca de 70 a 100 mil tokens da cota mensal da empresa por edital. O resultado fica guardado: pedir de novo o mesmo edital não cobra outra vez.- Arquivos: PDF, DOCX ou ZIP até 40 MB. PDF digitalizado (imagem) não tem texto extraível — não há OCR.
enviar_texto_para_analise: até 3 milhões de caracteres por chamada (corpo JSON de até 5 MB).- A base de licitações é a do PNCP; ler um edital depende de o PNCP estar respondendo.
- O servidor MCP oferece apenas ferramentas (sem recursos nem prompts).