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 record_type and upserts a record

> manage_record_type({ action: "upsert", base_id: "ws_ops",
    record_type: "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", base_id: "ws_ops",
    record_type: "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 }

Quatro Primitivos

Dois pares de schema e instância: um tipo de registro define o schema dos seus registros, e um tipo de relacionamento define o schema dos seus relacionamentos.

Tipo de registro

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

Registro

Registro JSON que segue o schema de um tipo de registro. Upsert por ID externo para idempotência.

Tipo de relacionamento

Schema de um relacionamento, assim como um tipo de registro é para um registro. Declarado uma vez; valida os metadados de um relacionamento e restringe quais tipos de registro ele pode ligar.

Relacionamento

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

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

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

# Declare the relationship type, then link two records
rekor relationship-types upsert caused_by \
  --source-record_types '["incidents"]' --target-record_types '["deployments"]'
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, tipos de registro 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 16 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 record-types upsert incidents --base my-ws--preview \
  --schema '{"type":"object","properties":{"title":{"type":"string"}}}'
rekor bases promote my-ws --from my-ws--preview

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

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

Motor de Dados Central

Escritas ACID

Escritas atômicas e consistentes por base

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 --base my-base --operations '[
  {"type":"upsert_record","record_type":"orders",
   "data":{"customer":"Acme","total":5000}},
  {"type":"upsert_record","record_type":"line_items",
   "data":{"product":"Widget","qty":10}},
  {"type":"upsert_relationship",
   "rel_type":"contains",
   "source_record_type":"orders","source_id":"ord_1",
   "target_record_type":"line_items","target_id":"li_1"}
]'

# Up to 1,000 operations per batch
# Records, relationships, and record_types 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 tipos de registro para fazer proxy de qualquer REST API — agentes usam as mesmas ferramentas

Webhooks de Entrada

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 --external-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 sql "SELECT * FROM records WHERE org_id = {org_id:String} AND base_id = {base_id:String} \
  AND record_type = 'invoices' AND deleted = false LIMIT 10" --base my-base
# Create an inbound webhook — external systems POST data to Rekor
rekor inbound-webhooks create --base my-base \
  --name "PagerDuty Incidents" --secret <hmac-secret> \
  --record_type-scope incidents

# Inbound webhook returns a unique URL: /inbound/{org}/{db}/{inbound_webhook_id}/ingest
# External system POSTs JSON → Rekor creates a record automatically

# Create a trigger — Rekor notifies you when data changes
rekor triggers create --base my-base \
  --name "Notify Slack on P1" --record_type-scope incidents \
  --url https://hooks.slack.com/services/T00/B00/xxx \
  --secret <hmac-secret> \
  --events record.created,record.updated

# 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 base

Curado por Caso de Uso

Cada toolset 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 tipo de registro

# 1. Author first-class actions — one record_type + one operation each
rekor actions upsert get_invoice     --record_type invoices --operation get
rekor actions upsert search_invoices --record_type invoices --operation list \
  --description "Search invoices by customer, status, or date range"
rekor actions upsert create_payment  --record_type payments --operation create
rekor actions upsert list_payments   --record_type payments --operation list

# 2. Compose a toolset that references those actions by id
rekor toolsets upsert invoicing-agent \
  --name "Invoicing Agent" \
  --action get_invoice --action search_invoices \
  --action create_payment --action list_payments \
  --relationship "invoice_payment:list" \
  --batch "invoices:create,update" --batch "payments:create" \
  --sql-query

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

Acesso e Governança

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

Chaves API com Escopo

Controle de acesso granular por base, tipo de registro e permissão

Organizações

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

Tags de Base

Agrupe bases por cliente, projeto ou equipe

# Create a scoped API key for a specific agent
rekor tokens create --name "client-a-agent" \
  --grants '[{
    "scope": {"bases": ["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": {"bases": ["*"]},
    "permissions": ["read:records", "read:record_types"]
  }]'

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

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

Ambientes

Agentes experimentam em bases 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 base to experiment safely
rekor bases create-preview my-base --name "add-invoices"

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

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

# Apply when ready
rekor bases promote my-base \
  --from my-base--add-invoices