_ registry / mcp http-sse · checked 55m ago

menjometre-mcp

https://menjometre.cat

Registry code: e4d3656ed0ce1979

api record

menjometre-mcp searches Catalan public-spending open data: entities, politicians, contracts, grants and public bodies, with grants received and contracts awarded or issued per entity, plus dataset stats and filter values.

written by a worker the hub paid, not by the operator

endpoint
https://www.menjometre.cat/mcp
door code
47d8bc1d25995525
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is menjometre-mcp live?
Yes — it answered the hub's last check (checked 55m ago). It answered 99% of checks over the last 30 days.
Is menjometre-mcp free to use?
Yes — the hub reached it with no key and no payment.
What tools does menjometre-mcp have?
98 tools: search, fetch_contract_pdf, get_bcn_personal_summary, fragmentation_risk_analysis, get_entity_municipal_budget, get_entity_risk_analysis, contractor_procedure_analysis, get_budget_programes, ….
Is menjometre-mcp safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99%

90 days 99.1%· all time 99.5%

latency
357ms

last good check

priced tools
0

of 98 tools

_ answered our checks, 90 days 925 checks · signed record
  • degraded → live
  • degraded → live
  • live → degraded· timeout after 20000ms
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • search catalan public contracts and grants
  • check conflicts of interest for a politician
  • analyze contract fragmentation risk
  • get municipal budget data
