Camada de Dados para Agentes de IA

A camada de dados que seus agentes realmente usam

Agentes de IA precisam de uma camada de dados compartilhada e persistente — não apenas para armazenar dados, mas para consultá-los, conectá-los e compartilhá-los com outros agentes e sistemas externos. Rekor dá aos agentes um sistema de registro estruturado que eles podem ler, escrever e colaborar — schemas definidos em tempo de execução, sem migrações, sem configuração.

sessão do agente
// Agent creates a collection and upserts a record

> manage_collection({ action: "upsert", workspace_id: "ws_ops",
    collection: "incidents", json_schema: {
      type: "object",
      required: ["title", "severity", "status"],
      properties: {
        title:    { type: "string" },
        severity: { type: "string", enum: ["p0","p1","p2","p3"] },
        status:   { type: "string", enum: ["open","investigating","resolved"] },
        assignee: { type: "string" }
      }
    }
  })

< { id: "incidents", name: "incidents", version: 1 }

> manage_record({ action: "upsert", workspace_id: "ws_ops",
    collection: "incidents",
    external_id: "INC-2847", external_source: "pagerduty",
    data: {
      title: "API latency spike in us-east-1",
      severity: "p1",
      status: "investigating",
      assignee: "oncall@team.dev"
    }
  })

< { id: "01961a3b-...", external_id: "INC-2847", version: 1 }

Três Primitivos

Tudo no Rekor é uma coleção, um registro ou um relacionamento entre registros.

Coleção

JSON Schema que define um tipo de registro. Criada em tempo de execução, sem necessidade de migrações.

Registro

Documento JSON que segue o schema de uma coleção. Upsert por ID externo para idempotência.

Relacionamento

Link tipado e direcionado entre dois registros com metadados. Entidade de primeira classe, consultável em qualquer direção.

# Define a collection schema
rekor collections upsert incidents \
  --schema '{"type":"object","properties":{"title":{"type":"string"}}}'

# Upsert a record by external ID
rekor records upsert incidents \
  --external-id INC-2847 --source pagerduty \
  --data '{"title":"API spike","severity":"p1"}'

# Link two records with a typed relationship
rekor relationships upsert \
  --type caused_by --source incidents/rec_1 \
  --target deployments/rec_2

Três Interfaces

Desenvolvedores projetam schemas via CLI. Agentes operam em produção via MCP. Sistemas externos integram via REST.

CLI

Para desenvolvedores de agentes. Configure schemas, coleções e teste em ambientes de preview.

MCP

Para operadores de agentes. Agentes em produção fazem upsert/leitura de registros, upload/download de arquivos via 11 ferramentas.

REST

Para integrações externas. Conecte sistemas externos ao Rekor via HTTP padrão.

# CLI — agent builders set up schemas and test in preview
npm install -g @rekor/cli
rekor collections upsert incidents --workspace my-ws--preview \
  --schema '{"type":"object","properties":{"title":{"type":"string"}}}'
rekor workspaces promote my-ws --from my-ws--preview

# MCP — production agents read and write records
{
  "mcpServers": {
    "rekor": { "url": "https://mcp.rekor.pro/sse?token=rec_..." }
  }
}

# REST — external systems integrate via HTTP
curl https://api.rekor.pro/v1/{workspace}/records/incidents \
  -H "Authorization: Bearer rec_..." \
  -d '{"data":{"title":"Alert from monitoring"}}'

Motor de Dados Central

Escritas ACID

Escritas atômicas e consistentes por workspace

Analytics

Filtre, ordene, agregue e agrupe em escala

Operações em Lote

Até 1.000 operações atômicas em uma única requisição

# Atomic operations — all succeed or all fail
rekor batch --workspace my-workspace --operations '[
  {"type":"upsert_record","collection":"orders",
   "data":{"customer":"Acme","total":5000}},
  {"type":"upsert_record","collection":"line_items",
   "data":{"product":"Widget","qty":10}},
  {"type":"upsert_relationship",
   "rel_type":"contains",
   "source_collection":"orders","source_id":"ord_1",
   "target_collection":"line_items","target_id":"li_1"}
]'

# Up to 1,000 operations per batch
# Records, relationships, and collections supported

Anexos de Arquivos

Anexe arquivos a qualquer registro. Agentes fazem upload diretamente via URLs pré-assinadas e obtêm links de download assinados sob demanda.

# Upload files with folder structure
rekor attachments upload incidents rec_abc \
  --filename docs/runbook.md --content-type text/markdown

rekor attachments upload incidents rec_abc \
  --filename docs/screenshots/error.png --content-type image/png

# Get a signed download URL for any file
rekor attachments url incidents rec_abc --filename docs/runbook.md

