MCP Tools Reference
Complete reference for all Aether MCP tools available in Cursor, Claude Code, and other MCP clients.
Once your Cursor MCP is connected, your agent has full access to every tool below. You don't need to memorize these โ just ask your question and let the agent handle it.
Core Tools
These 6 tools cover 90% of debugging workflows. Your agent will reach for these first.
| Tool | What it does |
|------|-------------|
| aether_triage | Start here. One command โ last run metadata, top suspects, 3 receipts, capsule path, next-step hints. |
| aether_snapshot | Point-in-time game state: objects, scene, events, console. |
| aether_console | Search and filter Unity logs by text, level, and time window. |
| aether_observe | Rich "what happened" summary: keyframes + deltas + logs + narration. |
| aether_recon | When core tools aren't enough: generates a probe plan for two-run debugging. |
| aether_package | Create shareable Evidence Pack (Pro). Use last_error for quick share. |
20-Second Ritual
11. Run game once
22. aether_triage
33. aether_package last_error
44. Optional: aether_recon โ aether_probe plan_id โ rerunaether_triageStart here. One command โ last run metadata, top suspects, 3 receipts, capsule path, next-step hints. Use for the 20-second ritual.
Parameters
window_seconds(number)Time window in seconds (default: 10, max: 60)
Example
1@aether triageThis is the primary tool. Use it whenever the human asks "what happened?", "did you see that?", or describes a gameplay issue. It returns last run metadata, top suspects, receipts, capsule path, and exactly two next-command hints.
aether_last_run_answerPower-user primitive: ranked suspects, receipts, next actions. Use when aether_triage isn't enough. Returns full answer with configurable limits.
Parameters
window_seconds(number)Time window in seconds (default: 10, max: 60)
include_errors(boolean)Include errors in the answer payload (default: true)
include_events(boolean)Include non-delta events in timeline if needed (default: true)
include_semantic_deltas(boolean)Include semantic delta events (default: true)
baseline_id(string)Optional baseline clip ID to compare against (Pro/Studio)
max_deltas(integer)Hard cap override for deltas (bounded by tier)
max_receipts(integer)Maximum receipts to return (default: 3 Free / 7 Pro)
Example
1@aether last_run_answerPro. Use when aether_triage isn't sufficient โ e.g. need more receipts, baseline comparison, or custom window.
aether_snapshotGet current Unity state: selected object snapshot (if any), current scene/frame/time, last N events, last N console entries, optional UI focus summary. Returns surgical GTML snapshots for suspect objects.
Parameters
include_ui(boolean)Include UI snapshot summary (default: true)
event_count(integer)Number of recent events to include (default: 10, max: 50)
console_count(integer)Number of recent console entries to include (default: 10, max: 50)
Example
1@aether snapshotUse for a point-in-time view of the game. Perfect for "What's the current game state?", "What objects are active?", "What's happening right now?"
aether_consoleQuery Unity console logs with text, level, and time filters. The primary tool for searching and filtering Unity stdout output.
Parameters
text(string)Case-insensitive substring match against message or stack trace
levels(array)Filter by Unity log level(s): Log, Warning, Error, Exception, Assert
seconds(number)Time window ending now in seconds (default: 60, max: 600)
since_ms(integer)Explicit window start timestamp (ms)
until_ms(integer)Explicit window end timestamp (ms)
run_id(string)Filter by run_id (default: last seen run)
limit(integer)Maximum entries to return (default: 200, max: 1000)
include_stack(boolean)Include full stack traces (default: false)
order(string)Sort order by timestamp (default: desc)
Example
1@aether console "NullReference"Use when you need to search or filter Unity logs:
- "Show me errors from the last minute"
- "Find logs containing 'MissingReference'"
- "Filter warnings only"
aether_observePrimary tool for understanding runtime behavior. Returns keyframe captions + state deltas + relevant logs + compact narration within a time window. Pro tier includes visual morph detection and richer evidence.
Parameters
window_seconds(number)Time window in seconds (default: 10, max: 60)
budget_tokens(integer)Target token budget for response (default: 2000). Lower = more aggressive compression.
include_keyframes(boolean)Include keyframe captions (Pro only, default: true)
include_deltas(boolean)Include semantic state deltas (default: true)
include_logs(boolean)Include grouped/filtered logs (default: true)
morph_only(boolean)Only return morph-triggered keyframes (Pro only, default: false)
include_vision(boolean)Include VLM analysis (Pro only, default: false)
vision_focus(string)Optional focus hint for vision analysis (e.g., 'terrain morphing', 'AI behavior')
Example
1@aether observe 15Use for a rich summary of recent runtime behavior. Combines keyframes, state deltas, logs, and narration into one compact response. Preferred over aether_tail for most use cases.
aether_reconUse when core tools aren't enough. Analyzes symptoms, forms hypotheses, and generates an instrumentation plan with 3-5 targeted probes for two-run debugging.
Parameters
goal(string)What are you trying to understand or fix? E.g., 'card vanished from hand', 'AI made wrong decision'
mark_id(string)Optional mark/clip ID to anchor the investigation
window_before_s(number)Seconds before the symptom to analyze (default: 2.0)
window_after_s(number)Seconds after the symptom to analyze (default: 0.5)
baseline_id(string)Optional baseline run ID to compare against (Pro/Studio)
Example
1@aether recon "card vanished from hand"Use when the standard tools (last_run_answer, observe, console) can't explain the issue. Generates a surgical probe plan for a second run to collect the exact data needed.
Advanced Tools
These tools are available to your agent but are used in specialized workflows. You don't need to know about these โ your agent will use them when appropriate.
Event Streaming
aether_tailLightweight alternative to aether_observe. Returns events + console in a time window with top state changes. Use when you need a quick summary with minimal tokens.
Parameters
seconds(number)Time window in seconds (default: 10, max: 60)
include_changes(boolean)Include top state changes summary (default: true)
max_events(integer)Maximum events to return (default: 50, max: 200)
Example
1@aether tail 30Lightweight alternative to aether_observe. Use when you need a fast, low-token summary of recent events without keyframes or narration.
Deep Inspection
aether_inspectDeep-inspect a specific GameObject or component. Returns reflection state in diff-friendly format with resolved references and metrics.
Parameters
target(string)Target to inspect: GameObject path, component type, or 'selection'
depth(integer)Reflection depth limit (default: 4, max: 8)
include_private(boolean)Include private fields (default: true)
diff_format(boolean)Output in diff-friendly format (default: true)
include_metrics(boolean)Include component-specific metrics (default: true)
Example
1@aether inspect "/World/Player"Use when you need granular object/component state beyond what aether_snapshot provides. Targets specific GameObjects by path, component type, or Editor selection.
Clips and Marks
aether_markSave this moment for later replay or packaging. Persists last context_seconds. Returns clip_id.
Parameters
label(string)Optional label for the clip
context_seconds(number)Seconds of context to capture before this moment (default: 10)
post_seconds(number)Seconds to capture after this moment if arming (default: 0, no arming)
arm_until_trigger(boolean)If true, arm capture until next exception/probe failure (default: false)
include_screenshot(boolean)Include screenshot in clip (default: false)
Example
1@aether mark "Before applying fix"Save important moments for later replay (aether_getClip) or packaging (aether_package). Use before attempting fixes so you can verify or share later.
aether_clipCreate a time-window clip with explicit before/after control. Similar to aether_mark. Returns clip_id.
Parameters
seconds_before(number)Seconds of history to capture (default: 10)
seconds_after(number)Seconds to capture after current moment (default: 5)
Example
1@aether clip 20 5Similar to aether_mark but with explicit before/after window control. Use to capture a specific time range around the current moment.
aether_getClipReplay evidence from a previously saved clip. Returns events, console, and state changes for the clip window.
Parameters
clip_id(string)The clip ID (e.g. 'clip_a1b2c3d4')
include_changes(boolean)Include top state changes summary (default: true)
Example
1@aether getClip clip_a1b2c3d4Retrieve a previously marked/clipped moment for replay and analysis.
Two-Run Debugging
aether_instrumentFollows aether_recon. Returns execution instructions, code templates, and agent guidance for inserting probes. Stateless.
Parameters
plan(object)InstrumentationPlanV1 from aether_recon
plan_id(string)Optional plan_id to verify against plan content
Example
1@aether instrument <plan>Use after aether_recon to get probe insertion instructions for Run 2.
aether_windowRetrieve probe results after Run 2. Returns time-ordered probe/intent/effect/observation events around a mark.
Parameters
mark_id(string)Mark/clip ID to center the window on
window_start_ms(integer)Explicit window start timestamp (ms)
window_end_ms(integer)Explicit window end timestamp (ms)
seconds_before(number)Seconds before mark/now (default: 10)
seconds_after(number)Seconds after mark/now (default: 0.5)
filter(string)Filter events: all, probes_only, causal
Example
1@aether window clip_a1b2c3d4Use after Run 2 to analyze probe events and verify/refute hypotheses from aether_recon.
Pro Features
aether_probeGenerate and install diagnostic probe snippets from an instrumentation plan. Pro/Studio only.
Parameters
plan(object)Instrumentation plan object from aether_recon/aether_instrument
auto_run(boolean)Automatically enter Play mode after probe installation (default: true)
run_duration_seconds(number)How long to run before collecting (default: 5)
auto_cleanup(boolean)Remove probe scripts after collection (default: true)
collect_keyframes(boolean)Capture keyframes during probe run (default: true)
Example
1@aether probe <plan>Install probes at runtime without recompiling. The AI agent handles the full probe lifecycle: install, run, collect, clean up.
aether_verifyVerify a fix worked: compares baseline vs current evidence using visual similarity + numeric metrics + log regression. Pro/Studio only.
Parameters
baseline_id(string)Baseline clip/run ID to compare against
goal(string)What should be true after the fix
window_seconds(number)Time window for current evidence (default: 10)
visual_threshold(number)Hamming distance threshold for visual similarity (default: 12)
require_no_new_errors(boolean)Fail if new errors appeared (default: true)
metrics_to_check(array)Specific metrics to verify (e.g., ['mesh_bounds', 'height_variance'])
Example
1@aether verify clip_beforeAutomated before/after comparison. "Fixed means fixed" โ the AI confirms your fix with visual similarity, metric checks, and log regression.
aether_vision_observeAnalyze keyframes with a Vision Language Model (VLM) to understand what happened visually. Pro/Studio only.
Parameters
window_seconds(number)Time window in seconds to analyze (default: 10, max: 60)
backend(string)Vision backend: auto (default, uses cloud for Pro), cloud (Aether proxy), local (Ollama), gemini (own API key)
max_frames(integer)Maximum frames to send to VLM (default: 12, range: 3-20)
morph_only(boolean)Only include morph-triggered frames (default: false)
focus_hint(string)Optional hint about what to look for
budget_tokens(integer)Target token budget for VLM response (default: 2000)
Example
1@aether vision_observePro users get cloud vision automatically โ no API key or local setup needed. For privacy-sensitive
projects, set AETHER_LOCAL_VISION_URL=http://localhost:11434 to use a local Ollama backend instead.
Capsules and Sharing
aether_packagePackage a debugging session into a shareable Capsule. Captures timeline + errors + context. Pro adds ranked suspects and source links.
Parameters
target(string)Target to package: 'last_crash', 'last_error', 'last_mark', or 'session'
session_id(string)Session ID (required if target is 'session')
window_seconds(number)Time window in seconds (default: 60, only for 'session' target)
Example
1@aether package last_errorPackage a debugging session for sharing or later analysis. Creates a self-contained Capsule with timeline, errors, and context.
aether_viewCapsuleView a previously generated capsule. Returns metadata, file path, and viewer URL.
Parameters
capsule_id(string)Optional specific capsule ID to view. If omitted, shows the last capsule.
Example
1@aether viewCapsuleUse after aether_package to view the capsule contents and get the viewer URL.
aether_proofclip_draftCreate a Proof Clip draft from a marked clip. Selects keyframes, generates captions, and persists a draft manifest. Pro/Studio only.
Parameters
clip_id(string)Clip ID to draft from
context_seconds(number)Seconds of context before the clip timestamp (default: 10)
post_seconds(number)Seconds after the clip timestamp (default: 0)
style(string)Caption style preset: devlog, technical_receipt, player_hype (default: devlog)
max_frames(integer)Maximum frames to include (default: 12)
min_spacing_ms(integer)Minimum spacing between frames in ms (default: 500)
verify_result(object)Optional VerifyResult from aether_verify for proof receipts
Example
1@aether proofclip_draft clip_a1b2c3d4Turn a marked moment into a shareable proof clip draft. Exports to video for devlogs and marketing.
aether_proofclip_exportExport a Proof Clip (video + copy + Steam link) from a draft. Pro/Studio only.
Parameters
clip_id(string)Clip ID to export
preset(string)Export format preset: shorts_9x16, square_1x1, wide_16x9
style(string)Caption style preset (default: draft style or devlog)
steam_url(string)Steam store URL for UTM link generation
platform(string)Platform for attribution (e.g., tiktok, youtube, x)
campaign(string)Campaign name for UTM (default: proof_clip)
baseline_clip_id(string)Optional baseline clip ID to generate a Fix Reel (before/after)
verify_result(object)Optional VerifyResult from aether_verify for proof receipts
Example
1@aether proofclip_export clip_a1b2c3d4 shorts_9x16Export a finished proof clip for marketing, devlogs, or QA documentation.
Utility
aether_docsGet authoritative documentation for Aether tools and concepts.
Parameters
topic(string)Documentation topic: tools, capsules, setup, troubleshooting, or all
tool_name(string)Specific tool name to get documentation for
Example
1@aether docs toolsYour agent can self-serve tool documentation. Rarely needed โ the agent already has tool schemas from the MCP connection.
Usage Patterns
Standard Debugging (most common)
- Triage โ
@aether triageโ get last run metadata, suspects, receipts, next-step hints - Search logs โ
@aether console "ErrorText"โ filter relevant logs - Watch behavior โ
@aether observe 15โ see keyframes + deltas + narration - Inspect state โ
@aether snapshotโ point-in-time game state
Two-Run Debugging (hard-to-reproduce bugs)
- Recon โ
@aether recon "describe the bug"โ get instrumentation plan with plan_id - Probe โ
@aether probe plan_id(or pass full plan) โ get probe snippets - Run 2 โ Reproduce the issue after inserting probes
- Analyze โ
@aether observeor@aether window <mark_id>โ analyze probe results
Packaging and Sharing (Pro)
- Mark โ
@aether mark "Before fix"โ save state - Package โ
@aether package last_errorโ create shareable capsule - View โ
@aether viewCapsuleโ inspect capsule contents
Proof Clip Export (Pro)
- Mark โ
@aether mark "Wishlist spike moment" - Draft โ
@aether proofclip_draft clip_xxx - Export โ
@aether proofclip_export clip_xxx shorts_9x16
Response Format
All tools return JSON-RPC 2.0 responses with:
- Success:
{ "jsonrpc": "2.0", "id": 1, "result": {...} } - Error:
{ "jsonrpc": "2.0", "id": 1, "error": {...} }
Results contain GTML-formatted data for AI consumption.
Best Practices
- Start with
aether_triageโ it gives last run metadata, suspects, receipts, and next-step hints in one call - Use
observeovertailโ richer output with keyframes, deltas, and narration - Escalate to
recononly when needed โ most issues are diagnosed with core tools - Mark before fixes โ save state so you can verify or share later
If You See X โ Do Y
| If you seeโฆ | Do this |
|-------------|---------|
| "No run recorded" | Enter Play in Unity, reproduce the bug, then run aether_triage |
| "No crash or error found" | Run the game until an error occurs, or use aether_package last_mark if you have a mark |
| "Bridge not connected" | Reload Cursor window; ensure aether-bridge is running (check Output: Aether) |
| "Invalid plan" | Run aether_recon first, then pass the full instrumentation_plan (or plan_id) to aether_probe |
| "Capsule not found" | Run aether_package last_error (or last_crash / last_mark) |
| "Run aged out" | Re-run the game and package again. Check retention: aether_doctor |
| Any other failure | Run aether_doctor for diagnosis and fix steps |
Next Steps
- Learn about Capsules and how they work
- See Recipes for common tool usage patterns
- Check Troubleshooting if tools aren't working