{"serverId":"mcp-registry/al.ephemer/ephemeral","tools":[{"name":"create_run","fixed":{"name":"create_run","description":"Start an AI agent run in an isolated sandbox and return the run (status queued) at once. Give a prompt, or the name of a saved workflow. Poll with get_run or block with wait_for_run for the result. Every run has a cost cap (max_cost_micros) and a timeout, and is billed to the organization of the API key. Connections must already be saved in the organization; reference them by name. Use idempotency_key to make a retry safe. A run's cost_micros is provisional (usually above the final cost) until c","inputSchema":{"type":"object","properties":{"web":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"},"description":"Domains the agent may fetch, such as \"api.github.com\" or \"*.example.com\". Empty allows every public domain."},"search":{"type":"boolean","description":"Whether web search is available (default true)."}},"additionalProperties":false}],"description":"Web access: true, false, or an object limiting it."},"files":{"type":"array","items":{"type":"object","required":["path"],"properties":{"file":{"type":"string","description":"Id of a saved file (instead of content)."},"path":{"type":"string","description":"Where the file appears in the sandbox."},"content":{"type":"string","description":"Inline text content."}},"additionalProperties":false},"description":"Files placed in the sandbox: inline content, or a file saved in the organization."},"input":{"description":"Any JSON the agent receives as its input. If the workflow has an input_schema, it must match.","type":"string"},"model":{"type":"string","description":"A model id from list_models. Omit for the default."},"shell":{"type":"boolean","description":"Whether the agent may run shell commands in its sandbox."},"prompt":{"type":"string","description":"What the agent should do. Required unless workflow is set."},"workflow":{"type":"string","description":"Name of a saved workflow to run instead of a prompt (see list_workflows)."},"connections":{"type":"object","description":"Saved connections the agent may use, keyed by the name the agent sees. Each refers to a connection saved in the organization and can only narrow it.","additionalProperties":{"type":"object","required":["ref"],"properties":{"ref":{"type":"string","description":"Name of the saved connection (see list_connections)."},"allowed_tools":{"type":"array","items":{"type":"string"},"description":"Tool names allowed on an MCP connection."},"allowed_methods":{"type":"array","items":{"type":"string"},"description":"HTTP methods allowed, for example [\"GET\"] for read-only access."}},"additionalProperties":false}},"description":{"type":"string","maxLength":500,"description":"What the workflow does and what input it expects, in a sentence or two, for people and agents. At most 500 characters."},"input_schema":{"type":"object","description":"A JSON Schema (draft 2020-12 or 7, at most 32 KiB, no references to other documents) that this run's input must match. A run whose input does not match is refused with the path and the reason, such as \"input.city: required\"."},"output_schema":{"type":"object","description":"A JSON Schema (draft 2020-12 or 7, at most 32 KiB, no references to other documents) that this run's output must match. The agent is told the schema and asked to reply with JSON only; the output is then checked, and a run whose output does not match fails with the reason."},"idempotency_key":{"type":"string","description":"A retry with the same key returns the original run instead of starting another."},"max_cost_micros":{"type":"integer","minimum":1,"description":"Cost cap in millionths of a dollar. The run stops at the cap."},"timeout_seconds":{"type":"integer","minimum":1,"description":"Wall-clock limit for the run."},"zero_data_retention":{"type":"boolean","description":"Record nothing of the run's content; the output is kept only briefly and released on first retrieval."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"title":"Create a run"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: input. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":1104,"tokensAfter":1109},{"name":"create_schedule","fixed":{"name":"create_schedule","description":"Start a saved workflow on a timetable. Needs an administrator key. Each start is a run billed to the organization, with the cost cap given here (or the default). Use preview_schedule first to check the timetable. A schedule pauses itself after repeated failed starts. An organization can have 50 schedules.","inputSchema":{"type":"object","required":["workflow","cron"],"properties":{"cron":{"type":"string","description":"Five fields (minute hour day-of-month month day-of-week), such as \"0 9 * * 1-5\", or a descriptor such as @daily or @every 15m. At most once a minute."},"name":{"type":"string","maxLength":128,"description":"A label for the schedule."},"input":{"description":"Any JSON the agent receives as its input on every start (maximum 1 MiB).","type":"string"},"enabled":{"type":"boolean","description":"Whether the schedule starts runs (default true)."},"timezone":{"type":"string","description":"IANA time zone name, such as Europe/Madrid (default UTC)."},"workflow":{"type":"string","description":"Name of the saved workflow to run (see list_workflows)."},"max_cost_micros":{"type":"integer","maximum":100000000,"minimum":1,"description":"Cost cap of each run, in millionths of a dollar."},"skip_if_running":{"type":"boolean","description":"Skip a start while the previous run is still going (default true)."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"title":"Create a schedule"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: input. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":385,"tokensAfter":389},{"name":"update_schedule","fixed":{"name":"update_schedule","description":"Change a schedule; only the fields you give change. Needs an administrator key. Set enabled to false to pause it and to true to resume it (resuming clears the failures that paused it). A new timetable counts from now.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The schedule's id (sch_…), as returned by create_schedule or list_schedules."},"cron":{"type":"string","description":"Five fields (minute hour day-of-month month day-of-week) or a descriptor such as @daily or @every 15m."},"name":{"type":"string","maxLength":128,"description":"A label for the schedule."},"input":{"description":"Any JSON the agent receives as its input on every start (maximum 1 MiB).","type":"string"},"enabled":{"type":"boolean","description":"false pauses the schedule, true resumes it."},"timezone":{"type":"string","description":"IANA time zone name, such as Europe/Madrid."},"workflow":{"type":"string","description":"Name of the saved workflow to run."},"max_cost_micros":{"type":"integer","maximum":100000000,"minimum":1,"description":"Cost cap of each run, in millionths of a dollar."},"skip_if_running":{"type":"boolean","description":"Skip a start while the previous run is still going."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Update or pause a schedule"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: input. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":360,"tokensAfter":364}],"toolsChanged":3,"tokensSaved":0,"todo":[{"tool":"list_runs","params":["status"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}