{"apiVersion":"v1","directorySlug":"analyticslegends-mcp-c3fce4dd5d","title":"Analytics Legends","description":"Your SAP Analytics & AI agent — verified missions, target companies, market signals and learning assets in one daily workflow.","pageUrl":"https://www.mcpbundles.com/skills/analyticslegends-mcp-c3fce4dd5d","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://analyticslegends.ai/mcp","hostedMcpUrl":null,"toolCount":20,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"ai.analyticslegends/analyticslegends-mcp-c3fce4dd5d","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"search_firms","description":"Search the published Analytics Legends directory of SAP analytics service providers — placement agencies, Big-4 and ESN practices, SAP vendors, platforms and community groups — by country, kind, declared SAP module and free text. Returns name, HQ country/city, website, careers URL and a one-line editorial claim. SAP END-CUSTOMER companies are NOT in this directory: they are a separate paid dataset, excluded here by the `is_client` FLAG — not by the `client_enterprise` kind code. The two are diff","inputSchema":{"type":"object","properties":{"kind":{"enum":["agency_placement","professional_services_big4","professional_services_esn","vendor_sap","vendor_partner","platform_marketplace","community_group","training_institution","client_enterprise","other"],"type":"string"},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":200},"cursor":{"type":"string","maxLength":512},"module":{"type":"string"},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"additionalProperties":false},"title":"Search the SAP analytics firm directory","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_firms","displayName":"Search the SAP analytics firm directory"},{"name":"count_firms_by","description":"Answer a COUNTING question about the published firm directory in one call: how many organisations per country, per kind, per declared SAP module, or per SAP signal band — with the same `country`/`kind`/`module`/`query` filters `search_firms` takes, so you can count a slice as easily as the whole. Use this instead of paging `search_firms` and tallying rows: the directory holds thousands of organisations, and reading them all to produce a table of counts costs hundreds of calls and megabytes of ro","inputSchema":{"type":"object","required":["by"],"properties":{"by":{"enum":["country","kind","module","sap_signal_band"],"type":"string"},"kind":{"type":"string"},"query":{"type":"string","maxLength":200},"module":{"type":"string"},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"additionalProperties":false},"title":"Count the firm directory by country, kind, module or SAP signal","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"count_firms_by","displayName":"Count the firm directory by country, kind, module or SAP signal"},{"name":"get_firm","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 — 0 on ~97 % of rows (re-measured 2026-08-14 on the published tranche: 96,8 %), meaning none declared here, never that the firm has no partners. Does not return the paid firm-intelligence profile, contacts, or any person.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"}},"additionalProperties":false},"title":"Get one firm's published profile","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_firm","displayName":"Get one firm's published profile"},{"name":"list_firm_kinds","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":{"type":"object","properties":{},"additionalProperties":false},"title":"List firm kinds with live counts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_firm_kinds","displayName":"List firm kinds with live counts"},{"name":"list_freelance_platforms","description":"The subset of the published directory where a consultant can CREATE A PROFILE — freelance marketplaces, job boards with candidate profiles, talent platforms and expert networks — each with its signup URL, an editorial confidence grade and the date it was assessed. This answers the entering-contractor's first practical question ('where do I register?') in one call. Everything here is also in search_firms — this tool adds the platform fields and the filter, never a wider population. `signup_url` i","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"cursor":{"type":"string","maxLength":512},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"platform_type":{"type":"string"}},"additionalProperties":false},"title":"List the CV/profile platforms a consultant can sign up on","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_freelance_platforms","displayName":"List the CV/profile platforms a consultant can sign up on"},{"name":"find_opportunities","description":"Search every SAP contract and permanent-role posting Analytics Legends publishes to an ANONYMOUS visitor — the same population a human browses on /opportunities/, where each posting has its own prerendered page. It merges the platform's TWO public legs, which are near-disjoint (measured 2026-07-30: 1 row in common): (a) the PROMOTED feed (`public.public_opportunities`) — general SAP work (FI/CO, SD, EWM, MDG, BTP, ABAP), all German cities, dated (posted_at is populated on EVERY active row of tha","inputSchema":{"type":"object","properties":{"lang":{"type":"string","pattern":"^[A-Za-z]{2}$"},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":200},"cursor":{"type":"string","maxLength":512},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"location":{"type":"string"},"remote_mode":{"type":"string"},"employment_type":{"enum":["freelance","contract","permanent"],"type":"string"}},"additionalProperties":false},"title":"Search the public SAP analytics contract radar","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_opportunities","displayName":"Search the public SAP analytics contract radar"},{"name":"search_news","description":"Search the Analytics Legends market-news corpus. It is watched FOR SAP 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 enterprise-AI trade press (cloud platforms, model releases, funding rounds) with no SAP content at all. An UNFILTERED call therefore returns mostly non-SAP items — pass `query` or `category` when the questio","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":200},"cursor":{"type":"string","maxLength":512},"category":{"type":"string"},"published_since":{"type":"string"},"published_until":{"type":"string"}},"additionalProperties":false},"title":"Search SAP analytics market news","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_news","displayName":"Search SAP analytics market news"},{"name":"search_concepts","description":"Search the SAP analytics concept encyclopaedia — 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, so the loader wrote NULL rather than fail; 108 of 330 were blank). A null, if one ever returns, means 'not graded', never 'Beginner'. These are the same fields `get_concept` returns for ONE slug. The card","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":200},"cursor":{"type":"string","maxLength":512},"category":{"type":"string"}},"additionalProperties":false},"title":"Search the SAP analytics concept encyclopaedia","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_concepts","displayName":"Search the SAP analytics concept encyclopaedia"},{"name":"get_concept","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; 108 of 330 were blank). A null, if one ever returns, means 'not graded', never 'Beginner'. The card body, cheat sheet, glossary, pro tip and the four analysis tables are subscriber content and are NO","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"}},"additionalProperties":false},"title":"Concept metadata and editor's summary (public)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_concept","displayName":"Concept metadata and editor's summary (public)"},{"name":"list_studies","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 exists and where to read it. ONE ROW IS ONE LANGUAGE EDITION, NOT ONE STUDY: each study is published in every language it has been translated into, so `_meta.tranche_total_row_count` counts editions and `_","inputSchema":{"type":"object","properties":{"lang":{"type":"string","pattern":"^[A-Za-z]{2}$"},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":200},"cursor":{"type":"string","maxLength":512}},"additionalProperties":false},"title":"List the deep-research studies (metadata only)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_studies","displayName":"List the deep-research studies (metadata only)"},{"name":"get_day_rate_benchmark","description":"The PUBLIC day-rate aggregate for SAP analytics freelance work: min/max daily rate by country, specialisation and seniority — `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 `currency` — with source, source date, confidence and the sample the source states. This is the free aggregate published at analyticslegends.ai/api/market-rates.json, and it is SMALL — a few dozen rows at most, ev","inputSchema":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"seniority":{"type":"string"},"specialisation":{"type":"string"}},"additionalProperties":false},"title":"Public SAP analytics day-rate aggregate","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_day_rate_benchmark","displayName":"Public SAP analytics day-rate aggregate"},{"name":"list_sap_modules","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 — 'SAC', 'Analytics Cloud', 'Datasphere' — onto the codes the other tools filter on.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":200},"cursor":{"type":"string","maxLength":512}},"additionalProperties":false},"title":"SAP analytics module taxonomy","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_sap_modules","displayName":"SAP analytics module taxonomy"},{"name":"find_academy_modules","description":"Search the Analytics Legends Academy — the written training modules on SAP Datasphere, Business Data Cloud, SAP Analytics Cloud, BW/4HANA and Databricks — 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. Returns the catalogue entry: id, slug, EN/FR title, track, level, duration in minutes, tags and the editor's summary. DO NOT CONFUSE IT WITH `list_sap_modules`, which serves a different population under t","inputSchema":{"type":"object","properties":{"level":{"type":"string"},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":200},"track":{"type":"string"},"cursor":{"type":"string","maxLength":512}},"additionalProperties":false},"title":"Search the Academy training catalogue","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_academy_modules","displayName":"Search the Academy training catalogue"},{"name":"query_knowledge_graph","description":"The RELATIONS between the platform's teaching objects — 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 IS NARROWER THAN 'the knowledge graph': it carries four node types — `concept`, `module`, `study`, `vendor` — and every edge whose BOTH endpoints are one of them. The whole graph holds twelve node typ","inputSchema":{"type":"object","properties":{"lang":{"type":"string","pattern":"^[A-Za-z]{2}$"},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string"},"cursor":{"type":"string","maxLength":512},"node_id":{"type":"string"},"direction":{"enum":["from","to","both"],"type":"string"},"edge_type":{"type":"string"},"node_type":{"type":"string"}},"additionalProperties":false},"title":"Traverse the learning knowledge graph","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"query_knowledge_graph","displayName":"Traverse the learning knowledge graph"},{"name":"get_concept_card","description":"The FULL encyclopaedia card for one concept — 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 come structured, in three languages, in the same payload) — the corpus the €29.90 Consultant Pass sells. On THIS endpoint the machine-access subscription is the MCP Pass (€39.90/month, analyticslegends","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"}},"additionalProperties":false},"title":"Full concept card (Consultant tier)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_concept_card","displayName":"Full concept card (Consultant tier)"},{"name":"get_study","description":"Read one Analytics Legends study BODY — 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 the introduction; pass `section` (a heading from that list, matched case-insensitively) to read one section. Find slugs and languages with list_studies.","inputSchema":{"type":"object","required":["slug"],"properties":{"lang":{"type":"string","default":"en","pattern":"^[A-Za-z]{2}$"},"slug":{"type":"string"},"section":{"type":"string","maxLength":200}},"additionalProperties":false},"title":"Read a study (Consultant tier)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_study","displayName":"Read a study (Consultant tier)"},{"name":"get_academy_module","description":"Read one Academy training module in full — body, learning objectives and summary, EN, FR and DE — the written course corpus the €29.90 Consultant Pass sells. On THIS endpoint the machine-access subscription is the MCP Pass (€39.90/month, analyticslegends.ai/pricing/), which opens the ENTIRE paid tranche from one key; the €29.90 Consultant Pass is its web-subscriber equivalent and opens the same tier floor here. Requires a subscriber API key (Authorization: Bearer alk_…), Consultant tier or above","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}},"additionalProperties":false},"title":"Read an Academy module (Consultant tier)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_academy_module","displayName":"Read an Academy module (Consultant tier)"},{"name":"find_sap_clients","description":"Search the SAP END-CUSTOMER corpus — 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 silently filtered: `sap_client_verification_status` and `status` are columns on every row ('verified' on ~550 of ~21k rows), and you decide what standard of proof your answer needs. `product` filters","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":200},"cursor":{"type":"string","maxLength":512},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"product":{"enum":["datasphere","bdc","sac","bw","bw4hana","s4hana","ecc","hana","joule","businessobjects","bpc","successfactors","ariba","concur"],"type":"string"},"industry":{"type":"string","maxLength":200}},"additionalProperties":false},"title":"Search the SAP end-customer corpus (Legend tier)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_sap_clients","displayName":"Search the SAP end-customer corpus (Legend tier)"},{"name":"get_sap_client_profile","description":"The full profile of one SAP end-customer — 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":{"type":"object","required":["id"],"properties":{"id":{"type":"string","maxLength":160}},"additionalProperties":false},"title":"One SAP end-customer profile (Legend tier)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_sap_client_profile","displayName":"One SAP end-customer profile (Legend tier)"},{"name":"get_firm_intel","description":"The paid intelligence profile of a services firm — 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 — it read ~39% from 2026-08-10 to 2026-09-05, i.e. a third of the corpus below the truth, because an enrichment pass filled the column and no reader of this sentence was told — glassdoor_rating, glassdoor_re","inputSchema":{"type":"object","properties":{"mode":{"enum":["freelance","permanent","subcontract"],"type":"string"},"name":{"type":"string","maxLength":200},"limit":{"type":"integer","default":3,"maximum":10,"minimum":1},"cursor":{"type":"string","maxLength":512},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"delivers":{"enum":["datasphere","bdc","sac","bw","bw4hana","s4hana","ecc","hana","joule","businessobjects","bpc","successfactors","ariba","concur"],"type":"string"}},"additionalProperties":false},"title":"Firm intelligence profile (Legend tier)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_firm_intel","displayName":"Firm intelligence profile (Legend tier)"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Analytics-Legends&config=eyJ1cmwiOiAiaHR0cHM6Ly9hbmFseXRpY3NsZWdlbmRzLmFpL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Analytics-Legends%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fanalyticslegends.ai%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Analytics-Legends%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fanalyticslegends.ai%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Analytics+Legends&connectorUrl=https%3A%2F%2Fanalyticslegends.ai%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Analytics-Legends\" --url \"https://analyticslegends.ai/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/analyticslegends-mcp-c3fce4dd5d","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/analyticslegends-mcp-c3fce4dd5d/tools/{tool}","mcpServerUrl":"https://analyticslegends.ai/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/analyticslegends-mcp-c3fce4dd5d?live=1"}