{
  "schemaVersion": "1.0",
  "title": "Hermes Agent capabilities",
  "description": "Use this index to select the Hermes operation that owns your task and read its AIP policy contract before invocation. Every configured endpoint publishes the same 35 operations under cap:hermesagent::.",
  "canonical": "https://getaip.org/docs/connectors/hermes-agent/capabilities",
  "route": "/docs/connectors/hermes-agent/capabilities",
  "source": "docs/connectors/hermes-agent/capabilities/README.md",
  "protocol": "Agent Interoperability Protocol",
  "protocolVersion": "1.0",
  "section": "Connectors",
  "documentType": "Connector",
  "language": "en",
  "downloads": {
    "md": "/docs/download/connectors/hermes-agent/capabilities.md",
    "txt": "/docs/download/connectors/hermes-agent/capabilities.txt",
    "json": "/docs/download/connectors/hermes-agent/capabilities.json",
    "pdf": "/docs/download/connectors/hermes-agent/capabilities.pdf"
  },
  "content": {
    "format": "text/markdown",
    "markdown": "---\ntitle: Hermes Agent capabilities\ndescription: >-\n  Choose one endpoint-qualified Hermes operation and interpret its complete\n  AIP contract before invocation\nkind: index\naudience: application-developer\nappliesTo: \"1.x\"\nwritingStandard: \"aip-docs/1.0\"\nlastReviewedRevision: \"97be86e9efedf07ecf1783b03800f683f107fb04\"\nconnector: hermes-agent\n---\n\n# Hermes Agent capabilities\n\nUse this index to select the Hermes operation that owns your task and read its\nAIP policy contract before invocation. Every configured endpoint publishes the\nsame 35 operations under\n`cap:hermes_agent:<endpoint_id>:<operation>`.\n\nThe endpoint segment is an admitted routing identity. It is not an input field,\ndisplay label, or caller-selected URL.\n\n## Catalogue identity\n\n| Property | Reviewed value |\n|---|---|\n| AIP source | `97be86e9efedf07ecf1783b03800f683f107fb04` |\n| Pinned Hermes source | `7426c09beee73bdff94d916015bac71384f6bc92` |\n| Connector profile | `aip.connector.hermes_agent.v1` |\n| Capability prefix | `cap:hermes_agent:` |\n| Operations per endpoint | 35 |\n| Stable operations | 31 |\n| Experimental operations | 4 |\n| Read operations | 14 |\n| Non-read operations | 21 |\n| Approval required | 11 |\n| Required idempotency key | 15 |\n| Streaming or governed streaming | 5 |\n\nA different connector artifact, Hermes revision, or endpoint set requires a\nnew manifest review. A matching operation suffix alone does not prove that a\ntenant can discover or invoke the capability.\n\n## Choose a family\n\n| Family | Focused page | Total | Read | Non-read | Low | Medium | High | Approval | Key | Stream |\n|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|\n| Health, models, and discovery | `health-models-and-discovery.md` | 6 | 6 | 0 | 6 | 0 | 0 | 0 | 0 | 0 |\n| Chat and Responses API | `chat-and-responses.md` | 6 | 1 | 5 | 1 | 4 | 1 | 1 | 1 | 2 |\n| Durable runs and approvals | `durable-runs-and-approvals.md` | 5 | 2 | 3 | 2 | 3 | 0 | 2 | 3 | 1 |\n| Operator and delegation | `operator-and-delegation.md` | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |\n| Sessions | `sessions.md` | 9 | 3 | 6 | 3 | 5 | 1 | 1 | 4 | 1 |\n| Scheduled jobs | `scheduled-jobs.md` | 8 | 2 | 6 | 2 | 4 | 2 | 6 | 6 | 0 |\n| **Total** |  | **35** | **14** | **21** | **14** | **16** | **5** | **11** | **15** | **5** |\n\n`Key` counts operations that require an AIP idempotency key. `Stream` counts\nfour direct SSE operations plus the governed operator lifecycle.\n\n## Read a capability ID\n\nFor endpoint `primary`, a model-list capability has this shape:\n\n```text\ncap:hermes_agent:primary:models\n│                  │       └─ fixed operation\n│                  └───────── normalized endpoint ID\n└──────────────────────────── connector namespace\n```\n\nEndpoint IDs are trimmed, restricted to ASCII letters, digits, hyphens, and\nunderscores, and normalized to lowercase before manifest construction.\n\nEvery capability has one `aip.connector.hermes_agent.v1` binding. Its metadata\ncontains the system, endpoint ID, operation, configured base URL, provider\nmethod, fixed path template, and streaming marker. Treat that metadata as\ndeployment information, not authority to call the provider directly.\n\n## Operation catalogue\n\nLegend: `Req` means required, `Opt` means optional, and `—` means not\napplicable. `Stream` describes the advertised AIP execution contract.\n\n| Operation suffix | Provider method and path | Kind | Risk | Approval | Key | Stream | Stability |\n|---|---|---|---|---|---|---|---|\n| `health` | `GET /health` | Tool | Low | — | Opt | — | Stable |\n| `health_detailed` | `GET /health/detailed` | Tool | Low | — | Opt | — | Stable |\n| `models` | `GET /v1/models` | Tool | Low | — | Opt | — | Stable |\n| `capabilities` | `GET /v1/capabilities` | Tool | Low | — | Opt | — | Stable |\n| `skills` | `GET /v1/skills` | Tool | Low | — | Opt | — | Experimental |\n| `toolsets` | `GET /v1/toolsets` | Tool | Low | — | Opt | — | Experimental |\n| `chat` | `POST /v1/chat/completions` | Agent | Medium | — | Opt | — | Stable |\n| `chat_stream` | `POST /v1/chat/completions` | Agent | Medium | — | Opt | Yes | Stable |\n| `responses` | `POST /v1/responses` | Agent | Medium | — | Opt | — | Stable |\n| `responses_stream` | `POST /v1/responses` | Agent | Medium | — | Opt | Yes | Stable |\n| `response_get` | `GET /v1/responses/{response_id}` | Agent | Low | — | Opt | — | Experimental |\n| `response_delete` | `DELETE /v1/responses/{response_id}` | Agent | High | Req | Req | — | Experimental |\n| `run_start` | `POST /v1/runs` | Workflow | Medium | — | Req | — | Stable |\n| `run_status` | `GET /v1/runs/{run_id}` | Workflow | Low | — | Opt | — | Stable |\n| `run_events` | `GET /v1/runs/{run_id}/events` | Workflow | Low | — | Opt | Yes | Stable |\n| `run_approval` | `POST /v1/runs/{run_id}/approval` | Workflow | Medium | Req | Req | — | Stable |\n| `run_stop` | `POST /v1/runs/{run_id}/stop` | Workflow | Medium | Req | Req | — | Stable |\n| `operator` | `POST /v1/runs` | Agent | High | Req | Req | Yes | Stable |\n| `sessions_list` | `GET /api/sessions` | Tool | Low | — | Opt | — | Stable |\n| `session_create` | `POST /api/sessions` | Tool | Medium | — | Req | — | Stable |\n| `session_get` | `GET /api/sessions/{session_id}` | Tool | Low | — | Opt | — | Stable |\n| `session_patch` | `PATCH /api/sessions/{session_id}` | Tool | Medium | — | Req | — | Stable |\n| `session_delete` | `DELETE /api/sessions/{session_id}` | Tool | High | Req | Req | — | Stable |\n| `session_messages` | `GET /api/sessions/{session_id}/messages` | Tool | Low | — | Opt | — | Stable |\n| `session_fork` | `POST /api/sessions/{session_id}/fork` | Tool | Medium | — | Req | — | Stable |\n| `session_chat` | `POST /api/sessions/{session_id}/chat` | Agent | Medium | — | Opt | — | Stable |\n| `session_chat_stream` | `POST /api/sessions/{session_id}/chat/stream` | Agent | Medium | — | Opt | Yes | Stable |\n| `jobs_list` | `GET /api/jobs` | Tool | Low | — | Opt | — | Stable |\n| `job_create` | `POST /api/jobs` | Tool | Medium | Req | Req | — | Stable |\n| `job_get` | `GET /api/jobs/{job_id}` | Tool | Low | — | Opt | — | Stable |\n| `job_update` | `PATCH /api/jobs/{job_id}` | Tool | Medium | Req | Req | — | Stable |\n| `job_delete` | `DELETE /api/jobs/{job_id}` | Tool | High | Req | Req | — | Stable |\n| `job_pause` | `POST /api/jobs/{job_id}/pause` | Tool | Medium | Req | Req | — | Stable |\n| `job_resume` | `POST /api/jobs/{job_id}/resume` | Tool | Medium | Req | Req | — | Stable |\n| `job_run` | `POST /api/jobs/{job_id}/run` | Agent | High | Req | Req | — | Stable |\n\nThe catalogue contains 14 `GET`, 16 `POST`, 2 `PATCH`, and 3 `DELETE`\noperations. Sessions and jobs are executable `Tool` capabilities; they are not\nentries in the native AIP resource-read API.\n\n## Authentication legend\n\n`health` is the only operation without an endpoint-auth requirement. The other\n34 capability records declare Bearer auth sourced from `endpoint.api_key`.\n\nThe standalone host adds that key after endpoint and tenant selection. The AIP\ncaller supplies its own gateway credential and never receives the endpoint\nkey. The capability contract's `credentials` field is `null` because the\nprovider token is startup-loaded rather than selected by each action.\n\nHost route credential revision checks remain a separate authorization layer.\n\n## Kind and risk legend\n\n| AIP kind | Count | Meaning in this catalogue |\n|---|---:|---|\n| Tool | 20 | Discovery, session management, or job management action |\n| Workflow | 5 | Structured Hermes run lifecycle |\n| Agent | 10 | Model work, stored response action, operator work, session chat, or immediate job run |\n\n| Risk | Count | Required interpretation |\n|---|---:|---|\n| Low | 14 | Read-only provider operation; still authenticate, authorize, and classify output |\n| Medium | 16 | Provider or conversation state may change; preserve action identity and review impact |\n| High | 5 | Operator execution, destructive deletion, or immediate job execution; apply the strictest policy |\n\nRisk is policy input, not authorization. A medium operation can require an\nidempotency key without requiring human approval, as `run_start` and several\nsession operations do.\n\n## Approval legend\n\nApproval is required for exactly 11 operations:\n\n- `response_delete`;\n- `run_approval` and `run_stop`;\n- `operator`;\n- `session_delete`;\n- `job_create`, `job_update`, `job_delete`, `job_pause`, `job_resume`, and\n  `job_run`.\n\nEach published approval policy uses the tenant-policy selector, a 900000 ms\nvalidity window, and requires a reason, input snapshot, and policy decision.\nIt grants no delegated authority by itself.\n\nThe direct `operator` capability always requires approval. First-class\ndelegation can add its own connector-level approval gate; an exemption from\nthat gate does not remove the capability's native approval contract.\n\n## Idempotency and retry legend\n\nFifteen operations require a capability-scoped idempotency key:\n\n- `response_delete`;\n- `run_start`, `run_approval`, `run_stop`, and `operator`;\n- `session_create`, `session_patch`, `session_delete`, and `session_fork`;\n- every job mutation: create, update, delete, pause, resume, and run.\n\nThe published key TTL is 86400000 ms. A collision returns the original result.\nReuse a key only for the same canonical action contract; a returned original\nresult is not proof that different input was accepted.\n\nThe 14 read-only operations advertise retry support and safe retry semantics.\nAll 21 non-reads advertise no connector retry support and unsafe retry\nsemantics, including chat operations whose idempotency key is optional.\nPreserve the original action ID and reconcile an uncertain provider outcome\nbefore any repeat.\n\n## Execution and SLA legend\n\nEvery operation supports synchronous invocation. Five also advertise async\nsupport:\n\n- `chat_stream` and `responses_stream`;\n- `run_start` and `run_events`;\n- `operator`.\n\nThe four direct streams, plus `operator`, advertise streaming and cancellation.\n`session_chat_stream` is streaming and cancellable but does not advertise async\nsupport. Only `run_start`, `run_events`, and `operator` set the separate SLA\n`async_expected` marker.\n\n| Execution class | Expected latency | Timeout | Expected completion |\n|---|---:|---:|---|\n| Non-streaming operation | 5000 ms | 60000 ms | Synchronous |\n| Direct SSE operation | 30000 ms | 300000 ms | Streaming |\n| Governed operator | 30000 ms | 900000 ms | Streaming |\n\nAll operations publish a 10000 ms maximum queue-delay hint and a `99.9%`\navailability target. These are declared contract values, not observed\nqualification or a deployment guarantee.\n\n## Transaction and compensation legend\n\nNo Hermes capability publishes an AIP transaction contract. Required\nidempotency on state-changing operations does not add `dry_run`, `plan`,\n`commit`, or `reconcile` modes.\n\nEvery operation declares `rollback_not_supported` and names no compensating\ncapability or window. Approval may be required for the original action, but no\nautomatic inverse is promised.\n\n## Side-effect and data legend\n\nEvery operation declares external network access and read access. Additional\nmarkers are:\n\n| Marker | Operations |\n|---|---|\n| Write | Every non-read except the three destructive deletes |\n| Delete | `response_delete`, `session_delete`, and `job_delete` |\n| Send message | Chat, Responses API, session-chat, and their streaming forms |\n| Code execution | `operator` only |\n\nThe marker set describes possible effect classes. It does not prove that a\nmodel replied, a scheduled job delivered output, or an operator tool executed.\n\n| Data sensitivity | Count | Operations |\n|---|---:|---|\n| Internal | 15 | Discovery plus other read and job-control metadata not classified higher |\n| Confidential | 15 | Model work, run start/events/operator, session writes and chat, job create/update/run |\n| Restricted | 5 | Response/session/job deletion and run approval/stop |\n\nAll 21 non-read operations declare PII. Redaction is required for 29\noperations: every capability except `health`, `health_detailed`, `models`,\n`capabilities`, `skills`, and `toolsets`.\n\nThese are minimum handling labels. Provider input or output may require a\nstricter tenant classification.\n\n## Stability legend\n\n`skills`, `toolsets`, `response_get`, and `response_delete` are experimental.\nThe other 31 operations are stable at the pinned connector revision.\n\nStable does not mean qualified against every Hermes build or model provider.\nExperimental operations require an explicit compatibility and rollout review.\n\n## Choose the next page\n\n- Use `health-models-and-discovery.md` for the six non-mutating discovery\n  contracts.\n- Use `chat-and-responses.md` for OpenAI-compatible chat, Responses API, and\n  stored-response operations.\n- Use `durable-runs-and-approvals.md` for structured run start, observation,\n  approval, and stop.\n- Use `operator-and-delegation.md` for governed operator and first-class AIP\n  delegation.\n- Use `sessions.md` for persisted conversations.\n- Use `scheduled-jobs.md` for durable job definitions and controls.\n\n## Related documentation\n\n- [Hermes Agent connector](../README.md)\n- [Hermes configuration](../reference/configuration.md)\n- [Capabilities and contracts](../../../concepts/capabilities.md)\n- [Approvals and policy](../../../concepts/approvals-and-policy.md)\n- [Transactions and compensation](../../../concepts/transactions-and-compensation.md)\n",
    "text": "Hermes Agent capabilities\n\nUse this index to select the Hermes operation that owns your task and read its\nAIP policy contract before invocation. Every configured endpoint publishes the\nsame 35 operations under\ncap:hermesagent::.\n\nThe endpoint segment is an admitted routing identity. It is not an input field,\ndisplay label, or caller-selected URL.\n\nCatalogue identity\n\n| Property | Reviewed value |\n\n| AIP source | 97be86e9efedf07ecf1783b03800f683f107fb04 |\n| Pinned Hermes source | 7426c09beee73bdff94d916015bac71384f6bc92 |\n| Connector profile | aip.connector.hermesagent.v1 |\n| Capability prefix | cap:hermesagent: |\n| Operations per endpoint | 35 |\n| Stable operations | 31 |\n| Experimental operations | 4 |\n| Read operations | 14 |\n| Non-read operations | 21 |\n| Approval required | 11 |\n| Required idempotency key | 15 |\n| Streaming or governed streaming | 5 |\n\nA different connector artifact, Hermes revision, or endpoint set requires a\nnew manifest review. A matching operation suffix alone does not prove that a\ntenant can discover or invoke the capability.\n\nChoose a family\n\n| Family | Focused page | Total | Read | Non-read | Low | Medium | High | Approval | Key | Stream |\n\n| Health, models, and discovery | health-models-and-discovery.md | 6 | 6 | 0 | 6 | 0 | 0 | 0 | 0 | 0 |\n| Chat and Responses API | chat-and-responses.md | 6 | 1 | 5 | 1 | 4 | 1 | 1 | 1 | 2 |\n| Durable runs and approvals | durable-runs-and-approvals.md | 5 | 2 | 3 | 2 | 3 | 0 | 2 | 3 | 1 |\n| Operator and delegation | operator-and-delegation.md | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |\n| Sessions | sessions.md | 9 | 3 | 6 | 3 | 5 | 1 | 1 | 4 | 1 |\n| Scheduled jobs | scheduled-jobs.md | 8 | 2 | 6 | 2 | 4 | 2 | 6 | 6 | 0 |\n| Total |  | 35 | 14 | 21 | 14 | 16 | 5 | 11 | 15 | 5 |\n\nKey counts operations that require an AIP idempotency key. Stream counts\nfour direct SSE operations plus the governed operator lifecycle.\n\nRead a capability ID\n\nFor endpoint primary, a model-list capability has this shape:\n\ncap:hermesagent:primary:models\n│                  │       └─ fixed operation\n│                  └───────── normalized endpoint ID\n└──────────────────────────── connector namespace\n\nEndpoint IDs are trimmed, restricted to ASCII letters, digits, hyphens, and\nunderscores, and normalized to lowercase before manifest construction.\n\nEvery capability has one aip.connector.hermesagent.v1 binding. Its metadata\ncontains the system, endpoint ID, operation, configured base URL, provider\nmethod, fixed path template, and streaming marker. Treat that metadata as\ndeployment information, not authority to call the provider directly.\n\nOperation catalogue\n\nLegend: Req means required, Opt means optional, and — means not\napplicable. Stream describes the advertised AIP execution contract.\n\n| Operation suffix | Provider method and path | Kind | Risk | Approval | Key | Stream | Stability |\n\n| health | GET /health | Tool | Low | — | Opt | — | Stable |\n| healthdetailed | GET /health/detailed | Tool | Low | — | Opt | — | Stable |\n| models | GET /v1/models | Tool | Low | — | Opt | — | Stable |\n| capabilities | GET /v1/capabilities | Tool | Low | — | Opt | — | Stable |\n| skills | GET /v1/skills | Tool | Low | — | Opt | — | Experimental |\n| toolsets | GET /v1/toolsets | Tool | Low | — | Opt | — | Experimental |\n| chat | POST /v1/chat/completions | Agent | Medium | — | Opt | — | Stable |\n| chatstream | POST /v1/chat/completions | Agent | Medium | — | Opt | Yes | Stable |\n| responses | POST /v1/responses | Agent | Medium | — | Opt | — | Stable |\n| responsesstream | POST /v1/responses | Agent | Medium | — | Opt | Yes | Stable |\n| responseget | GET /v1/responses/{responseid} | Agent | Low | — | Opt | — | Experimental |\n| responsedelete | DELETE /v1/responses/{responseid} | Agent | High | Req | Req | — | Experimental |\n| runstart | POST /v1/runs | Workflow | Medium | — | Req | — | Stable |\n| runstatus | GET /v1/runs/{runid} | Workflow | Low | — | Opt | — | Stable |\n| runevents | GET /v1/runs/{runid}/events | Workflow | Low | — | Opt | Yes | Stable |\n| runapproval | POST /v1/runs/{runid}/approval | Workflow | Medium | Req | Req | — | Stable |\n| runstop | POST /v1/runs/{runid}/stop | Workflow | Medium | Req | Req | — | Stable |\n| operator | POST /v1/runs | Agent | High | Req | Req | Yes | Stable |\n| sessionslist | GET /api/sessions | Tool | Low | — | Opt | — | Stable |\n| sessioncreate | POST /api/sessions | Tool | Medium | — | Req | — | Stable |\n| sessionget | GET /api/sessions/{sessionid} | Tool | Low | — | Opt | — | Stable |\n| sessionpatch | PATCH /api/sessions/{sessionid} | Tool | Medium | — | Req | — | Stable |\n| sessiondelete | DELETE /api/sessions/{sessionid} | Tool | High | Req | Req | — | Stable |\n| sessionmessages | GET /api/sessions/{sessionid}/messages | Tool | Low | — | Opt | — | Stable |\n| sessionfork | POST /api/sessions/{sessionid}/fork | Tool | Medium | — | Req | — | Stable |\n| sessionchat | POST /api/sessions/{sessionid}/chat | Agent | Medium | — | Opt | — | Stable |\n| sessionchatstream | POST /api/sessions/{sessionid}/chat/stream | Agent | Medium | — | Opt | Yes | Stable |\n| jobslist | GET /api/jobs | Tool | Low | — | Opt | — | Stable |\n| jobcreate | POST /api/jobs | Tool | Medium | Req | Req | — | Stable |\n| jobget | GET /api/jobs/{jobid} | Tool | Low | — | Opt | — | Stable |\n| jobupdate | PATCH /api/jobs/{jobid} | Tool | Medium | Req | Req | — | Stable |\n| jobdelete | DELETE /api/jobs/{jobid} | Tool | High | Req | Req | — | Stable |\n| jobpause | POST /api/jobs/{jobid}/pause | Tool | Medium | Req | Req | — | Stable |\n| jobresume | POST /api/jobs/{jobid}/resume | Tool | Medium | Req | Req | — | Stable |\n| jobrun | POST /api/jobs/{jobid}/run | Agent | High | Req | Req | — | Stable |\n\nThe catalogue contains 14 GET, 16 POST, 2 PATCH, and 3 DELETE\noperations. Sessions and jobs are executable Tool capabilities; they are not\nentries in the native AIP resource-read API.\n\nAuthentication legend\n\nhealth is the only operation without an endpoint-auth requirement. The other\n34 capability records declare Bearer auth sourced from endpoint.apikey.\n\nThe standalone host adds that key after endpoint and tenant selection. The AIP\ncaller supplies its own gateway credential and never receives the endpoint\nkey. The capability contract's credentials field is null because the\nprovider token is startup-loaded rather than selected by each action.\n\nHost route credential revision checks remain a separate authorization layer.\n\nKind and risk legend\n\n| AIP kind | Count | Meaning in this catalogue |\n\n| Tool | 20 | Discovery, session management, or job management action |\n| Workflow | 5 | Structured Hermes run lifecycle |\n| Agent | 10 | Model work, stored response action, operator work, session chat, or immediate job run |\n\n| Risk | Count | Required interpretation |\n\n| Low | 14 | Read-only provider operation; still authenticate, authorize, and classify output |\n| Medium | 16 | Provider or conversation state may change; preserve action identity and review impact |\n| High | 5 | Operator execution, destructive deletion, or immediate job execution; apply the strictest policy |\n\nRisk is policy input, not authorization. A medium operation can require an\nidempotency key without requiring human approval, as runstart and several\nsession operations do.\n\nApproval legend\n\nApproval is required for exactly 11 operations:\n• responsedelete;\n• runapproval and runstop;\n• operator;\n• sessiondelete;\n• jobcreate, jobupdate, jobdelete, jobpause, jobresume, and\n  jobrun.\n\nEach published approval policy uses the tenant-policy selector, a 900000 ms\nvalidity window, and requires a reason, input snapshot, and policy decision.\nIt grants no delegated authority by itself.\n\nThe direct operator capability always requires approval. First-class\ndelegation can add its own connector-level approval gate; an exemption from\nthat gate does not remove the capability's native approval contract.\n\nIdempotency and retry legend\n\nFifteen operations require a capability-scoped idempotency key:\n• responsedelete;\n• runstart, runapproval, runstop, and operator;\n• sessioncreate, sessionpatch, sessiondelete, and sessionfork;\n• every job mutation: create, update, delete, pause, resume, and run.\n\nThe published key TTL is 86400000 ms. A collision returns the original result.\nReuse a key only for the same canonical action contract; a returned original\nresult is not proof that different input was accepted.\n\nThe 14 read-only operations advertise retry support and safe retry semantics.\nAll 21 non-reads advertise no connector retry support and unsafe retry\nsemantics, including chat operations whose idempotency key is optional.\nPreserve the original action ID and reconcile an uncertain provider outcome\nbefore any repeat.\n\nExecution and SLA legend\n\nEvery operation supports synchronous invocation. Five also advertise async\nsupport:\n• chatstream and responsesstream;\n• runstart and runevents;\n• operator.\n\nThe four direct streams, plus operator, advertise streaming and cancellation.\nsessionchatstream is streaming and cancellable but does not advertise async\nsupport. Only runstart, runevents, and operator set the separate SLA\nasyncexpected marker.\n\n| Execution class | Expected latency | Timeout | Expected completion |\n\n| Non-streaming operation | 5000 ms | 60000 ms | Synchronous |\n| Direct SSE operation | 30000 ms | 300000 ms | Streaming |\n| Governed operator | 30000 ms | 900000 ms | Streaming |\n\nAll operations publish a 10000 ms maximum queue-delay hint and a 99.9%\navailability target. These are declared contract values, not observed\nqualification or a deployment guarantee.\n\nTransaction and compensation legend\n\nNo Hermes capability publishes an AIP transaction contract. Required\nidempotency on state-changing operations does not add dryrun, plan,\ncommit, or reconcile modes.\n\nEvery operation declares rollbacknotsupported and names no compensating\ncapability or window. Approval may be required for the original action, but no\nautomatic inverse is promised.\n\nSide-effect and data legend\n\nEvery operation declares external network access and read access. Additional\nmarkers are:\n\n| Marker | Operations |\n\n| Write | Every non-read except the three destructive deletes |\n| Delete | responsedelete, sessiondelete, and jobdelete |\n| Send message | Chat, Responses API, session-chat, and their streaming forms |\n| Code execution | operator only |\n\nThe marker set describes possible effect classes. It does not prove that a\nmodel replied, a scheduled job delivered output, or an operator tool executed.\n\n| Data sensitivity | Count | Operations |\n\n| Internal | 15 | Discovery plus other read and job-control metadata not classified higher |\n| Confidential | 15 | Model work, run start/events/operator, session writes and chat, job create/update/run |\n| Restricted | 5 | Response/session/job deletion and run approval/stop |\n\nAll 21 non-read operations declare PII. Redaction is required for 29\noperations: every capability except health, healthdetailed, models,\ncapabilities, skills, and toolsets.\n\nThese are minimum handling labels. Provider input or output may require a\nstricter tenant classification.\n\nStability legend\n\nskills, toolsets, responseget, and responsedelete are experimental.\nThe other 31 operations are stable at the pinned connector revision.\n\nStable does not mean qualified against every Hermes build or model provider.\nExperimental operations require an explicit compatibility and rollout review.\n\nChoose the next page\n• Use health-models-and-discovery.md for the six non-mutating discovery\n  contracts.\n• Use chat-and-responses.md for OpenAI-compatible chat, Responses API, and\n  stored-response operations.\n• Use durable-runs-and-approvals.md for structured run start, observation,\n  approval, and stop.\n• Use operator-and-delegation.md for governed operator and first-class AIP\n  delegation.\n• Use sessions.md for persisted conversations.\n• Use scheduled-jobs.md for durable job definitions and controls.\n\nRelated documentation\n• Hermes Agent connector (../README.md)\n• Hermes configuration (../reference/configuration.md)\n• Capabilities and contracts (../../../concepts/capabilities.md)\n• Approvals and policy (../../../concepts/approvals-and-policy.md)\n• Transactions and compensation (../../../concepts/transactions-and-compensation.md)\n"
  },
  "integrity": {
    "algorithm": "sha256",
    "sourceDigest": "ac6d96322e295ae02dd898f3b11bc160d9e4f4028e6ffc030483658a6e1196d3"
  }
}