takes → gives
text → data
tools
25 reads
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 98 tools
30 open 68 never probed 30 of 98 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_xarxa_by_comarca open 36h ago

    Geographic breakdown of network density (edges per comarca).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_seguretat_pesos open 41h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_network_hubs reads open 2d ago

    Highest-degree nodes filtered by type + metric.

    mcp-tool

    {
      "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
    }
    arguments 34 lines
  • list_carrecs open 26h ago

    Positions filtered by institution, party, vinculacio (Alts càrrecs / Altres directius / Eventuals / Electes / Electes municipals), active_status (ACTIVE_VERIFIED / INACTIVE_CONFIRMED / UNKNOWN). effective_party is the person's own party only: a sourced correction (effective_party_basis 'override'; a null effective_party then means no party is known) or the party of their electoral list (basis 'party'). It is null, with a null basis, when no party of their own is known, and it is never the party of the government that appointed them. The appointment is context only: appointing_party_context is the party and appointing_govern_context the government (for example 'Govern Illa') of the latest position that has an appointing party; never present them as the person's party or militancy.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "party": {
          "type": "string",
          "maxLength": 80
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "vinculacio": {
          "enum": [
            "Alts càrrecs",
            "Altres directius",
            "Eventuals",
            "Electes",
            "Electes municipals"
          ],
          "type": "string"
        },
        "active_only": {
          "type": "boolean",
          "default": false,
          "description": "Deprecated alias for active_status='ACTIVE_VERIFIED'. Prefer active_status."
        },
        "institution": {
          "type": "string",
          "maxLength": 200
        },
        "active_status": {
          "enum": [
            "ACTIVE_VERIFIED",
            "INACTIVE_CONFIRMED",
            "UNKNOWN"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 50 lines
  • get_politica_hub open 2d ago

    Global political dashboard: total positions, party distribution (count, avg salary, salary mass), appointed positions by party, top earners. effective_party is the person's own party only: a sourced correction (effective_party_basis 'override'; a null effective_party then means no party is known) or the party of their electoral list (basis 'party'). It is null, with a null basis, when no party of their own is known, and it is never the party of the government that appointed them. The appointment is context only: appointing_party_context is the party and appointing_govern_context the government (for example 'Govern Illa') of the latest position that has an appointing party; never present them as the person's party or militancy.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • detect_undisclosed_conflicts open 23h ago

    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.

    mcp-tool

    {
      "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,
          "description": "Filter by institution slug (e.g. 'generalitat', 'diba')"
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
  • list_organs reads open 17h ago

    Contracting bodies catalog with filters (semaphore, search) and pagination.

    mcp-tool

    {
      "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
    }
    arguments 41 lines
  • get_bcn_budget_summary open 26h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "year": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2010,
          "description": "If provided, also returns the capítol breakdown for this year."
        },
        "dataset": {
          "enum": [
            "despeses",
            "ingressos"
          ],
          "type": "string",
          "default": "despeses",
          "description": "Which side of the budget to break down by capítol. Default: despeses."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • get_bcn_personal_role_concentration open 21h ago

    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.

    mcp-tool

    {
      "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
    }
    arguments 19 lines
  • search_transparency_resolutions open 14h ago

    Cerca per paraula clau o frase sobre les resolucions de control extern — GAIP (accés a la informació), TCCSP (contractació) i Síndic de Greuges (queixes ciutadanes) — amb filtres opcionals. Gra = una resolució/reclamació. Retorna columnes públiques redactades, un snippet ressaltat i total_count. Per al Síndic, el `sentit` és l'estat d'acceptació (accepta/no_accepta/…).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "q": {
          "type": "string",
          "maxLength": 400,
          "description": "Keyword or phrase searched over the full resolution text + summary"
        },
        "any": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000,
          "description": "Resolution year (resolucio_any)"
        },
        "font": {
          "enum": [
            "gaip",
            "tccsp",
            "sindic"
          ],
          "type": "string",
          "description": "Source: GAIP (Generalitat), TCCSP (local councils), or sindic (Síndic de Greuges)"
        },
        "ambit": {
          "type": "string",
          "maxLength": 200,
          "description": "Subject matter (àmbit) — GAIP only"
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "sentit": {
          "enum": [
            "estimacio",
            "estimacio_parcial",
            "mediacio",
            "perdua_objecte",
            "desestimacio",
            "desestimacio_parcial",
            "inadmissio",
            "desistiment",
            "derivacio",
            "indeterminat",
            "accepta",
            "accepta_parcial",
            "no_accepta",
            "soluciona",
            "pendent"
          ],
          "type": "string",
          "description": "Sentit (outcome) GAIP/TCCSP o estat d'acceptació del Síndic. Fes servir el SLUG canònic, no l'etiqueta visible. Valors acceptats: estimacio, estimacio_parcial, mediacio, perdua_objecte, desestimacio, desestimacio_parcial, inadmissio, desistiment, derivacio, indeterminat, accepta, accepta_parcial, no_accepta, soluciona, pendent. Exemple: \"desestimacio_parcial\" (no \"Desestimació parcial\")."
        },
        "organisme": {
          "type": "string",
          "maxLength": 200,
          "description": "Respondent body name (substring match)"
        },
        "organ_slug": {
          "type": "string",
          "maxLength": 200,
          "description": "Respondent body slug (exact match)"
        }
      },
      "additionalProperties": false
    }
    arguments 75 lines
  • get_budget_by_department reads open 19h ago

    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).

    mcp-tool

    {
      "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,
          "description": "Department name (partial match). Omit for all departments."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • get_fiscal_deficit open 2d ago

    Catalonia revenue (taxes, state transfers, debt) vs total spending by year. Shows income breakdown by source.

    mcp-tool

    {
      "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
    }
    arguments 15 lines
  • detect_clusters reads open 24h ago

    Louvain communities computed nightly. Returns the top clusters by size.

    mcp-tool

    {
      "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
    }
    arguments 25 lines
  • search_patrimoni_representatives open 33h ago

    Directory of the Congreso deputies who filed a declaration of assets and income, one row per person with the latest declaration's effective figures, preserving explicitly incorporated earlier sources, filtered by parliamentary formation, by a declared fact (direct_rent, company_property, patrimonial_company, debt) or by a substring of the official name. Sort by name, direct rent, declared property units, company-held rows, outstanding debt or valued assets; results are paged and every row carries the deputy_id and politician_slug the other tools and pages take. direct_rent_total is the sum as printed, including monthly amounts where declared: it is not an annual total and is never annualized. rent_is_monthly flags monthly rental lines. Coverage reports direct_rent_annual_total and direct_rent_monthly_total separately by the period of each line. Direct rent and property held through a company are two separate declared facts and are never added together. Every *_rows column counts declaration ROWS, not properties, so it is a lower bound and never a property count. Absence is null, never zero. work_income_non_annual and capital_income_non_annual are the LIVE period classification of each side: true means every declared line of that side is quarterly, monthly or bimonthly, so its annual total is null because the declaration is outside the annual section, never because the person declared nothing. These flags are authoritative for that state even when lineage is absent or its stored income.status is stale; a null annual total with a true flag is not an absence. A true work_income_amount_unknown or capital_income_amount_unknown means the side has annual rows but none carries an extracted amount: its null total is pending, not an absence. A true work_income_pending or capital_income_pending means the side contains at least one line whose period is unknown or incompatible, so its total is NULL and pending, not an absence. The three states are disjoint (a side carries at most one of them). There is deliberately no large-holder flag and no wealth index: do not derive, rank or invent one. Effective figures incorporate only reviewed explicit referrals to the same person’s prior declarations. lineage identifies original source dates and pages, unresolved blocks and income reporting exercises; effective_revision identifies this resolved projection. Preserve row and field provenance. Mixed-year or unresolved income totals are null: never recompute them by summing incompatible rows, and never date inherited figures from the latest update. The response also carries the derived census of the declaration version. income_known_total is the sum of the declared annual amounts that carry a quantity; income_state is its combined state (complete, partial, explicit_none, no_income, last_declared, non_annual, pending or unknown) and income_unquantified_rows counts the annual lines without an amount. work_income_known_total, work_income_state and work_income_unquantified_rows are the work side; capital_income_known_total, capital_income_state and capital_income_unquantified_rows are the capital side. The per-side states are the authority for the two income columns. valued_assets_total is the declared sum of deposit balances, securities, shares and public debt, and other assets with an amount; explicit rental rows in other_undeclared are income and are excluded, and real estate, company-held property, vehicles, loans and other debts are outside the block by construction and are never netted, so it is not a net-worth figure. valued_assets_state is complete, partial, unknown or none; valued_assets_unquantified_rows counts the included lines without an amount. The valued_assets deposits, securities and other buckets are the view's per-bucket sums and may be 0; a 0 bucket is not a declared zero unless valued_assets_state is complete or partial. A state describes the block; a null total is not zero. Each row carries those metrics as flat fields: income_known_total, income_state, income_unquantified_rows, income_last_date, valued_assets_total, valued_assets_state, valued_assets_unquantified_rows, and the work and capital known totals, states and unquantified counts. Sort by valued_assets orders by valued_assets_total.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "fact": {
          "enum": [
            "direct_rent",
            "company_property",
            "patrimonial_company",
            "debt"
          ],
          "type": "string",
          "description": "Keep only persons declaring this fact. 'debt' means a NONZERO outstanding balance: the 0.00 row is a real declared fact, not debt."
        },
        "sort": {
          "enum": [
            "name",
            "direct_rent",
            "immobile_rows",
            "company_rows",
            "debt",
            "valued_assets"
          ],
          "type": "string",
          "description": "Order. 'immobile_rows' orders by the directory's \"Immobles\" figure, i.e. total declared units (direct plus company-held); it does not sort by the immobile_rows row count, which is a different column and includes company-held rows. 'valued_assets' orders by valued_assets_total: deposits + securities/shares/public debt + other assets with an amount. It never includes real estate, company-held property, vehicles, loans or other debts, and never nets liabilities. The parameter keeps its name for URL compatibility."
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "search": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Plain substring of the official name as printed, \"Cognoms, Nom\". Accent- and case-insensitive; no wildcards."
        },
        "formation": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Parliamentary formation exactly as the source prints it, e.g. 'PP', 'PSOE' or 'JxCAT-JUNTS'."
        }
      },
      "additionalProperties": false
    }
    arguments 53 lines
  • get_seguretat_ranking open 38h ago

    Rànquing de totes les Àrees Bàsiques Policials (ABP) de Catalunya per l'índex Delictòmetre (base 100 = mitjana catalana), per a un any i, opcionalment, un tipus de delicte concret. Cada fila porta índex, fets coneguts, població, harm per 100.000 hab., i percentatge de resolució. Ordena de més a menys per defecte.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "any": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2011,
          "description": "Any (year). Omet-lo per a l'últim any complet."
        },
        "limit": {
          "type": "integer",
          "default": 60,
          "maximum": 60,
          "minimum": 1
        },
        "ordre": {
          "enum": [
            "desc",
            "asc"
          ],
          "type": "string",
          "default": "desc",
          "description": "Ordre per l'índex."
        },
        "tipus": {
          "type": "string",
          "maxLength": 160,
          "description": "Codi del títol del Codi Penal (p. ex. 'DE-LES-LESIONS'). Omet-lo per al total de delictes. Fes servir get_seguretat_per_tipus per llistar els codis disponibles."
        },
        "nomes_fiables": {
          "type": "boolean",
          "default": true,
          "description": "Amaga les files amb denominador no fiable (any en curs / <20 fets)."
        }
      },
      "additionalProperties": false
    }
    arguments 38 lines
  • get_transparency_ranking open 38h ago

    Ranking de cossos/organismes per quota de reclamacions d'accés a la informació resoltes en contra seva (Wilson lower-bound, llindar de volum). Mesura NOMÉS els casos reclamats davant la GAIP/TCCSP, no l'opacitat total. Aparèixer aquí NO implica cap irregularitat — és una mètrica descriptiva sobre reclamacions resoltes. Sempre informa n=.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "font": {
          "enum": [
            "gaip",
            "tccsp"
          ],
          "type": "string",
          "default": "gaip",
          "description": "Source registry: GAIP (Generalitat) or TCCSP (local councils)"
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "min_substantive": {
          "type": "integer",
          "default": 15,
          "maximum": 1000,
          "minimum": 1,
          "description": "Minimum substantive (non-procedural) reclamacions to be ranked"
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • get_seguretat_hub reads open 47h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "any": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2011,
          "description": "Any (year). Omet-lo per a l'últim any complet."
        },
        "top": {
          "type": "integer",
          "default": 5,
          "maximum": 20,
          "minimum": 1,
          "description": "Nombre d'ABP a mostrar a dalt i a baix del rànquing."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • get_efficiency_analysis open 14h ago

    "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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "department": {
          "type": "string",
          "maxLength": 200,
          "description": "Filter by department name (partial match). Omit for all departments."
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • get_xarxa_stats open 30h ago

    Global network metrics: node counts, edge counts, connectivity, top hubs.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_yearly_trends_budget open 30h ago

    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).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • list_filter_options open 21h ago

    Enumerate all valid filter values the other tools accept: departments, organs, finalitats, parties, comarques, vegueríes, beneficiary types, procedure types.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_patrimoni_coverage open 41h ago

    What the Congreso patrimony dataset holds: declarants, declaration versions and how many of them are verified, how many declaration rows each block contains, how many persons declare direct rent, company-held property, both or neither, the declared rent totals split into annual and monthly (the two are kept apart and never summed into one figure), and the latest source date. Use it to state the size and the limits of the corpus before quoting any figure. direct_rent_total is the sum as printed, including monthly amounts where declared: it is not an annual total and is never annualized. rent_is_monthly flags monthly rental lines. Coverage reports direct_rent_annual_total and direct_rent_monthly_total separately by the period of each line. Direct rent and property held through a company are two separate declared facts and are never added together. Every *_rows column counts declaration ROWS, not properties, so it is a lower bound and never a property count. Absence is null, never zero. work_income_non_annual and capital_income_non_annual are the LIVE period classification of each side: true means every declared line of that side is quarterly, monthly or bimonthly, so its annual total is null because the declaration is outside the annual section, never because the person declared nothing. These flags are authoritative for that state even when lineage is absent or its stored income.status is stale; a null annual total with a true flag is not an absence. A true work_income_amount_unknown or capital_income_amount_unknown means the side has annual rows but none carries an extracted amount: its null total is pending, not an absence. A true work_income_pending or capital_income_pending means the side contains at least one line whose period is unknown or incompatible, so its total is NULL and pending, not an absence. The three states are disjoint (a side carries at most one of them). There is deliberately no large-holder flag and no wealth index: do not derive, rank or invent one. Effective figures incorporate only reviewed explicit referrals to the same person’s prior declarations. lineage identifies original source dates and pages, unresolved blocks and income reporting exercises; effective_revision identifies this resolved projection. Preserve row and field provenance. Mixed-year or unresolved income totals are null: never recompute them by summing incompatible rows, and never date inherited figures from the latest update.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • list_ens_publics reads open 23h ago

    Instrumental public entities catalog filtered by type/comarca.

    mcp-tool

    {
      "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
    }
    arguments 27 lines
  • get_bcn_personal_by_area open 23h ago

    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.

    mcp-tool

    {
      "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,
          "description": "If true, only includes rows resolved to an entity in the catalog."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • get_lobby_meetings open 2d ago

    Lobby meetings from the Generalitat transparency portal. Filters: official name, interest group, date range.

    mcp-tool

    {
      "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
    }
    arguments 35 lines
  • list_atlas_capes open 28h ago

    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.

    mcp-tool

    {
      "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",
          "description": "Filtra per gran categoria temàtica."
        },
        "cerca": {
          "type": "string",
          "maxLength": 80,
          "description": "Filtre de text lliure sobre etiqueta i numerador."
        },
        "detall": {
          "type": "boolean",
          "default": false,
          "description": "Inclou la fitxa metodològica completa."
        }
      },
      "additionalProperties": false
    }
    arguments 33 lines
  • get_atlas_correlacions open 28h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "subtipus": {
          "type": "string",
          "maxLength": 180,
          "minLength": 1,
          "description": "Clau del subtipus delictiu. Omet-la per llistar subtipus disponibles i metadades de l'estudi."
        },
        "predictor": {
          "enum": [
            "foreign",
            "renda",
            "atur",
            "lloguer"
          ],
          "type": "string",
          "description": "Filtra un predictor permès: foreign, renda, atur o lloguer."
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • get_rankings open 2d ago

    Parameterised top-N ranking across entities. `metric` ∈ total_public_funds | menjometre_score | total_grants | total_contracts | total_accio_concertada | sole_source_pct | grant_dependency_pct. Filters: comarca, beneficiary_type, org_type, min_funds.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "metric": {
          "enum": [
            "total_public_funds",
            "menjometre_score",
            "total_grants",
            "total_contracts",
            "total_accio_concertada",
            "sole_source_pct",
            "grant_dependency_pct"
          ],
          "type": "string",
          "default": "total_public_funds"
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "comarca": {
          "type": "string",
          "maxLength": 80
        },
        "org_type": {
          "type": "string",
          "maxLength": 80
        },
        "min_funds": {
          "type": "number",
          "minimum": 0
        },
        "beneficiary_type": {
          "type": "string",
          "maxLength": 80
        }
      },
      "additionalProperties": false
    }
    arguments 48 lines
  • get_seguretat_barcelona_districtes open 2d ago

    Í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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "any": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2011,
          "description": "Any (year). Omet-lo per a l'últim any complet."
        },
        "tipus": {
          "type": "string",
          "maxLength": 160,
          "description": "Codi del títol del Codi Penal (p. ex. 'DE-LES-LESIONS'). Omet-lo per al total de delictes. Fes servir get_seguretat_per_tipus per llistar els codis disponibles."
        },
        "districte": {
          "type": "string",
          "maxLength": 40,
          "description": "Codi de districte (p. ex. '34') per obtenir-ne el desglossament per macro-categoria."
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • get_seguretat_per_tipus open 44h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "abp": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Codi d'ABP. Omet-lo per al total de Catalunya."
        },
        "any": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2011,
          "description": "Any (year). Omet-lo per a l'últim any complet."
        },
        "nivell": {
          "enum": [
            "titol",
            "macro"
          ],
          "type": "string",
          "default": "titol",
          "description": "Granularitat: títol del CP o macro-categoria."
        }
      },
      "additionalProperties": false
    }
    arguments 28 lines
  • search unknown 2d ago

    Search across entities, politicians, contracts, grants, organs, and persons. Returns top matches with type, name, slug/id, and a short context line. Entity matches also carry `cif`, `total_public_funds` and `matched_via` (cif | name | alias | compact | prefix | fuzzy); they tolerate accents, spacing (Hàbitat3 = Habitat 3) and prior names, and their `slug`, `cif` or `id` can be passed straight to `get_entity`.

    mcp-tool

    {
      "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
    }
    arguments 34 lines
  • fetch_contract_pdf unknown 36h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "doc_id",
        "hash"
      ],
      "properties": {
        "hash": {
          "type": "string",
          "maxLength": 64,
          "minLength": 16,
          "description": "Document hash from get_contract_documents"
        },
        "doc_id": {
          "type": "integer",
          "description": "Document ID from get_contract_documents",
          "exclusiveMinimum": 0
        },
        "max_kb": {
          "type": "integer",
          "default": 256,
          "maximum": 512,
          "minimum": 16
        }
      },
      "additionalProperties": false
    }
    arguments 28 lines
  • get_bcn_personal_summary reads unknown 21h ago

    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).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "year": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2010,
          "description": "Budget year for the Capítol 1 ratio. Default: latest available year of municipal_budget_lines."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • fragmentation_risk_analysis reads unknown 26h ago

    Lists month×awarding-body clusters where a contractor received two or more sub-15k EUR minor contracts that together exceed the LCSP art. 118 threshold — the canonical bid-splitting signal. Each row shows the awarding body, the calendar month, contract count, total and max individual amount. Input is an entity slug, CIF, or UUID.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        },
        "min_cluster_amount": {
          "type": "number",
          "default": 15000,
          "maximum": 1000000,
          "minimum": 1000,
          "description": "Minimum cluster total to report (default 15.000 EUR)"
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • get_entity_municipal_budget reads unknown 55m ago

    Yearly municipal budget lines where the Ajuntament de Barcelona consigned funds to this entity (despeses executades + ingressos). Returns one row per (year, source) with obligat, crèdit definitiu, pagat, number of lines, and the dominant capítol. Only matches with resolution confidence ≥ 0.80 are included. Currently covers Barcelona city (municipi 080193), 2019–2024. Score-neutral: municipal execution does NOT feed the Menjometre indicator.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_entity_risk_analysis reads unknown 55m ago

    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.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • contractor_procedure_analysis unknown 41h ago

    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, CIF, or UUID.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_budget_programes unknown 12h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "exercici"
      ],
      "properties": {
        "seccio": {
          "type": "string",
          "maxLength": 4,
          "description": "Secció pressupostària code (e.g. 'SA', 'PO'). Case-insensitive exact match."
        },
        "exercici": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000,
          "description": "Budget exercici (e.g. 2026)."
        }
      },
      "additionalProperties": false
    }
    arguments 21 lines
  • get_entity_contracts unknown 4h ago

    Contracts **received by** the entity — the entity acts as the supplier / adjudicatari that was awarded the contract. Use this when you want to know which public tenders an entity has won (money flowing IN to the entity). Filters: year range, min amount, procedure type. Each row includes its ID and `publication_url` (PSCP award page). If you instead want contracts the entity has **issued as the contracting body** (money flowing OUT), use `get_entity_contracts_as_organ`. To read the full text of a contract page, pass the URL to `fetch_source_document`. For all documents at once, use `list_documents_for_entity`.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "entity_id"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "year_to": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "entity_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9À-ÿ_-]+$",
          "maxLength": 120,
          "minLength": 1,
          "description": "Entity slug, CIF, or UUID"
        },
        "year_from": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "min_amount": {
          "type": "number",
          "minimum": 0
        },
        "procedure_type": {
          "type": "string",
          "maxLength": 100
        }
      },
      "additionalProperties": false
    }
    arguments 47 lines
  • get_entity_contracts_as_organ unknown 4h ago

    Contracts **issued by** the entity — the entity acts as the contracting body (organ / atorgant) that awarded the contract to a supplier. Use this when you want to know how much public money an ajuntament, consorci, diputació or ens públic has awarded in tenders (money flowing OUT of the entity). Resolves the entity to its mapped organ name(s) via `organ_entity_map` (a single entity can correspond to several organ labels used in the source dataset). Filters: year range, min amount, procedure type. Each row includes the adjudicatari (`entity_slug`) plus ID and `publication_url` (PSCP award page). For the inverse perspective (contracts the entity has received as supplier), use `get_entity_contracts`.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "entity_id"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "year_to": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "entity_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9À-ÿ_-]+$",
          "maxLength": 120,
          "minLength": 1,
          "description": "Entity slug, CIF, or UUID"
        },
        "year_from": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "min_amount": {
          "type": "number",
          "minimum": 0
        },
        "procedure_type": {
          "type": "string",
          "maxLength": 100
        }
      },
      "additionalProperties": false
    }
    arguments 47 lines
  • get_entity_financials unknown 4h ago

    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.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_methodology unknown never probed

    Scoring methodology, data sources, last-sync timestamps, definitions. Citable for LLM outputs.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_entity_grants unknown never probed

    Grants awarded to the entity with filters (year range, min amount, department) and cursor pagination. Each grant row includes its ID — to get the official DOGC/BOE source document for a specific grant, use `get_source_documents(record_type='grant', record_id=<id>)`. For all documents at once, use `list_documents_for_entity`.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "entity_id"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "year_to": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "entity_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9À-ÿ_-]+$",
          "maxLength": 120,
          "minLength": 1,
          "description": "Entity slug, CIF, or UUID"
        },
        "year_from": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "department": {
          "type": "string",
          "maxLength": 200
        },
        "min_amount": {
          "type": "number",
          "minimum": 0
        }
      },
      "additionalProperties": false
    }
    arguments 47 lines
  • get_party unknown 2d ago

    Party aggregates: member count, total accumulated years, average salary, and the top members by effective_party. effective_party is the person's own party only: a sourced correction (effective_party_basis 'override'; a null effective_party then means no party is known) or the party of their electoral list (basis 'party'). It is null, with a null basis, when no party of their own is known, and it is never the party of the government that appointed them. The appointment is context only: appointing_party_context is the party and appointing_govern_context the government (for example 'Govern Illa') of the latest position that has an appointing party; never present them as the person's party or militancy.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "party"
      ],
      "properties": {
        "party": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • get_politician_conflicts unknown 2d ago

    Declared patrimony + detected BORME vincles for one politician.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • analyze_conflict_of_interest reads unknown 2d ago

    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).

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        },
        "person_name": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • get_ens_public unknown 10h ago

    Instrumental/public body profile including type (consorci, empresa pública, fundació) and parent administration.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • get_budget_transfers unknown never probed

    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.

    mcp-tool

    {
      "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
    }
    arguments 20 lines
  • get_bcn_personal_for_person unknown 14h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "person_name"
      ],
      "properties": {
        "person_name": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "Full name in natural order (Nom Cognoms). Accent and case insensitive."
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • get_person_network reads unknown 2d ago

    BFS from a single person up to a max depth (hard-capped at 3).

    mcp-tool

    {
      "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
    }
    arguments 22 lines
  • analyze_contract_network unknown 2d ago

    Contract graph for an organ or entity: sole-source patterns, repeat suppliers, fragmentation signals.

    mcp-tool

    {
      "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
    }
    arguments 15 lines
  • get_equivalencies unknown 3d ago

    Translate a EUR amount into scale-sensitive, neutral reference points (salary multiples, per-capita, % Generalitat budget, etc.).

    mcp-tool

    {
      "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
    }
    arguments 28 lines
  • list_documents_for_entity unknown 2d ago

    Official documents tied to an entity by stored keys or printed ids: contract PDFs, BDNS calls, transparency rulings, lobby meetings, with url, role, via and date. Roles: adjudicatari, organ_contractant (contracting body), beneficiari (via bdns_call: got a grant under that call), organ_concedent (body convening the grant; organ_label is its own name, e.g. a department), organisme_reclamat (body a transparency claim is about), grup_interes (lobby meeting: no url, record_id is the meeting). via contract_id_fuzzy_scored: a contracting body matched by approximate name and judged the same organisation by a model; it carries match_note and match_score. Newest first, paged (limit ≤200, offset) with `total`; the first page adds `legend` (labels of the roles and vias present), `counts` per source_type and role, `counts_by_type` and `record_pages` (PSCP and DOGC/BOE pages of its contracts and grants). Filter by `source_types` or `year`. Pass a url to `fetch_source_document` to read it.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "entity_id"
      ],
      "properties": {
        "year": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "entity_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9À-ÿ_-]+$",
          "maxLength": 120,
          "minLength": 1,
          "description": "Entity slug, CIF, or UUID"
        },
        "source_types": {
          "type": "array",
          "items": {
            "enum": [
              "contract_pdf",
              "gaip_resolucio",
              "tccsp_resolucio",
              "sindic_resolucio",
              "lobby_meeting",
              "grant_pdf",
              "conveni_pdf",
              "bdns_convocatoria"
            ],
            "type": "string"
          },
          "maxItems": 8,
          "minItems": 1
        }
      },
      "additionalProperties": false
    }
    arguments 52 lines
  • fetch_source_document unknown 33h ago

    Fetch and extract plain text from any source URL returned by `get_source_documents` or `list_documents_for_entity`. Handles HTML (via readability) and PDF (via pdf-parse). Default 256 kB; set `max_kb` up to 512 for long regulatory PDFs. SSRF-hardened, 24h cached. URL MUST exist in the Menjometre DB allowlist (i.e. it must be a URL returned by another document tool). Typical workflow: (1) list_documents_for_entity → get URLs, (2) fetch_source_document for each URL → get text, (3) analyse the text. If `truncated` is true in the response, call again with a higher `max_kb` to get the rest.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri"
        },
        "max_kb": {
          "type": "integer",
          "default": 256,
          "maximum": 512,
          "minimum": 16
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • cross_funder_analysis unknown 36h ago

    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, CIF, or UUID.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • grant_recurrence_analysis reads unknown never probed

    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, CIF, or UUID.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        },
        "min_years": {
          "type": "integer",
          "default": 2,
          "maximum": 30,
          "minimum": 2,
          "description": "Minimum streak length in years (default 2)"
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • get_sindicatura_informes reads unknown 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "organ_slug"
      ],
      "properties": {
        "organ_slug": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Audited body slug (same slug used by get_organ / get_organ_transparency)"
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • search_atlas_territori unknown 2d ago

    Cerca codis i noms de municipis, comarques, seccions censals i barris de Barcelona perquè les altres eines de l'Atlas rebin identificadors estables.

    mcp-tool

    {
      "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",
          "description": "Filtra el tipus de territori."
        },
        "consulta": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Nom o codi parcial del territori."
        }
      },
      "additionalProperties": false
    }
    arguments 32 lines
  • get_atlas_territori reads unknown 17h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "territori"
      ],
      "properties": {
        "gra": {
          "enum": [
            "seccio",
            "municipi",
            "comarca"
          ],
          "type": "string",
          "description": "Omet-lo: es dedueix del territori."
        },
        "temes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 9,
          "description": "Filtra per grans categories temàtiques."
        },
        "territori": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Nom de municipi o comarca, codi INE-5, codi de comarca de 2 dígits, o CUSEC de 10."
        }
      },
      "additionalProperties": false
    }
    arguments 33 lines
  • get_atlas_educacio unknown 19h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "territori"
      ],
      "properties": {
        "gra": {
          "enum": [
            "seccio",
            "municipi",
            "comarca"
          ],
          "type": "string",
          "description": "Força la resolució del territori."
        },
        "territori": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Nom/codi de municipi, comarca o CUSEC."
        },
        "limit_centres": {
          "type": "integer",
          "default": 10,
          "maximum": 50,
          "minimum": 0
        }
      },
      "additionalProperties": false
    }
    arguments 31 lines
  • get_atlas_serie unknown 19h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "capa",
        "territori"
      ],
      "properties": {
        "gra": {
          "enum": [
            "seccio",
            "municipi",
            "comarca"
          ],
          "type": "string",
          "description": "Força la resolució del territori."
        },
        "capa": {
          "type": "string",
          "maxLength": 60,
          "minLength": 1,
          "description": "Id de capa retornat per list_atlas_capes."
        },
        "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,
          "description": "Slug de categoria. Omet-lo per a la primera categoria publicable."
        },
        "territori": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "CUSEC, codi INE-5 o nom de municipi."
        }
      },
      "additionalProperties": false
    }
    arguments 53 lines
  • export_data reads unknown never probed

    Bulk JSON export of grants/contracts/entities with filters. CSV is emitted as plain text for LLM consumption.

    mcp-tool

    {
      "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
    }
    arguments 32 lines
  • topic_hybrid_search unknown 44h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 25,
          "minimum": 1,
          "description": "Max results per facet (default 10)."
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "Free-text query, 2–200 characters."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • find_politician_by_name unknown 33h ago

    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. effective_party is the person's own party only: a sourced correction (effective_party_basis 'override'; a null effective_party then means no party is known) or the party of their electoral list (basis 'party'). It is null, with a null basis, when no party of their own is known, and it is never the party of the government that appointed them. The appointment is context only: appointing_party_context is the party and appointing_govern_context the government (for example 'Govern Illa') of the latest position that has an appointing party; never present them as the person's party or militancy.

    mcp-tool

    {
      "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,
          "description": "If true, accepts substring matches; otherwise exact unaccent+lowercase match."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • get_patrimoni_person unknown 38h ago

    The declaration of assets and income of one Congreso deputy: the summary figures, every block (header, income, income tax, own real estate, company-held property, deposits, other assets, vehicles, other undeclared assets, loans, other debt, observations), the full version history and the declared companies. Identify the person by deputy_id, or by name in either order ("Cognoms, Nom" or "Nom Cognoms"), accent-insensitive; a multi-word name is matched on all its words, so "Pedro Sánchez" and "SÁNCHEZ PÉREZ-CASTEJÓN, PEDRO" both resolve. When a name matches more than one declarant the tool returns the candidates so the caller picks a deputy_id, and never chooses one of them. direct_rent_total is the sum as printed, including monthly amounts where declared: it is not an annual total and is never annualized. rent_is_monthly flags monthly rental lines. Coverage reports direct_rent_annual_total and direct_rent_monthly_total separately by the period of each line. Direct rent and property held through a company are two separate declared facts and are never added together. Every *_rows column counts declaration ROWS, not properties, so it is a lower bound and never a property count. Absence is null, never zero. work_income_non_annual and capital_income_non_annual are the LIVE period classification of each side: true means every declared line of that side is quarterly, monthly or bimonthly, so its annual total is null because the declaration is outside the annual section, never because the person declared nothing. These flags are authoritative for that state even when lineage is absent or its stored income.status is stale; a null annual total with a true flag is not an absence. A true work_income_amount_unknown or capital_income_amount_unknown means the side has annual rows but none carries an extracted amount: its null total is pending, not an absence. A true work_income_pending or capital_income_pending means the side contains at least one line whose period is unknown or incompatible, so its total is NULL and pending, not an absence. The three states are disjoint (a side carries at most one of them). There is deliberately no large-holder flag and no wealth index: do not derive, rank or invent one. Effective figures incorporate only reviewed explicit referrals to the same person’s prior declarations. lineage identifies original source dates and pages, unresolved blocks and income reporting exercises; effective_revision identifies this resolved projection. Preserve row and field provenance. Mixed-year or unresolved income totals are null: never recompute them by summing incompatible rows, and never date inherited figures from the latest update. The response also carries the derived census of the declaration version. income_known_total is the sum of the declared annual amounts that carry a quantity; income_state is its combined state (complete, partial, explicit_none, no_income, last_declared, non_annual, pending or unknown) and income_unquantified_rows counts the annual lines without an amount. work_income_known_total, work_income_state and work_income_unquantified_rows are the work side; capital_income_known_total, capital_income_state and capital_income_unquantified_rows are the capital side. The per-side states are the authority for the two income columns. valued_assets_total is the declared sum of deposit balances, securities, shares and public debt, and other assets with an amount; explicit rental rows in other_undeclared are income and are excluded, and real estate, company-held property, vehicles, loans and other debts are outside the block by construction and are never netted, so it is not a net-worth figure. valued_assets_state is complete, partial, unknown or none; valued_assets_unquantified_rows counts the included lines without an amount. The valued_assets deposits, securities and other buckets are the view's per-bucket sums and may be 0; a 0 bucket is not a declared zero unless valued_assets_state is complete or partial. A state describes the block; a null total is not zero. metrics_status is ok, missing or error. When it is missing or error, metrics is null and must not be read as a declared absence; the person's detail is still returned. The metrics object groups the same fields under income (known_total, state, positive_rows, unquantified_rows, negative_rows, last_total, last_date, last_version, plus work and capital) and valued_assets (total, deposits, securities, other, positive_rows, unquantified_rows, state). summary.work_income_total and summary.capital_income_total are the detail RPC's annual totals for this version; when they differ from metrics.income.work.known_total or metrics.income.capital.known_total, the metrics block is the authority for the effective declaration, because it includes reviewed inherited rows and the per-side state.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "Person name in either order, \"Cognoms, Nom\" or \"Nom Cognoms\" (e.g. \"SÁNCHEZ PÉREZ-CASTEJÓN, PEDRO\" or \"Pedro Sánchez\"). Accent- and case-insensitive; a multi-word name is matched on all its words. Exactly one of name / deputy_id is required."
        },
        "deputy_id": {
          "type": "integer",
          "description": "Congreso deputy id, as returned by search_patrimoni_representatives or by an ambiguous name lookup. Exactly one of name / deputy_id is required.",
          "exclusiveMinimum": 0
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • compare_atlas_territoris reads unknown 47h ago

    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.

    mcp-tool

    {
      "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
    }
    arguments 40 lines
  • compare_entities unknown 47h ago

    Side-by-side comparison of 2–5 entities (slug or CIF).

    mcp-tool

    {
      "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
    }
    arguments 20 lines
  • get_atlas_capa unknown 24h ago

    Valors d'una capa de l'Atlas per a tots els territoris d'un gra, ordenats. Retorna cobertura per estat perquè una absència no es pugui confondre mai amb un zero.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "capa"
      ],
      "properties": {
        "gra": {
          "enum": [
            "seccio",
            "municipi",
            "comarca",
            "abs",
            "regio-sanitaria",
            "barri-bcn"
          ],
          "type": "string",
          "description": "Gra de sortida. Omet-lo per al gra natiu de la categoria."
        },
        "capa": {
          "type": "string",
          "maxLength": 60,
          "minLength": 1,
          "description": "Id de capa retornat per list_atlas_capes."
        },
        "mode": {
          "enum": [
            "nivell",
            "delta"
          ],
          "type": "string",
          "default": "nivell",
          "description": "nivell actual o delta entre extrems publicats quan la capa el suporta."
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "ordre": {
          "enum": [
            "desc",
            "asc"
          ],
          "type": "string",
          "default": "desc"
        },
        "anyada": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 1900,
          "description": "Any històric concret. No es pot combinar amb mode=delta."
        },
        "categoria": {
          "type": "string",
          "maxLength": 60,
          "description": "Slug de categoria. Omet-lo per a la primera categoria publicable."
        },
        "nomes_fiables": {
          "type": "boolean",
          "default": true,
          "description": "Amaga les files amb denominador poc fiable."
        }
      },
      "additionalProperties": false
    }
    arguments 67 lines
  • get_dogc_cessament_review_pending unknown 17h ago

    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.

    mcp-tool

    {
      "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,
          "description": "Filter candidates whose top score is below this threshold."
        }
      },
      "additionalProperties": false
    }
    arguments 25 lines
  • semantic_transparency_search unknown 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "font": {
          "enum": [
            "gaip",
            "tccsp"
          ],
          "type": "string",
          "description": "Restrict to GAIP or TCCSP."
        },
        "limit": {
          "type": "integer",
          "maximum": 25,
          "minimum": 1,
          "description": "Max results (default 12)."
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "Free-text query, 2–200 characters."
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • get_contract_documents unknown 10h ago

    List every PDF and document attached to a PSCP contract across all stages (Licitació, Adjudicació, Formalització, etc.). Given a contract ID from our DB, resolves the PSCP publication, discovers sibling stages via the Dades Obertes API, and returns a structured catalog: [{filename, doc_id, hash, size_bytes, download_url, doc_type, stage}]. Minor contracts (contractes menors) are flagged with `is_minor_contract: true` and typically have no individual documents. To read a document's full text, pass its `doc_id` and `hash` to `fetch_contract_pdf`.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "contract_id"
      ],
      "properties": {
        "contract_id": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Contract UUID from our DB (returned by get_entity_contracts)"
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • get_entity unknown 10h ago

    Full entity profile plus Menjometre scores with natural-language explanations. Accepts slug, CIF, or UUID (e.g. an `id` from `search` or a network edge). 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.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_bcn_top_beneficiaris unknown 12h ago

    Top beneficiaries of the Barcelona City Council executed budget for a given year, grouped by the raw CSV text_subconcepte and ordered by pagat (cash disbursed). Returns every top recipient in the dataset — including internal accounting concepts ('IM de Serveis Socials', 'Complement específic funcionaris'), so the ranking is not distorted by catalog-mapping coverage. Optional catalog link populated when the group resolved with ≥ 0.80 fuzzy-match confidence.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "year"
      ],
      "properties": {
        "year": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2010
        },
        "limit": {
          "type": "integer",
          "default": 25,
          "maximum": 200,
          "minimum": 1
        },
        "dataset": {
          "enum": [
            "despeses",
            "ingressos"
          ],
          "type": "string",
          "default": "despeses",
          "description": "Which side of the budget to rank. Default: despeses."
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • get_budget_partides unknown 12h ago

    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).

    mcp-tool

    {
      "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
    }
    arguments 20 lines
  • get_atlas_bcn_barri unknown 24h ago

    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ó.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "barri"
      ],
      "properties": {
        "barri": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Nom o codi del barri de Barcelona."
        },
        "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,
          "description": "Subregió mundial exacta o parcial."
        }
      },
      "additionalProperties": false
    }
    arguments 38 lines
  • get_pressupostos_hub unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "year": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2010,
          "description": "Fiscal year. Omit for the latest executed year."
        },
        "estat": {
          "enum": [
            "executat",
            "aprovat"
          ],
          "type": "string",
          "description": "Force a data layer: 'aprovat' reads the approved/projecte budget even when the year has executed data."
        }
      },
      "additionalProperties": false
    }
    arguments 21 lines
  • get_entity_network unknown 55m ago

    BFS from a single entity up to a max depth (hard-capped at 3).

    mcp-tool

    {
      "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
    }
    arguments 20 lines
  • get_organ unknown 3d ago

    Single contracting body profile: total contracts, total amount, % sole-source, % menor, % competitive, top-5 suppliers share.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • get_organ_top_suppliers unknown 3d ago

    Ranked list of the suppliers (adjudicataris) a contracting body has awarded the most money to, aggregated across its non-superseded contracts. This is the breakdown behind the `pct_top5` figure in `get_organ`: it returns each supplier's total amount, contract count, and active-year span. Optional filters `min_amount`/`max_amount` isolate an amount band (e.g. 10000-15000 to surface contract-splitting / bunching just below a threshold), `contract_type` narrows by type (e.g. 'serveis', 'obres', 'subministraments'), and `year_from`/`year_to` bound the period. Pass the `organ_slug` from `list_organs`/`get_organ` (e.g. AJUNTAMENT-DE-RUBI). For the full contract list of an organ use `get_entity_contracts_as_organ`.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 200,
          "minimum": 1
        },
        "year_to": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "year_from": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "max_amount": {
          "type": "number",
          "minimum": 0
        },
        "min_amount": {
          "type": "number",
          "minimum": 0
        },
        "contract_type": {
          "type": "string",
          "maxLength": 100
        }
      },
      "additionalProperties": false
    }
    arguments 43 lines
  • get_organ_transparency unknown 3d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "organ_slug"
      ],
      "properties": {
        "organ_slug": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Respondent body slug"
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • get_seguretat_abp reads unknown 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "abp"
      ],
      "properties": {
        "abp": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Codi d'ABP (p. ex. '08', 'BCN') o nom d'un municipi."
        },
        "any": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2011,
          "description": "Any (year). Omet-lo per a l'últim any complet."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • get_seguretat_subtipus unknown 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "abp",
        "tipus"
      ],
      "properties": {
        "abp": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Codi d'ABP (p. ex. '08', 'BCN')."
        },
        "any": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2011,
          "description": "Any (year). Omet-lo per a l'últim any complet."
        },
        "tipus": {
          "type": "string",
          "maxLength": 160,
          "description": "Codi del títol del Codi Penal (p. ex. 'DE-LES-LESIONS'). Omet-lo per al total de delictes. Fes servir get_seguretat_per_tipus per llistar els codis disponibles."
        }
      },
      "additionalProperties": false
    }
    arguments 28 lines
  • search_sindicatura_informes unknown 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "q"
      ],
      "properties": {
        "q": {
          "type": "string",
          "maxLength": 400,
          "minLength": 2,
          "description": "Natural-language query (concept / matèria)"
        },
        "limit": {
          "type": "integer",
          "default": 12,
          "maximum": 50,
          "minimum": 1,
          "description": "Max informes returned"
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • semantic_document_search reads unknown 2d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 25,
          "minimum": 1,
          "description": "Max results (default 10)."
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "Free-text query, 2–200 characters."
        },
        "source_types": {
          "type": "array",
          "items": {
            "enum": [
              "gaip",
              "tccsp",
              "sindicatura",
              "dogc"
            ],
            "type": "string"
          },
          "description": "Restrict to these document sources."
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • find_shortest_path unknown 30h ago

    Bounded BFS shortest path between two graph nodes. Max depth hard-capped at 5 in the RPC.

    mcp-tool

    {
      "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
    }
    arguments 37 lines
  • get_dataset_stats reads unknown never probed

    Global counts, EUR totals, and last-sync metadata across grants, contracts, entities, and persons.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_politician reads unknown 2d ago

    Profile, total public years (merged tenure), party, institution, salary, BORME vincles count. party is the raw label of the source; effective_party is the party the fitxa shows. effective_party is the person's own party only: a sourced correction (effective_party_basis 'override'; a null effective_party then means no party is known) or the party of their electoral list (basis 'party'). It is null, with a null basis, when no party of their own is known, and it is never the party of the government that appointed them. The appointment is context only: appointing_party_context is the party and appointing_govern_context the government (for example 'Govern Illa') of the latest position that has an appointing party; never present them as the person's party or militancy.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • semantic_sindicatura_search unknown 2d ago

    Semantic search over Sindicatura de Comptes audit reports by meaning. Returns matching report passages with the official source link.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 25,
          "minimum": 1,
          "description": "Max results (default 12)."
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "Free-text query, 2–200 characters."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • get_politician_salary_history unknown 2d ago

    Detailed salary time-series across positions.

    mcp-tool

    {
      "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
    }
    arguments 16 lines
  • get_atlas_sanitat reads unknown 28h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "gra": {
          "enum": [
            "seccio",
            "municipi",
            "comarca"
          ],
          "type": "string",
          "description": "Força la resolució del territori."
        },
        "mesos": {
          "type": "integer",
          "default": 36,
          "maximum": 60,
          "minimum": 1
        },
        "codi_rs": {
          "type": "string",
          "maxLength": 10,
          "minLength": 1,
          "description": "Codi de regió sanitària directe per consultar llistes d'espera."
        },
        "codi_abs": {
          "type": "string",
          "maxLength": 20,
          "minLength": 1,
          "description": "Codi ABS directe per consultar atenció primària."
        },
        "territori": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Nom/codi de municipi o CUSEC. Les comarques no tenen correspondència sanitària directa en aquesta RPC."
        },
        "limit_centres": {
          "type": "integer",
          "default": 15,
          "maximum": 50,
          "minimum": 0
        }
      },
      "additionalProperties": false
    }
    arguments 46 lines
  • get_source_documents unknown 2d ago

    List every official source URL attached to a single record (grant, contract, etc.). Grants link to DOGC/BOE regulatory pages (HTML). Contracts link to PSCP award pages (HTML). To read the full text of any returned URL, pass it to `fetch_source_document`. record_type ∈ grant | contract | conveni | politician_position | porta_giratoria_case | personal_eventual_appointment | official_appointment | entity.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "record_type",
        "record_id"
      ],
      "properties": {
        "record_id": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "record_type": {
          "enum": [
            "grant",
            "contract",
            "conveni",
            "politician_position",
            "porta_giratoria_case",
            "personal_eventual_appointment",
            "official_appointment",
            "entity"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • get_yearly_trends reads unknown 2d ago

    Generic yearly time-series by dimension/metric (grants, contracts, entities).

    mcp-tool

    {
      "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
    }
    arguments 35 lines
  • investigate_cluster unknown 2d ago

    Full member list of a Louvain cluster with entity + person joins.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "cluster_id"
      ],
      "properties": {
        "cluster_id": {
          "type": "integer",
          "minimum": 0
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • theme_spend_breakdown unknown 2d ago

    Returns grants aggregated by year and by funder department for a RAISC purpose category (about 20 broad categories such as CULTURA, PROTECCIÓ SOCIAL, SANITAT or RELACIONS EXTERIORS I COOPERACIÓ). The theme matches the start of a word of the category, ignoring case and accents ('cultura', 'cooperacio', 'social'). Narrower topics that are not a category return no rows plus `available_themes`. Useful for questions like 'how much has been awarded for culture?' or 'yearly trend for cooperació'.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "theme"
      ],
      "properties": {
        "theme": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "RAISC purpose category or a word of it (e.g. 'cultura', 'cooperació', 'social')"
        },
        "year_to": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "year_from": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "top_funders": {
          "type": "integer",
          "default": 20,
          "maximum": 100,
          "minimum": 1,
          "description": "How many top funders to include (default 20)"
        }
      },
      "additionalProperties": false
    }
    arguments 33 lines
  • concept_spend_summary unknown 44h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "query": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "Free-text query, 2–200 characters."
        },
        "domain": {
          "enum": [
            "contractes",
            "subvencions",
            "tots"
          ],
          "type": "string",
          "description": "Limit to contracts or grants; defaults to both."
        }
      },
      "additionalProperties": false
    }
    arguments 25 lines
  • get_entity_accio_concertada reads unknown 7h ago

    Spending received by the entity via acció concertada (Llei 12/2007 / Decret 69/2020 — social-services concert with the Generalitat). Not captured by RAISC grants or public-contract datasets. Returns yearly rows with amount, service type, department, and source document (Sindicatura Informe 3/2024 + DOGC resolutions).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "entity_id"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 10000,
          "minimum": 0
        },
        "year_to": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        },
        "entity_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9À-ÿ_-]+$",
          "maxLength": 120,
          "minLength": 1,
          "description": "Entity slug, CIF, or UUID"
        },
        "year_from": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2000
        }
      },
      "additionalProperties": false
    }
    arguments 39 lines
  • get_entity_bcn_budget_lines unknown 7h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "entity_id"
      ],
      "properties": {
        "dataset": {
          "enum": [
            "despeses",
            "ingressos"
          ],
          "type": "string",
          "description": "Filter by dataset. Omit for both."
        },
        "year_to": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2010
        },
        "entity_id": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "description": "Entity slug or CIF."
        },
        "year_from": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2010
        }
      },
      "additionalProperties": false
    }
    arguments 34 lines
  • get_entity_conflicts reads unknown 7h ago

    Entity-side: politicians linked to the entity via BORME roles + person_entity_roles.

    mcp-tool

    {
      "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,
          "description": "Entity slug, CIF, or UUID"
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id e4d3656ed0ce1979.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/e4d3656ed0ce1979/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/e4d3656ed0ce1979/badge.svg)](https://brick.blue/agent/e4d3656ed0ce1979?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.