{
  "automatic_evidence_credit": false,
  "captures": [],
  "change_log": [
    {
      "after_hash": "9a4b7555e17047a8093533e38aacc4c81266f875897332e1b42e2d5dcd521167",
      "before_hash": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "version minor",
            "kind": "VERSION_MINOR",
            "path": "version",
            "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": "db3551ffb1b779acd300538ed3f956d888fcf4b7ddfc13c75033980cc42e52f9",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-21T15:58:09Z",
      "previous_entry_sha256": "9e6da9509666076746ba57977cb1cb4e955047df0f07af1e7b4987b011dece32",
      "receipt_id": "e350b46e-f121-5420-8bc1-2936f527b1ee",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/e350b46e-f121-5420-8bc1-2936f527b1ee",
      "sequence": 41438,
      "target_id": "obs_95fe4c8f190397a5dcf334c4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.percher.app/mcp"
    },
    {
      "after_hash": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "before_hash": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "version minor",
            "kind": "VERSION_MINOR",
            "path": "version",
            "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": "722ea55f5a4672cfc09940cd45d5e0843b4b5203c6b4f2e237c2fe6d3ce15614",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-13T01:38:47Z",
      "previous_entry_sha256": "12e05f08310920b1a537ef242a90c9628ee84856eee4ebe4bdfbffd88ca948d8",
      "receipt_id": "ff87b888-3a88-5a72-ba7a-dc7962b6a969",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/ff87b888-3a88-5a72-ba7a-dc7962b6a969",
      "sequence": 27842,
      "target_id": "obs_95fe4c8f190397a5dcf334c4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.percher.app/mcp"
    },
    {
      "after_hash": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "before_hash": "88df69a4981313ba7fc51e7962cca43a5f438a3e144555ac8a886781cfec7045",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "version patch",
            "kind": "VERSION_PATCH",
            "path": "version",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "f29b013e7e7b55cf6612df102b755d2aafc469abd620a490d999d6fdc98fc1fe",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-05T14:59:20Z",
      "previous_entry_sha256": "35f297aebf73c766bd0bd32c6594701e1ae3c8cffb5257b0d70d4e3953fedb82",
      "receipt_id": "8d534bad-d34d-5137-bd6e-d7207ccf35c4",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/8d534bad-d34d-5137-bd6e-d7207ccf35c4",
      "sequence": 17045,
      "target_id": "obs_95fe4c8f190397a5dcf334c4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://mcp.percher.app/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-21T15:58:09Z",
    "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": null,
    "dependency_domains": [],
    "last_observed_at_utc": "2026-10-21T15:58:09Z",
    "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": "app.percher",
      "source_kind": "registry_namespace_domain"
    },
    "rules_version": "gaip.data-appetite-rules.v1",
    "schema_version": "gaip.declared-derivations.v1"
  },
  "latest": {
    "baseline_at_utc": "2026-09-29T10:51:54Z",
    "manifest_sha256": "9a4b7555e17047a8093533e38aacc4c81266f875897332e1b42e2d5dcd521167",
    "observed_at_utc": "2026-10-21T15:58:09Z"
  },
  "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": [],
    "line": null,
    "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": [],
    "weeks_with_silent_changes": 0
  },
  "snapshot": {
    "description": "MCP-native hosting: publish and operate AI-built web apps live at name.percher.run.",
    "name": "app.percher/percher",
    "parts": [
      "registry_server_json"
    ],
    "protocol": "MCP",
    "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.percher.app/mcp"
      }
    ],
    "scopes": [],
    "title": "Percher",
    "version": "1.2.0"
  },
  "status_history": [
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "9a4b7555e17047a8093533e38aacc4c81266f875897332e1b42e2d5dcd521167",
      "observed_at_utc": "2026-10-21T15:58:09Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "observed_at_utc": "2026-10-20T13:14:11Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "observed_at_utc": "2026-10-19T11:44:02Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "observed_at_utc": "2026-10-18T09:59:02Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "observed_at_utc": "2026-10-17T08:34:53Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "observed_at_utc": "2026-10-16T06:20:58Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "observed_at_utc": "2026-10-15T04:44:14Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "observed_at_utc": "2026-10-14T03:08:53Z",
      "protocol_version": null
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "6e5a418001b2f060facf352a091d48c39ae78eb34974689843f5839c2306c4c4",
      "observed_at_utc": "2026-10-13T01:38:47Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "observed_at_utc": "2026-10-12T00:12:50Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "observed_at_utc": "2026-10-10T22:47:19Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "observed_at_utc": "2026-10-09T21:17:05Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "observed_at_utc": "2026-10-08T19:50:05Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "observed_at_utc": "2026-10-07T18:13:24Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "observed_at_utc": "2026-10-06T16:35:29Z",
      "protocol_version": null
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "d4e27286543e9a2c2f7e30173e114e6fdcd0ef08f344456ca87e62277cc1eac5",
      "observed_at_utc": "2026-10-05T14:59:20Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "88df69a4981313ba7fc51e7962cca43a5f438a3e144555ac8a886781cfec7045",
      "observed_at_utc": "2026-10-04T12:48:20Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "88df69a4981313ba7fc51e7962cca43a5f438a3e144555ac8a886781cfec7045",
      "observed_at_utc": "2026-10-03T11:22:09Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "88df69a4981313ba7fc51e7962cca43a5f438a3e144555ac8a886781cfec7045",
      "observed_at_utc": "2026-10-02T08:31:59Z",
      "protocol_version": null
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "88df69a4981313ba7fc51e7962cca43a5f438a3e144555ac8a886781cfec7045",
      "observed_at_utc": "2026-09-30T19:40:06Z",
      "protocol_version": null
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json"
      ],
      "manifest_sha256": "88df69a4981313ba7fc51e7962cca43a5f438a3e144555ac8a886781cfec7045",
      "observed_at_utc": "2026-09-29T10:51:54Z",
      "protocol_version": null
    }
  ],
  "target": {
    "corrections_route": "https://www.gaipagents.com/v1/free/observatory/corrections",
    "first_seen_at_utc": "2026-09-29T05:01:53Z",
    "kind": "MCP_REMOTE",
    "last_observed_at_utc": "2026-10-21T15:58:09Z",
    "locator": "https://mcp.percher.app/mcp",
    "name": "app.percher/percher",
    "source": "official-mcp-registry",
    "target_id": "obs_95fe4c8f190397a5dcf334c4"
  }
}