{
  "automatic_evidence_credit": false,
  "captures": [],
  "change_log": [
    {
      "after_hash": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
      "before_hash": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "Declared provider, version, model, operator or AI self-disclosure changed",
            "kind": "DECLARED_INGREDIENTS_CHANGED",
            "path": "$.declared_ingredients_changed",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": null,
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "4933c6882e82dfa83503ed1a7eb2ec034adce291069e3e593765d08930828ce5",
      "evidence_class": "FACT_CHANGE",
      "labels": [
        "DECLARED_INGREDIENTS_CHANGED"
      ],
      "observed_at_utc": "2026-10-13T02:08:47Z",
      "previous_entry_sha256": "c35428ecab416e628ddf185c021cab7c771317e0aa6a568fafee96f0fd987450",
      "receipt_id": null,
      "receipt_url": null,
      "sequence": 27874,
      "target_id": "obs_269c429102c899578802a2d4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://analyticslegends.ai/mcp"
    },
    {
      "after_hash": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
      "before_hash": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[find_opportunities].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "version patch",
            "kind": "VERSION_PATCH",
            "path": "version",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 2,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 2,
        "truncated": false
      },
      "entry_sha256": "c35428ecab416e628ddf185c021cab7c771317e0aa6a568fafee96f0fd987450",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-13T02:08:47Z",
      "previous_entry_sha256": "88235b10fef6ad72e70cf8b5a7579b192fa86fef5321a4202bc232f72ffaa0c6",
      "receipt_id": "b696551f-1caa-5b03-9937-9660c0b9ac90",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/b696551f-1caa-5b03-9937-9660c0b9ac90",
      "sequence": 27873,
      "target_id": "obs_269c429102c899578802a2d4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://analyticslegends.ai/mcp"
    },
    {
      "after_hash": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "before_hash": "ca5ae7ee03e7887e8ea10a30334fa7f3c5f60aee8ee92c10c266e7814ac7c3be",
      "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": "10a1d78d2721f8e30181c122d456ffed37bef34ba9c2c7d5038b9be0becd80bc",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-05T16:29:20Z",
      "previous_entry_sha256": "83388528c1851f02a7de285903fce4ca33faf364c241c0b1fc6b3b956357b4ae",
      "receipt_id": "f01d924a-f613-548f-86a5-a789de2193d2",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/f01d924a-f613-548f-86a5-a789de2193d2",
      "sequence": 17308,
      "target_id": "obs_269c429102c899578802a2d4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://analyticslegends.ai/mcp"
    },
    {
      "after_hash": "ca5ae7ee03e7887e8ea10a30334fa7f3c5f60aee8ee92c10c266e7814ac7c3be",
      "before_hash": "e45b9bae7b30957a790ae1221438db57d177085826fa7a33c92b6eaa088ed544",
      "diff": {
        "changes": [
          {
            "compatibility_class": "BREAKING",
            "fact": "input enum value removed",
            "kind": "INPUT_ENUM_VALUE_REMOVED",
            "path": "tools[find_partner_candidates].inputSchema.properties[kind].enum",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 1,
          "INFO": 0,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "a50ef67a730928560839faada0e4d986506f90807cf6ae10023b460f18018b97",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-03T13:38:48Z",
      "previous_entry_sha256": "129e03778a935a40efeb5a4bf126d209720f8a7fe0d43745b384419956aa8e05",
      "receipt_id": "31834c49-e599-5968-aa80-a6117d4e304f",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/31834c49-e599-5968-aa80-a6117d4e304f",
      "sequence": 8538,
      "target_id": "obs_269c429102c899578802a2d4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://analyticslegends.ai/mcp"
    },
    {
      "after_hash": "e45b9bae7b30957a790ae1221438db57d177085826fa7a33c92b6eaa088ed544",
      "before_hash": "71c58396ecd7594963f9ce76623a978e774d30486c9a60a5008a4ce4190ab9dc",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[find_sap_clients].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_expansion_brief].description",
            "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": 2,
          "NON_BREAKING": 1
        },
        "taxonomy_version": "1.0.0",
        "total": 3,
        "truncated": false
      },
      "entry_sha256": "4c1efad460b7b9443d72aa80e4d3ff80fd4fad0a9a5a450d5ada88068badef24",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-02T12:18:49Z",
      "previous_entry_sha256": "b0f67237881b4e283fa17cd68e0a25165c4cf0193375dc4f9c53a9152fa9f100",
      "receipt_id": "5689c8c0-d0af-5909-b374-98179e820739",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/5689c8c0-d0af-5909-b374-98179e820739",
      "sequence": 5170,
      "target_id": "obs_269c429102c899578802a2d4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://analyticslegends.ai/mcp"
    },
    {
      "after_hash": "71c58396ecd7594963f9ce76623a978e774d30486c9a60a5008a4ce4190ab9dc",
      "before_hash": "01c5c7db6e80416322c089c8c0175c1eb9d70215fcd95063115b0601e12695c5",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[find_partner_candidates]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_expansion_brief]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[count_firms_by].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[count_firms_by].inputSchema.properties[region]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input enum value added",
            "kind": "INPUT_ENUM_VALUE_ADDED",
            "path": "tools[count_firms_by].inputSchema.properties[by].enum",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_firm].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[search_firms].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input field added",
            "kind": "INPUT_FIELD_ADDED",
            "path": "tools[search_firms].inputSchema.properties[region]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "version patch",
            "kind": "VERSION_PATCH",
            "path": "version",
            "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": "42c773ce7231e85bb3e08a6710c53859fbc6f2334640f1efd3a408a736a92ed7",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-09-30T23:38:03Z",
      "previous_entry_sha256": "f43f1efa9b5805614c412ebfac8a857189a1dd4ff6b637f76a2b3b7c79eddea5",
      "receipt_id": "96573ed9-42d7-5b64-81a9-f3fbc989f66b",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/96573ed9-42d7-5b64-81a9-f3fbc989f66b",
      "sequence": 105,
      "target_id": "obs_269c429102c899578802a2d4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://analyticslegends.ai/mcp"
    },
    {
      "after_hash": "01c5c7db6e80416322c089c8c0175c1eb9d70215fcd95063115b0601e12695c5",
      "before_hash": "c51acc8da6f4df73dcd729cc14b72c74fb7a1d605e5ced32ad9d591e6b162ef4",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_day_rate_benchmark].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[search_concepts].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[search_firms].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[search_news].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 4,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 4,
        "truncated": false
      },
      "entry_sha256": "500a5852f15d110cd5a30bdd18801b658ef8a14cc3213f5c81c7c257542071e3",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-09-29T13:36:07Z",
      "previous_entry_sha256": "8883f5f5c34ccf8167ece5b1ed43d6577a310d72cef650f2b756ba35d9ea64e5",
      "receipt_id": "0c60f52e-4c6a-566b-a76f-f614104e41fc",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/0c60f52e-4c6a-566b-a76f-f614104e41fc",
      "sequence": 2,
      "target_id": "obs_269c429102c899578802a2d4",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://analyticslegends.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-17T09:04:53Z",
    "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": {},
      "fields_read": 87,
      "observed_at_utc": "2026-10-17T09:04:53Z",
      "tools_read": 22
    },
    "dependency_domains": [
      {
        "domain": "github.com",
        "roles": [
          "repository"
        ]
      }
    ],
    "last_observed_at_utc": "2026-10-17T09:04:53Z",
    "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.analyticslegends",
      "source_kind": "registry_namespace_domain"
    },
    "rules_version": "gaip.data-appetite-rules.v1",
    "schema_version": "gaip.declared-derivations.v1"
  },
  "latest": {
    "baseline_at_utc": "2026-09-28T08:16:51Z",
    "manifest_sha256": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
    "observed_at_utc": "2026-10-17T09:04:53Z"
  },
  "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": {
    "capabilities": [
      "completions",
      "prompts",
      "resources",
      "tools"
    ],
    "description": "AI agent for SAP analytics: firms, day rates, contract radar, news, concepts, studies",
    "name": "ai.analyticslegends/sap-analytics",
    "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://analyticslegends.ai/mcp"
      }
    ],
    "scopes": [],
    "serverInfo": {
      "name": "analytics-legends",
      "version": "1.0.9"
    },
    "title": "Analytics Legends \u2014 SAP Analytics Intelligence",
    "tools": [
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Count the firm directory by country, region, kind, module or SAP signal"
        },
        "description": "Answer a COUNTING question about the published firm directory in one call: how many organisations per country, per REGION (the six-value geography), per kind, per declared SAP module, or per SAP signal band \u2014 with the same `country`/`kind`/`module`/`query` filters `search_firms` takes, so you can co",
        "inputSchema": {
          "bytes": 1457,
          "published": "HASH_ONLY",
          "sha256": "88c5ec18a60de1b13c0806b53c45b39e33e13ed22530ca8a9456aabfe773b485"
        },
        "name": "count_firms_by",
        "title": "Count the firm directory by country, region, kind, module or SAP signal"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Search the Academy training catalogue"
        },
        "description": "Search the Analytics Legends Academy \u2014 the written training modules on SAP Datasphere, Business Data Cloud, SAP Analytics Cloud, BW/4HANA and Databricks \u2014 by track, level and free text. `_meta.tranche_total_row_count` carries the live catalogue size on every call; it is the only count to quote. Retu",
        "inputSchema": {
          "bytes": 1215,
          "published": "HASH_ONLY",
          "sha256": "f8a1290c5752297e2f9d03b9069750652963a5f3e94f9e6208668c75a3699bfe"
        },
        "name": "find_academy_modules",
        "title": "Search the Academy training catalogue"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Search the public SAP AI & analytics contract radar"
        },
        "description": "Search every SAP contract and permanent-role posting Analytics Legends publishes to an ANONYMOUS visitor. Only the SITE RADAR leg below is the population a human browses on /opportunities/, where each of its postings has its own prerendered page; the PROMOTED leg is served to agents only \u2014 it is not",
        "inputSchema": {
          "bytes": 4183,
          "published": "HASH_ONLY",
          "sha256": "2a3c5fd958c4f0893cde245aa5b5d0120fb098a404fcc538e050e07144d3b34c"
        },
        "name": "find_opportunities",
        "title": "Search the public SAP AI & analytics contract radar"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Local partner or acquisition candidates for a market entry (Legend tier)"
        },
        "description": "Rank the LOCAL service providers of a target country or region \u2014 the firms a practice partners with, subcontracts to, or acquires to enter a market. `local_only` (default true) keeps firms with NO sister entity in another country (read from the brand-family key of the SSOT): a subsidiary of a global",
        "inputSchema": {
          "bytes": 1691,
          "published": "HASH_ONLY",
          "sha256": "7eb9d524781136648b0e15cb4a2e6b8a79be8944e48afbedb973014aef9a74b8"
        },
        "name": "find_partner_candidates",
        "title": "Local partner or acquisition candidates for a market entry (Legend tier)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Search the SAP end-customer corpus (Legend tier)"
        },
        "description": "Search the SAP END-CUSTOMER corpus \u2014 the companies that RUN SAP, not the firms that sell services (those are search_firms). This is the paid Legend+ dataset locked away from the public surface on 2026-07-08; it requires a subscriber API key, Legend tier or above. Verification status is SERVED, never",
        "inputSchema": {
          "bytes": 1185,
          "published": "HASH_ONLY",
          "sha256": "523d215d9e63388d2b1609093e65c79fdf760a79c4701dc3a00a5ac2e26a4f22"
        },
        "name": "find_sap_clients",
        "title": "Search the SAP end-customer corpus (Legend tier)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Read an Academy module (Consultant tier)"
        },
        "description": "Read one Academy training module in full \u2014 body, learning objectives and summary, EN, FR and DE \u2014 the written course corpus the \u20ac29.90 Consultant Pass sells. On THIS endpoint the machine-access subscription is the MCP Pass (\u20ac39.90/month, analyticslegends.ai/pricing/), which opens the ENTIRE paid tra",
        "inputSchema": {
          "bytes": 227,
          "published": "HASH_ONLY",
          "sha256": "8d841887585c3957acda7fa6d3b40b832132725b813ba759e5166efdfc36d565"
        },
        "name": "get_academy_module",
        "title": "Read an Academy module (Consultant tier)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Concept metadata and editor's summary (public)"
        },
        "description": "Fetch one concept entry by slug: title, category, level, tags and the editor's summary. Written by a named human editor, not generated. `level` is GRADED on every active row since 2026-09-18 (the CHECK constraint accepted only the legacy vocabulary OR NULL, so the loader wrote NULL rather than fail;",
        "inputSchema": {
          "bytes": 157,
          "published": "HASH_ONLY",
          "sha256": "8e68609781a90433d77ae9924311c30a365b4b2f1f4eab19aef30bd96a7b02b7"
        },
        "name": "get_concept",
        "title": "Concept metadata and editor's summary (public)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Full concept card (Consultant tier)"
        },
        "description": "The FULL encyclopaedia card for one concept \u2014 body, cheat sheet, glossary, pro tip, and the four analysis tables (decision table, peer comparison, named pitfalls, performance facts), EN, FR and DE, plus why-it-matters and key points (those two are also published free on the concept page; here they c",
        "inputSchema": {
          "bytes": 179,
          "published": "HASH_ONLY",
          "sha256": "9f4e08bdfe58eba65e66fbef59b230c6efa27a3f48688db8fad9d53a6da00da4"
        },
        "name": "get_concept_card",
        "title": "Full concept card (Consultant tier)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": true,
          "title": "Public SAP AI & analytics day-rate aggregate"
        },
        "description": "The PUBLIC day-rate aggregate for SAP AI & analytics freelance work: min/max daily rate by country, specialisation and seniority \u2014 `daily_rate_min` / `daily_rate_max` (plus `daily_rate_median`, `daily_rate_p10`, `daily_rate_p90` when the source publishes them), every amount in the row's own `currenc",
        "inputSchema": {
          "bytes": 1082,
          "published": "HASH_ONLY",
          "sha256": "21dec71ccbcff3e835c92c807d0e86b7960385822558c18ddc82722c746f3e91"
        },
        "name": "get_day_rate_benchmark",
        "title": "Public SAP AI & analytics day-rate aggregate"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Expansion brief for a target region (Legend tier)"
        },
        "description": "The one-call brief a services practice reads before opening a subsidiary in another region: providers already there (by kind and by country, and how many are LOCAL entities versus members of multi-region groups), SAP end-customers there (by country and by industry \u2014 counts from the Legend corpus, ne",
        "inputSchema": {
          "bytes": 571,
          "published": "HASH_ONLY",
          "sha256": "0bfa83b925de60c1d56b3e40112c0c59c7a00d677433c643fc82637bbedae2c4"
        },
        "name": "get_expansion_brief",
        "title": "Expansion brief for a target region (Legend tier)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get one firm's published profile"
        },
        "description": "Fetch one organisation from the published directory by its database slug (`rows[].slug` from search_firms, verbatim). Returns the same public fields plus `partnerships_declared`, the count of partnerships this directory records for the firm \u2014 0 on ~77 % of rows (re-measured 2026-09-30 on the publish",
        "inputSchema": {
          "bytes": 879,
          "published": "HASH_ONLY",
          "sha256": "c56b00175a936d333f25c339c904274a4338e945cdfb45343c9eb01e0ec1c697"
        },
        "name": "get_firm",
        "title": "Get one firm's published profile"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Firm intelligence profile (Legend tier)"
        },
        "description": "The paid intelligence profile of a services firm \u2014 SAP practice size and partner level, delivery flags per product, typical day rate and seniority, notable clients, analytics practice summary, and a LinkedIn company URL (present on ~71% of the corpus, re-measured 2026-09-05 on 9,104 profiles \u2014 it re",
        "inputSchema": {
          "bytes": 1442,
          "published": "HASH_ONLY",
          "sha256": "154a7a5c4f3f1597e8b1594dd3b8492760e3e23a898b9f7649ae14643fdc534d"
        },
        "name": "get_firm_intel",
        "title": "Firm intelligence profile (Legend tier)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "One SAP end-customer profile (Legend tier)"
        },
        "description": "The full profile of one SAP end-customer \u2014 SAP footprint (products in use, modules known), analytics solutions, identity and evidence fields. Requires a subscriber API key, Legend tier or above. `id` comes verbatim from find_sap_clients.rows[].id.",
        "inputSchema": {
          "bytes": 188,
          "published": "HASH_ONLY",
          "sha256": "497439b408a783d03d1442f5e5064ff9b7edc8041059756c653a2080776d231f"
        },
        "name": "get_sap_client_profile",
        "title": "One SAP end-customer profile (Legend tier)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Read a study (Consultant tier)"
        },
        "description": "Read one Analytics Legends study BODY \u2014 the paid text behind list_studies' metadata. Requires a subscriber API key, Consultant tier or above. Bodies run to 38k words and exceed the 256 KiB response ceiling, so this tool serves STRUCTURE first: called without `section` it returns the section list and",
        "inputSchema": {
          "bytes": 462,
          "published": "HASH_ONLY",
          "sha256": "bdb6e1290c15a3690e7d2715da7b0aac340c66f4f1567af972a0d5b21453ead5"
        },
        "name": "get_study",
        "title": "Read a study (Consultant tier)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List firm kinds with live counts"
        },
        "description": "Breakdown of the published firm directory by organisation kind, with a live row count per kind. Use this before search_firms to know what the population actually is instead of guessing.",
        "inputSchema": {
          "bytes": 62,
          "published": "HASH_ONLY",
          "sha256": "99334726611ccf58a148b0814696bfa6fe08c1b2d027e946beccf5a74331c9aa"
        },
        "name": "list_firm_kinds",
        "title": "List firm kinds with live counts"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List the CV/profile platforms a consultant can sign up on"
        },
        "description": "The subset of the published directory where a consultant can CREATE A PROFILE \u2014 freelance marketplaces, job boards with candidate profiles, talent platforms and expert networks \u2014 each with its signup URL, an editorial confidence grade and the date it was assessed. This answers the entering-contracto",
        "inputSchema": {
          "bytes": 783,
          "published": "HASH_ONLY",
          "sha256": "37e46009a2487d6b3ddb54a29f0d10c2f27aced32cd28ad381366548c2225e03"
        },
        "name": "list_freelance_platforms",
        "title": "List the CV/profile platforms a consultant can sign up on"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "SAP AI & analytics module taxonomy"
        },
        "description": "The canonical SAP module/product taxonomy Analytics Legends classifies against (codes and EN/FR labels by category). Use it to normalise a user's loose product wording \u2014 'SAC', 'Analytics Cloud', 'Datasphere' \u2014 onto the codes the other tools filter on.",
        "inputSchema": {
          "bytes": 646,
          "published": "HASH_ONLY",
          "sha256": "38c620ec9f5e2f5c849d0f15eb4b5066a7f572791856fcbdecb7ac56aa4d3197"
        },
        "name": "list_sap_modules",
        "title": "SAP AI & analytics module taxonomy"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List the deep-research studies (metadata only)"
        },
        "description": "List the Analytics Legends deep-research studies with their edition, as-of date, audience, word count and canonical URL. METADATA ONLY: study bodies are a paid Consultant-tier deliverable, served by `get_study` on this same endpoint with a subscriber key. Use this to tell a reader that a study exist",
        "inputSchema": {
          "bytes": 1037,
          "published": "HASH_ONLY",
          "sha256": "ecbd83a31ce7e4e173865c88f9151265b9d6de20cdc95d8caa2576bd15128ffd"
        },
        "name": "list_studies",
        "title": "List the deep-research studies (metadata only)"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Traverse the learning knowledge graph"
        },
        "description": "The RELATIONS between the platform's teaching objects \u2014 which Academy module teaches which concept, which study covers which module, what a concept relates to. THIS IS THE ONLY TOOL ON THIS SERVER THAT SERVES EDGES; the others serve rows. Ask it what connects to what, not what exists. SCOPE, AND IT ",
        "inputSchema": {
          "bytes": 1979,
          "published": "HASH_ONLY",
          "sha256": "d91a7dd9c33ae260d75df778073a24a0e3c1d2e565369b34eae9a137550533ec"
        },
        "name": "query_knowledge_graph",
        "title": "Traverse the learning knowledge graph"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Search the SAP AI & analytics concept encyclopaedia"
        },
        "description": "Search the SAP AI & analytics concept encyclopaedia \u2014 the vocabulary of the stack, written for practitioners. Returns slug, title, category, level, tags and the editor's summary. `level` is GRADED on every active row since 2026-09-18 (the CHECK constraint accepted only the legacy vocabulary OR NULL,",
        "inputSchema": {
          "bytes": 1209,
          "published": "HASH_ONLY",
          "sha256": "ac571f0dd56b5a08e3fedf33d60d317a5756273765da831f4a521044a729e6b4"
        },
        "name": "search_concepts",
        "title": "Search the SAP AI & analytics concept encyclopaedia"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Search the SAP AI & analytics firm directory"
        },
        "description": "Search the published Analytics Legends directory of SAP AI & analytics service providers \u2014 placement agencies, Big-4 and ESN practices, SAP vendors, platforms and community groups \u2014 by country, region (EMEA \u00b7 AMER \u00b7 LATAM \u00b7 APAC \u00b7 AFRICA), kind, declared SAP module and free text. Returns name, HQ co",
        "inputSchema": {
          "bytes": 2255,
          "published": "HASH_ONLY",
          "sha256": "fec1f98812ee23ce3bb38185757769028aa704843dc98a647f0b90d00ee15d59"
        },
        "name": "search_firms",
        "title": "Search the SAP AI & analytics firm directory"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Search SAP AI & analytics market news"
        },
        "description": "Search the Analytics Legends market-news corpus. It is watched FOR SAP AI & analytics (Datasphere, Business Data Cloud, SAC, BW/4HANA, Databricks, the 2027/2030 maintenance window), but it is NOT an all-SAP corpus: measured 2026-07-30, ~84 % of active rows sit in the `AI` category and are general en",
        "inputSchema": {
          "bytes": 1961,
          "published": "HASH_ONLY",
          "sha256": "78bd845ace38c0752cc6f4367e9acdad262d49628366a23297b1d84038f56ba7"
        },
        "name": "search_news",
        "title": "Search SAP AI & analytics market news"
      }
    ],
    "version": "1.0.9"
  },
  "status_history": [
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
      "observed_at_utc": "2026-10-17T09:04:53Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
      "observed_at_utc": "2026-10-16T07:35:58Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
      "observed_at_utc": "2026-10-15T06:14:15Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
      "observed_at_utc": "2026-10-14T04:47:34Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "0b201bc912934e4792100e1a46860d683ac3e63f19195fb91509c12c198ef037",
      "observed_at_utc": "2026-10-13T02:08:47Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "observed_at_utc": "2026-10-12T00:42:50Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "observed_at_utc": "2026-10-10T23:17:18Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "observed_at_utc": "2026-10-09T21:54:53Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "observed_at_utc": "2026-10-08T20:35:05Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "observed_at_utc": "2026-10-07T19:13:24Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "observed_at_utc": "2026-10-06T17:50:29Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "89642b4acfd412292c166a40df1e7dda611a0bf4bcb32fbd9514cf4e4ee0cdd3",
      "observed_at_utc": "2026-10-05T16:29:20Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "ca5ae7ee03e7887e8ea10a30334fa7f3c5f60aee8ee92c10c266e7814ac7c3be",
      "observed_at_utc": "2026-10-04T15:00:10Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "ca5ae7ee03e7887e8ea10a30334fa7f3c5f60aee8ee92c10c266e7814ac7c3be",
      "observed_at_utc": "2026-10-03T13:38:48Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "e45b9bae7b30957a790ae1221438db57d177085826fa7a33c92b6eaa088ed544",
      "observed_at_utc": "2026-10-02T12:18:49Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "71c58396ecd7594963f9ce76623a978e774d30486c9a60a5008a4ce4190ab9dc",
      "observed_at_utc": "2026-09-30T23:38:03Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "01c5c7db6e80416322c089c8c0175c1eb9d70215fcd95063115b0601e12695c5",
      "observed_at_utc": "2026-09-29T13:36:07Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "c51acc8da6f4df73dcd729cc14b72c74fb7a1d605e5ced32ad9d591e6b162ef4",
      "observed_at_utc": "2026-09-28T08:16:51Z",
      "protocol_version": "2025-06-18"
    }
  ],
  "target": {
    "corrections_route": "https://www.gaipagents.com/v1/free/observatory/corrections",
    "first_seen_at_utc": "2026-09-28T08:16:51Z",
    "kind": "MCP_REMOTE",
    "last_observed_at_utc": "2026-10-17T09:04:53Z",
    "locator": "https://analyticslegends.ai/mcp",
    "name": "ai.analyticslegends/sap-analytics",
    "source": "official-mcp-registry",
    "target_id": "obs_269c429102c899578802a2d4"
  }
}