{
  "automatic_evidence_credit": false,
  "captures": [],
  "change_log": [
    {
      "after_hash": "d65f6e32153537d5eaf05b4ade2f1a97322c293a534f81c401a975579015260c",
      "before_hash": "ba6b6738e788229b5416d3ad8ae7daaee2ddc4f5266dc9fbebc1658ff13e5bd1",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[generate_sound_effect]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[ask_switch_unrestricted].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[list_upscalers].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 2,
          "NON_BREAKING": 1
        },
        "taxonomy_version": "1.0.0",
        "total": 3,
        "truncated": false
      },
      "entry_sha256": "86475aa826edb6d6082bcd4868647aa867f421393eb74cdffa132812f22c0b0b",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-06T01:11:23Z",
      "previous_entry_sha256": "087e70fdfa893c54dcb55aca63b03ab8d74f8a86000b681312f4a2c80c73ebd0",
      "receipt_id": "e049785d-553a-5f10-b728-e2e710942b81",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/e049785d-553a-5f10-b728-e2e710942b81",
      "sequence": 18061,
      "target_id": "obs_e36f6cedc656f3dbb1e8a509",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.switchapp.ai/mcp"
    },
    {
      "after_hash": "ba6b6738e788229b5416d3ad8ae7daaee2ddc4f5266dc9fbebc1658ff13e5bd1",
      "before_hash": "08189c91d08a1fd4119fb55a98115c7021a2f9a25c7dbf9132b4026bcd9b4463",
      "diff": {
        "changes": [],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 0,
        "truncated": false
      },
      "entry_sha256": "bf014e9055e60d65190372fdbde0e018197f28581361b6f14c7786fe600939bc",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-05T00:13:18Z",
      "previous_entry_sha256": "497af48dc6acd7e25e814cbb3e3e3be0ed26572825902e870a15a9e552211e5e",
      "receipt_id": "eece5a48-2254-51df-b6cc-54b7185b03b1",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/eece5a48-2254-51df-b6cc-54b7185b03b1",
      "sequence": 15291,
      "target_id": "obs_e36f6cedc656f3dbb1e8a509",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.switchapp.ai/mcp"
    },
    {
      "after_hash": "08189c91d08a1fd4119fb55a98115c7021a2f9a25c7dbf9132b4026bcd9b4463",
      "before_hash": "449657cc35f306c294d4cbe2c3793aa9d39ad399f14608d72830373f4065c158",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[spend_log]",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 1
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "268a8beb95cec9099d46c03aaadf9809e32d56cc2e30c920bb9bd3b09818f941",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-03T23:11:26Z",
      "previous_entry_sha256": "9cc5c7a61a3989d1eeeee04ad4f89ffd6ae4bbfeffbecd95ab5c780672ef620a",
      "receipt_id": "2456c5d5-4570-5376-a81f-4398b254487a",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/2456c5d5-4570-5376-a81f-4398b254487a",
      "sequence": 9132,
      "target_id": "obs_e36f6cedc656f3dbb1e8a509",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.switchapp.ai/mcp"
    },
    {
      "after_hash": "449657cc35f306c294d4cbe2c3793aa9d39ad399f14608d72830373f4065c158",
      "before_hash": "42036e9b841b229c1764242a368a053b8278f7c39d1f3e48ba28fab80127f634",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[load_video_workflow].inputSchema.properties[model]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[load_workflow_playbook].inputSchema.properties[resource]",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 2
        },
        "taxonomy_version": "1.0.0",
        "total": 2,
        "truncated": false
      },
      "entry_sha256": "56dc50dad923f75321e05fbf741db5a0ac33aa19f4b9189c41435ec22aabe937",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-02T22:15:51Z",
      "previous_entry_sha256": "2d2822ca0c9e543c92e72d359c9017a52617c89e8da1d12c7e3bbc01acbcc7b8",
      "receipt_id": "657e5c23-4568-5d1e-ad56-bc609aaeedab",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/657e5c23-4568-5d1e-ad56-bc609aaeedab",
      "sequence": 8021,
      "target_id": "obs_e36f6cedc656f3dbb1e8a509",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.switchapp.ai/mcp"
    },
    {
      "after_hash": "42036e9b841b229c1764242a368a053b8278f7c39d1f3e48ba28fab80127f634",
      "before_hash": "47832720e2fc5bd8d7b778bdadaf4a01ab43b4465bef72a69b9479b20e60349e",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[generate_audio].inputSchema.properties[timestamps]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[sync3_lip_sync_video].inputSchema.properties[scene_audio_url]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[sync3_lip_sync_video].inputSchema.properties[speak_spans]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "protocol version changed",
            "kind": "PROTOCOL_VERSION_CHANGED",
            "path": "protocolVersion",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 4
        },
        "taxonomy_version": "1.0.0",
        "total": 4,
        "truncated": false
      },
      "entry_sha256": "6c4ffb88ad5be010ffc36ef7c2481be816a98d6e95b4f8ca99cc86f338f37ca9",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-01T21:10:17Z",
      "previous_entry_sha256": "3c4411c583de3851777665208358df5cd40e18da896668be9312fb0e2f9e3fa2",
      "receipt_id": "5c261515-8440-5999-8f14-d48c8d25f566",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/5c261515-8440-5999-8f14-d48c8d25f566",
      "sequence": 425,
      "target_id": "obs_e36f6cedc656f3dbb1e8a509",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.switchapp.ai/mcp"
    },
    {
      "after_hash": "47832720e2fc5bd8d7b778bdadaf4a01ab43b4465bef72a69b9479b20e60349e",
      "before_hash": "c1822d5cce0c11e6e73dc369452a92de1e4e2169ae69c5496579231be2679972",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[ask_switch_unrestricted]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[decide_switch_unrestricted_action]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[list_upscalers]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input type widened",
            "kind": "INPUT_TYPE_WIDENED",
            "path": "tools[enhance_video_prompt].inputSchema.type",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[aspect_ratio]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[audio]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[character_orientation]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[duration]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[end_image_url]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[enhancement_receipt]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[face_reference_ids]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[image_url]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[mode]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[model]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[option_id]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[quote_fingerprint]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[quoted_credits]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[reference_audio_urls]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[reference_image_urls]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[reference_video_urls]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[resolution]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[subject]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[task_type]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[enhance_video_prompt].inputSchema.properties[video_url]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input type widened",
            "kind": "INPUT_TYPE_WIDENED",
            "path": "tools[quote_video].inputSchema.type",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 41,
          "INFO": 1,
          "NON_BREAKING": 10
        },
        "taxonomy_version": "1.0.0",
        "total": 52,
        "truncated": true
      },
      "entry_sha256": "9bb6a6f7d21b99eed11252c29cf3a826471ef62fc12994c1825a2f7b2a041db5",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-09-30T07:53:17Z",
      "previous_entry_sha256": "53a0fe273dc9b2b0a03e2024ce50af76ee58b5acf3f61ec77623ee4561c7a5cb",
      "receipt_id": "95f59dab-9b7c-5134-9cc1-b16ad50974c5",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/95f59dab-9b7c-5134-9cc1-b16ad50974c5",
      "sequence": 60,
      "target_id": "obs_e36f6cedc656f3dbb1e8a509",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.switchapp.ai/mcp"
    }
  ],
  "check_outcomes": {
    "ask": {
      "changed_since": "https://www.gaipagents.com/v1/free/observatory/changed-since?url=<endpoint>",
      "changes_and_reachability": "https://www.gaipagents.com/v1/free/changes/subscribe?url=<endpoint>",
      "conformance": "https://www.gaipagents.com/v1/free/conformance/check?url=<endpoint>"
    },
    "published": false,
    "why": "Outcomes of GAIP's own checks (whether the endpoint answered, HTTP status, response time, conformance findings) are given only to a caller who asks about the URL, never on a public page, list or feed. The same applies to every target."
  },
  "conformance": {
    "findings": "GIVEN_TO_CALLER_ONLY",
    "meaning": "The rule catalogue this manifest was read against at the observed time. The finding codes go only to a caller who checks the URL (check_outcomes.ask.conformance).",
    "observed_at_utc": "2026-10-17T12:59:51Z",
    "protocol": "MCP",
    "rule_catalogue_route": "/v1/free/knowledge/conformance-rules",
    "rule_catalogue_version": "1.0.0"
  },
  "corrections": {
    "contact": "https://www.gaipagents.com/contact",
    "exclusion": "https://www.gaipagents.com/v1/free/observatory/corrections/exclusion",
    "opt_out": "POST kind OPT_OUT to the route; the target is withdrawn from public view at once (a pause). The site's owner makes it permanent at https://www.gaipagents.com/v1/free/observatory/corrections/exclusion.",
    "queued_for_review": 0,
    "route": "https://www.gaipagents.com/v1/free/observatory/corrections"
  },
  "declared_derivations": {
    "data_appetite": {
      "categories": {
        "email": {
          "fields": 1,
          "tools": 1
        },
        "file_upload": {
          "fields": 3,
          "tools": 3
        },
        "free_text_large": {
          "fields": 5,
          "tools": 5
        }
      },
      "fields_read": 295,
      "observed_at_utc": "2026-10-06T01:11:23Z",
      "tools_read": 74
    },
    "dependency_domains": [],
    "last_observed_at_utc": "2026-10-17T12:59:51Z",
    "meaning": "Derived by GAIP from what this agent declared, at the stated time: the categories of data its tools' input fields ask for (counts, by keyword rules gaip.data-appetite-rules.v1), the outside domains its declarations point to, and the operator as the agent itself publishes it. Facts about declarations, not an assessment of the agent or its operator.",
    "operator": {
      "as_published": "ai.switchapp",
      "source_kind": "registry_namespace_domain"
    },
    "rules_version": "gaip.data-appetite-rules.v1",
    "schema_version": "gaip.declared-derivations.v1"
  },
  "latest": {
    "baseline_at_utc": "2026-09-29T06:05:57Z",
    "manifest_sha256": "d65f6e32153537d5eaf05b4ade2f1a97322c293a534f81c401a975579015260c",
    "observed_at_utc": "2026-10-17T12:59:51Z"
  },
  "metadata_signals": {
    "meaning": "Pattern rules are published only as aggregate rates across all observed targets (see the summary), never per party. GAIP issues no overall verdict and does not rank parties.",
    "overall_verdict": null,
    "per_target_results": null,
    "published": "AGGREGATE_ONLY_IN_SUMMARY",
    "rules": [
      {
        "rationale": "Zero-width, bidirectional-control and Unicode tag characters are not visible to a human reader but are read by language models. GAIP reports whether any occur; many have ordinary uses.",
        "rule_id": "OBS-SIG-001",
        "title": "Invisible or bidirectional-control Unicode characters in names or descriptions"
      },
      {
        "rationale": "Tool and skill descriptions are read by models. GAIP reports whether a description contains phrases shaped like instructions to a model (the patterns in GAIP's public conformance rule catalogue, plus the phrases listed in the Observatory method). Such phrases can be benign.",
        "rule_id": "OBS-SIG-002",
        "title": "Instruction-like text in descriptions"
      },
      {
        "rationale": "When a description refers to a tool name that only a different observed server publishes, a model using both servers may connect the two. GAIP reports whether such a reference occurs; shared names are common and often coincidental.",
        "rule_id": "OBS-SIG-003",
        "title": "Description names a tool published by a different observed server"
      },
      {
        "rationale": "Declared OAuth scopes whose names contain wildcard or whole-account wording (*, all, admin, root, full) request wide access by name. GAIP reports whether such a scope name is declared; it does not know what the scope grants.",
        "rule_id": "OBS-SIG-004",
        "title": "Declared authorization scopes with broad-access wording"
      }
    ],
    "third_party_scanners": [
      {
        "name": "Snyk agent-scan (formerly Invariant Labs mcp-scan)",
        "status": "NOT_RUN",
        "url": "https://github.com/snyk/agent-scan"
      },
      {
        "name": "Cisco AI Defense MCP Scanner",
        "status": "NOT_RUN",
        "url": "https://github.com/cisco-ai-defense/mcp-scanner"
      }
    ]
  },
  "method": "https://www.gaipagents.com/observatory",
  "notice": "Facts observed by GAIP at the stated time (UTC); they may be out of date. This is not an assessment of safety, quality, security, legality or trustworthiness of any party, and not a recommendation. To request a correction, add a right of reply or opt out, POST to https://www.gaipagents.com/v1/free/observatory/corrections or use https://www.gaipagents.com/contact.",
  "price_gbp": 0,
  "schema_version": "gaip.observatory.v1.target",
  "silent_changes_last_30_days": {
    "days": 30,
    "entries_read_at_most": 200,
    "kinds": [
      "behaviour_labels_changed",
      "input_or_output_format_changed",
      "tool_changed_past_the_64_kept_in_full",
      "tool_descriptions_reworded",
      "tools_added"
    ],
    "line": "In the last 30 days its declared tools or interface changed with no declared version change in 1 week: 2026-W41 (2026-10-05, 2026-10-06); kinds: behaviour labels changed, input or output schema changed, a tool past the 64 kept in full changed, tool descriptions re-worded, tools added.",
    "meaning": "Weeks (ISO) in which GAIP recorded a change to the agent's declared tools or interface (tools added or removed, descriptions re-worded, input or output schema, behaviour labels, sign-in, terms or prices, endpoint host) and no declared version (registry or card version, serverInfo.version) moved that week. A week whose version movement is not recorded is not counted. Dated facts from the public change log; not an assessment of the agent.",
    "weeks": [
      {
        "dates": [
          "2026-10-05",
          "2026-10-06"
        ],
        "kinds": [
          "behaviour_labels_changed",
          "input_or_output_format_changed",
          "tool_changed_past_the_64_kept_in_full",
          "tool_descriptions_reworded",
          "tools_added"
        ],
        "week": "2026-W41"
      }
    ],
    "weeks_with_silent_changes": 1
  },
  "snapshot": {
    "capabilities": [
      "resources",
      "tools"
    ],
    "description": "Generate, manage and explore your Switch AI image and video library, scoped to your account.",
    "name": "ai.switchapp/switch",
    "parts": [
      "registry_server_json",
      "mcp_initialize_tools_list"
    ],
    "protocol": "MCP",
    "protocolVersion": "2025-11-25",
    "public_copy": "Text excerpts of at most 300 characters; input schemas and security schemes as SHA-256 and size only.",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://mcp.switchapp.ai/mcp"
      }
    ],
    "scopes": [],
    "serverInfo": {
      "name": "switch",
      "version": "0.2.0"
    },
    "title": null,
    "tools": [
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Add Library Assets to Editor"
        },
        "description": "Add images you own in your Switch library to your real Editor project. Resolve the asset ids with search_my_library or list_my_assets; Switch copies only owner-scoped durable files into the Editor workspace.",
        "inputSchema": {
          "bytes": 223,
          "published": "HASH_ONLY",
          "sha256": "a5e90a8d29a57fd388467151ead3e1bde24e9c342ed9beac8d002a80f65ba828"
        },
        "name": "add_editor_library_assets",
        "title": "Add Library Assets to Editor"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Analyze Video"
        },
        "description": "Switch Vision \u2014 watch and understand a video (or image) like a human and answer a question about it: scenes, subjects, actions, on-screen text, pacing, mood and sentiment. Pass video_url (a public https video URL, including YouTube) OR one of your own Switch videos (a video/asset id from list_my_vid",
        "inputSchema": {
          "bytes": 461,
          "published": "HASH_ONLY",
          "sha256": "23ebb2c16298b9eab50d8d03717634f1123ba8fe8d8c69f41f45119442302632"
        },
        "name": "analyze_video",
        "title": "Analyze Video"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Full Video Analysis"
        },
        "description": "Run the FULL Switch Vision analysis on a video, the same premium report the Video Analysis page produces: it watches AND listens in three forensic passes and returns a structured report with every category: overview (scores and takeaways), a second by second timeline, audio, visual craft, story and ",
        "inputSchema": {
          "bytes": 634,
          "published": "HASH_ONLY",
          "sha256": "7812fee779423e350082f870801051272b6d68d86ea8f3ce864f141d35dfb717"
        },
        "name": "analyze_video_report",
        "title": "Full Video Analysis"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Cinematic Anamorphic"
        },
        "description": "ARRI Alexa anamorphic widescreen film look. Choose grade: warm golden, cool noir, or moody desaturated. Returns the styled prompt stack for your shot \u2014 pair it with generate_image.",
        "inputSchema": {
          "bytes": 420,
          "published": "HASH_ONLY",
          "sha256": "2df69d4aa067d793edb822c649020b9b607e7fc3fbecd519ac39fe2f398ef651"
        },
        "name": "apply_cinematic_anamorphic",
        "title": "Apply Cinematic Anamorphic"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Graphic Editorial Portrait"
        },
        "description": "Sharp graphic editorial portrait \u2014 premium fashion-magazine grade, hard graphic composition. Classic studio or golden-hour outdoor. Returns the styled prompt stack for your shot \u2014 pair it with generate_image.",
        "inputSchema": {
          "bytes": 346,
          "published": "HASH_ONLY",
          "sha256": "27823b90538156968e2c30597618b6eb27f04d4a520ae35af8f9f8407e0ce7c5"
        },
        "name": "apply_graphic_editorial_portrait",
        "title": "Apply Graphic Editorial Portrait"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply High Fashion Editorial"
        },
        "description": "High-fashion magazine cover/editorial energy. Choose a photographer mood: Mario Testino glossy, Steven Klein dark cinematic, Inez & Vinoodh hard-flash, Annie Leibovitz painterly, Tim Walker dreamlike, Peter Lindbergh black-and-white natural, or Cass Bird off-duty. Returns the styled prompt stack for",
        "inputSchema": {
          "bytes": 477,
          "published": "HASH_ONLY",
          "sha256": "8497802b032b74561840984bbbff1dde5bb197119689866c4afaa6684befcca4"
        },
        "name": "apply_high_fashion_editorial",
        "title": "Apply High Fashion Editorial"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Iphone Realism"
        },
        "description": "Phone-shot amateur look \u2014 looks like a real person snapped it on their phone. Casual, candid, pore-level real, no professional gloss. Three flavors: digital phone, 35mm film point-and-shoot, or off-duty intimate. Returns the styled prompt stack for your shot \u2014 pair it with generate_image.",
        "inputSchema": {
          "bytes": 475,
          "published": "HASH_ONLY",
          "sha256": "9f64826bb97f93d13b3a6093792bdab5625f9c21a023b908be6a4aff06ba3981"
        },
        "name": "apply_iphone_realism",
        "title": "Apply Iphone Realism"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Magic Hour Portrait"
        },
        "description": "Golden-hour rim-light editorial portrait. Choose camera: Canon R5 + 85mm f/1.2 or Hasselblad H6D + 80mm. Returns the styled prompt stack for your shot \u2014 pair it with generate_image.",
        "inputSchema": {
          "bytes": 369,
          "published": "HASH_ONLY",
          "sha256": "e435eeb276dce1099045d3910efbfc1837a4263bfeae632264fb63ba463fd5e5"
        },
        "name": "apply_magic_hour_portrait",
        "title": "Apply Magic Hour Portrait"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Movie Scene"
        },
        "description": "Put me in a movie \u2014 full cinematic film look matching specific film genres. Choose: neon-noir action thriller, 80s finance excess, comic-book superhero blockbuster, video-game key art, or generic action thriller. Returns the styled prompt stack for your shot \u2014 pair it with generate_image.",
        "inputSchema": {
          "bytes": 627,
          "published": "HASH_ONLY",
          "sha256": "047df66d1bff5d6b4796777d43005aa49c4f7898405ca32fa5f511c44bb7fddf"
        },
        "name": "apply_movie_scene",
        "title": "Apply Movie Scene"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Product"
        },
        "description": "Product photography. Choose: clean studio hero shot, real-world lifestyle, extreme macro detail, or top-down flat lay. Returns the styled prompt stack for your shot \u2014 pair it with generate_image.",
        "inputSchema": {
          "bytes": 447,
          "published": "HASH_ONLY",
          "sha256": "b383cae403f06e45b0ba2a836b85f5f36b7768d0a7b9acde1a9147fd77f5a378"
        },
        "name": "apply_product",
        "title": "Apply Product"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Travel"
        },
        "description": "Luxury travel + hotel editorial. Real architecture is preserved exactly (no inventing buildings). Choose subject: hotel hero, rural property, scenic view, drone aerial, lifestyle moment, or interior. If you attach a reference image of a real property, the architecture lock kicks in automatically. Re",
        "inputSchema": {
          "bytes": 546,
          "published": "HASH_ONLY",
          "sha256": "7bda0544b27dc558f85f1c5f8972b648498f4d315a8b6a8c4bdab6442d98039a"
        },
        "name": "apply_travel",
        "title": "Apply Travel"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Ugc"
        },
        "description": "User-generated content \u2014 looks like a real person captured it casually. Choose: phone shot, film point-and-shoot, mirror selfie, or car selfie. Returns the styled prompt stack for your shot \u2014 pair it with generate_image.",
        "inputSchema": {
          "bytes": 460,
          "published": "HASH_ONLY",
          "sha256": "50b8b3338df4f5a59e89629941071151cb871a3445e3a03053488020040422af"
        },
        "name": "apply_ugc",
        "title": "Apply Ugc"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Apply Wellness"
        },
        "description": "Wellness / yoga / fitness / lifestyle campaign \u2014 warm amber tropical, tropical paradise cinematic, or high-key cyan beach. Returns the styled prompt stack for your shot \u2014 pair it with generate_image.",
        "inputSchema": {
          "bytes": 491,
          "published": "HASH_ONLY",
          "sha256": "380a8d0df23b7cbcd40dbf4b6f39b0ffe24e056cab536b46dabf69ed2e846f37"
        },
        "name": "apply_wellness",
        "title": "Apply Wellness"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Approve Editor Run"
        },
        "description": "Explicitly approve the exact paid quote currently waiting on one of your Editor runs. Requires approved=true and the matching quote_id; stale or changed projects fail closed.",
        "inputSchema": {
          "bytes": 162,
          "published": "HASH_ONLY",
          "sha256": "f350064c50c3cea91febf2d09907ce82e255958200bdac16b7f890dc72d2f4eb"
        },
        "name": "approve_editor_run",
        "title": "Approve Editor Run"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Ask Switch Unrestricted"
        },
        "description": "Talk to Switch's unrestricted operator (the flame in the Studio chat): the mature, uncensored creative brain that runs on BytePlus with its own workspace, tools and skills. Send your brief, a question, a research ask or a coding task; it answers in its own words and, when it wants to spend tokens, w",
        "inputSchema": {
          "bytes": 520,
          "published": "HASH_ONLY",
          "sha256": "4a84165ba49c65e1ea3b39591362abd743dbba0936e37bb5b0635bdaaef6ec36"
        },
        "name": "ask_switch_unrestricted",
        "title": "Ask Switch Unrestricted"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "readOnlyHint": false,
          "title": "Cancel Editor Run"
        },
        "description": "Safely cancel one of your queued, running, or approval-waiting Switch Editor runs without applying a pending revision.",
        "inputSchema": {
          "bytes": 81,
          "published": "HASH_ONLY",
          "sha256": "9a58be1d8c48b88c8e74cd9a0f28dc04a362cb909eedb77ff899ad78ebf7af0e"
        },
        "name": "cancel_editor_run",
        "title": "Cancel Editor Run"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "readOnlyHint": false,
          "title": "Cancel Task"
        },
        "description": "Stop one of your generation tasks by task id \u2014 works on queued AND running tasks. Already-saved images stay in your library; nothing is deleted or refunded. Returns how many images were saved out of how many you requested.",
        "inputSchema": {
          "bytes": 143,
          "published": "HASH_ONLY",
          "sha256": "9ee3dea1877c85abb788689fb455aa7ced022a17fad7157992d5a2a27ee1e613"
        },
        "name": "cancel_my_task",
        "title": "Cancel Task"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "readOnlyHint": false,
          "title": "Capture Editor Assets"
        },
        "description": "Capture a fixed state of the real current production Switch Editor into your Editor project. The default state is an honest baseline capture of the full Editor, its sections, scroll pages, and rendered controls; it has no fabricated click transition. States with a configured interaction add a before",
        "inputSchema": {
          "bytes": 1681,
          "published": "HASH_ONLY",
          "sha256": "9295c60537ba0a392fca1f1599c0b0062da0b10718fef19700f0868265d1d7ef"
        },
        "name": "capture_editor_assets",
        "title": "Capture Editor Assets"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Check Balance"
        },
        "description": "Check your daily Switch spending \u2014 what you have spent today, your daily limit, and what is remaining. Optionally pass an `estimatedCost` (USD) to also get whether you can afford it.",
        "inputSchema": {
          "bytes": 139,
          "published": "HASH_ONLY",
          "sha256": "0be374576622988eea1d10c9d247c774b81084941237312da6b8c9a5cebf259a"
        },
        "name": "check_balance",
        "title": "Check Balance"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Check Job Status"
        },
        "description": "Polling-friendly status check for one of your tasks. Returns a slim shape with `status`, `progressPct`, and `eta` so you can poll without refetching the full payload.",
        "inputSchema": {
          "bytes": 115,
          "published": "HASH_ONLY",
          "sha256": "79012022dbbf9a7e566e85f94035753913b6566794e770f344dd5ab0e57e8adc"
        },
        "name": "check_job_status",
        "title": "Check Job Status"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Create Depth Map"
        },
        "description": "Turn a video into a DEPTH MAP: a grayscale video where brightness encodes distance, used as a motion reference so a new generated subject moves exactly like your source clip. Pass video_url (a public https video URL) OR one of your own Switch video ids (from list_my_videos or list_my_assets). For an",
        "inputSchema": {
          "bytes": 322,
          "published": "HASH_ONLY",
          "sha256": "22393a4e0e5b25ab561c66dfd062440594581c3f22481201c0640a14fe055314"
        },
        "name": "create_depth_map",
        "title": "Create Depth Map"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Create Editor Project"
        },
        "description": "Create a clean, persistent project in your real Switch Editor. The same project opens in the /editor UI and is used by the Editor agent and HyperFrames renderer.",
        "inputSchema": {
          "bytes": 87,
          "published": "HASH_ONLY",
          "sha256": "6b254c7a73772c8e37ecc1ef76ac319f797988392ffa9a30a02549a3a9b2fbe9"
        },
        "name": "create_editor_project",
        "title": "Create Editor Project"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Decide Switch Unrestricted Action"
        },
        "description": "Allow or deny one action the unrestricted operator asked for (from pending_action.action_id in an ask_switch_unrestricted answer): generate images, save a reference, run a workspace command, write a file. Show the creator the label and details and let THEM decide; then pass their decision with card_",
        "inputSchema": {
          "bytes": 731,
          "published": "HASH_ONLY",
          "sha256": "7689023f172247c90b586adb6f815a7911602bde8fed9dd679fe18175ddfc9ad"
        },
        "name": "decide_switch_unrestricted_action",
        "title": "Decide Switch Unrestricted Action"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "readOnlyHint": false,
          "title": "Delete Editor Project"
        },
        "description": "Permanently delete one of your Switch Editor projects: the project, its saved chat history for every brain, and its workspace and capture files. Library media stays. Confirm with the person first; this cannot be undone.",
        "inputSchema": {
          "bytes": 89,
          "published": "HASH_ONLY",
          "sha256": "9889170b64666d06ce9ba4f3c4e6ed966e20ece63b42c1cba91831521414ef67"
        },
        "name": "delete_editor_project",
        "title": "Delete Editor Project"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "SwitchApp Video Enhanced"
        },
        "description": "SwitchApp Video Enhanced. Prepare a video prompt using SwitchApp enhancement while keeping your selected model, references, exact quoted words and requested changes. Pass the same shot fields as generate_video. Returns original_prompt, enhanced_prompt and an enhancement_receipt. Inspect the prompt a",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "6b476b53437729ba0990003dcc34264a9eb0384ba703eafd97561642c1c82fa6"
        },
        "name": "enhance_video_prompt",
        "title": "SwitchApp Video Enhanced"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Explore Models"
        },
        "description": "Browse the image-generation models available to your Switch account. Returns model id, display name, brand, and credits-per-image so you can pick one before calling generate_image.",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "explore_models",
        "title": "Explore Models"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Download the layer files"
        },
        "description": "Prepare a private, short-lived download link for your own layers project: a ZIP holding every original transparent PNG plus a manifest of names, order, boxes and visibility, ready for Photoshop or Figma. Each call rebuilds the ZIP (one stored copy per project, overwritten).",
        "inputSchema": {
          "bytes": 132,
          "published": "HASH_ONLY",
          "sha256": "a6505984b00f03e63e5637557e7e6e3b8c01212017edb29bc634aefb1368a715"
        },
        "name": "export_layer_set",
        "title": "Download the layer files"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Save the layers as one picture"
        },
        "description": "Save the current arrangement of your own layers project as a finished picture in your library, composited at full quality from the original layer files. The project stays editable and you can flatten again.",
        "inputSchema": {
          "bytes": 132,
          "published": "HASH_ONLY",
          "sha256": "a6505984b00f03e63e5637557e7e6e3b8c01212017edb29bc634aefb1368a715"
        },
        "name": "flatten_layer_set",
        "title": "Save the layers as one picture"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Generate Audio"
        },
        "description": "Generate spoken audio from text: narration, a voiceover, a read-aloud script, or a multi-voice dialogue. Pass text (up to 3000 chars) \u2014 the words to be spoken. To speak in one of YOUR saved voices, pass voice with the voice NAME (or id): users speak plain language and never know ids, so resolve the ",
        "inputSchema": {
          "bytes": 2173,
          "published": "HASH_ONLY",
          "sha256": "a69ed3c36cf979b3cdd16de15ae1f0dc7a6d792f0f3e1cec1ca90a0c104b5401"
        },
        "name": "generate_audio",
        "title": "Generate Audio"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Generate Image"
        },
        "description": "Generate one or more Switch images with one of five models: GPT Image 2.5, Switch Pro, Switch Ultra, Nano Banana 2 or Switch Vintage. Nothing older is offered or accepted (no old Nano Banana Pro, no GPT Image 2, no Switch Model). Auto-routes by subject when model is omitted: GPT Image 2.5 by default",
        "inputSchema": {
          "bytes": 3916,
          "published": "HASH_ONLY",
          "sha256": "80ccded0f2029b3cbca8dc5031a06f80a0a0fb549422775372fac3cf67c2e41a"
        },
        "name": "generate_image",
        "title": "Generate Image"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Generate Sound"
        },
        "description": "Make a music bed or one short sound hit for an edit (the beat-and-hits editor workflow), with no voice and no words. kind \"bed\" gives an instrumental bed of about `seconds` (4 to 60, default 15) to run under the piece; kind \"hit\" gives one sub-second sound to place on every cut. Pass description in ",
        "inputSchema": {
          "bytes": 616,
          "published": "HASH_ONLY",
          "sha256": "92551f25cd4aff65c5e307cd371233c544d16e88f7e117bb3cba3fb0f849be38"
        },
        "name": "generate_sound",
        "title": "Generate Sound"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Generate Sound Effect"
        },
        "description": "Make one sound effect from plain words with the ElevenLabs sound-effects model: whooshes, impacts, chimes, clicks, risers, ambiences, foley, anything that is not music and not a voice. Describe the sound (what it is, its attack and tail, its material, its feel), optionally fix its length in seconds ",
        "inputSchema": {
          "bytes": 669,
          "published": "HASH_ONLY",
          "sha256": "41424676d887a41ca257fda2485efb2fe3c165f9c0c4168e8f66681956df0bb1"
        },
        "name": "generate_sound_effect",
        "title": "Generate Sound Effect"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Generate Video"
        },
        "description": "Generate Switch video across the real provider lineup (Kling, BytePlus Seedance, Switch Video/WAN 2.7, Switch Video Edit, Switch Cinema, Topaz upscale) and modes (text-to-video, image-to-video, frame-to-frame, motion, omni, reference-to-video, video-edit, upscale). Load load_video_workflow once per ",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "ac2ab14863ecc8ebf77a96945dfdba4f4949d79f71fa171e6d8506d4aef2e13c"
        },
        "name": "generate_video",
        "title": "Generate Video"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Check Audio Status"
        },
        "description": "Collect one of your finished audio takes. When generate_audio answers status \"rendering\" with a request_id (a longer line), call this with that request_id every 15 seconds until it returns status \"done\" with a playable audio_url, duration_seconds and generation_id. Also fetches any earlier take by i",
        "inputSchema": {
          "bytes": 269,
          "published": "HASH_ONLY",
          "sha256": "ef552cb6b437e5990110f7c43888d767e7085be5b84bf080cfd6f043b3ced8c8"
        },
        "name": "get_audio_status",
        "title": "Check Audio Status"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Get Depth Map Status"
        },
        "description": "Check one of your depth map renders started with create_depth_map. Pass the task_id it returned. While rendering it reports processing; when finished it returns depth_video_url, a download link for the grayscale motion reference video. If the render failed, it says so and confirms your tokens were r",
        "inputSchema": {
          "bytes": 141,
          "published": "HASH_ONLY",
          "sha256": "0dcab80d5b68535f158a50f0a0ccb8268b6e28a291902d5581f11ec7eaa0faaa"
        },
        "name": "get_depth_map_status",
        "title": "Get Depth Map Status"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Get Editor Project"
        },
        "description": "Inspect one of your persistent Switch Editor projects. Omit project_id for your latest project; include_payload=true returns its full editable state.",
        "inputSchema": {
          "bytes": 100,
          "published": "HASH_ONLY",
          "sha256": "9847ac99c58680816f978f8b3ba53a8b52ea4215e511ba3e5be1d9806a440a7e"
        },
        "name": "get_editor_project",
        "title": "Get Editor Project"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Get Editor Run"
        },
        "description": "Read progress, checks, exact approval quote, revision, and render result for one of your Switch Editor agent runs.",
        "inputSchema": {
          "bytes": 81,
          "published": "HASH_ONLY",
          "sha256": "9a58be1d8c48b88c8e74cd9a0f28dc04a362cb909eedb77ff899ad78ebf7af0e"
        },
        "name": "get_editor_run",
        "title": "Get Editor Run"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Open a layers project"
        },
        "description": "Open one of your own layers projects: every layer with its name, description, stacking order, whether it is showing, and where it sits on the picture. Use this before arranging layers so you know their ids.",
        "inputSchema": {
          "bytes": 161,
          "published": "HASH_ONLY",
          "sha256": "24bac9f0bc7210fd2aa8440685c48705b7dab0e62550d0e28803ab5b5970ba3c"
        },
        "name": "get_layer_set",
        "title": "Open a layers project"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Get Active References"
        },
        "description": "Read the user's staged references in Switch Studio. Returns TWO groups: (1) the image-generation reference strip (typed face/body/outfit/scenery/product slots) under `refs`, and (2) the VIDEO-tab references the user staged in the Omni/Image video tabs (the @Image1/@Image2 strip) under `videoReferenc",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "get_my_active_references",
        "title": "Get Active References"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Get Video Status"
        },
        "description": "Check the status of one of your video jobs by task_id (from generate_video) or job_id. Returns status, a viewable view_url when finished, or the error if it failed. Poll this every ~20s \u2014 do not loop rapidly.",
        "inputSchema": {
          "bytes": 182,
          "published": "HASH_ONLY",
          "sha256": "2bc97f87afebe37a65127994a8be393610571f70180db135dd725f5241276c17"
        },
        "name": "get_video_status",
        "title": "Get Video Status"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Get Analysis Report"
        },
        "description": "Fetch one of your finished Video Analysis reports by report_id (from analyze_video_report or list_vision_reports). Returns the complete structured report: overview scores and takeaways, the timeline of scenes, audio, visual, story, speech, the recreation section with every master prompt, and metadat",
        "inputSchema": {
          "bytes": 127,
          "published": "HASH_ONLY",
          "sha256": "0a109c1f25cb39797068e4fba84d4361a051571a914515dbf0fe1c98d6c0dad6"
        },
        "name": "get_vision_report",
        "title": "Get Analysis Report"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Lip Sync Video"
        },
        "description": "Lip-sync audio onto one of your videos. DEFAULT and recommended: action=\"create\" with video_url + sound_file (base64 data URI) \u2014 Sync Labs Sync 3 syncs the whole clip in one pass, no face step, no timing, highest quality. You do not need to pass engine at all. Kling flow, only when a line must land ",
        "inputSchema": {
          "bytes": 1853,
          "published": "HASH_ONLY",
          "sha256": "b8f9a40d4279ca24c5e879f3e36b0de02111cb443179a2617777ddb44a8fcd4b"
        },
        "name": "lip_sync_video",
        "title": "Lip Sync Video"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "List Editor Projects"
        },
        "description": "List your persistent Switch Editor projects, newest first, with media, scene, composition and render counts. Optional search matches the project name. Each project carries its own media and its saved chat history for every brain; the same project opens in the /editor page.",
        "inputSchema": {
          "bytes": 173,
          "published": "HASH_ONLY",
          "sha256": "f198d1143df7f178b63b378c0c626b5b65f4a580e6e90fa894418516bfada294"
        },
        "name": "list_editor_projects",
        "title": "List Editor Projects"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "List Editor Workflows"
        },
        "description": "List the named editor workflows your Switch Editor agent can run by id: for each, the one sentence a person types, what it needs, whether it quotes first, and how to run it on your project through run_editor_agent. Pass id to read one workflow in full with its steps, tools and gate. Free and read-on",
        "inputSchema": {
          "bytes": 332,
          "published": "HASH_ONLY",
          "sha256": "d7da6a83dd7d065a450a7d4859b85fb875689a7a6e663c1d516e9eef35249692"
        },
        "name": "list_editor_workflows",
        "title": "List Editor Workflows"
      },
      {
        "annotations": {
          "readOnlyHint": true,
          "title": "List Generations"
        },
        "description": "List your recent and active generation tasks. Returns counts per status (pending / running / completed / failed) plus an array of your tasks with id, status, prompts, model, ref counts, scheduledAt, finishedAt.",
        "inputSchema": {
          "bytes": 352,
          "published": "HASH_ONLY",
          "sha256": "f6a27a9c01600d40ca2bd88a37e27a747674de0fc19e587d26a8c1cce3c42adf"
        },
        "name": "list_generations",
        "title": "List Generations"
      },
      {
        "annotations": {
          "readOnlyHint": true,
          "title": "List Assets"
        },
        "description": "Return asset METADATA only (id, truncated prompt, model, created date), newest first. This does NOT display images and must NOT be used to show pictures \u2014 if the user says \"show me / display my last image(s)\", call show_media instead (it renders them; pass count=N for several). Use list_my_assets on",
        "inputSchema": {
          "bytes": 95,
          "published": "HASH_ONLY",
          "sha256": "0bca3dc27a122e0993e6a9baa25e09c92374ed4710bb7c4a83c6c2531bcae36c"
        },
        "name": "list_my_assets",
        "title": "List Assets"
      },
      {
        "annotations": {
          "readOnlyHint": true,
          "title": "List Audio Takes"
        },
        "description": "List your recent audio takes (voice lines, narration, dialogue) newest first, each with a playable audio_url, duration_seconds, the words spoken and its generation_id. Use it to find \"the take from earlier\" or \"the newest line\" without asking the user for ids. Optional search matches the words spoke",
        "inputSchema": {
          "bytes": 239,
          "published": "HASH_ONLY",
          "sha256": "23f205c6285a8416f24a14fc11315c3d96f3b8c05aa918601f0043cadb70fefe"
        },
        "name": "list_my_audio",
        "title": "List Audio Takes"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "List Folders"
        },
        "description": "List the folders in your Switch library (id, name, parent). Use this to find an existing folder before move_asset or create_folder.",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "list_my_folders",
        "title": "List Folders"
      },
      {
        "annotations": {
          "readOnlyHint": true,
          "title": "List Videos"
        },
        "description": "List your recent Switch videos, newest first \u2014 id, status, prompt, model, and a viewable view_url for finished clips. Use this to check whether videos finished and to let the user choose which one they want.",
        "inputSchema": {
          "bytes": 223,
          "published": "HASH_ONLY",
          "sha256": "5c5adb80c39194ed33cd842c2107215e082d9d80ee0850e4d1ffdef19253b8c1"
        },
        "name": "list_my_videos",
        "title": "List Videos"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Available Video Upscalers"
        },
        "description": "List the video upscalers you can run on your videos, their provider routes, supported controls, and release availability. Uses the same catalog as Video on desktop and mobile. Does not start a job or spend tokens.",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "list_upscalers",
        "title": "Available Video Upscalers"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "List Video Models"
        },
        "description": "List the video providers, models, and modes available to your Switch account, with each model's required inputs, allowed aspect ratios and durations, and a rough per-second cost. Use this when the selected model or its required inputs are unknown. Keep a known selected model; do not run model search",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "list_video_models",
        "title": "List Video Models"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "List Analysis Reports"
        },
        "description": "List your Video Analysis history, newest first: report_id, date, status, source kind, duration, engine, tokens charged, and each report's headline. Use it to find a past analysis, then pass its report_id to get_vision_report (full report) or video_to_prompt (just the recreation prompt).",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "list_vision_reports",
        "title": "List Analysis Reports"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Load Video Workflow"
        },
        "description": "Load once when starting production on your video and the workflow is not already known. Not needed for an ideas question. Loads the current MCP-only production rules, BytePlus Seedance routing policy, exact reference-chip preservation rules, simple-remix rules, conditional analysis and Depth Maps, e",
        "inputSchema": {
          "bytes": 200,
          "published": "HASH_ONLY",
          "sha256": "e920c7cf8536bf6b22a3b49d83f9957326e2940d148f4a2e9bdbe4afb71dd953"
        },
        "name": "load_video_workflow",
        "title": "Load Video Workflow"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Load Workflow Playbook"
        },
        "description": "Load one shared production playbook by id (ids come from load_video_workflow) and apply it to your production. A playbook is an anonymized record of how a real Switch production went: the shot list that worked, the reference rules, and the corrections that had to be made. Free, read-only.",
        "inputSchema": {
          "bytes": 282,
          "published": "HASH_ONLY",
          "sha256": "372d55bb279d51af3000c86642a0fd1d943f397b37a3d0e47766ce290861c236"
        },
        "name": "load_workflow_playbook",
        "title": "Load Workflow Playbook"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Get Video Price"
        },
        "description": "Get the current server price in Switch tokens before video generation. Uses the same billing calculator as submission and measures your stored reference clips. Pass one shot using the same model, mode, duration, resolution and references as generate_video. No creative prompt is required for a quote.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "6b476b53437729ba0990003dcc34264a9eb0384ba703eafd97561642c1c82fa6"
        },
        "name": "quote_video",
        "title": "Get Video Price"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Render Editor Project"
        },
        "description": "Render your current persistent Switch Editor project as an MP4 through the real HyperFrames render worker. Use get_editor_run to follow it to playback and download.",
        "inputSchema": {
          "bytes": 89,
          "published": "HASH_ONLY",
          "sha256": "9889170b64666d06ce9ba4f3c4e6ed966e20ece63b42c1cba91831521414ef67"
        },
        "name": "render_editor_project",
        "title": "Render Editor Project"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Run Editor Agent"
        },
        "description": "Tell your Switch Editor agent to build or revise the persistent editable project. It can author scenes, layers, variables, files, motion, and narration plans through the real HyperFrames project workspace. Pass workflow to run one of the eleven named editor workflows by id (proof-open, voice-narrati",
        "inputSchema": {
          "bytes": 527,
          "published": "HASH_ONLY",
          "sha256": "291a9b9f90e7b320f936a47f044b63beb926a60536fc75efcbeb2c0d6fe01b44"
        },
        "name": "run_editor_agent",
        "title": "Run Editor Agent"
      },
      {
        "annotations": {
          "readOnlyHint": true,
          "title": "Search Library"
        },
        "description": "Search your library by prompt substring (metadata only \u2014 id, prompt, date). Optional folderId scopes to one folder. Only your own assets are returned. This does NOT display images; to show/display results to the user, pass their ids to show_media.",
        "inputSchema": {
          "bytes": 163,
          "published": "HASH_ONLY",
          "sha256": "0a251d60d1d854e168543874ab7c507b39c0c8f74af2186299fba053d56cf068"
        },
        "name": "search_my_library",
        "title": "Search Library"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "readOnlyHint": false,
          "title": "Share Editor Project"
        },
        "description": "Share one of your Switch Editor projects with a team member by their Switch account email, stop sharing it, or list who has it. A shared project opens for them with its media, its chat history and its renders; they can edit, upload, run the editor brains and render. Only the owner can share or delet",
        "inputSchema": {
          "bytes": 258,
          "published": "HASH_ONLY",
          "sha256": "cc49464b958d475d815fa1ba01dde1de575b88c09a1f4b97773a8f53162d7901"
        },
        "name": "share_editor_project",
        "title": "Share Editor Project"
      },
      {
        "annotations": {
          "readOnlyHint": true,
          "title": "Show Generation"
        },
        "description": "Get the full detail of one of your generations by task id \u2014 prompts, model, ref counts, saved/failed counts, ETA hint, asset ids.",
        "inputSchema": {
          "bytes": 146,
          "published": "HASH_ONLY",
          "sha256": "dbc51818001fb1ba5a298f7d900d383bf5feb10648fdb84100d67fb0cca56181"
        },
        "name": "show_generation",
        "title": "Show Generation"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Show Media"
        },
        "description": "Display the user's images inline \u2014 one or many. Users speak plainly and will NOT know asset ids; never ask for one, resolve it yourself. For \"show me\" or \"show me my last image\" call with NO arguments (shows the most recent image). For \"show me my last 4 images / my last 10 pictures\" pass count=N (r",
        "inputSchema": {
          "bytes": 388,
          "published": "HASH_ONLY",
          "sha256": "fe28514cd597f8af5444cb0f46ad7efcb49f9ca88c109af358888c717b584b89"
        },
        "name": "show_media",
        "title": "Show Media"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Spend Log"
        },
        "description": "What your calls cost: every charge on this account over the last `hours` (default 24), newest first, each with what it was for, the model, the tokens it was worth, the tokens actually taken, and the dollar value at Switch retail; plus totals, the current token balance, and what a token is worth. Use",
        "inputSchema": {
          "bytes": 220,
          "published": "HASH_ONLY",
          "sha256": "0041619c23cd0d245f791a924f9dca67b143110fe91710f40a2e4e3849ea279b"
        },
        "name": "spend_log",
        "title": "Spend Log"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Separate an image into layers"
        },
        "description": "Separate one of your own Switch images into editable layers with Seedream 5.0 Pro: a base plus up to 16 transparent PNG layers, each named and placed. Say which image (asset_id, or \"my last image\"), optionally what to separate, and the size. Charged only for the layers that actually come back; a fai",
        "inputSchema": {
          "bytes": 463,
          "published": "HASH_ONLY",
          "sha256": "a131d3a34bc5b78edef1fa5d5fcfe70f143c050b4068cf72a20895a979c44107"
        },
        "name": "split_image_into_layers",
        "title": "Separate an image into layers"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Stitch Videos"
        },
        "description": "Stitch several of your Switch videos together into ONE video, played back-to-back in the order you give. Pass clip_asset_ids: an ORDERED list of your video ids (get them from list_my_videos) \u2014 the first id plays first. Optional orientation (landscape|portrait|square), fps, quality. Renders the combi",
        "inputSchema": {
          "bytes": 593,
          "published": "HASH_ONLY",
          "sha256": "441e0e563636013c20a21ad618e82777dbb4ffd12545f102c131fac1a852b183"
        },
        "name": "stitch_videos",
        "title": "Stitch Videos"
      },
      {
        "annotations": {
          "idempotentHint": true,
          "readOnlyHint": true,
          "title": "Suggest Speech Seconds"
        },
        "description": "How many seconds a video clip should be for a spoken line, so the words are never rushed or dragged. Give it the spoken text (or a word_count) and it returns a suggested duration for four delivery energies: slow and dramatic, natural, upbeat, and super charismatic talking-with-your-hands. Fewer seco",
        "inputSchema": {
          "bytes": 237,
          "published": "HASH_ONLY",
          "sha256": "4a85d2dd7e6f66afa099e033a456612f425f59d37ac36a222691be9d21f1abb0"
        },
        "name": "suggest_speech_seconds",
        "title": "Suggest Speech Seconds"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Sync3 Lip Sync Video"
        },
        "description": "Main SwitchApp lip-sync for your videos. Uses Sync Labs Sync 3 only \u2014 never Kling. Call action=\"create\" with video_url plus either sound_file (a base64 audio data URI) or audio_url; then call action=\"status\" with the returned task_id. Sync 3 processes the whole clip in one pass with occlusion-aware ",
        "inputSchema": {
          "bytes": 1718,
          "published": "HASH_ONLY",
          "sha256": "88de300b6af4e40eb3daafb9f884a1bbd8dd171697fde2e640ba4b97294cb923"
        },
        "name": "sync3_lip_sync_video",
        "title": "Sync3 Lip Sync Video"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Talking Avatar Video"
        },
        "description": "Turn a face photo into a lip-synced talking-head video that speaks your text (or your audio). Provide image_url (a clear face photo) and either script (text to speak, max 2500 characters) or audio_url. Optional voice_id / language / voice_settings. Renders in ~1-5 minutes (single call, returns the f",
        "inputSchema": {
          "bytes": 701,
          "published": "HASH_ONLY",
          "sha256": "729675d0dec4532dcc9f320473a4e5e3ffb93bb589fbf8608d3acea1b07f54c6"
        },
        "name": "talking_avatar_video",
        "title": "Talking Avatar Video"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "readOnlyHint": false,
          "title": "Arrange layers"
        },
        "description": "Arrange your own layers project: show or hide a layer, move or resize it (box as [left, top, right, bottom] in the base picture's pixels), change its stacking order, or reset it back to where the split put it. Saves immediately through the same checks the Switch workspace uses, so the app shows the ",
        "inputSchema": {
          "bytes": 781,
          "published": "HASH_ONLY",
          "sha256": "230edbf9327b078a62b000e7d3121e69cad2be5ceb94e0513ed93f9a08137736"
        },
        "name": "update_layer_set",
        "title": "Arrange layers"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Upload Editor Media"
        },
        "description": "Upload an image, video, or audio file directly into your real Switch Editor project. First call with presign=true, PUT the bytes to upload_url, then confirm_path in a second call; no browser file picker is needed.",
        "inputSchema": {
          "bytes": 383,
          "published": "HASH_ONLY",
          "sha256": "afb53bf51337a9f9e004dba00fa51b1899a6a9bfd053f3ec3a9c4e21489c7987"
        },
        "name": "upload_editor_media",
        "title": "Upload Editor Media"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Upload Media"
        },
        "description": "Upload one image into your Switch library in a single call. Pass `url` (any public https) OR `base64` + `mime`. Switch fetches/decodes it server-side, stores it, and returns a clean public URL plus the new asset id. This is THE way to use a photo the user attached in chat as a reference: pass the re",
        "inputSchema": {
          "bytes": 329,
          "published": "HASH_ONLY",
          "sha256": "2de376bec452ae5f93b9c84f726dde61572782db9ec3506888d6fa8022c1e06f"
        },
        "name": "upload_media",
        "title": "Upload Media"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "readOnlyHint": false,
          "title": "Upload Reference"
        },
        "description": "Upload an image, video, or audio reference into your Switch cloud and get an opaque asset_id (never a raw storage URL) to pass in reference fields. First inspect the asset and record what its actual chip controls. Preserve its thumbnail, media type, order, and role; uploading never authorizes replac",
        "inputSchema": {
          "bytes": 1652,
          "published": "HASH_ONLY",
          "sha256": "87a57a7e86da2a61d7fac30183e83202b08bb8ad296ebc9449c4f6c57ec8719f"
        },
        "name": "upload_reference_asset",
        "title": "Upload Reference"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Upscale Video"
        },
        "description": "Upscale and enhance one of YOUR videos (or a public https clip) with Topaz. Full control: scale 1 to 4 (1.5x works), optional target_fps 16 to 60 where the selected model supports it, and the Topaz model (Proteus default; Artemis, Nyx, Gaia and Starlight families available). Batch up to 10 clips per",
        "inputSchema": {
          "bytes": 2000,
          "published": "HASH_ONLY",
          "sha256": "b6c31781cab4c500108dc00a50846f360baaed13aff8b88ce925fcf407225a23"
        },
        "name": "upscale_video",
        "title": "Upscale Video"
      },
      {
        "annotations": {
          "readOnlyHint": true,
          "title": "Video To Prompt"
        },
        "description": "Turn one of your finished Video Analysis reports into ONE reusable generation prompt that recreates the source video's look, energy, pacing and mood, with a {your photo} placeholder where your own subject goes. Pass report_id (from analyze_video_report or list_vision_reports) or video_url (the exact",
        "inputSchema": {
          "bytes": 815,
          "published": "HASH_ONLY",
          "sha256": "b091e460cd8d0ed44febbca38f2c3b93d7851172c496bc1ca634b99b1ccfd1bf"
        },
        "name": "video_to_prompt",
        "title": "Video To Prompt"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "readOnlyHint": false,
          "title": "Manage Voices"
        },
        "description": "Your saved voices \u2014 one tool for the whole voice library. Users speak plain language and never know ids: resolve every voice by NAME yourself (call action \"list\" first if unsure) and never ask the user for an id. action=\"list\" returns every saved voice with voice_id, name, kind and ready \u2014 kind \"ref",
        "inputSchema": {
          "bytes": 1098,
          "published": "HASH_ONLY",
          "sha256": "50ae5847ced085b2c2584556fa2be3830d2ddc1736bc80b19b42c764c04097ba"
        },
        "name": "voice",
        "title": "Manage Voices"
      }
    ],
    "version": "1.0.0"
  },
  "status_history": [
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-17T12:59:51Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-16T12:04:10Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-15T10:57:01Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-14T09:49:11Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-13T08:39:25Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-12T07:32:29Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-11T06:32:45Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-10T05:23:45Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-09T04:23:52Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-08T03:24:37Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": true,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "b2d165fcbca8aa4e1869429694f87542cba1407019630890596f348b22db5c97",
      "observed_at_utc": "2026-10-07T02:17:54Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "d65f6e32153537d5eaf05b4ade2f1a97322c293a534f81c401a975579015260c",
      "observed_at_utc": "2026-10-06T01:11:23Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "ba6b6738e788229b5416d3ad8ae7daaee2ddc4f5266dc9fbebc1658ff13e5bd1",
      "observed_at_utc": "2026-10-05T00:13:18Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "08189c91d08a1fd4119fb55a98115c7021a2f9a25c7dbf9132b4026bcd9b4463",
      "observed_at_utc": "2026-10-03T23:11:26Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "449657cc35f306c294d4cbe2c3793aa9d39ad399f14608d72830373f4065c158",
      "observed_at_utc": "2026-10-02T22:15:51Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "42036e9b841b229c1764242a368a053b8278f7c39d1f3e48ba28fab80127f634",
      "observed_at_utc": "2026-10-01T21:10:17Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "47832720e2fc5bd8d7b778bdadaf4a01ab43b4465bef72a69b9479b20e60349e",
      "observed_at_utc": "2026-09-30T07:53:17Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "c1822d5cce0c11e6e73dc369452a92de1e4e2169ae69c5496579231be2679972",
      "observed_at_utc": "2026-09-29T06:05:57Z",
      "protocol_version": "2025-06-18"
    }
  ],
  "target": {
    "corrections_route": "https://www.gaipagents.com/v1/free/observatory/corrections",
    "first_seen_at_utc": "2026-09-29T02:55:24Z",
    "kind": "MCP_REMOTE",
    "last_observed_at_utc": "2026-10-17T12:59:51Z",
    "locator": "https://mcp.switchapp.ai/mcp",
    "name": "ai.switchapp/switch",
    "source": "official-mcp-registry",
    "target_id": "obs_e36f6cedc656f3dbb1e8a509"
  }
}