sbs
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sbs¿Qué banco tiene la menor morosidad?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-sbs-peru
Un servidor MCP para que Claude responda con las cifras oficiales de la Superintendencia de Banca, Seguros y AFP del Perú (SBS): morosidad y solvencia de bancos y cajas, participación de mercado, comisiones y rentabilidad de las AFP, y ranking de aseguradoras. Cada respuesta cita el boletín, el periodo y la URL del Excel de la SBS, así que cualquiera puede comprobarla.
Ejemplos: «¿Qué banco tiene la menor morosidad?», «¿Qué AFP cobra menos comisión?», «¿Quién vende más SOAT?», «ROE de las cajas municipales en agosto de 2026».
Uso rápido
Necesitan uv y Claude Code.
git clone <url-de-este-repositorio> mcp-sbs-peru
cd mcp-sbs-peru
uv run pytest -q -m "not live" # pruebas sin internet: deben pasar todas
claude # acepten los servidores de .mcp.json (sbs y fetch)Dentro de Claude Code, /mcp debe mostrar sbs conectado. Para usarlo desde otro proyecto:
claude mcp add sbs -- uv run --directory /ruta/a/mcp-sbs-peru server.pyRelated MCP server: LATAM-MCP
Qué trae
Herramienta | Para qué |
| Morosidad, ROE, ROA, solvencia, liquidez y eficiencia de bancos, financieras, cajas municipales, cajas rurales y empresas de créditos |
| Créditos, depósitos o patrimonio por entidad, con participación de mercado; para bancos, también por tipo de crédito |
| Comisión sobre el saldo, prima de seguro, aporte y descuento total de cada AFP |
| Valor cuota diario por AFP y fondo (0 a 3), con su variación |
| Rentabilidad nominal y real, acumulada o anualizada, a 1, 2, 3… años |
| Primas netas por aseguradora: total, por ramo o por riesgo (SOAT, vehículos, vida…) |
| Solvencia, siniestralidad, ROE, liquidez y gestión de cada aseguradora |
| Encontrar y leer cualquier otro boletín de la SBS, fila por fila |
Recurso o prompt | En Claude Code |
|
|
|
|
|
|
De dónde salen los datos
Tema | Detalle |
Fuente | Los boletines estadísticos que la SBS publica en |
Rezago | Cada boletín sale después de cerrar el mes: AFP unas 2 semanas, seguros 3, bancos y cajas 4 a 5. Sin |
Unidades | Indicadores en %. Montos en miles de soles, como los muestra el Excel. En los rankings de seguros la celda guarda soles y el Excel muestra miles, así que el servidor divide entre 1000 |
Cita | «Fuente: SBS», el título y código del boletín, el periodo y la URL del archivo. No encontramos una licencia publicada para estos datos |
Límites que conviene saber
No incluye las tasas de interés por entidad de Retasas. La SBS solo las publica en
www.sbs.gob.pe, que les responde a los programas con un desafío anti-robots. Este servidor no intenta pasarlo. Lo más cercano que publica la SBS por entidad es el indicador «Ingresos financieros anualizados / activo productivo promedio» (indicadoresconindicador="rendimiento"). Si necesitan Retasas, lo correcto es pedirle a la SBS un acceso abierto.Uso respetuoso. Un pedido por segundo como máximo, sumando todos los servidores que corran en la máquina (cada sesión de Claude Code levanta uno), y caché en
datos/. Si la SBS responde una página web en vez de un Excel, el servidor se detiene y lo dice.Información, no asesoría. Las cifras son las publicadas por la SBS. Elegir AFP, banco o seguro es una decisión de cada uno.
Pruebas y evaluación
uv run pytest -q # todas; las marcadas live bajan los Excel reales de la SBS
uv run evaluar.py --modos memoria web mcp # 10 preguntas a Claude (Haiku) sin herramientas, con web y con el MCPpreguntas.csv trae, para cada pregunta, la cifra oficial y la celda del Excel donde comprobarla. Los resultados y su
análisis están en informe.md.
Origen
Proyecto de la sesión 04, «MCP: Claude conectado a tus datos», del curso Data Science con Python
(d2cml-ai/Data-Science-Python). El curso proponía un MCP del
BCRP; este repositorio lo lleva a la SBS. evaluar.py y el estilo de las pruebas vienen del proyecto del curso.
Autoría: Rodrigo Norabuena, en coautoría con Claude (Anthropic). El código se publica con licencia MIT. Los datos son de la SBS: cítenla como fuente.
Available Tools
10 toolsafp_comisionesAfp ComisionesARead-only
Comisión sobre el saldo, prima de seguro, aporte obligatorio y descuento total de cada AFP, en %.
Úsenla para «¿qué AFP cobra menos?» o «¿cuánto me descuentan del sueldo?». periodo: "AAAA-MM" del devengue; por defecto el último publicado. "columnas" trae el nombre oficial de cada campo.
| Name | Required | Description | Default |
|---|---|---|---|
| periodo | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavior: results are percentages, there is a default period, and the default is the last published period.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads what data is returned, then the common use cases, then the parameter format. The only wasted or harmful sentence is the reference to «columnas», which does not correspond to a schema field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with an output schema and annotations, the description covers the essential purpose, usage examples, and default period behavior. The phantom «columnas» reference is a notable completeness flaw but does not prevent correct use of the actual periodo parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description properly compensates for the single real parameter by explaining periodo as an «AAAA-MM» devengue period and stating the default. However, it also mentions «columnas», which is not present in the input schema and could mislead an agent into passing an invalid argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource and measures: commission on balance, insurance premium, mandatory contribution, and total deduction per AFP in percentages. It distinguishes the tool from siblings like afp_rentabilidad or afp_valor_cuota by focusing on fees/deductions rather than returns or quota values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete example questions such as «¿qué AFP cobra menos?» and «¿cuánto me descuentan del sueldo?», making the intended use clear. It does not explicitly name when not to use it or point to an alternative sibling, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
afp_rentabilidadAfp RentabilidadARead-only
Rentabilidad nominal y real (%) de cada AFP para un fondo, a 1, 2, 3... años, según la SBS.
Úsenla para «¿qué AFP rindió más en el fondo 2?» o «rentabilidad real a 10 años del fondo 3». fondo: 0, 1, 2 o 3. tipo: "anualizada" (por año, para comparar plazos) o "acumulada" (total del periodo). plazo: "1 año", "5 años"...; por defecto todos. periodo: "AAAA-MM"; por defecto el último publicado.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | anualizada | |
| fondo | Yes | ||
| plazo | No | ||
| periodo | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds real domain context: what anualizada vs acumulada means and the default behaviour for plazo and periodo. Return format is left to the output schema, which exists, so this is nearly complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It leads with the purpose, then usage examples, then parameter semantics — a sensible front-loaded order. It is a dense run-on paragraph in Spanish, but every clause (metric, examples, param meanings, defaults) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 params, one required, 0% schema coverage, an output schema present and read-only annotations, the description supplies everything an agent needs: metric scope, inclusion examples, value ranges, formats, and defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and does so well: it enumerates fondo values (0–3), explains the two tipo semantics and why to pick each, gives plazo syntax ("1 año", "5 años") with its default, and gives periodo syntax ("AAAA-MM") with its default. This adds meaning well beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact metric (nominal and real profitability in %), the entity (each AFP), the dimension (fund), and the horizons (1, 2, 3... years) per SBS. This clearly separates it from siblings such as afp_comisiones or afp_valor_cuota, which return different AFP metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Concrete example questions («¿qué AFP rindió más en el fondo 2?», «rentabilidad real a 10 años del fondo 3») make the intended use obvious. It never states when NOT to use it or points to an alternative sibling tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
afp_valor_cuotaAfp Valor CuotaARead-only
Valor cuota diario (en soles) de cada AFP para un fondo, y su variación % entre la primera y la última fecha.
Úsenla para «¿cuánto vale la cuota del fondo 2 de Integra?» o «¿cuánto rindió el fondo 1 en setiembre?». fondo: 0, 1, 2 o 3. desde y hasta: "AAAA-MM-DD" (sin hasta, solo ese día; si no fue hábil, el anterior). afp: "Habitat", "Integra", "Prima" o "Profuturo"; por defecto todas. Para rangos de más de tres meses solo baja el primer y el último mes. La SBS publica cada mes unas dos semanas después de que termina.
| Name | Required | Description | Default |
|---|---|---|---|
| afp | No | ||
| desde | Yes | ||
| fondo | Yes | ||
| hasta | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds useful behavioral context beyond annotations: non-business days fall back to the previous day, ranges over three months return only the first and last month, and SBS data is published roughly two weeks after month end. It does not describe authentication or rate-limit behavior, but those are less central here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and examples, then follows with parameter rules and data-availability caveats. Every sentence adds actionable information, and the length is appropriate for a tool with four parameters and non-obvious range behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, two required fields, an output schema, and annotations covering read-only/open-world behavior, the description is complete enough to call the tool correctly. It covers parameter values, date semantics, default AFP behavior, range truncation, and publication delay without needing to explain return structure because an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and does so effectively. It explains fondo as 0, 1, 2 or 3; afp as Habitat, Integra, Prima or Profuturo with all as default; and desde/hasta format and semantics, including the single-day and non-business-day fallback behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific resource and measurement: daily quota value in soles per AFP and fund, plus percentage variation between first and last date. It gives example questions that make the tool’s intent concrete. However, it does not explicitly distinguish itself from the related sibling afp_rentabilidad, which could overlap with the “how much did fund 1 yield” example.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage examples (“¿cuánto vale la cuota del fondo 2 de Integra?” and “¿cuánto rindió el fondo 1 en setiembre?”), which tells the agent when the tool is appropriate. It also discloses relevant range and publication constraints, but it does not explicitly name when to use a sibling tool instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indicadoresIndicadoresARead-only
Compara entidades financieras con los indicadores oficiales de la SBS, de mayor a menor.
Úsenla para «¿qué banco tiene menor morosidad?», «ROE de las cajas municipales» o «solvencia de las financieras». tipo_entidad: "bancos", "financieras", "cajas municipales", "cajas rurales" o "empresas de creditos" (antes edpymes). indicador: "morosidad", "roe", "roa", "solvencia", "liquidez", "eficiencia", "rendimiento" (ingresos financieros / activo productivo, lo más parecido a una tasa promedio que publica la SBS por entidad) o palabras del nombre oficial; sin indicador devuelve la lista de indicadores y entidades. periodo: "AAAA-MM"; por defecto el último publicado. Valores en porcentaje salvo que el nombre diga otra cosa; "total" es el del sistema.
| Name | Required | Description | Default |
|---|---|---|---|
| periodo | No | ||
| indicador | No | ||
| tipo_entidad | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, and the description goes well beyond them: it discloses the default period ('por defecto el último publicado'), the discovery mode when no indicator is given, the unit convention ('valores en porcentaje salvo que el nombre diga otra cosa'), and the meaning of 'total'. These are exactly the behavioral details an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose then parameters, with no filler sentences. The parenthetical explaining 'rendimiento' as the closest thing to an average rate is slightly verbose but genuinely disambiguating given SBS naming, so it earns most of its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't describe return shape, yet it still explains units and the 'total' row. All three parameters, their defaults, and the no-indicator behavior are covered, leaving nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does: it enumerates all five tipo_entidad values (including the 'empresas de creditos' / edpymes rename), lists the seven named indicadores plus free-text name matching, and specifies the periodo format 'AAAA-MM' with its default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compara entidades financieras con los indicadores oficiales de la SBS') plus the sort order ('de mayor a menor'). The SBS financial-entity domain and the three example questions make it clearly distinguishable from generic siblings like ranking or reporte.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Maps concrete user questions («¿qué banco tiene menor morosidad?», «ROE de las cajas municipales») directly to the tool, and explicitly states the fallback behavior when indicador is omitted ('sin indicador devuelve la lista de indicadores y entidades'). This is explicit when-to-use guidance rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_reportesListar ReportesARead-only
Lista los boletines de la SBS que conoce este servidor, con su código y título oficial.
Úsenla cuando ninguna otra herramienta cubre la pregunta, para encontrar el código que luego se lee con reporte. sector: "bancos", "financieras", "cajas municipales", "cajas rurales", "empresas de creditos", "afp" o "seguros". texto: palabras del título, por ejemplo "liquidez", "morosidad" o "afiliados".
| Name | Required | Description | Default |
|---|---|---|---|
| texto | No | ||
| sector | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful scope context ('que conoce este servidor', i.e. a fixed server-side catalog rather than a live query). It does not mention whether the result can be empty or how it is ordered, but with an output schema present that gap is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose in the first line, then usage, then per-parameter hints, with no wasted prose. The terse 'param: values' formatting is efficient though slightly telegraphic; the imperative 'Úsenla' is clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is not required, and both optional parameters are documented with their value space. What remains unstated is edge behavior (no matches, empty catalog) and filter combination semantics, which would fully close the loop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden and does so well: it enumerates all six allowed sector values and gives example words for 'texto' ('liquidez', 'morosidad', 'afiliados'). It stops short of stating matching behavior (substring vs exact, case sensitivity) or whether both filters combine with AND.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: lists the SBS bulletins known to this server, returning their code and official title. This is clearly distinct from siblings like 'reporte' (reads content) or 'ranking'/'indicadores' (fetch data), and an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it when no other tool covers the question, and explains the downstream purpose: find the code that is then read with 'reporte'. This is a genuine routing rule plus a named follow-up tool, which is exactly what a discovery/list tool needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rankingRankingARead-only
Ranking oficial de entidades por tamaño, con monto (miles de soles) y participación de mercado (%).
Úsenla para «¿cuál es el banco más grande?», «participación de las cajas municipales en depósitos» o «quién lidera los créditos a microempresas». tipo_entidad: "bancos", "financieras", "cajas municipales" o "cajas rurales". concepto: "creditos", "depositos" o "patrimonio"; para bancos también un tipo de crédito: "corporativos", "grandes empresas", "medianas empresas", "pequenas empresas", "microempresas", "hipotecarios", "consumo revolvente" o "consumo no revolvente". periodo: "AAAA-MM"; por defecto el último publicado.
| Name | Required | Description | Default |
|---|---|---|---|
| limite | No | ||
| periodo | No | ||
| concepto | No | creditos | |
| tipo_entidad | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond them: units of the returned figures (thousands of soles, percent), the default period being the last published one, and the restriction that credit subtypes apply only to banks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and returned metrics come first, then example queries, then parameter value guidance, then the default period — a clean front-loaded order with no filler sentences. Every clause either scopes the resource or specifies an argument domain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the domain restrictions and defaults an agent needs. The only material omission is the semantics of 'limite', which matters for a ranked-list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, and it does well for three of four parameters: tipo_entidad values, concepto values including bank-only credit subtypes, and periodo format 'AAAA-MM' with its default. The 'limite' parameter is never mentioned, leaving the agent to infer that it caps the number of ranked entities.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement of the resource and output: an official ranking of entities by size, with amount in thousands of soles and market share in percent. That is enough to separate it from siblings such as indicadores, reporte, and seguros_ranking (insurance), but no sibling is named explicitly, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives three concrete example questions («cuál es el banco más grande», «participación de las cajas municipales en depósitos», «quién lidera los créditos a microempresas») that map directly onto invocation, plus the valid value sets for tipo_entidad and concepto. There are no explicit exclusions or pointers to alternative tools for related needs (e.g. when to prefer indicadores).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reporteReporteARead-only
Lee cualquier boletín de la SBS fila por fila, con la columna (A, B, C...) de cada celda.
Úsenla cuando ninguna otra herramienta tiene el dato: balances (B-2201), liquidez (B-2340), afiliados AFP (FP-1201) u otro código de listar_reportes. filtro: palabras que debe tener la fila, por ejemplo "disponible" o "BBVA". hoja: nombre de la hoja; por defecto la primera (la respuesta trae la lista). Los valores son los guardados en cada celda: algunos boletines los muestran en miles con el formato del Excel, revisen el título.
| Name | Required | Description | Default |
|---|---|---|---|
| hoja | No | ||
| codigo | Yes | ||
| filtro | No | ||
| limite | No | ||
| periodo | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds real value beyond that with the caveat that values are as stored in each cell and that some bulletins express them in thousands with Excel formatting, plus the note that the response returns the sheet list. It does not address row-by-row paging or what happens when the default limit is hit, which for a raw reader is the one behavioral detail left open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the usage gate, then parameter guidance, all in three compact sentences with no filler. The density is largely justified, though packing the fallback rule and the parameter glossary into continuous prose makes it slightly harder to scan than a short bulleted form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, and the tool is a read-only bulletin reader whose main risk (unit/scaling) is proactively flagged. However, with 5 parameters and zero schema descriptions, leaving 'limite' and 'periodo' entirely unexplained means the agent cannot know how to control row volume or period selection before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, and it explains only two of five parameters: 'filtro: palabras que debe tener la fila' and 'hoja: nombre de la hoja; por defecto la primera'. 'codigo' is only implicitly glossed via 'código de listar_reportes', while 'limite' and 'periodo' are never mentioned at all, and the interplay of 'filtro' with 'limite' (default 40) is not clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb and resource: 'Lee cualquier boletín de la SBS fila por fila, con la columna (A, B, C...) de cada celda', which tells the agent this is a raw, cell-level reader rather than an aggregator. Concrete bulletin codes (B-2201, B-2340, FP-1201) anchor the scope, but differentiation from siblings is left mostly implicit through the fallback framing rather than an explicit contrast with e.g. indicadores or ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule: 'Úsenla cuando ninguna otra herramienta tiene el dato', which is a genuine when-to-use gate rather than a vague hint. It also routes to listar_reportes for discovering 'otro código', but it never states which sibling would already carry balances or liquidez, leaving the agent to infer when the fallback condition is actually met.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seguros_indicadoresSeguros IndicadoresARead-only
Indicadores oficiales de cada aseguradora: solvencia, siniestralidad, rentabilidad, liquidez y gestión.
Úsenla para «¿qué aseguradora tiene mayor ROE?» o «siniestralidad de Rímac». indicador: "roe", "roa", "siniestralidad", "liquidez", una sección como "solvencia" o palabras del nombre oficial; sin indicador devuelve la lista disponible. periodo: "AAAA-MM"; por defecto el último publicado.
| Name | Required | Description | Default |
|---|---|---|---|
| periodo | No | ||
| indicador | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, open-world operation. The description adds useful behavior: the default period is the latest published one, and leaving indicador empty returns the available list. It does not add much beyond that, such as data freshness or matching behavior beyond the examples.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, followed by practical examples and parameter guidance. It is appropriately sized for a two-parameter tool, though the parameter notes are slightly dense and could be more consistently formatted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low parameter count, the presence of an output schema, and read-only annotations, the description covers the essentials needed to invoke the tool correctly. The main remaining gap is explicit differentiation from similarly named ranking siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter semantics. It documents both parameters well: indicador accepts values such as "roe", "roa", "siniestralidad", "liquidez", sections like "solvencia", or words from the official name, while periodo uses "AAAA-MM" and defaults to the latest published. Exact enum-like values and matching rules are still somewhat informal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns official indicators per insurer, naming the dimensions: solvencia, siniestralidad, rentabilidad, liquidez and gestión. It is more specific than a tautology, but it does not explicitly differentiate itself from ranking-oriented siblings such as seguros_ranking or ranking, even though one example asks which insurer has the highest ROE.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage examples such as asking which insurer has the highest ROE or the claims ratio of Rímac, and explains that omitting the indicator returns the available list. It does not state when to prefer this over sibling ranking or report tools, so it falls short of explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seguros_rankingSeguros RankingARead-only
Ranking de aseguradoras por primas netas (miles de soles) y participación de mercado (%).
Úsenla para «¿cuál es la aseguradora más grande?» o «¿quién vende más SOAT?». ramo: por defecto el total; también "ramos generales", "ramos de vida" o un riesgo como "soat", "vehiculos", "asistencia medica", "incendio", "terremoto", "vida individual", "vida en grupo", "renta de jubilacion" o "previsionales". periodo: "AAAA-MM" (acumulado del año a ese mes); por defecto el último publicado.
| Name | Required | Description | Default |
|---|---|---|---|
| ramo | No | ||
| limite | No | ||
| periodo | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world safety, so the bar is lower; the description still adds real context by stating units, that ramo defaults to the total, and that periodo defaults to the latest published month — defaults that the schema only shows as null. It says nothing about how many rows come back or what 'limite' does to the result set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is ranked and in what units, then usage, then parameter notes. Dense but every sentence contributes; the long ramo enumeration is long yet functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the metric/units/periodo semantics are covered. The unexplained 'limite' parameter (default 10) is a genuine gap for a ranking tool, since it determines whether the agent sees a top-N slice or the full market.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It does well for ramo (enumerates accepted values and the default) and periodo (AAAA-MM format, year-to-date accumulation, default), but omits 'limite' entirely, leaving one of three parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource and metric: ranking of insurers by net premiums (thousands of soles) and market share (%). It implicitly separates itself from the generic sibling 'ranking' by stating the insurance domain, but never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering questions («¿cuál es la aseguradora más grande?», «¿quién vende más SOAT?»), which is strong positive guidance. It offers no when-not guidance and doesn't route to seguros_indicadores or ranking for adjacent questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ultimo_periodoUltimo PeriodoARead-only
El último mes que la SBS publicó de un boletín, con la fecha en que lo actualizó y su URL.
Úsenla antes de responder «¿cuál es el dato más reciente?»: la SBS publica con rezago (AFP unas 2 semanas, seguros 3, bancos y cajas 4 a 5). Ejemplo: codigo="B-2401".
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it readOnly and openWorld; the description adds non-obvious behavior: SBS publication lag (AFP ~2 weeks, insurance 3, banks/cajas 4-5) and that the result includes update date and URL. It does not cover auth needs, errors, or rate limits, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded two-sentence definition with a relevant example. The recency-use instruction, lag details, and example all earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be fully explained. The description covers recency use and publication lag; the remaining gap is the weak semantics of codigo.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter codigo has 0% schema description coverage. The description partially compensates by tying it to a bulletin and giving the example codigo="B-2401", but it does not explicitly define the code's meaning, format, or valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Identifies a specific retrieval: the latest month SBS published for a bulletin, plus update date and URL. It is clear what the tool returns, but it does not name or distinguish any sibling tool such as reporte or listar_reportes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it before answering «¿cuál es el dato más reciente?» and explains publication lag by category. It does not state when not to use it or name an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.0- First observed
afp_comisiones - First observed
afp_rentabilidad - First observed
afp_valor_cuota - First observed
indicadores - First observed
listar_reportes - First observed
ranking - First observed
reporte - First observed
seguros_indicadores - First observed
seguros_ranking - First observed
ultimo_periodo
TDQS
Scored across 10 tools
Las herramientas tienen propósitos mayormente distintos y las descripciones aclaran cuándo usar ranking, indicadores, seguros_* o reporte como fallback. Aun así, hay solapamiento potencial entre indicadores/ranking y entre seguros_ranking/seguros_indicadores, que un agente podría confundir sin leer con cuidado.
Todos los nombres usan snake_case, pero mezclan verbos (listar_reportes), sustantivos sueltos (indicadores, ranking, reporte) y prefijos de dominio (afp_*, seguros_*). La convención es legible pero no uniforme.
Diez herramientas parecen bien ajustadas para cubrir reportes, rankings, indicadores, seguros y AFP. Cada herramienta tiene una función clara dentro del dominio y no se observa relleno evidente.
La superficie cubre listado de boletines, último periodo, rankings, indicadores, AFP, seguros y lectura cruda de reportes, lo que da salida a la mayoría de consultas. Faltan operaciones más directas de series temporales o metadatos, aunque reporte y los parámetros de periodo permiten sortearlas.
Maintenance
Related MCP Connectors
Connect your ads, shop, analytics, social, CRM and finance platforms once, then let Claude, ChatGPT, Cursor or any MCP client read, join and explain your numbers. Public statistics from the World Bank, IMF, Eurostat, OECD, WHO and SEC filings come as context, searchable and chartable from the same tools. Read-only by design, every number carries its source.
Banco Central de Reserva del Perú (BCRP) statistics series API MCP. Keyless.
345 finance tools, 56 prompts: quant, SEC and EU filings, fact checks, rates, odds, DeFi, macro.
SEC & financial-data MCP: filings, financials, ownership, factors, fund letters, prompts.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides access to over 5,000 macroeconomic indicators from the Banco Central de Reserva del Perú (BCRP) statistical database. It enables AI agents to search for indicators, fetch time-series data, and generate professional economic charts.41MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Peruvian public-data lookups including SUNAT RUC registrations, BCRP exchange rates, and SEACE tenders. Provides official open-data access through tools for Claude, Cursor, and other MCP clients.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to access economic statistics from the Central Reserve Bank of Peru, including exchange rates, interest rates, and GDP, without requiring an API key.7MIT
- AlicenseAqualityBmaintenanceEnables Claude to access free official financial and economic data from SEC EDGAR, U.S. Treasury, FRED, and the World Bank, including XBRL financial statements, key metrics, filings, insider trades, 13F portfolios, market prices, and macroeconomic series.20MIT