---
name: okfindex
description: "OKF Index — the search index of Open Knowledge Format (OKF) bundles: find a bundle's root index.md for an agent to read whole, or submit your own with the IndexNow protocol. Use when the task involves okfindex.com, OKF bundles, Open Knowledge Format, or agent-readable knowledge in markdown."
---

# OKF Index — skill para agentes

**Live:** https://okfindex.com  
**Local:** http://127.0.0.1:8770  
**Descoberta:** `GET /api/` · `/llms.txt` · `/llms-full.txt` · `/openapi.json` · `/okf/index.md`  
**MCP:** `POST https://okfindex.com/mcp`

Conta global opcional: integração local em `/api/auth/bootstrap`, `/api/auth/login`, callback,
`/api/me`, leitura de perfil em `/api/account/profile`, foto em `/api/account/avatar`
e logout pelo SDK da plataforma. Foto é WebP privado sem cache; edição de
perfil/foto ocorre na conta MM. Entrada usa navegador com cookies HttpOnly e CSRF;
não enviar credenciais por MCP. Busca e submissão continuam sem exigir conta.
Publicação e UI de conta ainda pendentes no roadmap de auth.

## O que é

O índice dos bundles do **Open Knowledge Format**: árvores de markdown com frontmatter YAML que um
agente lê inteiras, cuja raiz é um `index.md` com `okf_version`. Só entra bundle cuja raiz foi LIDA
e declara `okf_version` — nunca um repositório que só menciona OKF. Duas fontes: a varredura dos
repositórios públicos do GitHub e a submissão por domínio (protocolo do IndexNow). Grátis, sem conta.
Não somos o registro oficial de OKF nem afiliados ao Google, que publica a spec. O mesmo índice
aparece dentro do Meta Agent Tools (agentalog.com), ao lado de MCP servers, skills e plugins.

## Operações

| Tool | HTTP |
|------|------|
| `api_index` | `GET /api/` |
| `search_bundles` | `GET /api/bundles` (`q`, `origin=github\|domain`, `repo=owner/repo`, `version=0.1,0.2`, `language=Go,Rust`, `sort=recent\|updated\|name\|stars`, `limit`≤100, `offset`≤1000) — coleção paginada: siga `next` até `null` |
| `get_bundle` | `GET /api/bundles/:id` — a ficha: `index_url` (a raiz crua, o que se entrega ao agente), versão, conceitos, procedência e sinal do repositório |
| `index_stats` | `GET /api/stats` — total, por procedência e a última mudança |
| `submit_bundles` | `POST /api/ping` — **grátis, sem conta**; ver abaixo |
| — | `GET /api/health` — vivacidade e build |

## Submeter o seu bundle (`POST /api/ping`, protocolo do IndexNow)

1. publique `https://SEU-HOST/SUA-CHAVE.txt` contendo exatamente a chave (8–128 de `[a-zA-Z0-9-]`);
2. `POST /api/ping` com `{"host","key","urlList":[…]}` — `keyLocation` opcional, no MESMO host; URLs
   https, no host declarado, terminando em `.md` (o caminho não é fixado: a spec não define convenção);
3. resposta **202**: a chave ainda não foi conferida. O coletor busca o arquivo da chave ANTES de ler
   qualquer URL sua; nada é publicado se ela não bater.

Bundle mudou? Re-envie a URL: é o canal de frescor. Tetos: 100 URLs por pedido, 200 por host por dia
UTC. Bundle em repositório público do GitHub não precisa de ping — a varredura acha.

## Como usar o que achou

Entregue `index_url` ao agente: é a raiz do bundle, crua, para ler inteira. `page_url` é a página
que um humano abre. `source.repo`/`source.host` dizem de quem é; `repo.stars` e `repo.state` vêm do
enriquecedor (só bundles do GitHub).

## Cota e preço

Antes de planejar gasto, leia `GET /api/pricing` (tool `pricing`) e `GET /api/billing`
(tool `billing`). São públicos e gratuitos: franquias, preços, x402 e entrada do crédito.
A cotação da operação paga continua sendo o valor a pagar.

Tudo grátis e sem conta; os únicos tetos são os da submissão. `GET /api/metrics` é do painel da
casa (financeiro zerado, só com `METRICS_TOKEN`).

## Contato

Operado pela mesma casa do Meta Agent Tools: contato@agentalog.com.

`POST /api/contact` — gente envia com Turnstile, de graça; agente paga **$0.10** por mensagem, por x402 ou
crédito pré-pago (`POST /api/credito?usd=10`, o mesmo token em todos os produtos da casa). Proposta de
parceria vai pela mesma rota, com o campo `tipo`.

## Pesquisa OKF e original

`GET /api/bundles` (`search_bundles`) e `GET /api/bundles/:id` (`get_bundle`) são idênticos
nos dois produtos; `/api/okf/stats` (`index_stats`) conta todo o índice antes de abrir a aba.
Filtros: `concept` (texto do extrato da raiz, até 80 caracteres), `concepts` (0,1-5,6-20,21-100,101+),
`type` (declarado na raiz), `license` (repo), além de `q`, `origin`, `repo`, `version`, `language`,
`sort`, `limit`, `offset`. Cada faceta aceita até 5 valores separados por vírgula.
`concept` pesquisa só os primeiros 1000 caracteres indexados da raiz, não os arquivos dos conceitos.
Na UI a ficha alterna Formatted/RAW. O RAW busca o `index_url` original com frontmatter no navegador,
limite 256 KiB/10 s, sem proxy ou credenciais; se o publicador negar CORS, abra a origem.

## Acervos públicos de dados

`GET /api/` → `docs.data_indexes` descobre quatro acervos de leitura: endereços CNEFE,
metadados PNCP, domínios observados em CT e arquivos de programação XMLTV. As mesmas raízes
estão em `/llms.txt`, `/llms-full.txt`, `/okf/index.md` e `/developers#dados`. Abra o
`formats.json` adequado e siga a hierarquia e `links.proximo` (até 20 itens por página).
Atualização manual: confira fonte e referência. Respeite `Retry-After` em 429/503. Não
encaminhe credenciais do produto a esses hosts. Leia somente o recorte necessário à tarefa.

<!-- GERADO por scripts/monta-ui.mjs — fonte: .agents/skills/<produto>/SKILL.md. Não edite. npm run ui -->
