{
  "schemaVersion": "1.0",
  "title": "Hermes health, models, and discovery capabilities",
  "description": "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.",
  "canonical": "https://getaip.org/docs/connectors/hermes-agent/capabilities/health-models-and-discovery",
  "route": "/docs/connectors/hermes-agent/capabilities/health-models-and-discovery",
  "source": "docs/connectors/hermes-agent/capabilities/health-models-and-discovery.md",
  "protocol": "Agent Interoperability Protocol",
  "protocolVersion": "1.0",
  "section": "Connectors",
  "documentType": "Connector",
  "language": "en",
  "downloads": {
    "md": "/docs/download/connectors/hermes-agent/capabilities/health-models-and-discovery.md",
    "txt": "/docs/download/connectors/hermes-agent/capabilities/health-models-and-discovery.txt",
    "json": "/docs/download/connectors/hermes-agent/capabilities/health-models-and-discovery.json",
    "pdf": "/docs/download/connectors/hermes-agent/capabilities/health-models-and-discovery.pdf"
  },
  "content": {
    "format": "text/markdown",
    "markdown": "---\ntitle: Hermes health, models, and discovery capabilities\ndescription: >-\n  Read endpoint health and current Hermes discovery documents without\n  confusing provider self-description with the admitted AIP catalogue\nkind: capability-reference\naudience: application-developer\nappliesTo: \"1.x\"\nwritingStandard: \"aip-docs/1.0\"\nlastReviewedRevision: \"97be86e9efedf07ecf1783b03800f683f107fb04\"\nconnector: hermes-agent\ncapabilityIds:\n  - cap:hermes_agent:<endpoint_id>:health\n  - cap:hermes_agent:<endpoint_id>:health_detailed\n  - cap:hermes_agent:<endpoint_id>:models\n  - cap:hermes_agent:<endpoint_id>:capabilities\n  - cap:hermes_agent:<endpoint_id>:skills\n  - cap:hermes_agent:<endpoint_id>:toolsets\n---\n\n# Hermes health, models, and discovery capabilities\n\nUse these six endpoint-qualified reads to inspect one configured Hermes API\nserver. They report transport health, runtime detail, model aliases, the\nprovider API surface, enabled skills, and resolved toolsets.\n\nThese results describe the selected Hermes endpoint. They do not change the\ntenant's admitted AIP capability catalogue or grant permission to invoke a\nnewly observed model, skill, tool, or provider route.\n\n## Operations\n\nReplace `<endpoint_id>` with the normalized ID present in AIP discovery.\n\n| Operation | Provider request | Auth | Stability | Result purpose |\n|---|---|---|---|---|\n| `health` | `GET /health` | None at endpoint | Stable | Basic process reachability and version |\n| `health_detailed` | `GET /health/detailed` | Endpoint Bearer | Stable | Gateway state, activity, uptime, and process detail |\n| `models` | `GET /v1/models` | Endpoint Bearer | Stable | Default model and configured route aliases |\n| `capabilities` | `GET /v1/capabilities` | Endpoint Bearer | Stable | Hermes API-server self-description |\n| `skills` | `GET /v1/skills` | Endpoint Bearer | Experimental | Enabled skills visible to the API-server agent |\n| `toolsets` | `GET /v1/toolsets` | Endpoint Bearer | Experimental | Configurable toolsets and resolved tool names |\n\nEvery input is the same strict empty object:\n\n```json\n{}\n```\n\nAdditional input properties are rejected by the published schema. The\nendpoint comes from the capability ID, not from this object.\n\n## Shared AIP contract\n\n| Contract field | Value for all six operations |\n|---|---|\n| Kind | Tool |\n| Risk | Low |\n| Read-only | Yes |\n| Human approval | Not required by the capability |\n| Idempotency | Optional; capability scope; no published TTL |\n| Collision behavior | Return the original result |\n| Connector retry support | Yes |\n| Retry safety | Safe |\n| Side effects | `read`, `external_network` |\n| Data | Internal; no PII marker; redaction not required by the contract |\n| Execution | Synchronous; no async, stream, or cancellation support |\n| Expected latency hint | 5000 ms |\n| AIP contract timeout | 60000 ms |\n| Provider request timeout | 30000 ms |\n| Transaction | None |\n| Compensation | Rollback not supported |\n\nThe contract publishes a `99.9%` availability target and 10000 ms maximum\nqueue-delay hint. These are declared values, not observed availability or\nqualification evidence.\n\n“No approval required” does not mean anonymous access. The caller, tenant,\nadmitted route, host trust, and credential revision remain governed. Five of\nthe six operations also require the endpoint's Bearer token.\n\n## Keep three discovery sources separate\n\n| Source | Authority | What it does not prove |\n|---|---|---|\n| Tenant AIP capability catalogue | Which admitted capability version the caller may route | Provider health or a successful operation |\n| Hermes `capabilities` result | What the selected Hermes API server reports about itself | AIP admission, binding, approval, or policy |\n| Hermes models, skills, and toolsets | Current provider-side execution inventory | Model credentials, tool authorization, or compatibility with every operation |\n\nUse AIP discovery to select an action. Use these provider reads to verify the\nselected endpoint's current state. Never synthesize a new AIP capability ID\nfrom a provider response.\n\n## Read basic health\n\n`cap:hermes_agent:<endpoint_id>:health` is the only unauthenticated provider\noperation in the connector. At the pinned Hermes revision, the provider\nreturns:\n\n```json\n{\n  \"status\": \"ok\",\n  \"platform\": \"hermes-agent\",\n  \"version\": \"<hermes-version>\"\n}\n```\n\nThe connector normalizes that response:\n\n```json\n{\n  \"endpoint_id\": \"primary\",\n  \"status\": \"ok\",\n  \"platform\": \"hermes-agent\",\n  \"version\": \"<hermes-version>\",\n  \"http_status\": 200,\n  \"raw\": {\n    \"status\": \"ok\",\n    \"platform\": \"hermes-agent\",\n    \"version\": \"<hermes-version>\"\n  }\n}\n```\n\nThe AIP action completes only when the provider status is exactly `ok` and the\nHTTP status is successful. A successful HTTP response with another or missing\nstatus produces a failed action with the normalized output retained.\n\nThe connector's host-readiness probe uses a narrower reachability test. It\ncalls basic health on every configured endpoint and treats any successfully\nread 2xx response as reachable; it does not inspect the raw `status` value.\nConsequently, host readiness does not prove endpoint authentication, model\naccess, or semantic health of every Hermes subsystem.\n\n## Read detailed health\n\n`health_detailed` is authenticated. The pinned provider returns an object that\ncan include:\n\n- `status`, `platform`, and `version`;\n- gateway state and connected-platform detail;\n- active-agent count plus busy and drainable markers;\n- exit reason and last update time;\n- process ID.\n\nThe connector returns the provider object without normalizing these fields.\nTreat the result as internal operational data. Do not expose process or runtime\ndetail merely because the capability is low risk.\n\nDetailed health is a point-in-time provider report. It is not the connector\nhost's `/ready` contract, registry lease, storage health, or durable action\nstate.\n\n## List models\n\n`models` returns the OpenAI-compatible model list published by the selected\nHermes API server. The pinned provider includes its default model and any\nconfigured model-route aliases:\n\n```json\n{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"hermes-agent\",\n      \"object\": \"model\",\n      \"created\": 0,\n      \"owned_by\": \"hermes\",\n      \"permission\": [],\n      \"root\": \"hermes-agent\",\n      \"parent\": null\n    }\n  ]\n}\n```\n\nThe real `created` value is the provider's current Unix time. Route aliases can\nuse their resolved model as `root` and the default model as `parent`. Provider\ncredentials are not included.\n\nAn observed model ID proves only that Hermes advertised the alias. It does not\nprove that upstream credentials, quota, model policy, or a chat request will\nsucceed.\n\n## Read the Hermes API self-description\n\n`capabilities` returns the provider's structured API-server document. At the\npinned revision it reports:\n\n- platform, model, and Bearer-auth state;\n- server-side tool-execution mode;\n- feature flags for chat, Responses API, runs, sessions, skills, streaming,\n  approvals, and related surfaces;\n- provider method and path entries for its published endpoints.\n\nThis document is not the AIP manifest. For example, the pinned connector\npublishes scheduled-job AIP capabilities even though the provider document's\n`endpoints` object does not enumerate the job routes. The admitted connector\nmanifest remains authoritative for AIP routing.\n\nRetain the provider document with the exact endpoint and Hermes revision when\ninvestigating compatibility drift. Do not let it enable an unadmitted binding.\n\n## List enabled skills\n\n`skills` enumerates skills visible to the API-server agent. The pinned provider\nsorts entries and returns their bounded metadata:\n\n```json\n{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"name\": \"example-skill\",\n      \"description\": \"Example skill description\",\n      \"category\": \"example\"\n    }\n  ]\n}\n```\n\nThe provider scans local and configured external skill directories, applies\nplatform and environment filters, gives local names precedence, and filters\ndisabled skills. A malformed or unreadable individual skill can be skipped;\nan enumeration failure returns a provider server error.\n\nThis operation is experimental in the AIP manifest. Skill presence does not\nauthorize an operator, model, or delegated action to use it.\n\n## List resolved toolsets\n\n`toolsets` returns the configurable toolset surface for the API-server\nplatform. Each entry can contain:\n\n| Field | Meaning |\n|---|---|\n| `name` | Stable toolset name |\n| `label` | Human-readable label |\n| `description` | Provider description |\n| `enabled` | Whether the API-server platform enables the toolset |\n| `configured` | Whether provider configuration satisfies its key check |\n| `tools` | Sorted, de-duplicated concrete tool names |\n\nThe top-level object also identifies `platform` as `api_server`. A failed\ntoolset resolution becomes an empty `tools` list for that entry; a broader\nenumeration failure returns a provider server error.\n\n`enabled` and `configured` are provider observations, not AIP authorization or\nproof that a tool call will complete. This operation is experimental.\n\n## Interpret raw results safely\n\nThe published output schema for the five authenticated reads is an object\nwithout required provider-specific properties. The connector parses a JSON\nbody to its actual JSON value, wraps non-JSON text as `{\"text\": \"...\"}`, and\nturns an empty successful body into `null`.\n\nThe execution path does not reject an array or `null` after parsing, even\nthough the published schema says object. Require the expected object shape in\napplication code and treat a mismatch as provider compatibility drift.\n\nThe connector exposes no provider response-byte limit for these reads. Apply a\nreviewed response bound at the Hermes server, ingress, or transport boundary;\ndo not assume the 4 MiB AIP request limit bounds provider responses.\n\n## Call one protected discovery capability\n\nUse a configured signed-native caller context and an endpoint ID returned by\nthe tenant catalogue:\n\n```sh\nexport AIP_URL=https://aip.example\nexport HERMES_ENDPOINT_ID=primary\n\naipctl action call \\\n  \"$AIP_URL\" \\\n  \"cap:hermes_agent:${HERMES_ENDPOINT_ID}:models\" \\\n  --action-id act_hermes_models_001 \\\n  --input '{}'\n```\n\nExpected result: the action completes with an object-shaped provider model\nlist. Correlate the action, tenant, admitted connector version, endpoint, and\nprovider audit time. Do not record endpoint token bytes.\n\nIf you call `health` instead, a completed result cannot prove the token path\nbecause that provider route deliberately omits Bearer auth.\n\n## Failures and retry decisions\n\n| Failure code | Typical boundary | Safe response |\n|---|---|---|\n| `connector.hermes_agent.configuration_or_input` | Unknown endpoint or unsupported capability | Refresh admitted discovery and correct the ID |\n| `connector.hermes_agent.tenant_mismatch` | Trusted runtime tenant does not own the endpoint | Repair admission and routing; never override tenant in input |\n| `connector.hermes_agent.missing_credential` | Protected read has no usable endpoint key | Replace the host with the correct owner-only key file |\n| `connector.hermes_agent.authentication` | Hermes returned `401` or `403` | Verify endpoint selection and rotate or correct the token |\n| `connector.hermes_agent.remote_temporary` | Hermes returned `429` or a server error | Retry this read with bounded backoff and the same action contract |\n| `connector.hermes_agent.remote_rejected` | Hermes returned another non-success status | Correct provider state or compatibility before retrying |\n| `connector.hermes_agent.transport` | Request or response-body read failed | Retry the read within deadline and policy; inspect network evidence |\n| `connector.hermes_agent.deadline_exceeded` | Trusted AIP deadline elapsed | Preserve the action and issue a new read only when policy permits |\n\nInvalid JSON is not a decode failure in this path; it becomes a text object.\nThere is no `response_too_large` connector error for these operations.\n\n## Verify an integration\n\nRequire all of the following:\n\n- AIP discovery returns the exact endpoint-qualified capability and admitted\n  version;\n- basic health is treated as reachability, not credential evidence;\n- a protected read proves the endpoint token path separately;\n- result handling rejects an unexpected non-object shape;\n- provider capabilities never add or enable an AIP route;\n- model, skill, and toolset observations are not confused with authorization;\n- retry preserves the original read contract and respects deadline and policy;\n- internal discovery output is not exposed to an untrusted tenant or model.\n\nThese checks validate integration behavior. They do not qualify a particular\nHermes deployment, model provider, skill, or toolset.\n\n## Related documentation\n\n- [Hermes capability index](README.md)\n- [Authenticate and bind Hermes endpoints](../getting-started/authentication-and-endpoints.md)\n- [Hermes configuration](../reference/configuration.md)\n- [Capabilities and contracts](../../../concepts/capabilities.md)\n- [Error reference](../../../reference/errors.md)\n",
    "text": "Hermes health, models, and discovery capabilities\n\nUse these six endpoint-qualified reads to inspect one configured Hermes API\nserver. They report transport health, runtime detail, model aliases, the\nprovider API surface, enabled skills, and resolved toolsets.\n\nThese results describe the selected Hermes endpoint. They do not change the\ntenant's admitted AIP capability catalogue or grant permission to invoke a\nnewly observed model, skill, tool, or provider route.\n\nOperations\n\nReplace  with the normalized ID present in AIP discovery.\n\n| Operation | Provider request | Auth | Stability | Result purpose |\n\n| health | GET /health | None at endpoint | Stable | Basic process reachability and version |\n| healthdetailed | GET /health/detailed | Endpoint Bearer | Stable | Gateway state, activity, uptime, and process detail |\n| models | GET /v1/models | Endpoint Bearer | Stable | Default model and configured route aliases |\n| capabilities | GET /v1/capabilities | Endpoint Bearer | Stable | Hermes API-server self-description |\n| skills | GET /v1/skills | Endpoint Bearer | Experimental | Enabled skills visible to the API-server agent |\n| toolsets | GET /v1/toolsets | Endpoint Bearer | Experimental | Configurable toolsets and resolved tool names |\n\nEvery input is the same strict empty object:\n\n{}\n\nAdditional input properties are rejected by the published schema. The\nendpoint comes from the capability ID, not from this object.\n\nShared AIP contract\n\n| Contract field | Value for all six operations |\n\n| Kind | Tool |\n| Risk | Low |\n| Read-only | Yes |\n| Human approval | Not required by the capability |\n| Idempotency | Optional; capability scope; no published TTL |\n| Collision behavior | Return the original result |\n| Connector retry support | Yes |\n| Retry safety | Safe |\n| Side effects | read, externalnetwork |\n| Data | Internal; no PII marker; redaction not required by the contract |\n| Execution | Synchronous; no async, stream, or cancellation support |\n| Expected latency hint | 5000 ms |\n| AIP contract timeout | 60000 ms |\n| Provider request timeout | 30000 ms |\n| Transaction | None |\n| Compensation | Rollback not supported |\n\nThe contract publishes a 99.9% availability target and 10000 ms maximum\nqueue-delay hint. These are declared values, not observed availability or\nqualification evidence.\n\n“No approval required” does not mean anonymous access. The caller, tenant,\nadmitted route, host trust, and credential revision remain governed. Five of\nthe six operations also require the endpoint's Bearer token.\n\nKeep three discovery sources separate\n\n| Source | Authority | What it does not prove |\n\n| Tenant AIP capability catalogue | Which admitted capability version the caller may route | Provider health or a successful operation |\n| Hermes capabilities result | What the selected Hermes API server reports about itself | AIP admission, binding, approval, or policy |\n| Hermes models, skills, and toolsets | Current provider-side execution inventory | Model credentials, tool authorization, or compatibility with every operation |\n\nUse AIP discovery to select an action. Use these provider reads to verify the\nselected endpoint's current state. Never synthesize a new AIP capability ID\nfrom a provider response.\n\nRead basic health\n\ncap:hermesagent::health is the only unauthenticated provider\noperation in the connector. At the pinned Hermes revision, the provider\nreturns:\n\n{\n  \"status\": \"ok\",\n  \"platform\": \"hermes-agent\",\n  \"version\": \"\"\n}\n\nThe connector normalizes that response:\n\n{\n  \"endpointid\": \"primary\",\n  \"status\": \"ok\",\n  \"platform\": \"hermes-agent\",\n  \"version\": \"\",\n  \"httpstatus\": 200,\n  \"raw\": {\n    \"status\": \"ok\",\n    \"platform\": \"hermes-agent\",\n    \"version\": \"\"\n  }\n}\n\nThe AIP action completes only when the provider status is exactly ok and the\nHTTP status is successful. A successful HTTP response with another or missing\nstatus produces a failed action with the normalized output retained.\n\nThe connector's host-readiness probe uses a narrower reachability test. It\ncalls basic health on every configured endpoint and treats any successfully\nread 2xx response as reachable; it does not inspect the raw status value.\nConsequently, host readiness does not prove endpoint authentication, model\naccess, or semantic health of every Hermes subsystem.\n\nRead detailed health\n\nhealthdetailed is authenticated. The pinned provider returns an object that\ncan include:\n• status, platform, and version;\n• gateway state and connected-platform detail;\n• active-agent count plus busy and drainable markers;\n• exit reason and last update time;\n• process ID.\n\nThe connector returns the provider object without normalizing these fields.\nTreat the result as internal operational data. Do not expose process or runtime\ndetail merely because the capability is low risk.\n\nDetailed health is a point-in-time provider report. It is not the connector\nhost's /ready contract, registry lease, storage health, or durable action\nstate.\n\nList models\n\nmodels returns the OpenAI-compatible model list published by the selected\nHermes API server. The pinned provider includes its default model and any\nconfigured model-route aliases:\n\n{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"hermes-agent\",\n      \"object\": \"model\",\n      \"created\": 0,\n      \"ownedby\": \"hermes\",\n      \"permission\": [],\n      \"root\": \"hermes-agent\",\n      \"parent\": null\n    }\n  ]\n}\n\nThe real created value is the provider's current Unix time. Route aliases can\nuse their resolved model as root and the default model as parent. Provider\ncredentials are not included.\n\nAn observed model ID proves only that Hermes advertised the alias. It does not\nprove that upstream credentials, quota, model policy, or a chat request will\nsucceed.\n\nRead the Hermes API self-description\n\ncapabilities returns the provider's structured API-server document. At the\npinned revision it reports:\n• platform, model, and Bearer-auth state;\n• server-side tool-execution mode;\n• feature flags for chat, Responses API, runs, sessions, skills, streaming,\n  approvals, and related surfaces;\n• provider method and path entries for its published endpoints.\n\nThis document is not the AIP manifest. For example, the pinned connector\npublishes scheduled-job AIP capabilities even though the provider document's\nendpoints object does not enumerate the job routes. The admitted connector\nmanifest remains authoritative for AIP routing.\n\nRetain the provider document with the exact endpoint and Hermes revision when\ninvestigating compatibility drift. Do not let it enable an unadmitted binding.\n\nList enabled skills\n\nskills enumerates skills visible to the API-server agent. The pinned provider\nsorts entries and returns their bounded metadata:\n\n{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"name\": \"example-skill\",\n      \"description\": \"Example skill description\",\n      \"category\": \"example\"\n    }\n  ]\n}\n\nThe provider scans local and configured external skill directories, applies\nplatform and environment filters, gives local names precedence, and filters\ndisabled skills. A malformed or unreadable individual skill can be skipped;\nan enumeration failure returns a provider server error.\n\nThis operation is experimental in the AIP manifest. Skill presence does not\nauthorize an operator, model, or delegated action to use it.\n\nList resolved toolsets\n\ntoolsets returns the configurable toolset surface for the API-server\nplatform. Each entry can contain:\n\n| Field | Meaning |\n\n| name | Stable toolset name |\n| label | Human-readable label |\n| description | Provider description |\n| enabled | Whether the API-server platform enables the toolset |\n| configured | Whether provider configuration satisfies its key check |\n| tools | Sorted, de-duplicated concrete tool names |\n\nThe top-level object also identifies platform as apiserver. A failed\ntoolset resolution becomes an empty tools list for that entry; a broader\nenumeration failure returns a provider server error.\n\nenabled and configured are provider observations, not AIP authorization or\nproof that a tool call will complete. This operation is experimental.\n\nInterpret raw results safely\n\nThe published output schema for the five authenticated reads is an object\nwithout required provider-specific properties. The connector parses a JSON\nbody to its actual JSON value, wraps non-JSON text as {\"text\": \"...\"}, and\nturns an empty successful body into null.\n\nThe execution path does not reject an array or null after parsing, even\nthough the published schema says object. Require the expected object shape in\napplication code and treat a mismatch as provider compatibility drift.\n\nThe connector exposes no provider response-byte limit for these reads. Apply a\nreviewed response bound at the Hermes server, ingress, or transport boundary;\ndo not assume the 4 MiB AIP request limit bounds provider responses.\n\nCall one protected discovery capability\n\nUse a configured signed-native caller context and an endpoint ID returned by\nthe tenant catalogue:\n\nexport AIPURL=https://aip.example\nexport HERMESENDPOINTID=primary\n\naipctl action call \\\n  \"$AIPURL\" \\\n  \"cap:hermesagent:${HERMESENDPOINTID}:models\" \\\n  --action-id acthermesmodels001 \\\n  --input '{}'\n\nExpected result: the action completes with an object-shaped provider model\nlist. Correlate the action, tenant, admitted connector version, endpoint, and\nprovider audit time. Do not record endpoint token bytes.\n\nIf you call health instead, a completed result cannot prove the token path\nbecause that provider route deliberately omits Bearer auth.\n\nFailures and retry decisions\n\n| Failure code | Typical boundary | Safe response |\n\n| connector.hermesagent.configurationorinput | Unknown endpoint or unsupported capability | Refresh admitted discovery and correct the ID |\n| connector.hermesagent.tenantmismatch | Trusted runtime tenant does not own the endpoint | Repair admission and routing; never override tenant in input |\n| connector.hermesagent.missingcredential | Protected read has no usable endpoint key | Replace the host with the correct owner-only key file |\n| connector.hermesagent.authentication | Hermes returned 401 or 403 | Verify endpoint selection and rotate or correct the token |\n| connector.hermesagent.remotetemporary | Hermes returned 429 or a server error | Retry this read with bounded backoff and the same action contract |\n| connector.hermesagent.remoterejected | Hermes returned another non-success status | Correct provider state or compatibility before retrying |\n| connector.hermesagent.transport | Request or response-body read failed | Retry the read within deadline and policy; inspect network evidence |\n| connector.hermesagent.deadlineexceeded | Trusted AIP deadline elapsed | Preserve the action and issue a new read only when policy permits |\n\nInvalid JSON is not a decode failure in this path; it becomes a text object.\nThere is no responsetoolarge connector error for these operations.\n\nVerify an integration\n\nRequire all of the following:\n• AIP discovery returns the exact endpoint-qualified capability and admitted\n  version;\n• basic health is treated as reachability, not credential evidence;\n• a protected read proves the endpoint token path separately;\n• result handling rejects an unexpected non-object shape;\n• provider capabilities never add or enable an AIP route;\n• model, skill, and toolset observations are not confused with authorization;\n• retry preserves the original read contract and respects deadline and policy;\n• internal discovery output is not exposed to an untrusted tenant or model.\n\nThese checks validate integration behavior. They do not qualify a particular\nHermes deployment, model provider, skill, or toolset.\n\nRelated documentation\n• Hermes capability index (README.md)\n• Authenticate and bind Hermes endpoints (../getting-started/authentication-and-endpoints.md)\n• Hermes configuration (../reference/configuration.md)\n• Capabilities and contracts (../../../concepts/capabilities.md)\n• Error reference (../../../reference/errors.md)\n"
  },
  "integrity": {
    "algorithm": "sha256",
    "sourceDigest": "92ef78ce4d3bef6b3bc805946536611e746f82227776cbefc9b102e27eb42385"
  }
}
