1nforma.ai — API de notícias do mercado brasileiro
Notícias e análises do mercado financeiro brasileiro, estruturadas para máquinas. Cada item traz sentimento, tickers, tópicos, scores de impacto/urgência e clustering de histórias (story_id).
Base URL: https://api.1nforma.ai Documentação para IAs: https://api.1nforma.ai/llms.txt
Autenticação
Toda requisição exige uma chave de API (formato 1nf_...). Envie por um destes meios:
- Header
Authorization: Bearer 1nf_SUA_CHAVE(preferido) - Header
X-API-Key: 1nf_SUA_CHAVE - Feeds apenas: query param
?key=1nf_SUA_CHAVE(para leitores RSS sem suporte a headers)
Erros de autenticação/limite:
401 {"error":"missing_api_key"}— chave ausente401 {"error":"invalid_key"}— chave inválida ou revogada401 {"error":"key_expired"}— chave passou da validade; solicite renovação429 {"error":"rate_limited"}— excedeu requisições por minuto429 {"error":"quota_exceeded"}— excedeu a cota diária503 {"error":"auth_unavailable"}— falha transitória; tente novamente
Cada endpoint tem um custo em unidades de cota: busca/stats/related/MCP = 2, item único = 1, feeds = 1.
GET /v1/news — busca
Parâmetros (todos opcionais):
q— busca textual no títuloticker— filtra por ticker (ex.: PETR4, VALE3; case-insensitive)source— filtra por fonte (ver /v1/sources)sentiment— positive | negative | neutralfrom,to— janela de publicação (ISO 8601, ex.: 2026-06-01T00:00:00Z)min_impact— score mínimo de impacto (0-1)min_relevance— relevância mínima (0-1)size— itens por página, padrão 20, máximo 100 (atenção: o parâmetro ésize, nãolimit)cursor— paginação (ver abaixo)
Exemplo:
curl -s "https://api.1nforma.ai/v1/news?ticker=PETR4&size=10" \
-H "Authorization: Bearer 1nf_SUA_CHAVE"Resposta:
{
"items": [
{
"id": "abc123",
"source": "narrativa",
"headline": "…",
"body": "markdown completo ou null",
"published_at": "2026-06-10T12:00:00+00:00",
"language": "pt-BR",
"tickers": ["PETR4"],
"topics": ["petroleo"],
"sentiment": "positive",
"sentiment_score": 0.82,
"impact_score": 0.6,
"urgency_score": 0.3,
"summary": "resumo curto ou null",
"story_id": "cluster-id ou null",
"publisher": "1nforma.ai",
"license": "1nforma-partner-v1"
}
],
"next_cursor": "2026-06-09T18:30:00+00:00"
}Paginação: passe next_cursor da resposta anterior como cursor na próxima chamada. O cursor é inclusivo no timestamp — itens publicados no mesmo segundo do corte podem repetir; deduplique por id.
GET /v1/news/{id} — item único
Retorna o item ou 404 {"error":"not_found"} (ids inexistentes e itens fora do seu escopo respondem o mesmo 404).
GET /v1/news/{id}/related — relacionados
size— máximo 20, padrão 5
Relaciona por proximidade semântica do conteúdo, dentro de uma janela de 7 dias. Na ausência de ranking semântico, cai para a mesma história (story_id) e, depois, para tickers em comum. Os itens vêm ordenados do mais próximo ao mais distante.
GET /v1/stats/sentiment — distribuição de sentimento
hours— janela em horas, padrão 168 (7 dias), máximo 720
{ "window_hours": 168, "counts": { "positive": 41, "negative": 17, "neutral": 92 }, "sample": 150 }GET /v1/stats/facets — contagens por facet
field— source | topics | tickers (padrão source)hours— padrão 168, máximo 720
Retorna os top 50: { "facets": { "PETR4": 12, "VALE3": 9 }, ... }
GET /v1/stats/timeline — volume no tempo
bucket— hour | day (padrão day)hours— padrão 168, máximo 720
GET /v1/trending — tickers mais citados
hours— padrão 24, máximo 720
GET /v1/sources — fontes disponíveis
Lista as fontes visíveis para a SUA chave: { "sources": ["narrativa", "premarket-us"] }
Feeds — RSS 2.0 e JSON Feed 1.1
https://api.1nforma.ai/feeds/{source}.rss?key=1nf_SUA_CHAVE
https://api.1nforma.ai/feeds/{source}.json?key=1nf_SUA_CHAVEParâmetros extras: ticker (filtro) e limit (padrão 50, máximo 100 — nos feeds o nome é limit mesmo).
MCP — para agentes de IA (Claude, Cursor, etc.)
Servidor MCP remoto (streamable HTTP) com autenticação Bearer:
URL: https://api.1nforma.ai/mcp/mcpClaude Code:
claude mcp add --transport http 1nforma https://api.1nforma.ai/mcp/mcp \
--header "Authorization: Bearer 1nf_SUA_CHAVE"Cursor (~/.cursor/mcp.json ou Settings → MCP) — aceita URL + headers direto:
{
"mcpServers": {
"1nforma": {
"url": "https://api.1nforma.ai/mcp/mcp",
"headers": { "Authorization": "Bearer 1nf_SUA_CHAVE" }
}
}
}Claude Desktop — a UI de "Connectors" só faz login OAuth e NÃO tem campo para chave de API. A conexão é por edição do arquivo de config, com a ponte mcp-remote (embrulha o HTTP em stdio e injeta o header). Requer Node.js.
Arquivo: macOS ~/Library/Application Support/Claude/claude_desktop_config.json · Windows %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"1nforma": {
"command": "npx",
"args": [
"mcp-remote@latest",
"--http",
"https://api.1nforma.ai/mcp/mcp",
"--header",
"Authorization: Bearer 1nf_SUA_CHAVE"
]
}
}
}Reinicie o Claude Desktop depois de salvar. O header é um único argumento — preserve o espaço, sem aspas internas.
ChatGPT — o Developer Mode conecta MCP apenas por OAuth e não aceita chave de API estática. O 1nforma tem OAuth: cole a URL do servidor (https://api.1nforma.ai/mcp/mcp) como conector e o ChatGPT descobre o fluxo sozinho. Você informa o e-mail e recebe um código de uso único para autorizar.
Dois pré-requisitos, e vale conferir os dois antes de tentar:
1. **Do seu lado**: conectores MCP personalizados vivem no Developer Mode do ChatGPT, que depende do plano e, em contas de workspace, de liberação do administrador. Se você não vê a opção de adicionar conector, o bloqueio está aí — não na 1nforma. 2. **Do nosso lado**: a sua chave precisa estar **habilitada para OAuth** e ter o **e-mail** associado a ela. Chaves emitidas só para uso via REST/Bearer vêm sem isso — peça a habilitação informando o e-mail que você vai usar.
Se o e-mail digitado não corresponder a uma chave habilitada, a tela devolve o mesmo formulário de código (é proposital, para não revelar quais e-mails existem) — então um pedido que não avança costuma ser o item 2, não erro de digitação.
Nos demais clientes (Claude Code, Claude Desktop, Cursor) nada disso se aplica: basta a chave no header.
Tools disponíveis:
news_search— busca com filtros (q, ticker, source, sentiment, min_impact). Custo 2news_get— item por id. Custo 1news_related— relacionados a um id (param: size). Custo 2news_trending— tickers mais citados na janela (param: hours). Custo 2news_stats— distribuição de sentimento (param: hours). Custo 2news_sources— fontes visíveis para a chave. Custo 1editorial_latest— editorial próprio mais recente do tipo, com corpo completo (params: kind*, date?). kind ∈ {narrativa, premarket, fechamento, youtube, cenario, politica, podcast, noticias-dia}. Custo 1news_headlines— manchetes agregadas de terceiros (headline+resumo, sem corpo) (params: sector?, ticker?, hours?, min_impact?). Custo 2twitter_pulse— pulso do X: análise x-pulse + x-headlines market-moving (param: hours?). Custo 2market_data— indicadores macro estruturados; requer scopemarket-data(params: category?, indicators?, as_of?). Custo 2daily_briefing— pacote estruturado por bloco para montar um morning call (params: date?, depth?, blocks?). depth ∈ {resumo, completo}.date(AAAA-MM-DD) monta o briefing daquele dia no fuso de São Paulo, em vez do mais recente. Custo 5
Exemplos — o que pedir e o que esperar
Conectado, peça em linguagem natural; o agente escolhe a tool certa. Exemplos:
| Você pede | Tool chamada | O que recebe | |---|---|---| | "Monte o morning call de hoje" | daily_briefing(depth="completo") | 6 blocos (externo, Brasil macro, político, corporativo, commodities, Twitter). O **editorial** de cada bloco é específico dele; as **manchetes** são as de maior impacto da janela, não segmentadas por bloco | | "Manchetes de PETR4 nas últimas 24h" | news_headlines(ticker="PETR4", hours=24) | Manchetes com resumo, sentimento e score de impacto | | "Qual o cenário macro de hoje?" | editorial_latest(kind="cenario") | O cenário editorial mais recente, com corpo completo | | "Resuma o fechamento da B3 de ontem" | editorial_latest(kind="fechamento") | A nota de fechamento da B3 mais recente | | "Como está o pulso do mercado no X/Twitter?" | twitter_pulse(hours=24) | Análise de narrativa + headlines market-moving do X | | "Me dê os indicadores de juros atuais" | market_data(category="Juros") | Selic, CDI etc. estruturados (requer plano com dados) | | "O que está em alta no noticiário agora?" | news_trending(hours=24) | Tickers mais citados na janela | | "Sentimento das notícias de VALE3 esta semana" | news_search + news_stats | Itens filtrados + distribuição de sentimento |
Para o morning call, cole o "Prompt pack" (abaixo) no system prompt do agente — ele fixa a ordem dos blocos e o tom.
Boas práticas
- Pagine com
cursore deduplique porid. - Cache de 60s é suficiente para a maioria dos casos; o conteúdo é atualizado continuamente.
- Trate
429com backoff (espere até o próximo minuto/dia conforme o erro). - O campo
bodyé Markdown — renderize ou converta conforme seu meio. - Atribuição: republique citando "1nforma.ai" (licença
1nforma-partner-v1).
Acesso
Chaves de API para veículos de notícias, desenvolvedores e agentes de IA — sob consulta. Healthcheck público: https://api.1nforma.ai/healthz
Prompt pack — Morning call
Cole no system prompt do seu Claude/ChatGPT (conectado ao MCP 1nforma):
> Você é um analista montando um morning call em PT-BR. Chame daily_briefing(depth="completo"). > Escreva em prosa corrida, nesta ordem de blocos: cenário externo, Brasil macro, político, > corporativo, commodities, Twitter. Use os dados de cada bloco; não invente números. > Tom direto, sem jargão, sem citar fontes ou instituições.