{"name":"PontoFato","description":"Ponto CNEFE (endereço + lat/lon IBGE) e fato no lugar (empresas no CEP). Cliente principal: agente de IA. Dado no c3; este Worker é proxy.","build":"bootstrap","base_url":"https://pontofato.com","docs":{"llms":"https://pontofato.com/llms.txt","llms_full":"https://pontofato.com/llms-full.txt","openapi":"https://pontofato.com/openapi.json","mcp":"https://pontofato.com/mcp","human_ui":"https://pontofato.com/"},"conventions":{"format":"JSON em `/api/*`.","cors":"`Access-Control-Allow-Origin: *` nas rotas de agente.","x402":"Contato agente: HTTP 402 + X-PAYMENT.","parity":"Mexeu na UI/API → apidocs + skill + MCP no mesmo PR."},"auth":{"none":"Público.","token":"Token de operador `METRICS_TOKEN` em `Authorization: Bearer` (métricas)."},"endpoints":[{"method":"GET","path":"/api/","auth":"none","summary":"Índice auto-descrito: cada rota, o que cobra e como plugar o MCP.","grupo":"Descoberta","retorno":{"name":{"tipo":"string","desc":"Nome do produto."},"description":{"tipo":"string","desc":"O que o produto faz."},"build":{"tipo":"string","desc":"Commit publicado."},"base_url":{"tipo":"string","desc":"Origem em que esta API está servindo."},"docs":{"tipo":"object","desc":"Links para llms.txt, OpenAPI, MCP e a UI."},"endpoints":{"tipo":"object[]","desc":"Catálogo de endpoints."},"mcp_tools":{"tipo":"string[]","desc":"Tools do MCP."}},"returns":"{ name, description, build, base_url, docs, endpoints, mcp_tools }","url":"https://pontofato.com/api/","auth_detail":"Público."},{"method":"GET","path":"/api/health","auth":"none","summary":"Saúde da origem sqlite e cobertura por UF.","grupo":"Descoberta","retorno":"Saude","erros":{"503":"Nenhuma UF montada na origem."},"exemplo":"curl -s $ORIGIN/api/health","returns":"{ ok, origem, cobertura{ufs,completa}, pontos, build }","url":"https://pontofato.com/api/health","auth_detail":"Público."},{"method":"POST","path":"/mcp","auth":"none","summary":"MCP Streamable HTTP — as tools deste catálogo, despachadas neste mesmo Worker.","grupo":"Descoberta","retorno":{"_texto":"JSON-RPC 2.0 (`initialize`, `tools/list`, `tools/call`)."},"exemplo":"curl -s -XPOST $ORIGIN/mcp -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}'","returns":"JSON-RPC 2.0 (`initialize`, `tools/list`, `tools/call`).","url":"https://pontofato.com/mcp","auth_detail":"Público."},{"method":"GET","path":"/api/cep/:cep","auth":"none","summary":"Pontos CNEFE de um CEP, com lat/lon IBGE — não é chute de mapa.","grupo":"Lugar","params":{"cep":{"desc":"8 dígitos, com ou sem hífen.","exemplo":"70040010"}},"retorno":"Cep","erros":{"400":"CEP inválido (tamanho ou `00000000`).","404":"CEP bem-formado fora da base; `cobertura` diz quais UFs já existem.","503":"Origem sqlite fora."},"exemplo":"curl -s $ORIGIN/api/cep/70040010","returns":"{ cep, pontos[{cep,logradouro,numero,complemento,bairro,cidade,uf,lat,lon,ibge,especie,especie_label,tipo_edificacao,tipo_edificacao_codigo,estabelecimento,estabelecimentos,especies,setor,distrito,subdistrito,quadra,face,nv_geo,nv_geo_label,finalidade,indicador_estab,indicador_const,id_cnefe,tipo_logradouro,titulo_logradouro,nome_logradouro,modificador,unidades,complementos,_links,_origem}], resumo{address_count,edificios,bairro,cidade,uf,ibge,lat,lon,especies}, fonte, cobertura{ufs,completa}, _links }","url":"https://pontofato.com/api/cep/:cep","auth_detail":"Público."},{"method":"GET","path":"/api/cep/:cep/unidades","auth":"none","summary":"Unidades CNEFE de um CEP, com complemento, espécie e id — paginado.","grupo":"Lugar","desc":"O lookup do CEP agrupa por logradouro+número. Esta rota devolve cada unidade (apartamento, loja) com o fato CNEFE. Sem `logradouro`/`numero`, pagina o CEP inteiro.","params":{"cep":{"desc":"8 dígitos, com ou sem hífen.","exemplo":"71940000"}},"query":{"logradouro":{"tipo":"string","desc":"Logradouro exatamente como no lookup (tipo + nome)."},"numero":{"tipo":"string","desc":"Número do edifício no CNEFE."},"limit":{"tipo":"int","desc":"Itens por página, teto 50.","padrao":50},"offset":{"tipo":"int","desc":"Deslocamento 0-based.","padrao":0}},"retorno":"Unidades","erros":{"400":"CEP inválido.","404":"CEP fora da malha, ou o logradouro+número não existe nele."},"exemplo":"curl -s '$ORIGIN/api/cep/71940000/unidades?logradouro=RUA%20BURITI&numero=6'","returns":"{ cep, items[{cep,logradouro,numero,complemento,bairro,cidade,uf,lat,lon,ibge,especie,especie_label,tipo_edificacao,tipo_edificacao_codigo,estabelecimento,estabelecimentos,especies,setor,distrito,subdistrito,quadra,face,nv_geo,nv_geo_label,finalidade,indicador_estab,indicador_const,id_cnefe,tipo_logradouro,titulo_logradouro,nome_logradouro,modificador,unidades,complementos,_links,_origem}], total, limit, offset, hasMore, cobertura{ufs,completa}, _links }","url":"https://pontofato.com/api/cep/:cep/unidades","auth_detail":"Público."},{"method":"GET","path":"/api/proximo","auth":"none","summary":"Ponto CNEFE mais perto de um par lat/lon. Sem default para (0,0).","grupo":"Lugar","desc":"Ausente ou vazio NÃO vira zero. `(0,0)` é o golfo da Guiné e só entra se a pessoa mandou.","query":{"lat":{"tipo":"number","desc":"Latitude WGS84, −90 a 90.","obrigatorio":true,"exemplo":"-15.7897"},"lon":{"tipo":"number","desc":"Longitude WGS84, −180 a 180.","obrigatorio":true,"exemplo":"-47.8793"}},"retorno":"Proximo","erros":{"400":"`lat` ou `lon` ausentes ou fora da faixa.","404":"Nada na cobertura perto do ponto."},"exemplo":"curl -s '$ORIGIN/api/proximo?lat=-15.7897&lon=-47.8793'","returns":"{ logradouro, bairro, cidade, uf, cep, lat, lon, numero, complemento, ibge, especie, especie_label, setor, estabelecimento, nv_geo, nv_geo_label, id_cnefe, distancia_m }","url":"https://pontofato.com/api/proximo","auth_detail":"Público."},{"method":"GET","path":"/api/buscar","auth":"none","summary":"Busca textual de logradouro (FTS5), com UF e cidade opcionais.","grupo":"Lugar","query":{"q":{"tipo":"string","desc":"Termo com 3+ caracteres.","obrigatorio":true,"exemplo":"paulista"},"uf":{"tipo":"string","desc":"Restringe a uma UF.","exemplo":"SP"},"cidade":{"tipo":"string","desc":"Trecho do município."}},"retorno":"PaginaPonto","erros":{"400":"Termo curto demais."},"exemplo":"curl -s '$ORIGIN/api/buscar?q=paulista&uf=SP'","returns":"{ items[{cep,logradouro,numero,complemento,bairro,cidade,uf,lat,lon,ibge,especie,especie_label,tipo_edificacao,tipo_edificacao_codigo,estabelecimento,estabelecimentos,especies,setor,distrito,subdistrito,quadra,face,nv_geo,nv_geo_label,finalidade,indicador_estab,indicador_const,id_cnefe,tipo_logradouro,titulo_logradouro,nome_logradouro,modificador,unidades,complementos,_links,_origem}], total }","url":"https://pontofato.com/api/buscar","auth_detail":"Público."},{"method":"GET","path":"/api/empresas","auth":"none","summary":"Estabelecimentos da Receita neste CEP (join no c3, teto 50).","grupo":"Lugar","query":{"cep":{"tipo":"string","desc":"8 dígitos, com ou sem hífen.","obrigatorio":true,"exemplo":"01310100"},"page":{"tipo":"int","desc":"Página 0-based da origem CNPJ (50 por página).","padrao":0}},"retorno":"Empresas","erros":{"400":"CEP inválido.","503":"API de CNPJ indisponível."},"exemplo":"curl -s '$ORIGIN/api/empresas?cep=01310100'","returns":"{ items[{cnpj,cnpjFormatted,razaoSocial,nomeFantasia,situacao,uf,municipio,bairro,cnae}], total, hasMore, page }","url":"https://pontofato.com/api/empresas","auth_detail":"Público."},{"method":"GET","path":"/api/local","auth":"none","summary":"Cidade/UF de quem chama, pela borda Cloudflare. Sem cache.","grupo":"Geo","retorno":"Local","returns":"{ cidade, uf, pais, cep }","url":"https://pontofato.com/api/local","auth_detail":"Público."},{"method":"POST","path":"/api/contact","auth":"none","summary":"Contato: humano com Turnstile (grátis) ou agente com x402 $0.10.","grupo":"Contato","corpo":{"name":{"tipo":"string","desc":"Nome (alias `nome`).","obrigatorio":true},"email":{"tipo":"string","desc":"E-mail de resposta.","obrigatorio":true},"message":{"tipo":"string","desc":"Mensagem (alias `mensagem`).","obrigatorio":true},"form_ts":{"tipo":"int","desc":"Epoch ms de quando o form abriu (2s–12h)."}},"retorno":{"ok":{"tipo":"bool","desc":"Sempre `true` quando a mensagem foi aceita."},"path":{"tipo":"string","desc":"Caminho: humano com captcha ou agente pago."}},"erros":{"400":"Validação.","402":"Agente: pague $0.10 e repita com X-PAYMENT.","403":"Turnstile inválido."},"exemplo":"curl -s -XPOST $ORIGIN/api/contact -H 'content-type: application/json' -d '{\"name\":\"Agent\",\"email\":\"a@example.com\",\"message\":\"hello from agent path\",\"form_ts\":0}'","returns":"{ ok, path }","url":"https://pontofato.com/api/contact","auth_detail":"Público."}],"quota":{"free":[{"o_que":"lookup de CEP, próximo, busca e empresas","limite":"sem cota no v1","janela":null}],"paid":[{"o_que":"contato de agente","price_usd":0.1}],"how_to_pay":"Contato agente → **402** com `accepts[]`. Pague e repita com `X-PAYMENT`.","live":"https://pontofato.com/api/"},"mcp":{"endpoint":"https://pontofato.com/mcp","transport":"streamable-http","tools":8},"mcp_tools":["api_index","health","cep","proximo","buscar","unidades","empresas","contact"],"quickstart":["curl -s https://pontofato.com/api/health","curl -s https://pontofato.com/api/cep/70040010","curl -s 'https://pontofato.com/api/proximo?lat=-15.7897&lon=-47.8793'"]}