{
  "automatic_evidence_credit": false,
  "captures": [],
  "change_log": [
    {
      "after_hash": "1ffb4f3712abf4b552d94ef34886e7ed9b95ff2a8741ac631509ae22ad28afd0",
      "before_hash": "5304153542441bac2ef09e22b40d34145a6cf8e2993af28ce1cd37d03c863958",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[search_stock_audio]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[create_social_post].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[create_social_post].inputSchema.properties[license]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[generate_image].inputSchema.properties[google_search]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[generate_image].inputSchema.properties[image_search]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[list_models].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[search_stock_images].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[search_stock_images].inputSchema.properties[transparent]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[upscale_video].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 4,
          "NON_BREAKING": 5
        },
        "taxonomy_version": "1.0.0",
        "total": 9,
        "truncated": false
      },
      "entry_sha256": "440abdb65526ff972cf0f4099121dbce284476326dcb25c48f4a9d13a051da94",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-12T00:42:50Z",
      "previous_entry_sha256": "f010083c2eb9ca019c9799ed68f254b90f3301e92abff7ca95f2644da49e33d1",
      "receipt_id": "cc4c2710-b6b7-549d-91a1-c15a384ed0a1",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/cc4c2710-b6b7-549d-91a1-c15a384ed0a1",
      "sequence": 25617,
      "target_id": "obs_986f8e950c95d0591fa4f623",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.budgetpixel.com/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-12T00:42:50Z",
    "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": {
        "file_upload": {
          "fields": 2,
          "tools": 2
        },
        "free_text_large": {
          "fields": 9,
          "tools": 6
        }
      },
      "fields_read": 90,
      "observed_at_utc": "2026-10-12T00:42:50Z",
      "tools_read": 16
    },
    "dependency_domains": [
      {
        "domain": "github.com",
        "roles": [
          "repository"
        ]
      }
    ],
    "last_observed_at_utc": "2026-10-12T00:42:50Z",
    "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": "com.budgetpixel",
      "source_kind": "registry_namespace_domain"
    },
    "rules_version": "gaip.data-appetite-rules.v1",
    "schema_version": "gaip.declared-derivations.v1"
  },
  "latest": {
    "baseline_at_utc": "2026-10-05T01:13:18Z",
    "manifest_sha256": "1ffb4f3712abf4b552d94ef34886e7ed9b95ff2a8741ac631509ae22ad28afd0",
    "observed_at_utc": "2026-10-12T00:42:50Z"
  },
  "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": [
      "input_or_output_format_changed",
      "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-W42 (2026-10-12); kinds: input or output schema 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-12"
        ],
        "kinds": [
          "input_or_output_format_changed",
          "tool_descriptions_reworded",
          "tools_added"
        ],
        "week": "2026-W42"
      }
    ],
    "weeks_with_silent_changes": 1
  },
  "snapshot": {
    "capabilities": [
      "resources",
      "tools"
    ],
    "description": "Generate AI images, video, music, and sound effects, and upscale them, from any MCP client.",
    "name": "com.budgetpixel/mcp",
    "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.budgetpixel.com/mcp"
      }
    ],
    "scopes": [],
    "serverInfo": {
      "name": "budgetpixel",
      "version": "0.1.0"
    },
    "title": null,
    "tools": [
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true
        },
        "description": "Use this after calling generate_image, generate_video, generate_music, or generate_sound_effect to poll for results. Pass a job_id to check a specific job \u2014 numeric = image, uuid = video, and for MUSIC / SOUND-EFFECT jobs also pass type \"music\" / \"sound_effect\" (their ids are numeric too) \u2014 with no ",
        "inputSchema": {
          "bytes": 638,
          "published": "HASH_ONLY",
          "sha256": "03bb03395f0f5dcbfc1b084921d689b828cc33f768ca66c0b9ab05d247f70447"
        },
        "name": "check_generation_status",
        "title": "Check Generation Status"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": true,
          "readOnlyHint": false
        },
        "description": "Publish a post to the user's PUBLIC BudgetPixel community feed \u2014 visible to everyone and labeled \"via MCP\". ONLY use this when the user EXPLICITLY asks to post/share/publish; never post proactively. Costs 10 credits per post (anti-spam, charged on publish \u2014 same as the developer API) with an hourly ",
        "inputSchema": {
          "bytes": 2307,
          "published": "HASH_ONLY",
          "sha256": "f99ac3f288dab7303daa6b4df59c60086a4c5867e9957215400dee5106957542"
        },
        "name": "create_social_post",
        "title": "Post to BudgetPixel Feed"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": true,
          "readOnlyHint": false
        },
        "description": "Use this to create or edit an AI image. Text-to-image from a prompt, OR image-to-image / editing / multi-reference by passing input_images (URLs, data URIs, or base64) \u2014 e.g. edit or restyle an image the user just generated by passing its URL. Input support is per-model: some take 1 image, some seve",
        "inputSchema": {
          "bytes": 4312,
          "published": "HASH_ONLY",
          "sha256": "8dfbf48b9eb6547515f0b9868e13eaa38de20d6b7e2b194e925a3df866ca6045"
        },
        "name": "generate_image",
        "title": "Generate Image"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": true,
          "readOnlyHint": false
        },
        "description": "Use this to create an AI music track (full songs with vocals, or instrumentals). Three models: music-3.0 (default, 200 credits \u2014 songs from a prompt and/or lyrics, lyrics optimizer on by default so a prompt alone works), mureka-v9 (60 credits \u2014 sings the user's EXACT lyrics verbatim, or instrumental",
        "inputSchema": {
          "bytes": 2594,
          "published": "HASH_ONLY",
          "sha256": "7e2fd6808095daa59e7c2fdfbf9e8cefc1e6931bc032b69c0eb8c2d7d14691b1"
        },
        "name": "generate_music",
        "title": "Generate Music"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": true,
          "readOnlyHint": false
        },
        "description": "Use this to create sound effects (NOT music). TEXT mode: describe the sound \u2014 Foley, ambience, UI sounds, whooshes/transitions, impacts, action sounds \u2014 with sonilo-sfx: 1\u2013180 seconds, mp3 or wav, PRICED PER SECOND of the requested duration (5 credits/s, 3-second minimum \u2192 5 s = 25, 10 s = 50, 30 s ",
        "inputSchema": {
          "bytes": 1306,
          "published": "HASH_ONLY",
          "sha256": "ac77c496675e613c57ed9c88ba365a0cacee4968822fa80e080235e76d0969e1"
        },
        "name": "generate_sound_effect",
        "title": "Generate Sound Effect"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": true,
          "readOnlyHint": false
        },
        "description": "Use this to create or edit an AI video. Text-to-video from a prompt; image-to-video by passing image (start frame, + optional end_image); reference-to-video by passing reference_images; or video-to-video editing by passing video (an input video URL \u2014 upload local files with upload_media first). IMPO",
        "inputSchema": {
          "bytes": 4389,
          "published": "HASH_ONLY",
          "sha256": "ebd03cc4b39b0830a8d89d51921c5b480db2e83e9a45de454ac0397dec08052b"
        },
        "name": "generate_video",
        "title": "Generate Video"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true
        },
        "description": "Use this when the user asks about their remaining credits, subscription plan, or usage. Returns monthly credit balance, extra credits, total available, and plan name.",
        "inputSchema": {
          "bytes": 62,
          "published": "HASH_ONLY",
          "sha256": "99334726611ccf58a148b0814696bfa6fe08c1b2d027e946beccf5a74331c9aa"
        },
        "name": "get_credit_balance",
        "title": "Get Credit Balance"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true
        },
        "description": "Get the user's recent generations made through this connector or the developer API \u2014 images by default, or pass type \"video\", \"music\", or \"sound_effect\". Outputs are kept for about 24 hours (they are never saved to the user's asset storage unless save_to_assets is called), so rows older than that sh",
        "inputSchema": {
          "bytes": 438,
          "published": "HASH_ONLY",
          "sha256": "5e42172029ac164c82050cb92ef75f174ec6863e7c40e51d227ae2384547c701"
        },
        "name": "get_generation_history",
        "title": "Get Generation History"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true
        },
        "description": "List the AI image, video, music, and sound-effect models available on BudgetPixel with standard credit prices and capabilities. Featured models come first with a one-line role hint (when to pick each). Image models that charge by output size list every size's price (the size you pass as resolution s",
        "inputSchema": {
          "bytes": 62,
          "published": "HASH_ONLY",
          "sha256": "99334726611ccf58a148b0814696bfa6fe08c1b2d027e946beccf5a74331c9aa"
        },
        "name": "list_models",
        "title": "List Models"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true
        },
        "description": "List the live clan themes the user can post to \u2014 themes of the clans they own, moderate, or have joined (each with the user's role, the theme's brief, and when entries close). Use it when the user wants to post into a theme / enter a theme / share to their clan, then pass the chosen theme's id as cr",
        "inputSchema": {
          "bytes": 62,
          "published": "HASH_ONLY",
          "sha256": "99334726611ccf58a148b0814696bfa6fe08c1b2d027e946beccf5a74331c9aa"
        },
        "name": "list_my_themes",
        "title": "List My Themes"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false
        },
        "description": "Keep a generation permanently. Outputs made through this connector expire about 24 hours after generation and are NOT stored in the user's BudgetPixel assets by default. Call this when the user wants to keep, reuse later, or find a result in their gallery / workshops \u2014 it copies the output into thei",
        "inputSchema": {
          "bytes": 616,
          "published": "HASH_ONLY",
          "sha256": "8d73ef0f15313e4a07eb272c64f7621cc48be87bc6e7c3413913da252b6e0657"
        },
        "name": "save_to_assets",
        "title": "Save to Assets"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": false,
          "readOnlyHint": false
        },
        "description": "Use this when the user needs an existing sound effect or a piece of background music \u2014 for a video, podcast, stream, game, app or presentation \u2014 rather than a newly generated one. Searches BudgetPixel's free audio library, licensed CC BY 4.0 for commercial use, every item listened to and scored befo",
        "inputSchema": {
          "bytes": 1747,
          "published": "HASH_ONLY",
          "sha256": "0c63df6d63c77d663d0b83f17e72824374c4dd839fad66a2c0c4771eabd946cf"
        },
        "name": "search_stock_audio",
        "title": "Search Stock Sound Effects & Music"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": false,
          "readOnlyHint": false
        },
        "description": "Use this when the user needs an existing stock photo, illustration, background, wallpaper or texture \u2014 for a website, slide, blog post, app, video or design \u2014 rather than a newly generated image. Searches BudgetPixel's stock image library: AI-generated images, each reviewed before listing (no real p",
        "inputSchema": {
          "bytes": 1840,
          "published": "HASH_ONLY",
          "sha256": "811366e141a3403f62bd0ce698f03e3a9bd99012b242b5b9c1d7a0662b04286c"
        },
        "name": "search_stock_images",
        "title": "Search Stock Images"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": false
        },
        "description": "Upload a local image, video, or audio file to BudgetPixel and get back a short-lived URL (valid ~24h) to use as a generation input: pass it as an input_images value on generate_image, or as image / end_image / reference_images / video / audio on generate_video. Use this when the user has a LOCAL fil",
        "inputSchema": {
          "bytes": 323,
          "published": "HASH_ONLY",
          "sha256": "ef34d2df5d0a61f6360287d70e4c02167f58d59cdc89184cd66d682d775a9a9e"
        },
        "name": "upload_media",
        "title": "Upload Media"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": true,
          "readOnlyHint": false
        },
        "description": "Use this to upscale an image to a higher resolution. Default model p-image-upscale (Pruna AI) returns results in seconds and is priced by the target resolution: 4 MP = 10, 8 MP = 15, 16 MP = 30, 32 MP = 60 credits. Alternative clarity-upscaler does creative detail enhancement (steer with prompt/crea",
        "inputSchema": {
          "bytes": 1201,
          "published": "HASH_ONLY",
          "sha256": "8d06517d795389e0aee3a83d63ec9b2a19730c10117afa0f1e16fa5b65497711"
        },
        "name": "upscale_image",
        "title": "Upscale Image"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": true,
          "readOnlyHint": false
        },
        "description": "Use this to upscale a video to 1080p or 4K (30 or 60 fps) with Topaz video upscaling. Priced per second of the INPUT video: 1080p = 15 (30fps) / 30 (60fps) credits/s, 4K = 60 / 120 credits/s \u2014 so a 10s clip to 1080p30 costs 150 credits; confirm cost with the user for 4K. Input up to 20 seconds (pass",
        "inputSchema": {
          "bytes": 715,
          "published": "HASH_ONLY",
          "sha256": "db7415552a296af7f26d240a68f0ba4dbc5a5835301ec791c0c3c396ad8c9af1"
        },
        "name": "upscale_video",
        "title": "Upscale Video"
      }
    ],
    "version": "1.0.0"
  },
  "status_history": [
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "1ffb4f3712abf4b552d94ef34886e7ed9b95ff2a8741ac631509ae22ad28afd0",
      "observed_at_utc": "2026-10-12T00:42:50Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5304153542441bac2ef09e22b40d34145a6cf8e2993af28ce1cd37d03c863958",
      "observed_at_utc": "2026-10-05T01:13:18Z",
      "protocol_version": "2025-11-25"
    }
  ],
  "target": {
    "corrections_route": "https://www.gaipagents.com/v1/free/observatory/corrections",
    "first_seen_at_utc": "2026-10-04T19:47:56Z",
    "kind": "MCP_REMOTE",
    "last_observed_at_utc": "2026-10-12T00:42:50Z",
    "locator": "https://mcp.budgetpixel.com/mcp",
    "name": "com.budgetpixel/mcp",
    "source": "official-mcp-registry",
    "target_id": "obs_986f8e950c95d0591fa4f623"
  }
}