Install any skill in seconds. Free to start, no credit card required.
Get Started Free →butterbase-ai/agents
Use when designing, deploying, or debugging a Butterbase Agent (declarative LLM/tool graph), registering an MCP server for tool use, or wiring access controls and rate limits. Agents are first-class app resources defined by a `graph_spec` and invoked over `/v1/<app_id>/agents/<name>/runs`.
Passed 21 of 21 test cases with the skill, and 3 of 21 without it.
and 34 more in the full report
19 fixed3 passed either way0 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 18 test cases the skill fixed. Same model, same prompt, with and without the skill.
An execution run entered a human_input_required state and paused at an approval node in Butterbase. What exact API function call and parameter should the application invoke to provide the required input and resume processing?
| Checked | Without skill | With skill |
|---|---|---|
| Specifies using resume_agent_run to proceed with execution. | Missed | Passed |
| Identifies user_input as the parameter used to supply the response data. | Missed | Passed |
The instructions your model reads when the skill loads.
A Butterbase agent is a declarative graph of LLM and tool nodes — not a free-running chat loop. The runtime traverses the graph, calls tools (builtin / MCP / function), and resolves the end node's output_template. State, rate limits, and budgets are enforced by the control plane.
visibility: public or authenticated).list_agent_runs, then get_agent_run).Don't use for plain LLM chat completions — use the ai skill (manage_ai / /v1/ai/chat). Agents are for stateful, multi-step, tool-using workflows.
graph_spec (validated by validate_agent_spec before anything is persisted)| Field | Required | Notes |
|---|---|---|
spec_version | yes | Literal "1". |
entry | yes | ID of the first node. |
nodes | yes | Record { id → node }. |
edges | yes | [{ from, to }]. Both endpoints must exist in nodes. |
tools | yes | { builtin: [], mcp_servers: [], functions: [] } — declares what nodes can call. |
limits | yes | max_steps (1–200), max_tool_calls (0–500), max_parallel_tools (1–16), timeout_seconds (5–3600), human_timeout_seconds (60–7×24×3600). |
Node types:
llm — model, system_prompt, input_template, output_key, tools: [toolRef], optional temperature (0–2), max_tokens.tool — tool_ref, args_template (record), output_key.end — output_template (string; can interpolate {{output_key}} values).toolRef is a discriminated union by source:
{ source: 'builtin', name }{ source: 'mcp', server_id, name }{ source: 'function', name }Each may carry mode_override (read_only | read_write) and exposed_to_override (developer_only | end_user).
test cases passed, vs 3 / 21 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.