The Agent Skills API provides comprehensive management of skills across the Hoody platform: browse and install from the hub, create and manage local skills, import from external locations, read and write source bodies, and control runtime state via enable/disable and trust flags. Use these endpoints when building tooling that operates on the skill registry for a given working directory.
Lists the installed skills (identity = root + rel) for the requesting cwd/config_dir, with their enabled/trust state. Realm-scoped to the gateway’s own realm (pinned or active); a client-supplied X-Hoody-Realm / ?realm= is ignored .
Name In Type Required Description pagequery integer No 1-based page number for pagination. limitquery integer No Maximum items per page (0 = no pagination). X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1): the .hoody project layer / record cwd / tool+workflow cwd. X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1): "global" or a 24-hex id (also accepted as ?realm=). realmquery string No Query alias of the X-Hoody-Realm header.
await client . agent . skills . listSkillsIterator ({ page: 1 , limit: 50 });
"rel" : " skills/data-viz " ,
"description" : " Render charts from tabular data. " ,
"rel" : " skills/release-notes " ,
"description" : " Draft release notes from a git log. " ,
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy: its source IP is private/local. The gateway has no service-level auth — authorization is owned by hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
Searches the remote skill hub (skills.hub_search). Pass ?q= in the query.
Name In Type Required Description qquery string No Search query. X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
await client . agent . skills . searchSkillHub ({ q: " kubernetes deploy " });
"id" : " k8s-deploy-blueprint " ,
"name" : " k8s-deploy-blueprint " ,
"description" : " Scaffold Kubernetes deployments from a service spec. " ,
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Fetches a preview of a hub skill before install (skills.hub_preview). Pass ?id= to identify the hub skill.
Name In Type Required Description idquery string No Hub skill identifier. X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
await client . agent . skills . previewSkillHub ({ id: " k8s-deploy-blueprint " });
"id" : " k8s-deploy-blueprint " ,
"name" : " k8s-deploy-blueprint " ,
"description" : " Scaffold Kubernetes deployments from a service spec. " ,
"readme" : " # k8s-deploy-blueprint \n\n Generates manifests, kustomize overlays, and a rollout plan. " ,
{ "path" : " SKILL.md " , "size" : 1450 },
{ "path" : " templates/deployment.yaml " , "size" : 612 }
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Installs a skill from the hub (skills.hub_install). This writes arbitrary skill code to disk. The daemon’s human-only _machine_confirmed denial lives only on the model-facing tool path, not on the skills.hub_install RPC this route dispatches.
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
Name Type Required Description idstring Yes Hub skill identifier (from searchSkillHub / previewSkillHub).
await client . agent . skills . installSkillHub ({ id: " k8s-deploy-blueprint " });
"id" : " k8s-deploy-blueprint " ,
"rel" : " skills/k8s-deploy-blueprint " ,
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"code" : " payload_too_large " ,
"message" : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). Reduce the request body below the configured limit (default 8 MiB).
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Returns the skill-hub fetch cache statistics (skills.cache_stats).
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
await client . agent . skills . getSkillHubCache ();
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Clears the skill-hub fetch cache, including pins (skills.cache_clear).
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
await client . agent . skills . clearSkillHubCache ();
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Scans well-known locations for importable skills (skills.import_scan).
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
await client . agent . skills . scanSkillImport ();
"path" : " /home/user/.legacy-skills/old-notebook " ,
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Imports a discovered skill into the local store (skills.import_apply).
The request body is forwarded verbatim to the daemon RPC (the gateway scrubs every _-prefixed key and folds in the request scope). Identify the discovered skill to import using the fields returned by scanSkillImport (e.g. its scan path/id).
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
The body schema is open (additionalProperties: true); the gateway passes through every non-_-prefixed key to skills.import_apply. Use the keys the daemon RPC reads — for example, the scan path or candidate id returned by scanSkillImport.
await client . agent . skills . applySkillImport ({ path: " /home/user/.legacy-skills/old-notebook " });
"rel" : " skills/old-notebook " ,
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"code" : " payload_too_large " ,
"message" : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). Reduce the request body below the configured limit (default 8 MiB).
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Returns a skill’s source body (skills.read_source). Identify the skill by the daemon keys root_dir + rel_dir in the query (the friendly aliases ?root= / ?rel= are also accepted and translated). Returns {content, gen, path}; pass gen back as base_gen on the write to detect conflicts.
Name In Type Required Description root_dirquery string No Skill root directory (identity; alias: root). rel_dirquery string No Skill relative directory (identity; alias: rel). rootquery string No Friendly alias of root_dir (translated server-side). relquery string No Friendly alias of rel_dir (translated server-side). X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
await client . agent . skills . getSkillSource ({ root_dir: " user " , rel_dir: " skills/data-viz " });
"content" : " # data-viz \n\n Render charts from tabular data using the local chart-renderer tool. \n " ,
"path" : " user/skills/data-viz/SKILL.md "
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Overwrites a skill’s source body (skills.write_source). Identify the skill by root_dir + rel_dir in the body (aliases root/rel accepted); the new body text is content (alias source); pass the read’s gen as base_gen for conflict detection.
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
Name Type Required Description root_dirstring Yes Skill root directory (identity; alias: root). rel_dirstring Yes Skill relative directory (identity; alias: rel). contentstring Yes New SKILL.md body (alias: source). base_geninteger No The gen returned by skills.read_source, for conflict detection.
await client . agent . skills . putSkillSource ({
rel_dir: " skills/data-viz " ,
content: " # data-viz \n\n Updated chart-renderer docs. \n " ,
"path" : " user/skills/data-viz/SKILL.md "
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"code" : " payload_too_large " ,
"message" : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). Reduce the request body below the configured limit (default 8 MiB).
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Creates a new local skill (skills.create).
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
Name Type Required Description namestring Yes Skill name (the SKILL.md directory stem). descriptionstring No Skill description (frontmatter). contentstring No Initial SKILL.md body.
await client . agent . skills . createSkill ({
description: " Draft release notes from a git log. " ,
content: " # release-notes \n\n Summarize a git log range. \n " ,
"rel" : " skills/release-notes " ,
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"code" : " payload_too_large " ,
"message" : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). Reduce the request body below the configured limit (default 8 MiB).
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Deletes a skill (skills.delete). Identify the skill by the daemon keys root_dir + rel_dir in the body (aliases root/rel accepted).
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
Name Type Required Description root_dirstring Yes Skill root directory (identity; alias: root). rel_dirstring Yes Skill relative directory (identity; alias: rel).
await client . agent . skills . deleteSkill ({ root_dir: " user " , rel_dir: " skills/old-notebook " });
"rel" : " skills/old-notebook "
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"code" : " payload_too_large " ,
"message" : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). Reduce the request body below the configured limit (default 8 MiB).
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Renames a skill (skills.rename). Identify the skill by root_dir + rel_dir (aliases root/rel accepted) and pass the new name as new_name.
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
Name Type Required Description root_dirstring Yes Skill root directory (identity; alias: root). rel_dirstring Yes Skill relative directory (identity; alias: rel). new_namestring Yes New skill directory name.
await client . agent . skills . renameSkill ({
rel_dir: " skills/release-notes " ,
"rel" : " skills/changelog " ,
"old_rel" : " skills/release-notes "
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"code" : " payload_too_large " ,
"message" : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). Reduce the request body below the configured limit (default 8 MiB).
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Toggles a skill’s enabled state (skills.toggle — name-scoped : it gates the effective skill name in the runtime registry). Identify the skill by name in the body, and pass disabled (boolean) for the new state.
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
Name Type Required Description namestring Yes Effective skill name (not root/rel — toggle is name-scoped). disabledboolean No true to disable the skill, false to enable it.
await client . agent . skills . toggleSkill ({ name: " data-viz " , disabled: true });
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"code" : " payload_too_large " ,
"message" : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). Reduce the request body below the configured limit (default 8 MiB).
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.
Sets a skill’s trust state (skills.set_trust). Identify the skill by root_dir + rel_dir (aliases root/rel accepted); the trust flag is trusted (boolean). Trust gates arbitrary code execution.
Danger
The daemon’s human-only _machine_confirmed denial lives only on the model-facing skill-edit tool path, not on the skills.set_trust RPC this route dispatches — scrubbing the body cannot make the RPC reject an autonomous caller. The HTTP edge has no service-level auth; securing the public surface (and the trust-gated code-execution risk) is hoody-proxy’s responsibility under the kit network-position-trust convention. When the P3 tool choke point / daemon-side RPC gate lands, the human-only denial will be re-applied there too.
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope (§6.1). X-Hoody-Config-Dirheader string No Per-request --config-dir override (§6.1). X-Hoody-Containerheader string No Per-request bound remote container (§6.1; omitted = local). X-Hoody-Realmheader string No Per-request realm selector (§6.1). realmquery string No Query alias of the X-Hoody-Realm header.
Name Type Required Description root_dirstring Yes Skill root directory (identity; alias: root). rel_dirstring Yes Skill relative directory (identity; alias: rel). trustedboolean Yes true to grant execution trust, false to revoke.
await client . agent . skills . trustSkill ({
rel_dir: " skills/data-viz " ,
"rel" : " skills/data-viz " ,
"message" : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC. Omit the realm header on this route, or open a session to scope by realm.
"message" : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) The request did not arrive through hoody-proxy. Reach the agent through hoody-proxy, not by connecting to the container directly.
"message" : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
"code" : " payload_too_large " ,
"message" : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). Reduce the request body below the configured limit (default 8 MiB).
"message" : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded. Honor Retry-After and retry; reduce the request rate.
"code" : " internal_error " ,
"message" : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
"code" : " service_unavailable " ,
"message" : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (busy or per-client stream concurrency cap hit). Honor Retry-After and retry.