Capa de datos para agentes de IA

La capa de datos que sus agentes realmente usan

Los agentes de IA necesitan una capa de datos compartida y persistente — no solo para almacenar datos, sino para consultarlos, vincularlos y compartirlos con otros agentes y sistemas externos. Rekor ofrece a los agentes un sistema de registro estructurado donde pueden leer, escribir y colaborar — esquemas definidos en tiempo de ejecución, sin migraciones, sin configuración.

sesión del 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 }

Cuatro primitivas

Dos pares de esquema e instancia: un tipo de registro define el esquema de sus registros, y un tipo de relación define el esquema de sus relaciones.

Tipo de registro

JSON Schema que define un tipo de registro. Se crea en tiempo de ejecución, sin migraciones.

Registro

Registro JSON que cumple con el esquema de un tipo de registro. Upsert por ID externo para idempotencia.

Tipo de relación

Esquema de una relación, igual que un tipo de registro lo es para un registro. Se declara una vez; valida los metadatos de una relación y restringe qué tipos de registro puede vincular.

Relación

Vínculo tipado y dirigido entre dos registros con metadatos. Entidad de primera clase, consultable en cualquier dirección.

# 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

Tres interfaces

Los desarrolladores diseñan esquemas vía CLI. Los agentes operan en producción vía MCP. Los sistemas externos se integran vía REST.

CLI

Para desarrolladores de agentes. Configure esquemas, tipos de registro y pruebe en entornos de vista previa.

MCP

Para operadores de agentes. Los agentes en producción crean/leen registros, suben/descargan archivos con 16 herramientas.

REST

Para integraciones externas. Conecte sistemas externos a Rekor vía HTTP estándar.

# 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 datos central

Escrituras ACID

Escrituras atómicas y consistentes por base

Analítica

Filtre, ordene, agregue y agrupe a escala

Operaciones por lotes

Hasta 1,000 operaciones atómicas en una sola solicitud

# 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

Archivos adjuntos

Adjunte archivos a cualquier registro. Los agentes suben directamente vía URLs prefirmadas y obtienen enlaces de descarga firmados a 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/

Integraciones

Integre con sistemas externos. Configure cualquier REST API como fuente de datos, reciba webhooks y envíe notificaciones cuando los datos cambien.

Fuentes externas

Configure tipos de registro como proxy de cualquier REST API — los agentes usan las mismas herramientas

Webhooks de Entrada

Webhooks de entrada — los sistemas externos envían datos

Triggers

Webhooks de salida — reaccione a cambios en los datos

# 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

Cree servidores MCP personalizados a partir de sus esquemas de datos. Construya conjuntos de herramientas específicas para agentes especializados — sin código.

Herramientas de dominio

Los agentes ven create_invoice, list_payments — no operaciones genéricas de base

Curado por caso de uso

Cada toolset expone exactamente las herramientas que un agente necesita — nada más

Basado en esquemas

Las definiciones de herramientas se generan automáticamente a partir de sus esquemas 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

Acceso y gobernanza

Limite las API keys a bases, tipos de registro y permisos específicos. Etiquete bases para organizar por cliente, proyecto o equipo.

API Keys con alcance

Control de acceso granular por base, tipo de registro y permiso

Organizaciones

Colaboración multiusuario con bases compartidos

Etiquetas de base

Agrupe bases por cliente, proyecto o equipo

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

Entornos

Los agentes experimentan en bases de vista previa. Los humanos revisan y promueven a producción. Las verificaciones de compatibilidad de esquemas detectan cambios incompatibles antes de que se apliquen.

# 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