{"ok":true,"site":{"host":"magpie.help","url":"https://www.magpie.help/","type":"live","desc":"Magpie collects the capabilities websites expose through WebMCP and composes them into reusable workflows any agent can run.","tools":[{"name":"list_capabilities","kind":"answer","impl":"imperative","description":"List the capabilities this site exposes. Magpie manages workflows and holds no business data of its own — the data lives on other websites, so call list_reachable_capabilities as well to see what is reachable there.","annotations":{"title":"List capabilities","readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_workflows","kind":"answer","impl":"imperative","description":"List the saved workflows in this library. Returns { workflows: [{ id, name, summary, stepCount, requires }], count }. `requires` names the capabilities each one uses, so this is how you find a workflow that already does part of what you were asked for — call get_workflow on it and adapt its steps rather than composing from scratch.","annotations":{"title":"List workflows","readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_workflow","kind":"answer","impl":"imperative","description":"Get one workflow in full, including every step. Accepts an id or an exact name. Its steps are a better starting point than a schema: the arguments in them are ones this site actually accepted. Adapt rather than copy — values like a threshold or a date are specific to what that workflow was for, and rename any `output` that would collide with a step you are keeping.","annotations":{"title":"Get workflow","readOnlyHint":true},"inputSchema":{"type":"object","properties":{"workflowId":{"type":"string","description":"Workflow id or exact name"}},"required":["workflowId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"run_workflow","kind":"act","impl":"imperative","description":"Run a saved workflow now and return what happened, step by step. Steps that need another website are executed there through the Magpie extension; if it is not installed they are reported as skipped rather than guessed at. Anything that changes data prompts the user for confirmation first.","annotations":{"title":"Run workflow","readOnlyHint":false},"inputSchema":{"type":"object","properties":{"workflowId":{"type":"string","description":"Workflow id or exact name"}},"required":["workflowId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"run_steps","kind":"act","impl":"imperative","description":"Run a list of steps once, without saving a workflow. Use this to carry out a one-off request — it executes across every site Magpie can reach and records the run in this library, so the user can see afterwards what was done. Prefer this over calling capabilities one at a time. Save it with create_workflow only if the user wants it again later.","annotations":{"title":"Run steps","readOnlyHint":false},"inputSchema":{"type":"object","properties":{"steps":{"type":"array","description":"The steps to run, in Magpie step format","items":{"type":"object"}},"goal":{"type":"string","description":"What the user asked for, in their words. Labels the run."},"finalOutput":{"type":"string","description":"Name of the variable holding the answer"}},"required":["steps"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_reachable_capabilities","kind":"answer","impl":"imperative","description":"List every capability Magpie can reach on OTHER websites — including sites that are not open right now, which are reopened automatically when a workflow needs them. Call this before composing anything: this page holds no business data of its own, so orders, tickets, bookings and the like all live behind these. Returns { connected, capabilities: [{ id, title, description, provider, origin, status, readOnly }] }. Use the exact `id` as the `tool` value in a step.","annotations":{"title":"List reachable capabilities","readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_runs","kind":"answer","impl":"imperative","description":"List recent workflow runs, newest first. Returns { runs: [...], count }.","annotations":{"title":"List runs","readOnlyHint":true},"inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"How many to return. Defaults to 10."}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_run","kind":"answer","impl":"imperative","description":"Get one run in full, including every step result and the capability it called. A step recorded as ok is proof that capability worked with those arguments, which makes a past run the most reliable source to copy a step from.","annotations":{"title":"Get run","readOnlyHint":true},"inputSchema":{"type":"object","properties":{"runId":{"type":"string","description":"Run id"}},"required":["runId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_workflow","kind":"act","impl":"imperative","description":"Save a workflow to the library so it can be run again later. Steps use Magpie's format: {\"type\":\"tool\",\"tool\":\"orders.search_orders\",\"arguments\":{...},\"output\":\"orders\"} and {\"type\":\"transform\",\"operation\":\"filter\",\"input\":\"orders\",\"output\":\"big\",\"condition\":{\"field\":\"amount\",\"operator\":\">\",\"value\":5000}}. A later step reads an earlier one with {{output}}. Every `tool` must be an exact id from list_capabilities or list_reachable_capabilities — unknown names are rejected, never invented. This only saves; call run_workflow to execute.","annotations":{"title":"Create workflow","readOnlyHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Short name for the workflow"},"summary":{"type":"string","description":"One sentence describing what it does"},"steps":{"type":"array","description":"The workflow steps","items":{"type":"object"}},"finalOutput":{"type":"string","description":"Variable holding the answer"}},"required":["name","steps"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"rename_workflow","kind":"act","impl":"imperative","description":"Rename a saved workflow. The name is how it is referred to afterwards, so pick something the user would say out loud. Names must be unique; renaming onto an existing one is refused.","annotations":{"title":"Rename workflow","readOnlyHint":false},"inputSchema":{"type":"object","properties":{"workflowId":{"type":"string","description":"Workflow id, or its current exact name"},"name":{"type":"string","description":"The new name"}},"required":["workflowId","name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"delete_workflow","kind":"transact","impl":"imperative","description":"Delete a saved workflow from the library.","annotations":{"title":"Delete workflow","readOnlyHint":false,"destructiveHint":true},"inputSchema":{"type":"object","properties":{"workflowId":{"type":"string","description":"Workflow id"}},"required":["workflowId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"delete_run","kind":"transact","impl":"imperative","description":"Remove one run from the history, or every run when `all` is true. History is what the user reviews afterwards, so only clear it when they ask.","annotations":{"title":"Delete run","readOnlyHint":false,"destructiveHint":true},"inputSchema":{"type":"object","properties":{"runId":{"type":"string","description":"Run id. Omit when clearing everything."},"all":{"type":"boolean","description":"Delete every run instead of one"}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export_csv","kind":"act","impl":"imperative","description":"Create and download a CSV file from an array of objects. Use whenever the user asks to export or save results as a spreadsheet.","annotations":{"title":"Export CSV","readOnlyHint":false},"inputSchema":{"type":"object","properties":{"data":{"type":"array","description":"Rows to export","items":{"type":"object"}},"filename":{"type":"string","description":"File name ending in .csv"}},"required":["data"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"AI & Agents","favicon":"/favicons/magpie.help.png","apiSurface":"spec","toolCount":13}}