{"apiVersion":"v1","directorySlug":"menjometre-mcp-25cfd58d80","title":"Menjòmetre","description":"Subvencions, contractes, pressupostos i càrrecs públics a Catalunya. Milions de registres, dades obertes, codi obert. On van els teus impostos?","pageUrl":"https://www.mcpbundles.com/skills/menjometre-mcp-25cfd58d80","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.menjometre.cat/mcp","hostedMcpUrl":null,"toolCount":95,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"cat.menjometre/menjometre-mcp-25cfd58d80","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"search","description":"Search across entities, politicians, contracts, grants, organs, and persons. Returns top matches with type, name, slug/id, and a short context line.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"type":{"enum":["all","entity","politician","contract","grant","organ","person"],"type":"string","default":"all"},"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"query":{"type":"string","maxLength":200,"minLength":2}},"additionalProperties":false},"title":"Federated search","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search","displayName":"Federated search"},{"name":"list_filter_options","description":"Enumerate all valid filter values the other tools accept: departments, organs, finalitats, parties, comarques, vegueríes, beneficiary types, procedure types.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Filter option catalog","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_filter_options","displayName":"Filter option catalog"},{"name":"get_dataset_stats","description":"Global counts, EUR totals, and last-sync metadata across grants, contracts, entities, and persons.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Global dataset stats","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_dataset_stats","displayName":"Global dataset stats"},{"name":"get_entity","description":"Full entity profile plus Menjometre scores with natural-language explanations. Accepts slug or CIF. For deeper analysis: use `get_entity_grants`/`get_entity_contracts` for transaction lists, `get_entity_municipal_budget` for Ajuntament de Barcelona budget execution (score-neutral), `list_documents_for_entity` for all source document URLs, and `fetch_source_document` to read any document's full text.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity_id"],"properties":{"entity_id":{"type":"string","pattern":"^[A-Za-z0-9À-ÿ_-]+$","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Get entity profile","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_entity","displayName":"Get entity profile"},{"name":"get_entity_financials","description":"Yearly financial timeline filed with the Generalitat registry of entities. Returns revenue, grant income, personnel cost, operating result, and dependency ratios. Not all entities have financial data.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity_id"],"properties":{"entity_id":{"type":"string","pattern":"^[A-Za-z0-9À-ÿ_-]+$","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Entity financials yearly","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_entity_financials","displayName":"Entity financials yearly"},{"name":"get_entity_risk_analysis","description":"Aggregated risk dossier: concentration, recurrence, sole-source, fragmentation, dependency, accountability — with textual interpretation per axis. To investigate flagged patterns further, use `list_documents_for_entity` → `fetch_source_document` to read the actual grant/contract source documents.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity_id"],"properties":{"entity_id":{"type":"string","pattern":"^[A-Za-z0-9À-ÿ_-]+$","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Entity risk analysis (⭐)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_entity_risk_analysis","displayName":"Entity risk analysis (⭐)"},{"name":"compare_entities","description":"Side-by-side comparison of 2–5 entities (slug or CIF).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["identifiers"],"properties":{"identifiers":{"type":"array","items":{"type":"string","maxLength":120,"minLength":1},"maxItems":5,"minItems":2}},"additionalProperties":false},"title":"Compare entities","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"compare_entities","displayName":"Compare entities"},{"name":"get_politician","description":"Profile, total public years (merged tenure), party, institution, salary, BORME vincles count.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string","maxLength":200,"minLength":2}},"additionalProperties":false},"title":"Politician profile","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_politician","displayName":"Politician profile"},{"name":"find_politician_by_name","description":"Resolves a free-form person name to a politician slug + display name + party + institution. Used for cross-linking from other surfaces (e.g. BCN personal eventual rows). Accent + case insensitive. Returns 0–5 candidates ordered by total_public_years.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string","maxLength":200,"minLength":2},"fuzzy":{"type":"boolean","default":false}},"additionalProperties":false},"title":"Find politician by name (fuzzy primitive)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_politician_by_name","displayName":"Find politician by name (fuzzy primitive)"},{"name":"get_politician_salary_history","description":"Detailed salary time-series across positions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"name":{"type":"string","maxLength":200,"minLength":2},"politician_id":{"type":"string","format":"uuid"}},"additionalProperties":false},"title":"Politician salary history","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_politician_salary_history","displayName":"Politician salary history"},{"name":"get_dogc_cessament_review_pending","description":"Pending DOGC cessaments that the 3-layer matcher couldn't auto-bind to a single politician position (ambiguous or low-confidence candidates). Returns candidate positions with scoring breakdown for human review.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0},"min_score":{"type":"number","maximum":1,"minimum":0}},"additionalProperties":false},"title":"DOGC cessament review queue","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_dogc_cessament_review_pending","displayName":"DOGC cessament review queue"},{"name":"get_party","description":"Party aggregates: member count, total accumulated years, average salary.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["party"],"properties":{"party":{"type":"string","maxLength":80,"minLength":1}},"additionalProperties":false},"title":"Party profile","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_party","displayName":"Party profile"},{"name":"get_politica_hub","description":"Global political dashboard: total positions, party distribution (count, avg salary, salary mass), appointed positions by party, top earners.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Political hub dashboard","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_politica_hub","displayName":"Political hub dashboard"},{"name":"get_politician_conflicts","description":"Declared patrimony + detected BORME vincles for one politician.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string","maxLength":200,"minLength":2}},"additionalProperties":false},"title":"Politician conflicts of interest","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_politician_conflicts","displayName":"Politician conflicts of interest"},{"name":"get_entity_conflicts","description":"Entity-side: politicians linked to the entity via BORME roles + person_entity_roles.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity_id"],"properties":{"entity_id":{"type":"string","pattern":"^[A-Za-z0-9À-ÿ_-]+$","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Entity conflicts of interest","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_entity_conflicts","displayName":"Entity conflicts of interest"},{"name":"analyze_conflict_of_interest","description":"Given a person name and an entity identifier, return every known link (BORME role, political position, declarations, grants received while in office, contracts, lobby meetings).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["person_name","entity_id"],"properties":{"entity_id":{"type":"string","pattern":"^[A-Za-z0-9À-ÿ_-]+$","maxLength":120,"minLength":1},"person_name":{"type":"string","maxLength":200,"minLength":2}},"additionalProperties":false},"title":"Ad-hoc conflict analysis","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"analyze_conflict_of_interest","displayName":"Ad-hoc conflict analysis"},{"name":"detect_undisclosed_conflicts","description":"Proactive real-time scan: active public officials with BORME/REJC roles in entities receiving public contracts or grants from their institution. Uses get_conflict_of_interest() RPC for live detection.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0},"institution":{"type":"string","maxLength":200}},"additionalProperties":false},"title":"Detect undisclosed conflicts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"detect_undisclosed_conflicts","displayName":"Detect undisclosed conflicts"},{"name":"get_lobby_meetings","description":"Lobby meetings from the Generalitat transparency portal. Filters: official name, interest group, date range.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0},"date_to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"date_from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"official_name":{"type":"string","maxLength":200},"interest_group":{"type":"string","maxLength":200}},"additionalProperties":false},"title":"Lobby meetings","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_lobby_meetings","displayName":"Lobby meetings"},{"name":"get_organ","description":"Single contracting body profile: total contracts, total amount, % sole-source, % menor, % competitive, top-5 suppliers share.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","maxLength":200,"minLength":1}},"additionalProperties":false},"title":"Contracting body profile","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_organ","displayName":"Contracting body profile"},{"name":"list_organs","description":"Contracting bodies catalog with filters (semaphore, search) and pagination.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"sort":{"enum":["total_amount","total_contracts","pct_sole_bidder"],"type":"string","default":"total_amount"},"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0},"search":{"type":"string","maxLength":200},"semaphore":{"enum":["green","yellow","amber","red"],"type":"string"}},"additionalProperties":false},"title":"Organs catalog","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_organs","displayName":"Organs catalog"},{"name":"get_ens_public","description":"Instrumental/public body profile including type (consorci, empresa pública, fundació) and parent administration.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","maxLength":200,"minLength":1}},"additionalProperties":false},"title":"Instrumental public entity profile","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_ens_public","displayName":"Instrumental public entity profile"},{"name":"list_ens_publics","description":"Instrumental public entities catalog filtered by type/comarca.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0},"comarca":{"type":"string","maxLength":80},"org_type":{"type":"string","maxLength":80}},"additionalProperties":false},"title":"Ens publics catalog","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_ens_publics","displayName":"Ens publics catalog"},{"name":"get_pressupostos_hub","description":"Generalitat budget dashboard for a fiscal year: FULL budget by department (Personal, Transferències, Béns i serveis, Inversions), plus top entities receiving transfers. Exercicis des de 2014; el darrer exercici pot ser aprovat sense execució (camp estat). Omit year for the latest executed year; use estat='aprovat' to read the pressupost aprovat/projecte of a year that also has execution data.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"year":{"type":"integer","maximum":2100,"minimum":2010},"estat":{"enum":["executat","aprovat"],"type":"string"}},"additionalProperties":false},"title":"Budget hub","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_pressupostos_hub","displayName":"Budget hub"},{"name":"get_budget_by_department","description":"Full Generalitat budget for a specific department across years: total executed, broken down by spending chapters (Personal, Transferències, Béns i serveis, Inversions). Filter by department name. Exercicis des de 2014; el darrer exercici pot ser aprovat sense execució (camp estat).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"year_to":{"$ref":"#/properties/year_from"},"year_from":{"type":"integer","maximum":2100,"minimum":2010},"department":{"type":"string","maxLength":200}},"additionalProperties":false},"title":"Budget by department","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_budget_by_department","displayName":"Budget by department"},{"name":"get_budget_partides","description":"Spending chapters (Personal, Transferències, Béns i serveis, Inversions) for a department in a given year. Shows how the department's budget is distributed across spending types. Exercicis des de 2014; el darrer exercici pot ser aprovat sense execució (camp estat).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["department","year"],"properties":{"year":{"type":"integer","maximum":2100,"minimum":2010},"department":{"type":"string","maxLength":200}},"additionalProperties":false},"title":"Budget spending chapters","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_budget_partides","displayName":"Budget spending chapters"},{"name":"get_efficiency_analysis","description":"\"Rendiment de l'euro públic\": per-department cost-vs-outcome analysis. Returns deflated cost trends, service/quality metrics, inefficiency ratios, and scores for all analysed departments. Optional department filter.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"department":{"type":"string","maxLength":200}},"additionalProperties":false},"title":"Public spending efficiency dashboard","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_efficiency_analysis","displayName":"Public spending efficiency dashboard"},{"name":"get_fiscal_deficit","description":"Catalonia revenue (taxes, state transfers, debt) vs total spending by year. Shows income breakdown by source.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"year_to":{"$ref":"#/properties/year_from"},"year_from":{"type":"integer","maximum":2100,"minimum":2010}},"additionalProperties":false},"title":"Revenue vs spending","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_fiscal_deficit","displayName":"Revenue vs spending"},{"name":"get_budget_transfers","description":"Transfers from Generalitat departments to specific public entities. Filter by department, entity name, or year. This is a SUBSET of the full budget — only the portion transferred to identifiable entities.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"year":{"type":"integer","maximum":2100,"minimum":2010},"to_entity":{"type":"string","maxLength":200},"from_department":{"type":"string","maxLength":200}},"additionalProperties":false},"title":"Budget transfers to entities","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_budget_transfers","displayName":"Budget transfers to entities"},{"name":"get_yearly_trends_budget","description":"Full Generalitat budget evolution des de 2014: total spending and department count per executed year; el darrer exercici pot ser aprovat sense execució (camp estat). Approved/projecte exercicis are returned separately in `exercicis_aprovats` ({exercici, estat, total_consolidat}) and are NOT mixed into the executed series. Excludes debt amortization (executed series).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Budget yearly trends","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_yearly_trends_budget","displayName":"Budget yearly trends"},{"name":"get_budget_programes","description":"Programa-level breakdown of the Generalitat approved/projecte budget for an exercici (e.g. 2023 aprovat, 2026 projecte de llei): seccio, política de despesa and programa with import consolidat and brut. Only exercicis with an approved budget or projecte de llei are available (camp estat); executed-year detail lives in get_budget_by_department/get_budget_partides. Mirrors the REST route /api/pressupostos/programes.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["exercici"],"properties":{"seccio":{"type":"string","maxLength":4},"exercici":{"type":"integer","maximum":2100,"minimum":2000}},"additionalProperties":false},"title":"Budget programes (pressupost aprovat/projecte)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_budget_programes","displayName":"Budget programes (pressupost aprovat/projecte)"},{"name":"get_entity_bcn_budget_lines","description":"Barcelona City Council budget lines (despeses + ingressos) where this entity was identified as a nominative beneficiary by fuzzy name match (pg_trgm ≥ 0.80). Returns one row per (year, programa, subconcepte). Score-neutral: not aggregated into Menjometre scores. Values in EUR.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity_id"],"properties":{"dataset":{"enum":["despeses","ingressos"],"type":"string"},"year_to":{"type":"integer","maximum":2100,"minimum":2010},"entity_id":{"type":"string","maxLength":128,"minLength":1},"year_from":{"type":"integer","maximum":2100,"minimum":2010}},"additionalProperties":false},"title":"BCN municipal budget lines for entity","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_entity_bcn_budget_lines","displayName":"BCN municipal budget lines for entity"},{"name":"get_bcn_budget_summary","description":"Summary of the Ajuntament de Barcelona executed budget: year-by-year totals across despeses + ingressos (obligat, crèdit definitiu, pagat, line count, resolved-entity count), and an optional per-capítol breakdown for a given year. Backs the /pressupostos/barcelona hub page.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"year":{"type":"integer","maximum":2100,"minimum":2010},"dataset":{"enum":["despeses","ingressos"],"type":"string","default":"despeses"}},"additionalProperties":false},"title":"BCN budget summary (year totals + capítol breakdown)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_bcn_budget_summary","displayName":"BCN budget summary (year totals + capítol breakdown)"},{"name":"get_bcn_personal_summary","description":"Cost identificable + concentració de càrrecs del personal directiu i eventual de l'Ajuntament de Barcelona (alts càrrecs, regidors, membres de consells municipals i directius de societats municipals). Returns: total persones, total càrrecs, multi-role count, total annual cost (per-person grain), median/p25/p75, ratio over Capítol 1 of the budget year, last sync timestamp. Source: BCN transparency portal CSV (Llei 19/2014 art.11.1.b).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"year":{"type":"integer","maximum":2100,"minimum":2010}},"additionalProperties":false},"title":"BCN personal directiu i eventual — summary KPIs","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_bcn_personal_summary","displayName":"BCN personal directiu i eventual — summary KPIs"},{"name":"get_bcn_personal_role_concentration","description":"Top persons holding multiple governance positions across the BCN public-sector ecosystem (Ajuntament + societats municipals + consorcis). Each row reports the person's role count and their ONE annual salary (NEVER summed across roles). Surfaces 'esbart dansaire' patterns in a methodologically honest way.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":25,"maximum":100,"minimum":1},"min_role_count":{"type":"integer","default":2,"maximum":20,"minimum":2}},"additionalProperties":false},"title":"BCN personal — concentració de càrrecs per persona","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_bcn_personal_role_concentration","displayName":"BCN personal — concentració de càrrecs per persona"},{"name":"get_bcn_personal_by_area","description":"Cost del personal directiu i eventual desglossat per àrea o societat municipal. Quan l'àrea coincideix amb una entitat al catàleg (resolved_entity_id), s'enllaça a la fitxa corresponent. Salaris computats al gra de persona dins cada bucket per evitar doble comptatge.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"only_resolved":{"type":"boolean","default":false}},"additionalProperties":false},"title":"BCN personal — cost per àrea i entitat","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_bcn_personal_by_area","displayName":"BCN personal — cost per àrea i entitat"},{"name":"get_bcn_personal_for_person","description":"Detall d'una persona del personal directiu i eventual de l'Ajuntament de Barcelona: tots els seus càrrecs (amb àrea i entitat resolta si n'hi ha), retribució anual única, i autoritzacions de compatibilitat (Font 2 GDPR-scoped). Accent + case insensitive.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["person_name"],"properties":{"person_name":{"type":"string","maxLength":200,"minLength":2}},"additionalProperties":false},"title":"BCN personal — fitxa d'una persona","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_bcn_personal_for_person","displayName":"BCN personal — fitxa d'una persona"},{"name":"get_xarxa_stats","description":"Global network metrics: node counts, edge counts, connectivity, top hubs.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Network stats","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_xarxa_stats","displayName":"Network stats"},{"name":"get_xarxa_by_comarca","description":"Geographic breakdown of network density (edges per comarca).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Network by comarca","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_xarxa_by_comarca","displayName":"Network by comarca"},{"name":"get_person_network","description":"BFS from a single person up to a max depth (hard-capped at 3).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"name":{"type":"string","maxLength":200,"minLength":2},"depth":{"type":"integer","default":2,"maximum":3,"minimum":1},"person_id":{"type":"string","format":"uuid"}},"additionalProperties":false},"title":"Person-centered network","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_person_network","displayName":"Person-centered network"},{"name":"get_entity_network","description":"BFS from a single entity up to a max depth (hard-capped at 3).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity_id"],"properties":{"depth":{"type":"integer","default":2,"maximum":3,"minimum":1},"entity_id":{"type":"string","format":"uuid"}},"additionalProperties":false},"title":"Entity-centered network","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_entity_network","displayName":"Entity-centered network"},{"name":"find_shortest_path","description":"Bounded BFS shortest path between two graph nodes. Max depth hard-capped at 5 in the RPC.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["from_type","from_id","to_type","to_id"],"properties":{"to_id":{"type":"string","format":"uuid"},"from_id":{"type":"string","format":"uuid"},"to_type":{"$ref":"#/properties/from_type"},"from_type":{"enum":["entity","person"],"type":"string"},"max_depth":{"type":"integer","default":4,"maximum":5,"minimum":1}},"additionalProperties":false},"title":"Shortest path (⭐)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_shortest_path","displayName":"Shortest path (⭐)"},{"name":"get_network_hubs","description":"Highest-degree nodes filtered by type + metric.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"metric":{"enum":["degree"],"type":"string","default":"degree"},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0},"node_type":{"enum":["entity","person"],"type":"string","default":"entity"}},"additionalProperties":false},"title":"Network hubs","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_network_hubs","displayName":"Network hubs"},{"name":"detect_clusters","description":"Louvain communities computed nightly. Returns the top clusters by size.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0},"min_size":{"type":"integer","default":3,"maximum":1000,"minimum":2}},"additionalProperties":false},"title":"Community detection","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"detect_clusters","displayName":"Community detection"},{"name":"investigate_cluster","description":"Full member list of a Louvain cluster with entity + person joins.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["cluster_id"],"properties":{"cluster_id":{"type":"integer","minimum":0}},"additionalProperties":false},"title":"Investigate cluster (⭐)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"investigate_cluster","displayName":"Investigate cluster (⭐)"},{"name":"analyze_contract_network","description":"Contract graph for an organ or entity: sole-source patterns, repeat suppliers, fragmentation signals.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["organ_or_entity"],"properties":{"organ_or_entity":{"type":"string","maxLength":200,"minLength":1}},"additionalProperties":false},"title":"Contract network analysis","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"analyze_contract_network","displayName":"Contract network analysis"},{"name":"get_equivalencies","description":"Translate a EUR amount into scale-sensitive, neutral reference points (salary multiples, per-capita, % Generalitat budget, etc.).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["amount"],"properties":{"amount":{"type":"number","exclusiveMinimum":0},"last_year":{"type":"integer","maximum":2100,"minimum":2000},"first_year":{"type":"integer","maximum":2100,"minimum":2000},"years_active":{"type":"integer","exclusiveMinimum":0}},"additionalProperties":false},"title":"EUR equivalencies","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_equivalencies","displayName":"EUR equivalencies"},{"name":"get_yearly_trends","description":"Generic yearly time-series by dimension/metric (grants, contracts, entities).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["dimension","metric"],"properties":{"metric":{"enum":["count","amount"],"type":"string"},"year_to":{"type":"integer","maximum":2100,"minimum":2000},"dimension":{"enum":["grants","contracts"],"type":"string"},"year_from":{"type":"integer","maximum":2100,"minimum":2000}},"additionalProperties":false},"title":"Yearly trends (generic)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_yearly_trends","displayName":"Yearly trends (generic)"},{"name":"export_data","description":"Bulk JSON export of grants/contracts/entities with filters. CSV is emitted as plain text for LLM consumption.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["type"],"properties":{"type":{"enum":["grants","contracts","entities"],"type":"string"},"limit":{"type":"integer","default":500,"maximum":1000,"minimum":1},"format":{"enum":["json","csv"],"type":"string","default":"json"}},"additionalProperties":false},"title":"Bulk export","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"export_data","displayName":"Bulk export"},{"name":"get_methodology","description":"Scoring methodology, data sources, last-sync timestamps, definitions. Citable for LLM outputs.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Methodology","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_methodology","displayName":"Methodology"},{"name":"list_documents_for_entity","description":"All official source documents for an entity — grant regulatory pages (DOGC/BOE) and contract award pages (PSCP). Returns up to 200 URLs with metadata (type, title, date, authority, language). This is the starting point for 'analyse all documents for entity X': call this first, then pass each URL to `fetch_source_document` to extract the full text. ~78% of grants and ~100% of contracts have source URLs.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity_id"],"properties":{"year":{"type":"integer","maximum":2100,"minimum":2000},"entity_id":{"type":"string","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Documents for entity","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_documents_for_entity","displayName":"Documents for entity"},{"name":"fetch_contract_pdf","description":"Download and extract plain text from a PSCP contract PDF. Requires `doc_id` and `hash` from `get_contract_documents`. The hash acts as an access token — no authentication needed. Returns extracted text via pdf-parse. Default 256 kB; set `max_kb` up to 512 for long documents. 24h cached.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["doc_id","hash"],"properties":{"hash":{"type":"string","maxLength":64,"minLength":16},"doc_id":{"type":"integer","exclusiveMinimum":0},"max_kb":{"type":"integer","default":256,"maximum":512,"minimum":16}},"additionalProperties":false},"title":"Fetch contract PDF text (⭐)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"fetch_contract_pdf","displayName":"Fetch contract PDF text (⭐)"},{"name":"contractor_procedure_analysis","description":"Breakdown of a contractor's public-sector contracts by procurement procedure. Returns one row per procedure_type with contract count, total and average amount, average number of bidders, and share of sole-source awards (num_bidders=1 or 'Contracte menor' / 'Negociat sense publicitat'). Input is an entity slug or CIF.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity"],"properties":{"entity":{"type":"string","pattern":"^[A-Za-z0-9À-ÿ_-]+$","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Contractor procedure analysis","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"contractor_procedure_analysis","displayName":"Contractor procedure analysis"},{"name":"cross_funder_analysis","description":"Lists every public body that funded a beneficiary via grants or contracts, ranked by combined amount. Each row reports grants vs contracts split, count, year range, and share of total funding. Includes an HHI concentration index so callers can distinguish single-funder dependence from diversified counterparts. Input is an entity slug or CIF.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity"],"properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"entity":{"type":"string","pattern":"^[A-Za-z0-9À-ÿ_-]+$","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Cross-funder analysis","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"cross_funder_analysis","displayName":"Cross-funder analysis"},{"name":"grant_recurrence_analysis","description":"Finds consecutive-year grant streaks from the same public funder to the same beneficiary. Returns one row per streak with start/end year, years count, grant count, total and yearly average amount. Useful for spotting stable patron-client relationships. Input is an entity slug or CIF.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["entity"],"properties":{"limit":{"type":"integer","default":50,"maximum":200,"minimum":1},"entity":{"type":"string","pattern":"^[A-Za-z0-9À-ÿ_-]+$","maxLength":120,"minLength":1},"min_years":{"type":"integer","default":2,"maximum":30,"minimum":2}},"additionalProperties":false},"title":"Grant recurrence analysis","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"grant_recurrence_analysis","displayName":"Grant recurrence analysis"},{"name":"concept_spend_summary","description":"Aggregate public spending for a free-text topic (e.g. «menjadors escolars», «vigilància»): total amount, number of operations, distinct beneficiary entities, yearly trend, top entities and example records, for contracts and grants. Pure keyword (exact-word) search — no embeddings, fast and stable. Use this for «how much is spent on X?» questions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"query":{"type":"string","maxLength":200,"minLength":2},"domain":{"enum":["contractes","subvencions","tots"],"type":"string"}},"additionalProperties":false},"title":"Resum de despesa per concepte","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"concept_spend_summary","displayName":"Resum de despesa per concepte"},{"name":"semantic_document_search","description":"Search official document text (GAIP/TCCSP resolutions, Sindicatura reports, DOGC) by meaning, not just keywords. Returns matching snippets with their source type and an outbound source URL. Falls back to full-text search if the embedding endpoint is unavailable.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"limit":{"type":"integer","maximum":25,"minimum":1},"query":{"type":"string","maxLength":200,"minLength":2},"source_types":{"type":"array","items":{"enum":["gaip","tccsp","sindicatura","dogc"],"type":"string"}}},"additionalProperties":false},"title":"Cerca semàntica de documents","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"semantic_document_search","displayName":"Cerca semàntica de documents"},{"name":"topic_hybrid_search","description":"Hybrid keyword+semantic search across contracts and long document chunks for a topic, fused with reciprocal-rank fusion. Returns a {contracts, documents} structure. Degrades to keyword-only automatically if the embedding endpoint is unavailable.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"limit":{"type":"integer","maximum":25,"minimum":1},"query":{"type":"string","maxLength":200,"minLength":2}},"additionalProperties":false},"title":"Cerca híbrida per tema","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"topic_hybrid_search","displayName":"Cerca híbrida per tema"},{"name":"semantic_transparency_search","description":"Semantic search over transparency resolutions (GAIP and TCCSP) by meaning. Optionally restrict to one body. Returns the resolution, its neutral outcome label, a snippet and the official source link.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"font":{"enum":["gaip","tccsp"],"type":"string"},"limit":{"type":"integer","maximum":25,"minimum":1},"query":{"type":"string","maxLength":200,"minLength":2}},"additionalProperties":false},"title":"Cerca semàntica de resolucions de transparència","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"semantic_transparency_search","displayName":"Cerca semàntica de resolucions de transparència"},{"name":"semantic_sindicatura_search","description":"Semantic search over Sindicatura de Comptes audit reports by meaning. Returns matching report passages with the official source link.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"limit":{"type":"integer","maximum":25,"minimum":1},"query":{"type":"string","maxLength":200,"minLength":2}},"additionalProperties":false},"title":"Cerca semàntica d'informes de la Sindicatura","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"semantic_sindicatura_search","displayName":"Cerca semàntica d'informes de la Sindicatura"},{"name":"get_organ_transparency","description":"Resum de control extern per a un cos/organisme concret (per organ_slug), amb una fila per font present (GAIP, TCCSP, Síndic de Greuges): recomptes, taxa (per GAIP/TCCSP) i rang de dates. Per al Síndic el senyal és el volum de resolucions, no una taxa. Aparèixer aquí no implica cap irregularitat.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["organ_slug"],"properties":{"organ_slug":{"type":"string","maxLength":200,"minLength":1}},"additionalProperties":false},"title":"Per-body transparency summary","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_organ_transparency","displayName":"Per-body transparency summary"},{"name":"get_sindicatura_informes","description":"Informes de fiscalització de la Sindicatura de Comptes de Catalunya que auditen un cos/organisme concret (per slug). Són auditories de gestió narratives —no resolucions ni sancions—; el senyal és el VOLUM d'informes. Retorna metadades + l'enllaç al PDF oficial (mai el text). Aparèixer aquí no implica cap irregularitat.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["organ_slug"],"properties":{"organ_slug":{"type":"string","maxLength":200,"minLength":1}},"additionalProperties":false},"title":"Sindicatura de Comptes audit reports for a body","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_sindicatura_informes","displayName":"Sindicatura de Comptes audit reports for a body"},{"name":"search_sindicatura_informes","description":"Cerca semàntica (per significat) sobre el cos complet dels informes de fiscalització de la Sindicatura de Comptes. Incrusta la consulta i retorna els informes més rellevants amb un fragment i la distància. Útil per trobar informes per matèria encara que el títol no la mencioni. Link-out: fragment + PDF oficial, mai el text complet.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["q"],"properties":{"q":{"type":"string","maxLength":400,"minLength":2},"limit":{"type":"integer","default":12,"maximum":50,"minimum":1}},"additionalProperties":false},"title":"Semantic search over Sindicatura audit reports","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_sindicatura_informes","displayName":"Semantic search over Sindicatura audit reports"},{"name":"get_seguretat_hub","description":"Panell general del Delictòmetre (índex de criminalitat ponderat per gravetat) per a tota Catalunya en un any: índex base 100, fets penals coneguts geolocalitzats, taxa per 100.000 habitants, resolució, i el rànquing de les Àrees Bàsiques Policials amb l'índex més alt i més baix. Punt d'entrada de la secció Seguretat.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"any":{"type":"integer","maximum":2100,"minimum":2011},"top":{"type":"integer","default":5,"maximum":20,"minimum":1}},"additionalProperties":false},"title":"Seguretat / Delictòmetre — visió general de Catalunya","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_seguretat_hub","displayName":"Seguretat / Delictòmetre — visió general de Catalunya"},{"name":"get_seguretat_abp","description":"Fitxa completa de seguretat d'una Àrea Bàsica Policial: índex Delictòmetre (base 100), fets coneguts, resolts i detencions, taxes per 100.000 hab., desglossament per macro-categoria i per títol del Codi Penal, i la sèrie temporal de l'índex des del 2011. Accepta el codi d'ABP (p. ex. '08') o el nom d'un municipi (p. ex. 'Girona', 'Sabadell') — el resol a la seva ABP.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["abp"],"properties":{"abp":{"type":"string","maxLength":120,"minLength":1},"any":{"type":"integer","maximum":2100,"minimum":2011}},"additionalProperties":false},"title":"Detall de seguretat d'una Àrea Bàsica Policial","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_seguretat_abp","displayName":"Detall de seguretat d'una Àrea Bàsica Policial"},{"name":"get_seguretat_per_tipus","description":"Desglossament de la criminalitat per tipus de delicte (títol del Codi Penal) o per macro-categoria, per a tota Catalunya (per defecte) o per a una ABP concreta. Cada fila porta fets coneguts, harm per 100.000 hab., índex base 100, pes de gravetat i resolució. Fes-lo servir per obtenir la llista de codis de tipus vàlids per a les altres eines.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"abp":{"type":"string","maxLength":120,"minLength":1},"any":{"type":"integer","maximum":2100,"minimum":2011},"nivell":{"enum":["titol","macro"],"type":"string","default":"titol"}},"additionalProperties":false},"title":"Estadístiques de criminalitat per tipus de delicte","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_seguretat_per_tipus","displayName":"Estadístiques de criminalitat per tipus de delicte"},{"name":"get_seguretat_subtipus","description":"Desglossament fi per subtipus (p. ex. 'Assassinat Consumat', 'Homicidi Temptativa') dins d'un títol del Codi Penal, per a una ABP. Cada subtipus porta el seu pes de gravetat específic (dies de pena base), fets coneguts, taxa per 100.000 hab. i índex base 100. Retorna l'últim any per defecte.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["abp","tipus"],"properties":{"abp":{"type":"string","maxLength":120,"minLength":1},"any":{"type":"integer","maximum":2100,"minimum":2011},"tipus":{"type":"string","maxLength":160}},"additionalProperties":false},"title":"Criminalitat per subtipus dins un títol del Codi Penal","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_seguretat_subtipus","displayName":"Criminalitat per subtipus dins un títol del Codi Penal"},{"name":"get_seguretat_barcelona_districtes","description":"Índex de criminalitat dels 10 districtes de Barcelona per a un any (i, opcionalment, un tipus de delicte). Denominador: padró municipal per districte (BCN Open Data), amb el mateix barem base 100 = mitjana catalana que la resta d'ABP. Opcionalment, el desglossament per macro-categoria d'un districte concret.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"any":{"type":"integer","maximum":2100,"minimum":2011},"tipus":{"type":"string","maxLength":160},"districte":{"type":"string","maxLength":40}},"additionalProperties":false},"title":"Delictòmetre de Barcelona per districtes","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_seguretat_barcelona_districtes","displayName":"Delictòmetre de Barcelona per districtes"},{"name":"get_seguretat_pesos","description":"Taula de pesos de gravetat: per a cada títol del Codi Penal, els dies de pena base del seu delicte de referència (l'article i el 'starting point' del qual surt el pes). És la clau metodològica del Delictòmetre — com més greu la pena base, més pes. Mètode Cambridge Crime Harm Index (Sherman et al. 2016) adaptat al Codi Penal espanyol.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Pesos de gravetat del Delictòmetre (metodologia)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_seguretat_pesos","displayName":"Pesos de gravetat del Delictòmetre (metodologia)"},{"name":"list_atlas_capes","description":"Catàleg de les capes de dades territorials de l'Atlas de Catalunya: què mesura cadascuna, amb quin gra, quina anyada, quina font i quin règim de confidencialitat. Punt d'entrada obligatori: els identificadors que retorna són els que accepten la resta d'eines de l'Atlas.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tema":{"enum":["poblacio-origen","cens-eleccions","renda-treball","economia-productiva","habitatge","turisme","proteccio-social","educacio","sanitat","seguretat"],"type":"string"},"cerca":{"type":"string","maxLength":80},"detall":{"type":"boolean","default":false}},"additionalProperties":false},"title":"Atlas — catàleg de capes territorials","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_atlas_capes","displayName":"Atlas — catàleg de capes territorials"},{"name":"search_atlas_territori","description":"Cerca codis i noms de municipis, comarques, seccions censals i barris de Barcelona perquè les altres eines de l'Atlas rebin identificadors estables.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["consulta"],"properties":{"limit":{"type":"integer","default":10,"maximum":20,"minimum":1},"tipus":{"enum":["municipi","comarca","seccio","barri-bcn"],"type":"string"},"consulta":{"type":"string","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Atlas — cerca de territoris","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_atlas_territori","displayName":"Atlas — cerca de territoris"},{"name":"get_atlas_serie","description":"Sèrie anual d'una capa demo de l'Atlas per a un territori concret. Retorna els estats de publicació i la mitjana catalana anual quan existeix.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["capa","territori"],"properties":{"gra":{"enum":["seccio","municipi","comarca"],"type":"string"},"capa":{"type":"string","maxLength":60,"minLength":1},"limit":{"type":"integer","default":40,"maximum":40,"minimum":1},"des_de":{"type":"integer","maximum":2100,"minimum":1900},"fins_a":{"type":"integer","maximum":2100,"minimum":1900},"categoria":{"type":"string","maxLength":60},"territori":{"type":"string","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Atlas — sèrie històrica d'una capa","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_atlas_serie","displayName":"Atlas — sèrie històrica d'una capa"},{"name":"get_atlas_bcn_barri","description":"Perfil públic de la lent Barcelona per barri: subregions mundials del padró municipal, amb supressions preservades i sèrie anual quan es demana una subregió.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["barri"],"properties":{"barri":{"type":"string","maxLength":120,"minLength":1},"limit":{"type":"integer","default":40,"maximum":40,"minimum":1},"des_de":{"type":"integer","maximum":2100,"minimum":1900},"fins_a":{"type":"integer","maximum":2100,"minimum":1900},"subregio":{"type":"string","maxLength":80,"minLength":1}},"additionalProperties":false},"title":"Atlas — perfil de barri de Barcelona","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_atlas_bcn_barri","displayName":"Atlas — perfil de barri de Barcelona"},{"name":"get_atlas_educacio","description":"Resum del panell educatiu d'un municipi, secció o comarca: competències per servei territorial i concerts educatius agregats, amb drill-down limitat de centres.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["territori"],"properties":{"gra":{"enum":["seccio","municipi","comarca"],"type":"string"},"territori":{"type":"string","maxLength":120,"minLength":1},"limit_centres":{"type":"integer","default":10,"maximum":50,"minimum":0}},"additionalProperties":false},"title":"Atlas — panell educatiu territorial","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_atlas_educacio","displayName":"Atlas — panell educatiu territorial"},{"name":"get_atlas_sanitat","description":"Resum sanitari territorial: indicadors d'atenció primària per ABS i llistes d'espera per regió sanitària. No agrega ABS o hospitals a límits municipals inventats.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"gra":{"enum":["seccio","municipi","comarca"],"type":"string"},"mesos":{"type":"integer","default":36,"maximum":60,"minimum":1},"codi_rs":{"type":"string","maxLength":10,"minLength":1},"codi_abs":{"type":"string","maxLength":20,"minLength":1},"territori":{"type":"string","maxLength":120,"minLength":1},"limit_centres":{"type":"integer","default":15,"maximum":50,"minimum":0}},"additionalProperties":false},"title":"Atlas — panell sanitari territorial","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_atlas_sanitat","displayName":"Atlas — panell sanitari territorial"},{"name":"get_atlas_correlacions","description":"Serveix el panell públic d'associació ABP precomputat: subtipus delictius × predictors permesos (foreign total, renda, atur, lloguer), amb rho, n_eff CRH, p FDR i anyades. No consulta la base de dades ni calcula coeficients.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"subtipus":{"type":"string","maxLength":180,"minLength":1},"predictor":{"enum":["foreign","renda","atur","lloguer"],"type":"string"}},"additionalProperties":false},"title":"Atlas — correlacions territorials ABP","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_atlas_correlacions","displayName":"Atlas — correlacions territorials ABP"},{"name":"get_atlas_territori","description":"Fitxa territorial completa: totes les capes publicades de l'Atlas per a un municipi, una comarca o una secció censal, amb valor, índex respecte de la mitjana catalana, anyada, fiabilitat i motiu d'absència quan no n'hi ha.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["territori"],"properties":{"gra":{"enum":["seccio","municipi","comarca"],"type":"string"},"temes":{"type":"array","items":{"type":"string"},"maxItems":9},"territori":{"type":"string","maxLength":120,"minLength":1}},"additionalProperties":false},"title":"Atlas — fitxa territorial","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_atlas_territori","displayName":"Atlas — fitxa territorial"},{"name":"compare_atlas_territoris","description":"Compara diversos territoris sobre les mateixes capes publicades de l'Atlas, amb la mitjana catalana com a referència. Cada cel·la porta el seu estat: una absència o una supressió no es compara mai com si fos un zero.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["territoris","capes"],"properties":{"gra":{"enum":["seccio","municipi","comarca"],"type":"string","default":"municipi"},"capes":{"type":"array","items":{"type":"string","maxLength":60,"minLength":1},"maxItems":6,"minItems":1},"territoris":{"type":"array","items":{"type":"string","maxLength":120,"minLength":1},"maxItems":8,"minItems":2}},"additionalProperties":false},"title":"Atlas — comparació de territoris","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"compare_atlas_territoris","displayName":"Atlas — comparació de territoris"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Menj-metre&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AubWVuam9tZXRyZS5jYXQvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Menj-metre%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.menjometre.cat%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Menj-metre%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.menjometre.cat%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Menj%C3%B2metre&connectorUrl=https%3A%2F%2Fmcp.menjometre.cat%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Menj-metre\" --url \"https://mcp.menjometre.cat/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/menjometre-mcp-25cfd58d80","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/menjometre-mcp-25cfd58d80/tools/{tool}","mcpServerUrl":"https://mcp.menjometre.cat/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/menjometre-mcp-25cfd58d80?live=1"}