{
  "automatic_evidence_credit": false,
  "captures": [],
  "change_log": [
    {
      "after_hash": "ce52d9d99e01dd76d23901acba8a3d0e6d57b2d44d062626916e9f4e01bd661c",
      "before_hash": "5fe69f6cb0d8e0146180d4819cac2151e57a76e6a8e1a374fdcbe274c365dbdf",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[delete_log]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[update_goals]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[update_reminders]",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 3
        },
        "taxonomy_version": "1.0.0",
        "total": 3,
        "truncated": false
      },
      "entry_sha256": "c03a6a69f4205561af2f370d124a8b7d601459c5cec728ded4a63fb56f1cc1b3",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-11-09T07:42:12Z",
      "previous_entry_sha256": "9115dc6408058021726767233167d8541cb8ef69241d029b38c8c875fae2ebc9",
      "receipt_id": "c77eb742-1de1-5552-8d6c-14d6f19aca65",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/c77eb742-1de1-5552-8d6c-14d6f19aca65",
      "sequence": 76654,
      "target_id": "obs_422bf675b088c3327d9305bc",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.trywhatevr.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-11-09T07:42:12Z",
    "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": {
        "free_text_large": {
          "fields": 1,
          "tools": 1
        }
      },
      "fields_read": 59,
      "observed_at_utc": "2026-11-09T07:42:12Z",
      "tools_read": 12
    },
    "dependency_domains": [],
    "last_observed_at_utc": "2026-11-09T07:42:12Z",
    "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.trywhatevr",
      "source_kind": "registry_namespace_domain"
    },
    "rules_version": "gaip.data-appetite-rules.v1",
    "schema_version": "gaip.declared-derivations.v1"
  },
  "latest": {
    "baseline_at_utc": "2026-10-26T08:20:00Z",
    "manifest_sha256": "ce52d9d99e01dd76d23901acba8a3d0e6d57b2d44d062626916e9f4e01bd661c",
    "observed_at_utc": "2026-11-09T07:42:12Z"
  },
  "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": [
      "tools_added"
    ],
    "line": "In the last 30 days its declared tools or interface changed with no declared version change in 1 week: 2026-W46 (2026-11-09); kinds: 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-11-09"
        ],
        "kinds": [
          "tools_added"
        ],
        "week": "2026-W46"
      }
    ],
    "weeks_with_silent_changes": 1
  },
  "snapshot": {
    "capabilities": [
      "tools"
    ],
    "description": "Log meals and read calories and macros from any AI assistant. Pairs with the whatevr iPhone app.",
    "name": "app.trywhatevr/whatevr",
    "parts": [
      "registry_server_json",
      "mcp_initialize_tools_list"
    ],
    "protocol": "MCP",
    "protocolVersion": "2025-06-18",
    "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://api.trywhatevr.app/mcp"
      }
    ],
    "scopes": [],
    "serverInfo": {
      "name": "whatevr",
      "version": "1.0.0"
    },
    "title": "whatevr",
    "tools": [
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete a logged entry"
        },
        "description": "Delete ONE entry from the user's log: a food, exercise, weigh-in or water entry. Read get_today/get_day first \u2014 each item in `recent` carries its `id` and `type`; pass both. Deleting a weigh-in updates their current weight to the newest remaining one. This can't be undone, so confirm with the user f",
        "inputSchema": {
          "bytes": 271,
          "published": "HASH_ONLY",
          "sha256": "56c58d07c2109f5dcbed5927cb5278f188a87d0e0f147b9e67c573c3834c187b"
        },
        "name": "delete_log",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "A specific day's log"
        },
        "description": "Everything logged on a specific day, INCLUDING each food item's name and nutrition (same shape as get_today). Use this to answer \u201cwhat did I eat yesterday / on <date>\u201d. Each `recent` item's `id` works with update_log to correct mistakes.",
        "inputSchema": {
          "bytes": 139,
          "published": "HASH_ONLY",
          "sha256": "7e97b62c046971006fe0119c1dd9915306ab803382ba7459ce988cf754ba5d8e"
        },
        "name": "get_day",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Profile & targets"
        },
        "description": "Who the user is: name/handle/email, health profile, calorie/macro targets, and derived metrics.",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "get_me",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Progress & trends"
        },
        "description": "Daily calorie/macro/exercise TOTALS over time + the weight trend (no food item names \u2014 use get_day for what was actually eaten).",
        "inputSchema": {
          "bytes": 477,
          "published": "HASH_ONLY",
          "sha256": "646e0e3f3478fb500c0299fb9a766baffdf02eeef2143d29c2403be7f587d774"
        },
        "name": "get_progress",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Today's log & totals"
        },
        "description": "Today's complete picture: calorie/macro totals vs targets, water, streak, exercises, and the item-by-item food log (`recent`: every logged item's name, calories, macros, ingredients). Each `recent` item's `id` works with update_log to correct mistakes.",
        "inputSchema": {
          "bytes": 274,
          "published": "HASH_ONLY",
          "sha256": "154002520a75595a6f4c8faa8dd1d4739f62305222710a47516812835590f0b3"
        },
        "name": "get_today",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Log by describing it"
        },
        "description": "Log food, drinks, water, exercise, or a weigh-in from one natural-language sentence \u2014 the same parser as the app's voice logging. Examples: 'two eggs and toast', '30 minute run', '3 glasses of water', 'weighed 184 this morning'. Spoken dates like 'yesterday I had pizza' work. Describe the FOOD, not ",
        "inputSchema": {
          "bytes": 509,
          "published": "HASH_ONLY",
          "sha256": "9343e030c8210e8937154cfcff0f982173027cc61f69e8b1a5ad350a225c36d9"
        },
        "name": "log_anything",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Log exercise"
        },
        "description": "Log structured exercise with a known calorie burn. For an ESTIMATED burn from plain text, use log_anything ('30 minute run').",
        "inputSchema": {
          "bytes": 651,
          "published": "HASH_ONLY",
          "sha256": "1525cbf45be09ab96652ede48a0f898ea3de79389aa4ab0f2fb7aee3b95c1e75"
        },
        "name": "log_exercise",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Log water"
        },
        "description": "Log water \u2014 glasses (8 fl oz each) or an exact amount_fl_oz. Defaults to 1 glass.",
        "inputSchema": {
          "bytes": 577,
          "published": "HASH_ONLY",
          "sha256": "81a8e8ec7e35d4784501fd7739d9eb4d792dc61d4894d60c196a4a48e07b73aa"
        },
        "name": "log_water",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Log a weigh-in"
        },
        "description": "Log a weigh-in in pounds. The newest reading also becomes the user's current weight (drives their calorie targets).",
        "inputSchema": {
          "bytes": 510,
          "published": "HASH_ONLY",
          "sha256": "9cb15158e603e861d1b8404c1a947819d0b4aca2e7d0da94995f67b4d85cc56e"
        },
        "name": "log_weight",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Change goals & targets"
        },
        "description": "Change the user's goal and daily targets \u2014 the same settings as the app's Goals screen. Send ONLY the fields to change. Each target takes a number (a custom target) or \"auto\" (computed from their body, activity and goal). The server keeps calories and macros consistent (protein\u00d74 + carbs\u00d74 + fat\u00d79 \u2248",
        "inputSchema": {
          "bytes": 1212,
          "published": "HASH_ONLY",
          "sha256": "7843b4cccc793fac58dff3758bef83d2e2b4fb83f9d0114aa853c51aea5f0c35"
        },
        "name": "update_goals",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Fix a logged item"
        },
        "description": "Correct an existing FOOD log: title, nutrition numbers, the ingredient list, meal, or time-of-day. Read get_today/get_day first \u2014 each item in `recent` (type \"food\") carries the `id` to pass here. Send ONLY the fields to change; values are absolute for the item as logged. Two modes, never mixed: sen",
        "inputSchema": {
          "bytes": 1527,
          "published": "HASH_ONLY",
          "sha256": "41d629d75d0126004c8cd0f1dc2ce10f8e68634e2457b631b29857db6f6aabae"
        },
        "name": "update_log",
        "title": null
      },
      {
        "annotations": {
          "destructiveHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Turn reminders on or off"
        },
        "description": "Turn the user's daily reminders on or off: the evening 'nothing logged today' nudge and the streak reminder. Same as the app's Notifications screen. Needs the user's \"Change goals & settings\" switch for this connection. The user is notified of the change.",
        "inputSchema": {
          "bytes": 264,
          "published": "HASH_ONLY",
          "sha256": "ebba188467afb03c587332712c53e8e344fbb7fd7eaf6a6b4c35d77228a9a631"
        },
        "name": "update_reminders",
        "title": null
      }
    ],
    "version": "1.0.2"
  },
  "status_history": [
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "ce52d9d99e01dd76d23901acba8a3d0e6d57b2d44d062626916e9f4e01bd661c",
      "observed_at_utc": "2026-11-09T07:42:12Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5fe69f6cb0d8e0146180d4819cac2151e57a76e6a8e1a374fdcbe274c365dbdf",
      "observed_at_utc": "2026-10-26T08:20:00Z",
      "protocol_version": "2025-06-18"
    }
  ],
  "target": {
    "corrections_route": "https://www.gaipagents.com/v1/free/observatory/corrections",
    "first_seen_at_utc": "2026-10-26T06:37:55Z",
    "kind": "MCP_REMOTE",
    "last_observed_at_utc": "2026-11-09T07:42:12Z",
    "locator": "https://api.trywhatevr.app/mcp",
    "name": "app.trywhatevr/whatevr",
    "source": "official-mcp-registry",
    "target_id": "obs_422bf675b088c3327d9305bc"
  }
}