Hermes health, models, and discovery capabilities
Use these six endpoint-qualified reads to inspect one configured Hermes API server. They report transport health, runtime detail, model aliases, the provider API surface, enabled skills, and resolved toolsets.
These results describe the selected Hermes endpoint. They do not change the tenant’s admitted AIP capability catalogue or grant permission to invoke a newly observed model, skill, tool, or provider route.
Operations
Replace <endpoint_id> with the normalized ID present in AIP discovery.
| Operation | Provider request | Auth | Stability | Result purpose |
|---|---|---|---|---|
health |
GET /health |
None at endpoint | Stable | Basic process reachability and version |
health_detailed |
GET /health/detailed |
Endpoint Bearer | Stable | Gateway state, activity, uptime, and process detail |
models |
GET /v1/models |
Endpoint Bearer | Stable | Default model and configured route aliases |
capabilities |
GET /v1/capabilities |
Endpoint Bearer | Stable | Hermes API-server self-description |
skills |
GET /v1/skills |
Endpoint Bearer | Experimental | Enabled skills visible to the API-server agent |
toolsets |
GET /v1/toolsets |
Endpoint Bearer | Experimental | Configurable toolsets and resolved tool names |
Every input is the same strict empty object:
{}
Additional input properties are rejected by the published schema. The endpoint comes from the capability ID, not from this object.
Shared AIP contract
| Contract field | Value for all six operations |
|---|---|
| Kind | Tool |
| Risk | Low |
| Read-only | Yes |
| Human approval | Not required by the capability |
| Idempotency | Optional; capability scope; no published TTL |
| Collision behavior | Return the original result |
| Connector retry support | Yes |
| Retry safety | Safe |
| Side effects | read, external_network |
| Data | Internal; no PII marker; redaction not required by the contract |
| Execution | Synchronous; no async, stream, or cancellation support |
| Expected latency hint | 5000 ms |
| AIP contract timeout | 60000 ms |
| Provider request timeout | 30000 ms |
| Transaction | None |
| Compensation | Rollback not supported |
The contract publishes a 99.9% availability target and 10000 ms maximum
queue-delay hint. These are declared values, not observed availability or
qualification evidence.
“No approval required” does not mean anonymous access. The caller, tenant, admitted route, host trust, and credential revision remain governed. Five of the six operations also require the endpoint’s Bearer token.
Keep three discovery sources separate
| Source | Authority | What it does not prove |
|---|---|---|
| Tenant AIP capability catalogue | Which admitted capability version the caller may route | Provider health or a successful operation |
Hermes capabilities result |
What the selected Hermes API server reports about itself | AIP admission, binding, approval, or policy |
| Hermes models, skills, and toolsets | Current provider-side execution inventory | Model credentials, tool authorization, or compatibility with every operation |
Use AIP discovery to select an action. Use these provider reads to verify the selected endpoint’s current state. Never synthesize a new AIP capability ID from a provider response.
Read basic health
cap:hermes_agent:<endpoint_id>:health is the only unauthenticated provider
operation in the connector. At the pinned Hermes revision, the provider
returns:
{
"status": "ok",
"platform": "hermes-agent",
"version": "<hermes-version>"
}
The connector normalizes that response:
{
"endpoint_id": "primary",
"status": "ok",
"platform": "hermes-agent",
"version": "<hermes-version>",
"http_status": 200,
"raw": {
"status": "ok",
"platform": "hermes-agent",
"version": "<hermes-version>"
}
}
The AIP action completes only when the provider status is exactly ok and the
HTTP status is successful. A successful HTTP response with another or missing
status produces a failed action with the normalized output retained.
The connector’s host-readiness probe uses a narrower reachability test. It
calls basic health on every configured endpoint and treats any successfully
read 2xx response as reachable; it does not inspect the raw status value.
Consequently, host readiness does not prove endpoint authentication, model
access, or semantic health of every Hermes subsystem.
Read detailed health
health_detailed is authenticated. The pinned provider returns an object that
can include:
status,platform, andversion;- gateway state and connected-platform detail;
- active-agent count plus busy and drainable markers;
- exit reason and last update time;
- process ID.
The connector returns the provider object without normalizing these fields. Treat the result as internal operational data. Do not expose process or runtime detail merely because the capability is low risk.
Detailed health is a point-in-time provider report. It is not the connector
host’s /ready contract, registry lease, storage health, or durable action
state.
List models
models returns the OpenAI-compatible model list published by the selected
Hermes API server. The pinned provider includes its default model and any
configured model-route aliases:
{
"object": "list",
"data": [
{
"id": "hermes-agent",
"object": "model",
"created": 0,
"owned_by": "hermes",
"permission": [],
"root": "hermes-agent",
"parent": null
}
]
}
The real created value is the provider’s current Unix time. Route aliases can
use their resolved model as root and the default model as parent. Provider
credentials are not included.
An observed model ID proves only that Hermes advertised the alias. It does not prove that upstream credentials, quota, model policy, or a chat request will succeed.
Read the Hermes API self-description
capabilities returns the provider’s structured API-server document. At the
pinned revision it reports:
- platform, model, and Bearer-auth state;
- server-side tool-execution mode;
- feature flags for chat, Responses API, runs, sessions, skills, streaming, approvals, and related surfaces;
- provider method and path entries for its published endpoints.
This document is not the AIP manifest. For example, the pinned connector
publishes scheduled-job AIP capabilities even though the provider document’s
endpoints object does not enumerate the job routes. The admitted connector
manifest remains authoritative for AIP routing.
Retain the provider document with the exact endpoint and Hermes revision when investigating compatibility drift. Do not let it enable an unadmitted binding.
List enabled skills
skills enumerates skills visible to the API-server agent. The pinned provider
sorts entries and returns their bounded metadata:
{
"object": "list",
"data": [
{
"name": "example-skill",
"description": "Example skill description",
"category": "example"
}
]
}
The provider scans local and configured external skill directories, applies platform and environment filters, gives local names precedence, and filters disabled skills. A malformed or unreadable individual skill can be skipped; an enumeration failure returns a provider server error.
This operation is experimental in the AIP manifest. Skill presence does not authorize an operator, model, or delegated action to use it.
List resolved toolsets
toolsets returns the configurable toolset surface for the API-server
platform. Each entry can contain:
| Field | Meaning |
|---|---|
name |
Stable toolset name |
label |
Human-readable label |
description |
Provider description |
enabled |
Whether the API-server platform enables the toolset |
configured |
Whether provider configuration satisfies its key check |
tools |
Sorted, de-duplicated concrete tool names |
The top-level object also identifies platform as api_server. A failed
toolset resolution becomes an empty tools list for that entry; a broader
enumeration failure returns a provider server error.
enabled and configured are provider observations, not AIP authorization or
proof that a tool call will complete. This operation is experimental.
Interpret raw results safely
The published output schema for the five authenticated reads is an object
without required provider-specific properties. The connector parses a JSON
body to its actual JSON value, wraps non-JSON text as {"text": "..."}, and
turns an empty successful body into null.
The execution path does not reject an array or null after parsing, even
though the published schema says object. Require the expected object shape in
application code and treat a mismatch as provider compatibility drift.
The connector exposes no provider response-byte limit for these reads. Apply a reviewed response bound at the Hermes server, ingress, or transport boundary; do not assume the 4 MiB AIP request limit bounds provider responses.
Call one protected discovery capability
Use a configured signed-native caller context and an endpoint ID returned by the tenant catalogue:
export AIP_URL=https://aip.example
export HERMES_ENDPOINT_ID=primary
aipctl action call \
"$AIP_URL" \
"cap:hermes_agent:${HERMES_ENDPOINT_ID}:models" \
--action-id act_hermes_models_001 \
--input '{}'
Expected result: the action completes with an object-shaped provider model list. Correlate the action, tenant, admitted connector version, endpoint, and provider audit time. Do not record endpoint token bytes.
If you call health instead, a completed result cannot prove the token path
because that provider route deliberately omits Bearer auth.
Failures and retry decisions
| Failure code | Typical boundary | Safe response |
|---|---|---|
connector.hermes_agent.configuration_or_input |
Unknown endpoint or unsupported capability | Refresh admitted discovery and correct the ID |
connector.hermes_agent.tenant_mismatch |
Trusted runtime tenant does not own the endpoint | Repair admission and routing; never override tenant in input |
connector.hermes_agent.missing_credential |
Protected read has no usable endpoint key | Replace the host with the correct owner-only key file |
connector.hermes_agent.authentication |
Hermes returned 401 or 403 |
Verify endpoint selection and rotate or correct the token |
connector.hermes_agent.remote_temporary |
Hermes returned 429 or a server error |
Retry this read with bounded backoff and the same action contract |
connector.hermes_agent.remote_rejected |
Hermes returned another non-success status | Correct provider state or compatibility before retrying |
connector.hermes_agent.transport |
Request or response-body read failed | Retry the read within deadline and policy; inspect network evidence |
connector.hermes_agent.deadline_exceeded |
Trusted AIP deadline elapsed | Preserve the action and issue a new read only when policy permits |
Invalid JSON is not a decode failure in this path; it becomes a text object.
There is no response_too_large connector error for these operations.
Verify an integration
Require all of the following:
- AIP discovery returns the exact endpoint-qualified capability and admitted version;
- basic health is treated as reachability, not credential evidence;
- a protected read proves the endpoint token path separately;
- result handling rejects an unexpected non-object shape;
- provider capabilities never add or enable an AIP route;
- model, skill, and toolset observations are not confused with authorization;
- retry preserves the original read contract and respects deadline and policy;
- internal discovery output is not exposed to an untrusted tenant or model.
These checks validate integration behavior. They do not qualify a particular Hermes deployment, model provider, skill, or toolset.