{"schemaVersion":"0.2.5","name":"Etna","description":"Etna is the staging environment for AI agents — connect, simulate, review, version. Connects via A2A or MCP. Runs capability simulations, proposes growths, runs AP2 payment-protocol scenarios.","url":"https://agentetna.com","version":"1.0.0","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"authentication":{"schemes":["bearer"]},"defaultInputModes":["text"],"defaultOutputModes":["text"],"skills":[{"id":"etna_fix","name":"fix","description":"Analyze errors in your AI agent's code and generate fixes. Uses sniper approach to locate relevant code, generates patches, and reviews them with a separate judge model.","tags":["etna","agent-development","control-plane"]},{"id":"etna_test","name":"test","description":"Generate behavioral tests for your AI agent based on its instructions and code. Returns test cases with inputs, expected behaviors, and categories.","tags":["etna","agent-development","control-plane"]},{"id":"etna_status","name":"status","description":"Check the health and connection status of your connected agents. Returns online/offline state, latency, and basic info.","tags":["etna","agent-development","control-plane"]},{"id":"etna_memory","name":"memory","description":"Get or update the calling user's preference profile. Used so agent callers can read what etna already knows about the user, append new context, or refresh preferences. Encrypted at rest.","tags":["etna","agent-development","control-plane"]},{"id":"etna_sandbox_list","name":"sandbox list","description":"List active sandbox branches for an agent. Each sandbox represents a fix run that's been staged but not yet promoted to the agent's main branch.","tags":["etna","agent-development","control-plane"]},{"id":"etna_next","name":"next","description":"Return the single highest-leverage next improvement for an agent — the heart of a self-improvement loop. Walks risk → security → hygiene findings, ranks by severity + leverage, and returns one concrete recommendation with file/line/why-it-matters/suggested-action. Pair with etna_fix to apply, then call etna_next again. Reads the repository itself the first time.","tags":["etna","agent-development","control-plane"]},{"id":"etna_cycle","name":"cycle","description":"Run a simulation of the agent: Agent Etna profiles it, runs test scenarios against its capability frontier inside an isolated sandbox, scores them, and surfaces growth proposals. Returns the simulation result inline (profile + capability map + growths). The primary tool for 'how is my agent doing right now?'.","tags":["etna","agent-development","control-plane"]},{"id":"etna_profile","name":"profile","description":"Get an agent's developmental profile — archetype, capability list, environment primitives, interaction patterns, and a one-paragraph purpose narrative. Reads from the last cycle's result; falls back to a static profile from architecture if no cycle has run.","tags":["etna","agent-development","control-plane"]},{"id":"etna_traces","name":"traces","description":"List recent simulation traces for an agent — one per scenario, with the verdict, latency and tokens. Use this when diagnosing a regression — what was the input, what came back, what scored low.","tags":["etna","agent-development","control-plane"]},{"id":"etna_agent_card","name":"agent card","description":"Get the public A2A AgentCard for an agent — the discovery document peers use to find skills, capabilities, auth schemes, and provenance. Returned in the A2A spec shape.","tags":["etna","agent-development","control-plane"]},{"id":"etna_review","name":"review","description":"List the recommendations (growths) a simulation proposed for an agent — the same ones a cycle-result card carries on the web (the standalone 'Review' holding pen was retired 2026-08-15). Each entry has id, target capability, growth type, rationale, and confidence. Decide with etna_decide; see what already shipped with etna_versions.","tags":["etna","agent-development","control-plane"]},{"id":"etna_watch","name":"watch","description":"Read or set the nightly Scheduled check for an agent. When on, Agent Etna replays what the agent is KNOWN to handle against the live agent every night: silent when nothing moved, and when something that used to work stopped working it reports the evidence and proposes changes. Pass mode to change it; omit mode to read the current setting.","tags":["etna","agent-development","control-plane"]},{"id":"etna_record","name":"record","description":"The agent's development record: version axis, capability trajectory, where it breaks, incidents imported, and what was caught while nobody was looking. Read-only and never metered. Thin until the agent has a few simulations behind it — it says so rather than inventing a trend.","tags":["etna","agent-development","control-plane"]},{"id":"etna_incident","name":"incident","description":"Turn a real production failure into a permanent scenario: describe what went wrong and it becomes a stable-id scenario every future simulation re-checks, guarded against regression once it passes. Omit text to list what is already imported; pass drop_id to remove one.","tags":["etna","agent-development","control-plane"]},{"id":"etna_instructions","name":"instructions","description":"Read whether an agent has a system prompt, or draft a baseline from its own repo material (README, routes, tool definitions) for review. An agent with no instructions can only be simulated live, so this is what unblocks in-process simulation. The draft is a PROPOSAL: it is never saved and nothing is ever simulated against it until a human approves it — pass approve_text to save the words you actually accept.","tags":["etna","agent-development","control-plane"]},{"id":"etna_group_instructions","name":"group instructions","description":"What a GROUP is for, together — the group twin of etna_instructions. Each agent has its own instructions; what none of them contains is the job the team completes as a team, so a group gets one too. Bare, it returns what is on file. draft:true composes one from the members' own instructions, profiles and tools AND returns what their instructions do NOT settle — where two members contradict each other, where one field travels under two names, where a step is nobody's — each with complete sentences you can paste straight into the text. Nothing is saved until approve_text. Without a charter, a team's purpose is re-derived from member names on every run and its contract can only be grounded in one run's accidents.","tags":["etna","agent-development","control-plane"]},{"id":"etna_versions","name":"versions","description":"The agent's shipped version ladder — the MCP twin of the web Releases page. Returns each version (v1.0 → v1.1 → …), when it shipped, what changed, its origin (simulation / group simulation / overnight loop), and the PR url.","tags":["etna","agent-development","control-plane"]},{"id":"etna_decide","name":"decide","description":"Approve or skip one recommendation, exactly like the card's Ship / Skip — the decision is stamped, feeds the learning loop, and lands in the agent's growth ledger.","tags":["etna","agent-development","control-plane"]},{"id":"etna_verify","name":"verify","description":"Did this prompt edit break what the agent already does? Replays the established behaviours against the instructions you pass (the working tree's prompt), same code as `etna verify` and the pull-request gate. Returns held / broken / unstable (a flip that held on a second run, or a quarantined behaviour — reported, never counted) / unchecked.","tags":["etna","agent-development","control-plane"]},{"id":"etna_baseline","name":"baseline","description":"What this agent is KNOWN to do — every behaviour a simulation established, with 'held N of M', whether it was verified live, and whether it is quarantined for wobbling. The twin of `etna baseline` and the Releases page.","tags":["etna","agent-development","control-plane"]},{"id":"etna_invariants","name":"invariants","description":"Rules on what the agent DOES, pinned by its owner. Boundaries the environment ENFORCES — 'forbid DELETE /users', 'confirm before POST /refunds' (refused with a 403, the scenario fails); checks read off the calls — 'require customer_email on POST /email', 'match amount on POST /refunds' (the scenario fails); budgets — 'reply within 8s', 'tokens under 4000', 'cost under $0.05' (a passing scenario becomes partial). List them, pin one with add, or drop one by id.","tags":["etna","agent-development","control-plane"]},{"id":"etna_focus","name":"focus","description":"Everything the owner has established for this agent with --focus, carried into every later simulation; drop one by id. The twin of `etna focus`.","tags":["etna","agent-development","control-plane"]},{"id":"etna_check","name":"check","description":"The roster check — every agent and every group on the account, one row each with a verdict (ready / cold / building / unreachable / …) and the named fix, plus whose model key a run would use. The twin of `etna check`.","tags":["etna","agent-development","control-plane"]},{"id":"etna_consistency","name":"consistency","description":"Re-run one recorded scenario several times against the live agent and state the pass rate honestly — 'passed 3 of 4' is a different fact from 'passed'. Uses extra usage; needs the live sandbox and a model key. The twin of `etna consistency`.","tags":["etna","agent-development","control-plane"]},{"id":"etna_stop","name":"stop","description":"Stop a simulation in flight for this agent — the scenario in flight finishes, verdicts so far are kept. The twin of `etna stop`.","tags":["etna","agent-development","control-plane"]},{"id":"etna_evidence","name":"evidence","description":"The evidence record of one simulation, for an auditor: the build it ran under, every scenario with what was expected and where that came from, the reply, the calls, the verdict with the judge named (the model and what it read, or the deterministic check, or that no judge ran), what was not tested, the rules the owner pinned, and how far the judge is checked by hand. Written from the run's own recording, anonymous and redacted unless `name`. The twin of `etna evidence`.","tags":["etna","agent-development","control-plane"]},{"id":"etna_rollback","name":"rollback","description":"Revert the last change shipped for this agent while it is still the branch head — opens a revert PULL REQUEST on its own branch; nothing changes until a human merges it. The twin of `etna rollback`.","tags":["etna","agent-development","control-plane"]}],"provenance":{"validatedBy":"Agent Etna"}}