# List all files, or filter by folder
rekor attachments list incidents rec_abc --prefix docs/

Integrações

Integre com sistemas externos. Configure qualquer REST API como fonte de dados, receba webhooks e envie notificações quando os dados mudam.

Fontes Externas

Configure coleções para fazer proxy de qualquer REST API — agentes usam as mesmas ferramentas

Hooks

Webhooks de entrada — sistemas externos enviam dados para dentro

Triggers

Webhooks de saída — reaja a mudanças nos dados

# Same tool, different backends — the agent doesn't know the difference

# Upsert a Stripe invoice (proxied to Stripe API)
rekor records upsert invoices \
  --external-id inv_2847 --source stripe \
  --data '{"amount":5000,"status":"issued"}'

# Upsert a native record (stored in Rekor)
rekor records upsert notes \
  --data '{"title":"Follow up on invoice"}'

# Query records — same interface for both
rekor records query invoices --source stripe --limit 10
# Create a hook — external systems POST data to Rekor
rekor hooks create --workspace my-workspace \
  --name "PagerDuty Incidents" --collection incidents

# Hook returns a unique URL: /v1/{ws}/hooks/{hook_id}/ingest
# External system POSTs JSON → Rekor creates a record automatically

# Create a trigger — Rekor notifies you when data changes
rekor triggers create --workspace my-workspace \
  --name "Notify Slack on P1" --collection incidents \
  --url https://hooks.slack.com/services/T00/B00/xxx \
  --events '["create","update"]'

# When a record is created or updated, Rekor POSTs to the URL
# with an HMAC signature for authenticity

MCP Factory

Crie servidores MCP personalizados a partir dos seus schemas de dados. Construa conjuntos de ferramentas específicas para agentes especializados — sem código.

Ferramentas Específicas por Domínio

Agentes veem create_invoice, list_payments — não operações genéricas de banco de dados

Curado por Caso de Uso

Cada endpoint expõe exatamente as ferramentas que um agente precisa — nada mais

Orientado por Schema

Definições de ferramentas geradas automaticamente a partir dos seus schemas de coleção

# Quick: create an endpoint with shorthand flags
rekor endpoints upsert invoicing-agent \
  --name "Invoicing Agent" \
  --tool "invoices:get,list" \
  --tool "payments:create,get,list" \
  --relationship "invoice_payment:list" \
  --batch "invoices:create,update" --batch "payments:create" \
  --sql-query

# Advanced: customize tool names and descriptions
rekor endpoints upsert invoicing-agent --config '{
  "name": "Invoicing Agent",
  "tools": [
    { "collection": "invoices", "operations": ["get", "list"],
      "name_override": "search_invoices",
      "description_override": "Find invoices by customer or status" }
  ]
}'

# Get the MCP connection URL
rekor endpoints url invoicing-agent
# → https://mcp.rekor.pro/e/invoicing-agent/mcp

Acesso e Governança

Defina escopo de chaves API para workspaces, coleções e permissões específicas. Marque workspaces com tags para organizar por cliente, projeto ou equipe.

Chaves API com Escopo

Controle de acesso granular por workspace, coleção e permissão

Organizações

Colaboração multi-usuário com workspaces compartilhados

Tags de Workspace

Agrupe workspaces por cliente, projeto ou equipe

# Create a scoped API key for a specific agent
rekor tokens create --name "client-a-agent" \
  --grants '[{
    "scope": {"workspaces": ["client-a"], "environments": ["production"]},
    "permissions": ["read:records", "write:records"]
  }]'

# Create a read-only key for a dashboard integration
rekor tokens create --name "dashboard-reader" \
  --grants '[{
    "scope": {"workspaces": ["*"]},
    "permissions": ["read:records", "read:collections"]
  }]'

# Group workspaces by client with tags
rekor workspaces create client-a --name "Client A" \
  --tags "client:acme,region:us"
rekor workspaces list --tag "client:acme"

# List and revoke keys
rekor tokens list
rekor tokens revoke <token_id>

Ambientes

Agentes experimentam em workspaces de preview. Humanos revisam e promovem para produção. Verificações de compatibilidade de schema detectam mudanças incompatíveis antes de irem ao ar.

# Create a preview workspace to experiment safely
rekor workspaces create-preview my-workspace --name "add-invoices"

# Agent works freely in preview — modify schemas, test with data
rekor collections upsert invoices \
  --workspace my-workspace--add-invoices \
  --schema '{"type":"object","properties":{"amount":{"type":"number"}}}'

# Human reviews and promotes to production
rekor workspaces promote my-workspace \
  --from my-workspace--add-invoices --dry-run

# Apply when ready
rekor workspaces promote my-workspace \
  --from my-workspace--add-invoices