Create and configure an agent on a Ryu node via Core's /api/agents REST surface. Covers listing, reading, creating, updating, and deleting agents, the full record schema (system prompt, engine, model, tools, skills allowlist, orchestrator and agent-creation toggles), and inspecting an agent's reachable tools. Use when a user wants a custom agent on their Ryu node.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add amajorai/ryu --skill ryu-build-agent --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ryu Build Agent?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/amajorai-ryu-build-agent)More formats (shields.io, HTML) on the badges page.
---
name: ryu-build-agent
description: Create and configure an agent on a Ryu node via Core's /api/agents REST surface. Covers listing, reading, creating, updating, and deleting agents, the full record schema (system prompt, engine, model, tools, skills allowlist, orchestrator and agent-creation toggles), and inspecting an agent's reachable tools. Use when a user wants a custom agent on their Ryu node.
---
# Build a Ryu agent
This skill configures agents on a Ryu node through Core's agent API. If Ryu is not running, do [[setup-ryu]] first. To list agents quickly over MCP, use `ryu_list_agents` from [[ryu-mcp]]; agent creation and editing go through the HTTP routes below.
Base URL is the Core node, default `http://127.0.0.1:7980`.
## Endpoints
- `GET /api/agents` - list agents (lightweight summaries).
- `GET /api/agents/:id` - read one full agent record.
- `POST /api/agents` - create an agent. Returns the new record.
- `PUT /api/agents/:id` - update an agent.
- `DELETE /api/agents/:id` - delete an agent.
- `GET /api/agents/:id/tools` - the observed plus MCP tools that agent can reach.
- `GET /api/agents/:id/export` - export a portable template.
- `POST /api/agents/import` - import a template, returns the created agent.
## Record schema
The create/update body uses snake_case fields. The meaningful ones:
- `name` - display name. Required.
- `description` - what the agent is for. Nullable.
- `system_prompt` - the agent's instructions. Nullable.
- `engine` - inference engine label, or null to derive from the model.
- `model` - model id the agent runs on, or null for the node default.
- `tools` - array of tool ids the agent may call.
- `skills` - skill id allowlist. Empty means all enabled skills; non-empty restricts to exactly those.
- `composio_actions` - Composio action names this agent may call (gateway-route only).
- `can_create_agents` - whether this agent may mint new agents. `null` uses the default, which is off (privileged, opt-in).
- `orchestrator` - whether this agent may discover peers and delegate. `null` uses the default, which is on.
- `inference` - optional per-agent sampling defaults (advanced settings).
- `version` - semver string. Omitting it on create defaults to `1.0.0`.
Read-only fields Core returns: `id`, `built_in`, `locked` (a locked agent cannot be edited via the API), `created_at`, `updated_at`.
## Create an agent
```sh
curl -s -X POST http://127.0.0.1:7980/api/agents \
-H 'content-type: application/json' \
-d '{
"name": "Researcher",
"description": "Reads Spaces and answers with citations.",
"system_prompt": "You are a careful research assistant. Cite sources.",
"engine": null,
"model": null,
"tools": ["ryu_search_retrieval"],
"skills": []
}'
```
## Update an agent
Fetch the record with `GET /api/agents/:id`, change fields, then `PUT` it back. Omitting `can_create_agents` or `orchestrator` leaves them unchanged; sending `null` clears each to its default.
```sh
curl -s -X PUT http://127.0.0.1:7980/api/agents/<id> \
-H 'content-type: application/json' \
-d '{ "name": "Researcher", "description": "Now with web access.", "system_prompt": "...", "engine": null, "model": null, "tools": ["ryu_search_retrieval", "web_search"], "skills": [] }'
```
## Inspect reachable tools
```sh
curl -s http://127.0.0.1:7980/api/agents/<id>/tools
```
This returns the observed plus MCP tools the agent can actually reach, which is the allowlist Core enforces when something calls `ryu_call_mcp_tool` with this agent's id.
## Tips
- Keep `system_prompt` focused and the `tools` list minimal; add tools only as the agent needs them.
- Use `skills` to scope an agent to a subset of installed skills.
- A `locked` or `built_in` agent cannot be edited; clone it via export/import to customize.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!