From Agent Deployment to Catalog Entry

Five steps that can be fully automated - from an empty record to a published document.

COMP Disclosures Agent Data

Step 1: Register an Agent Deployment

A catalog entry never comes out of nowhere - it always references an agent deployment. Register it first via Agent Deployments.

curl -X POST https://api.nexora.example/v1/agents \
  -H "apikey: $NEXORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "deployment_tier": "production",
        "title": "Support Triage Copilot",
        "owning_team": { "business_unit": "Customer Experience", "team": "Support Engineering" },
        "integration_count": 6,
        "model_provider": "Anthropic Claude",
        "available_from": "2026-09-01",
        "chargeback": { "rate_percent": 3.5, "cost_center": "CC-4821" },
        "compliance_certification": {
          "cert_type": "SOC2",
          "data_classification_level": "confidential",
          "guardrail_policy_attached": "pii-redaction-v3",
          "valid_until": "2027-04-30"
        }
      }'

The compliance_certification block is optional when registering a deployment, but mandatory for later publication. See Compliance Disclosures and Guardrails.

Step 2: Upload Integration Artifacts

Model cards and architecture diagrams are attached to the agent deployment, not to a catalog entry. That way they're available to every catalog entry generated later.

curl -X POST https://api.nexora.example/v1/agents/agt_8f2c1a/artifacts \
  -H "apikey: $NEXORA_API_KEY" \
  -F "file=@model-card.pdf" \
  -F "category=model_card" \
  -F "order=1"

At least one model card (category=model_card) and one architecture diagram (category=architecture_diagram) are recommended. If the model card is missing, the template falls back to a neutral placeholder graphic.

Step 3: Generate a Catalog Entry

Want to see the flow without code first? The Agent Catalog Generator accepts the same agent metadata through a form and produces a finished catalog entry via a language model - the call runs through the Kong AI Gateway.

curl -X POST https://api.nexora.example/v1/catalog-entries \
  -H "apikey: $NEXORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "agent_id": "agt_8f2c1a",
        "template_id": "tpl_classic",
        "sections": ["capabilities", "data_scope", "integrations", "compliance", "chargeback"]
      }'
{
  "id": "cat_4d9b2e",
  "agent_id": "agt_8f2c1a",
  "template_id": "tpl_classic",
  "status": "in_progress",
  "created_at": "2026-08-20T09:41:12Z"
}

Generation is asynchronous because artifacts need to be processed and the record laid out. Usually takes two to ten seconds.

Step 4: Retrieve the Result

Two paths lead to the finished document:

Event-driven (recommended). Subscribe to catalog_entry.completed; the webhook carries the catalog entry ID and the download link. See Webhooks.

Polling. Poll GET /catalog-entries/{id} with increasing backoff (1s, 2s, 4s, 8s) until status reaches completed:

curl https://api.nexora.example/v1/catalog-entries/cat_4d9b2e/record \
  -H "apikey: $NEXORA_API_KEY" \
  -o catalog-entry-support-triage.pdf

The link in record_url is valid for 24 hours. Store the document instead of passing the link around.

Step 5: Publish

curl -X POST https://api.nexora.example/v1/catalog-entries/cat_4d9b2e/publish \
  -H "apikey: $NEXORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "channels": ["internal-catalog", "governance-board"] }'

Before publishing, the API checks the compliance disclosures. If something's missing, you get 422:

{
  "code": "compliance_disclosure_missing",
  "message": "Compliance disclosures are missing for publication.",
  "details": [
    { "field": "compliance_certification.valid_until", "reason": "missing" }
  ]
}

Add the missing figure on the agent deployment, regenerate the catalog entry, and publish again. A catalog entry that's already been generated is never changed after the fact - that keeps the history traceable.

Common Pitfalls

  • A catalog entry with no agent reference. agent_id is required; standalone catalog entries deliberately don't exist.
  • A template from a different tenant. template_id must belong to your tenant, otherwise 404.
  • Record retrieved too early. Before status: "completed", /record returns 409.
  • Chargeback-rate change without regenerating. Updating an agent deployment doesn't automatically update existing catalog entries.