ActorAgentListResult actor.agent-list-result@1

Generated at from openvibe-contracts v0.127.0 and openvibe-sdk v0.37.0.

Version
1.0.0
Owner
actor
Visibility
public
Status
active
Compatibility
backward
Decision
ADR-044
Schema
https://openvibe.network/contracts/actor/agent-list-result.v1.json

actor.agent-list-result@1: GET /api/v1/agents (capability actor.agent.read): every agent system Actor can route a task to. KIND is the backend class (ADR-044): openvibe-runtime (OpenVibe's own agent, acting through OpenVibe services), agent-platform (another platform's agent, called through its API), open-model (an open model on OpenVibe's own hardware), codes (coding work through OpenVibe.Codes), node and run (a person's machine or OpenVibe.Run). TRUST is ADR-046's class; private mode takes only first-party ones. CAN are the task classes and tools it takes (task:<class>, tool:<name>). RATE_CARD is the published price, revised by review and never written by a model (SOURCE says where it comes from, VERIFIED_AT when a person last checked it). AVAILABLE says whether it can take a task now and REASON why not.

Fields

FieldTypeRequiredDescriptionConstraints
agentsarray of objectyes
  • maxItems 64
  • items: no other fields
agents[].idstringyes
  • pattern ^[a-z][a-z0-9-]{1,63}$
agents[].namestringyes
  • minLength 1
  • maxLength 80
agents[].kindenumyes
  • one of "openvibe-runtime", "agent-platform", "open-model", "codes", "node", "run"
agents[].providerstringyes
  • minLength 1
  • maxLength 80
agents[].modelstring
  • maxLength 120
agents[].trustenumyes
  • one of "first-party", "user-owned", "partner", "community", "external"
agents[].canarray of stringyes
  • items: pattern ^(task|tool):[a-z0-9_-]+$
agents[].rate_cardobjectyes
  • no other fields
agents[].rate_card.input_usd_per_mtoknumberyes
  • minimum 0
agents[].rate_card.output_usd_per_mtoknumberyes
  • minimum 0
agents[].rate_card.per_call_usdnumberA fixed charge per tool call the platform bills (for example a web search).
  • minimum 0
agents[].rate_card.sourcestringyes
  • format uri
agents[].rate_card.verified_atstringyes
  • format date
agents[].typical_latency_msinteger
  • minimum 0
agents[].availablebooleanyes
agents[].reasonstring
  • maxLength 300

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: two
{
  "agents": [
    {
      "id": "openvibe-runtime",
      "name": "OpenVibe runtime",
      "kind": "openvibe-runtime",
      "provider": "OpenVibe",
      "model": "deepseek-chat",
      "trust": "first-party",
      "can": [
        "task:answer",
        "task:research",
        "tool:openvibe-search",
        "tool:openvibe-tools"
      ],
      "rate_card": {
        "input_usd_per_mtok": 0.27,
        "output_usd_per_mtok": 1.1,
        "source": "https://api-docs.deepseek.com/quick_start/pricing",
        "verified_at": "2026-10-08"
      },
      "available": true
    },
    {
      "id": "openai-agent",
      "name": "OpenAI agent",
      "kind": "agent-platform",
      "provider": "OpenAI",
      "model": "gpt-5-mini",
      "trust": "external",
      "can": [
        "task:answer",
        "task:research",
        "tool:web-search"
      ],
      "rate_card": {
        "input_usd_per_mtok": 0.25,
        "output_usd_per_mtok": 2,
        "per_call_usd": 0.01,
        "source": "https://openai.com/api/pricing/",
        "verified_at": "2026-10-08"
      },
      "available": false,
      "reason": "no OpenAI key configured"
    }
  ]
}
Rejected: no-rate-card
{
  "agents": [
    {
      "id": "openvibe-runtime",
      "name": "OpenVibe runtime",
      "kind": "openvibe-runtime",
      "provider": "OpenVibe",
      "model": "deepseek-chat",
      "trust": "first-party",
      "can": [
        "task:answer",
        "task:research",
        "tool:openvibe-search",
        "tool:openvibe-tools"
      ],
      "available": true
    }
  ]
}
Rejected: unknown-kind
{
  "agents": [
    {
      "id": "openvibe-runtime",
      "name": "OpenVibe runtime",
      "kind": "magic",
      "provider": "OpenVibe",
      "model": "deepseek-chat",
      "trust": "first-party",
      "can": [
        "task:answer",
        "task:research",
        "tool:openvibe-search",
        "tool:openvibe-tools"
      ],
      "rate_card": {
        "input_usd_per_mtok": 0.27,
        "output_usd_per_mtok": 1.1,
        "source": "https://api-docs.deepseek.com/quick_start/pricing",
        "verified_at": "2026-10-08"
      },
      "available": true
    }
  ]
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('actor.agent-list-result@1', value);   // { valid, errors: [{ path, message }] }