Skip to main content
Glama

edgar-mcp-server

CI Licencia: MIT

Servidor MCP que da a Claude acceso a datos financieros gratuitos y oficiales, sin suscripciones:

Fuente

Qué aporta

SEC EDGAR

Estados financieros XBRL, métricas clave, filings (10-K, 10-Q, 8-K, proxies…), búsqueda de texto completo, operaciones de insiders (Form 4), carteras de fondos (13F) y rankings de todas las empresas

Tesoro de EE. UU.

Curva de tipos oficial (tasa libre de riesgo)

FRED (Reserva Federal de St. Louis)

Más de 800.000 series: tipos, inflación, empleo, PIB, masa monetaria, diferenciales de crédito, divisas, materias primas, recesión

Banco Mundial

Indicadores anuales de cualquier país: PIB, inflación, paro, deuda…

Yahoo Finance (no oficial)

Precios, dividendos, splits, divisas e índices

Cubre las empresas que presentan informes ante la SEC: unas 10.000 cotizadas en EE. UU. y emisores extranjeros con 20-F o 40-F (TSM, ASML, Toyota…).

⚠️ Herramienta de información y análisis, no de asesoramiento financiero.

Instalación

Solo necesitas decirle a la SEC quién eres: tu nombre y tu email (p. ej. Juan Pérez juan@correo.com). No hay registro ni claves.

Opción A — Claude Desktop con un clic (recomendada)

  1. Descarga edgar-mcp-server-<versión>.mcpb desde Releases.

  2. Ábrelo con doble clic, o arrástralo a Claude Desktop → Configuración → Extensiones.

  3. Pulsa Instalar y escribe tu nombre y email cuando te lo pida.

No hace falta instalar Node.js: Claude Desktop trae su propio entorno.

Opción B — Instalador automático (Claude Desktop y Claude Code)

Necesitas Node.js 18+ y Git.

git clone https://github.com/miguelgutierrezortega5-ops/edgar-mcp-server.git
cd edgar-mcp-server
npm install        # descarga dependencias y compila
npm run setup      # pregunta tu nombre y email y configura Claude Desktop y/o Claude Code

El instalador:

  • añade el servidor a claude_desktop_config.json y guarda una copia de seguridad (.bak);

  • lo registra en Claude Code para todos tus proyectos;

  • instala la skill de análisis en ~/.claude/skills.

Después, reinicia Claude Desktop.

Sin preguntas: npm run setup -- --user-agent "Tu Nombre tu@email.com" --yes

Opción C — Manual

Claude Code

npm install
claude mcp add edgar --scope user -e SEC_USER_AGENT="Tu Nombre tu@email.com" -- node "$(pwd)/dist/index.js"
mkdir -p ~/.claude/skills && cp -r skills/sec-financial-analysis ~/.claude/skills/

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "edgar": {
      "command": "node",
      "args": ["/ruta/a/edgar-mcp-server/dist/index.js"],
      "env": { "SEC_USER_AGENT": "Tu Nombre tu@email.com" }
    }
  }
}

Skill de análisis en claude.ai o Claude Desktop

La skill sec-financial-analysis enseña a Claude flujos de análisis completos (empresa, comparación, DCF, resultados, insiders, 13F, dividendos, macro). Para usarla en claude.ai o Claude Desktop:

  1. Descarga sec-financial-analysis-skill.zip desde Releases.

  2. Súbela en Configuración → Capacidades → Skills.

Related MCP server: publicfinance

Primeros pasos

Escribe en Claude, por ejemplo:

  • «Analiza Microsoft: márgenes, flujo de caja y valoración»

  • «Compara Coca-Cola, Pepsi y Monster»

  • «¿Qué ha comprado y vendido Berkshire Hathaway este trimestre?»

  • «¿Los directivos de Nvidia están vendiendo acciones?»

  • «Historial de dividendos de Johnson & Johnson y si es sostenible»

  • «¿Cómo están la inflación y los tipos en EE. UU.? Compáralo con México»

  • «Busca empresas que mencionen "aranceles" en su último 10-K»

O usa las plantillas del menú + → edgar en Claude Desktop:

Plantilla

Qué hace

analizar_empresa

Análisis fundamental completo: negocio, resultados, balance, flujo de caja, valoración, insiders y riesgos

comparar_empresas

Compara 2-10 empresas en crecimiento, rentabilidad, solidez y valoración

valoracion_dcf

Valor intrínseco por DCF con escenarios y tabla de sensibilidad

resultados_trimestrales

Resume el último informe trimestral y el comunicado de resultados

cartera_inversor

Cartera 13F de un fondo o inversor y sus movimientos del trimestre

panorama_macro

Tipos, inflación, empleo, crecimiento y riesgo de recesión

Herramientas (20)

Herramienta

Qué hace

edgar_search_companies

Busca empresas por ticker o nombre

edgar_get_company_info

Perfil SEC: sector (SIC), cierre fiscal, sede, últimos informes

edgar_list_filings

Lista filings por tipo y fecha (10-K, 10-Q, 8-K, DEF 14A, 4, S-1…)

edgar_read_filing

Lee un filing o sus anexos. Salta a secciones del 10-K (business, risk_factors, mdna…) o a una frase

edgar_full_text_search

Búsqueda de texto completo en todos los filings desde 2001

edgar_get_financial_statement

Cuenta de resultados, balance o flujo de caja, anual o trimestral, con FCF

edgar_get_key_metrics

Crecimiento, márgenes, EPS, FCF, ROE, ROA, liquidez, deuda, caja neta, recompras

edgar_compare_companies

Compara de 2 a 10 empresas en métricas clave

edgar_search_concepts

Encuentra cualquier dato XBRL que reporte una empresa (backlog, leasing…)

edgar_get_concept

Histórico de un dato XBRL concreto

edgar_rank_companies

Ranking de todas las empresas en un dato para un periodo

edgar_get_insider_trades

Compras y ventas de directivos (Form 4), con planes 10b5-1

edgar_get_institutional_holdings

Cartera 13F de un fondo o inversor, con cambios frente al trimestre anterior

market_get_stock_price

Precio, rango de 52 semanas, rentabilidad, drawdown e histórico. También índices (^GSPC) y divisas (EURUSD=X)

market_get_dividends

Dividendos y splits: rentabilidad TTM, crecimiento a 5 y 10 años, años seguidos de subidas

market_get_treasury_yields

Curva de tipos del Tesoro de EE. UU.

market_get_valuation

P/E, P/S, P/FCF, EV/Revenue, EV/EBIT y rentabilidades con fundamentales TTM

macro_get_series

Series económicas de FRED, hasta 5 a la vez, con variaciones interanuales y cambio de frecuencia

macro_search_series

Busca series de FRED por palabra clave

macro_get_country_indicator

Indicadores anuales por país del Banco Mundial

Configuración

Variable

Obligatoria

Para qué

SEC_USER_AGENT

Sí

Tu nombre y email, exigidos por la SEC

FRED_API_KEY

No

Busca entre todas las series de FRED (gratis, ver abajo). Sin ella, macro_search_series usa un catálogo de ~50 series clave; los datos se descargan igual

EDGAR_CACHE_MAX_MB

No

Tamaño de la caché en memoria (por defecto 100; los datos XBRL de una empresa grande ocupan 5-8 MB)

Modo HTTP

Para exponer el servidor a otros clientes por HTTP en lugar de stdio:

TRANSPORT=http PORT=3000 SEC_USER_AGENT="Tu Nombre tu@email.com" npm start   # POST http://127.0.0.1:3000/mcp

Por defecto escucha solo en 127.0.0.1 y rechaza peticiones con otra cabecera Host (protección contra DNS rebinding). Para exponerlo en la red:

Variable

Para qué

HOST

Interfaz de escucha, p. ej. 0.0.0.0

MCP_AUTH_TOKEN

Exige Authorization: Bearer <token> en cada petición. Recomendado fuera de localhost

ALLOWED_HOSTS

Nombres de host aceptados, separados por comas, p. ej. mcp.midominio.com

Cómo funcionan los datos

  • Los estados financieros salen de los datos XBRL de la SEC. Para cada periodo manda el último filing, así que las reexpresiones quedan reflejadas.

  • Los trimestres que las empresas solo publican como acumulado del año (flujos de caja y cuarto trimestre fiscal) se calculan por diferencia. La tabla indica cuándo pasa.

  • Las columnas son fechas de cierre de periodo. Cada empresa tiene su propio año fiscal.

  • Las empresas extranjeras se muestran en su moneda (TWD, EUR…), no en las traducciones a USD que publican solo para algunos años.

  • El EPS y el número de acciones son los reportados en su momento, y pueden no estar ajustados por splits posteriores.

  • El conjunto XBRL de la SEC puede ir unos días o semanas por detrás de los filings. market_get_valuation avisa cuando es así.

  • market_get_valuation usa los últimos 4 trimestres consecutivos (TTM) o, si falta alguno, el último año fiscal. No calcula múltiplos cuando los datos están en otra moneda que el precio (ADRs como TSM o NVO) ni cuando no hay un número de acciones actual (p. ej. Berkshire). En esos casos devuelve un error explicado en lugar de cifras engañosas.

  • Los 13F llegan hasta 45 días después del cierre del trimestre y solo incluyen posiciones largas en valores cotizados en EE. UU.

  • Para respetar la política de la SEC, el servidor limita las peticiones a 8 por segundo, reintenta ante errores 429 y 5xx, y guarda en caché las respuestas.

Licencias y fuentes de datos

El código se publica con licencia MIT: cualquiera puede usarlo, modificarlo y venderlo, siempre que conserve el aviso de copyright. Todas las dependencias del servidor tienen licencias permisivas compatibles (MIT, ISC y BSD).

Los datos no necesitan licencia para uso personal, pero cada fuente tiene sus condiciones:

Fuente

Condiciones

¿Clave?

Uso comercial

SEC EDGAR

Datos públicos y gratuitos del Gobierno de EE. UU. Hay que identificarse (SEC_USER_AGENT) y no superar 10 peticiones por segundo (normas)

No

Sí

Tesoro de EE. UU.

Dominio público

No

Sí

FRED

Términos de uso. La mayoría de series son públicas; algunas tienen copyright de terceros (S&P 500, VIX, diferenciales de ICE, Case-Shiller, U. Michigan, Freddie Mac) y solo permiten uso personal. La herramienta avisa de ellas

Opcional (búsqueda)

Solo series sin copyright de terceros

Banco Mundial

CC BY 4.0: libre citando la fuente

No

Sí, citando

Yahoo Finance

Endpoint no oficial sin licencia. Sus condiciones no permiten redistribuir los datos ni el uso comercial

No

No

Para un uso comercial de precios y dividendos, sustituye Yahoo por un proveedor con licencia (Polygon.io, Tiingo, Twelve Data, Financial Modeling Prep…; casi todos tienen un plan gratuito con clave).

This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis.

Clave gratuita de FRED (opcional)

Solo sirve para que macro_search_series busque entre las 800.000 series de FRED; el resto funciona sin ella.

  1. Crea una cuenta en fredaccount.stlouisfed.org.

  2. Ve a API Keys → Request API Key, describe el uso (p. ej. «uso personal con un asistente de IA») y acepta los términos.

  3. Copia la clave de 32 caracteres en el campo Clave de API de FRED de la extensión, o pásala con npm run setup -- --fred-key TU_CLAVE.

Desarrollo

npm install          # instala y compila
npm test             # pruebas unitarias, sin conexión (las mismas que ejecuta la CI)
npm run test:live    # prueba las 20 herramientas contra las fuentes reales (requiere internet)
npm run bundle       # genera build/edgar-mcp-server-<versión>.mcpb y el zip de la skill

Publicar una versión: sube la versión en package.json, manifest.json y src/constants.ts; después crea y sube la etiqueta (git tag v1.2.0 && git push origin v1.2.0). GitHub Actions genera la extensión y el zip de la skill y los adjunta a una Release.

Available Tools

20 tools
edgar_compare_companiesCompare companies side by sideA
Read-onlyIdempotent

Compare 2-10 companies on key metrics for their latest fiscal year (or a given fiscal year): revenue, growth, margins, EPS, FCF, ROE, leverage, etc. Fiscal years end on different dates across companies; the period end used for each company is shown.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsNoSubset of metric keys to show. Default: all.
companiesYesTickers, CIKs or names, e.g. ['KO','PEP','MNST'].
fiscal_yearNoFiscal year = calendar year of the period end date. Default: latest available per company.
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds valuable behavioral context beyond annotations: fiscal years end on different dates across companies and the period end used is shown, helping the agent understand cross-company comparability caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the core purpose, scope, and the key caveat about fiscal-year alignment. No filler or redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-company comparison tool with four well-documented parameters and safety annotations, the description covers the essential comparison logic, metric scope, and the period-end caveat. It does not describe output format details, but the response_format parameter and the note that period ends are shown provide adequate context for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents companies, metrics, fiscal_year, and response_format. The description adds minimal semantic value beyond restating metric categories and the fiscal-year default, which is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Compare'), a specific resource (2-10 companies), and a clear scope (key metrics for latest or given fiscal year). It clearly differentiates from siblings like edgar_get_key_metrics (single company) and edgar_rank_companies (ranking) by emphasizing side-by-side multi-company comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the appropriate use case: comparing multiple companies on metrics. However, it does not explicitly state when not to use it or name alternative tools, leaving the selection guidance to inference rather than direct instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_get_company_infoGet SEC company infoA
Read-onlyIdempotent

Get a company's SEC profile: legal name, tickers/exchanges, CIK, SIC industry, filer category, fiscal year end, state of incorporation, address, former names, and its latest annual/quarterly reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true), so the description's job is lighter. It adds useful field-level details—such as 'former names' and 'latest annual/quarterly reports'—that clarify the scope of the operation without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the purpose, followed by a compact colon-delimited list of returned data. No filler, redundancy, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given only 2 parameters, 100% schema coverage, rich annotations, and no output schema, the description provides all needed information: what the profile contains, how to invoke it via schema, and the read-only safety profile. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters fully documented (company examples and formats, response_format enum and default). The description introduces no additional parameter semantics beyond listing result fields, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('a company's SEC profile'), then enumerates concrete fields (legal name, CIK, SIC, tickers/exchanges, filer category, latest reports). This clearly distinguishes it from sibling tools like edgar_list_filings or edgar_get_financial_statement, which focus on filings or statements rather than profile data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than explicit: the description conveys 'use this when you need a company's SEC profile,' but it does not name alternative tools or state when not to use it. No exclusions or routing guidance is provided, so an agent must infer the right situation from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_get_conceptGet one XBRL concept's historyA
Read-onlyIdempotent

Get the reported history of any XBRL concept for a company (e.g. 'us-gaap:RevenueRemainingPerformanceObligation', 'dei:EntityCommonStockSharesOutstanding', 'us-gaap:NumberOfEmployees' is rarely tagged — search first). Annual/quarterly keep ~1-year/~1-quarter durations (quarters derived from YTD when needed); 'all' returns every distinct reported period.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit to use when a concept has several (e.g. 'USD', 'EUR', 'shares', 'USD/shares').
periodNoWhich periods to keep.annual
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
conceptYesConcept name, optionally with taxonomy prefix: 'us-gaap:Revenues', 'ifrs-full:Revenue', 'dei:EntityCommonStockSharesOutstanding'.
max_pointsNoMost recent N values (default 12).
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description appropriately adds value beyond them: annual/quarterly durations, YTD-derived quarters, and 'all' returning every distinct reported period. It does not describe the return payload, but read-only annotations lower the burden; what the description adds is genuinely useful behavioral nuance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence front-loads the purpose and examples; the second packs the period-behavior nuance and the search-first caution. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only two required parameters, 100% schema coverage, read-only/idempotent annotations, and no output schema, the description plus schema is sufficient for correct invocation. It clearly explains concept choice and period behavior; explicit edge cases like empty results are not addressed, but nothing essential for calling the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents all six parameters. The description adds value by giving realistic concept examples and warning that a likely-looking concept like us-gaap:NumberOfEmployees is rarely tagged, which helps agents choose concept values. It does not add extra detail for unit/max_points/response_format, but the schema covers those clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('reported history of any XBRL concept'), target ('for a company'), and concrete examples. It distinguishes this tool from siblings like edgar_get_financial_statement or edgar_get_key_metrics by focusing on the history of a single concept, and the 'search first' hint differentiates it from edgar_search_concepts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage context: annual/quarterly/all period behavior and points the agent to search first for rarely tagged concepts. It does not explicitly name alternative tools or state when not to use this tool versus a financial statement tool, but the period semantics and search-first warning provide clear practical guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_get_financial_statementGet financial statement (SEC XBRL)A
Read-onlyIdempotent

Get a company's income statement, balance sheet or cash flow statement from its SEC XBRL filings (10-K/10-Q; IFRS for 20-F/40-F filers), as line items × periods. Values are as reported (latest filing wins, so restatements are reflected). Quarterly values that are only reported year-to-date (cash flows, fiscal Q4) are derived by subtraction and flagged. The cash flow statement includes free cash flow (CFO − capex). For any tag not covered here use edgar_search_concepts + edgar_get_concept.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNo'annual' (fiscal years, default) or 'quarterly' (discrete quarters).annual
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
statementYes'income', 'balance' or 'cashflow'.
max_periodsNoMost recent N periods (1-20, default 5).
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the read-only annotations by disclosing important behaviors: 'latest filing wins, so restatements are reflected', YTD quarterly values are derived by subtraction and flagged, and cash flow includes free cash flow (CFO − capex). These are non-obvious transformations an agent needs to interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences with zero filler. The main purpose is front-loaded, followed by scoping, key behavioral caveats, and an explicit fallback. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description still conveys the returned structure ('line items × periods'), data caveats, YTD derivation, and free cash flow inclusion. Combined with the complete parameter schema and sibling fallback, an agent has enough to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema description coverage is 100%, so the baseline is 3. The description adds useful context about output shape and derived values but does not add per-parameter semantics beyond what the schema already provides, so no higher score is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and names the exact resources ('income statement, balance sheet or cash flow statement'), source ('SEC XBRL filings'), and result shape ('line items × periods'). It clearly differentiates itself from concept-level tools by naming them as the fallback for individual tags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives explicit routing guidance: 'For any tag not covered here use edgar_search_concepts + edgar_get_concept.' It also specifies applicability (10-K/10-Q, IFRS for 20-F/40-F filers), so an agent can decide when this tool is appropriate and when to delegate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_get_insider_tradesGet insider trades (Form 4)A
Read-onlyIdempotent

Get recent insider transactions from Form 4 filings (officers, directors, 10% owners): date, insider, role, transaction type, shares, price, value and shares owned afterwards, plus a summary of open-market buys vs sells. Codes: P = open-market buy, S = open-market sale (the most informative); A = grant, M/X = option exercise, F = tax withholding, G = gift.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
max_filingsNoHow many of the most recent Form 4 filings to parse (1-40, default 15).
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown
open_market_onlyNoOnly open-market buys and sales (codes P and S).

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, open-world, and non-destructive behavior, so the bar is lower. The description adds useful context by specifying the parsed source (Form 4 filings), the output summary, and the meaning of transaction codes—value beyond the annotations. It does not mention rate limits or failure modes, but for a read-only EDGAR tool that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states the verb, resource, scope, and output fields; the second sentence efficiently maps transaction codes. Every sentence earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no output schema, the description does a good job enumerating return values and the output summary, while the schema covers parameter semantics. It does not precisely define 'recent' or explain pagination/limits, but given the openWorldHint and the simplicity of the tool, this is not a serious gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds value by explaining transaction codes like P, S, A, and F, which supports understanding of open_market_only, but it adds no syntax or format details beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('insider transactions from Form 4 filings') and enumerates the returned fields, making it clearly distinct from generic EDGAR tools like edgar_list_filings or edgar_read_filing. It also identifies the reporting subjects (officers, directors, 10% owners), which sharpens the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to choose this tool over alternatives such as edgar_read_filing or edgar_list_filings, nor does it give exclusion criteria. Usage context is only implied by the phrase 'recent insider transactions'; there is no explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_get_institutional_holdingsGet a fund manager's 13F portfolioA
Read-onlyIdempotent

Get the US equity portfolio an investment manager reports quarterly on Form 13F (required above $100M): positions by value, % of portfolio, shares, and the change versus the previous quarter (new, added, reduced, exited). Works for hedge funds, mutual fund families, banks and insurers, e.g. 'Berkshire Hathaway', 'Pershing Square Capital Management', 'Scion Asset Management', 'Bridgewater Associates', or a CIK. Notes: 13F shows long US-listed positions only (no shorts, cash or foreign shares), is filed up to 45 days after quarter end, and identifies securities by CUSIP. Amendments are ignored.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPositions to list, largest first (default 25).
periodNoQuarter end to show, e.g. '2026-03-31'. Default: latest (YYYY-MM-DD).
managerYesManager name or SEC CIK, e.g. 'Pershing Square Capital Management' or '1336528'.
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds substantial behavioral context beyond annotations: 13F reports include only long US-listed positions, exclude shorts/cash/foreign shares, are filed up to 45 days after quarter end, identify securities by CUSIP, and ignore amendments. This gives the agent important expectations about data scope and reliability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the main purpose and output contents come first, followed by concrete examples, then a consolidated Notes section of caveats. Every sentence earns its place and the length is appropriate for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without an output schema, the description tells the agent what the tool returns: positions by value, % of portfolio, shares, and change versus the previous quarter. Combined with the fully documented input schema and domain caveats, an agent has enough to select the tool, choose parameters, and interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already explained in the schema. The description reinforces the manager concept with examples and mentions the 45-day filing lag relevant to period, but it does not add significant meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get') and a particular resource: the US equity portfolio reported on Form 13F by investment managers. It clearly distinguishes this tool from siblings like edgar_get_insider_trades or market_get_stock_price by focusing on quarterly institutional holdings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: it works for hedge funds, mutual fund families, banks, insurers, and accepts a manager name or CIK. It also explains limitations such as long-only US positions and the 45-day filing lag. It does not explicitly name alternatives or state when not to use it, so it stops 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.

edgar_get_key_metricsGet key metrics and ratiosA
Read-onlyIdempotent

Compute key metrics from SEC filings: revenue and YoY growth, gross/operating/net margin, diluted EPS and growth, free cash flow and FCF margin, SBC/revenue, ROE, ROA, current ratio, debt/equity, net cash, buybacks + dividends. Best single call for a quick fundamental overview of a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNo'annual' (fiscal years, default) or 'quarterly' (discrete quarters).annual
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
max_periodsNoMost recent N periods (1-20, default 5).
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that metrics are computed from SEC filings, but does not disclose any additional behavioral traits such as rate limits, data limitations, or response variability, leaving the baseline at 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences contain the full purpose and use case with no filler. The metric list is dense but informative, and the 'best single call' positioning earns its place by orienting the agent immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only metrics tool, the description covers what is computed and when to use it, aided by thorough parameter schemas and annotations. There is no output schema, so a bit more detail about the exact output shape could help, but the response_format parameter and metric enumeration make it adequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter (company, period, max_periods, response_format) already has a clear description in the schema. The description adds no extra parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource, 'Compute key metrics from SEC filings', and enumerates the exact metrics returned. It does not explicitly name a sibling tool to distinguish itself from, but the list plus 'quick fundamental overview' makes its role clear relative to raw statement retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Best single call for a quick fundamental overview of a company' gives a clear when-to-use context. It stops short of saying when not to use it or naming alternatives, so it lacks the explicit exclusion criteria that would earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_list_filingsList SEC filingsA
Read-onlyIdempotent

List a company's SEC filings, newest first, with form type, dates, accession number and document URL. Common forms: 10-K (annual), 10-Q (quarterly), 8-K (material events; see 'items', e.g. 2.02 = earnings), DEF 14A (proxy/executive pay), 4 (insider trades), S-1 (IPO), 13D/13G (5%+ holders), 20-F/6-K (foreign issuers).

ParametersJSON Schema
NameRequiredDescriptionDefault
formsNoOnly these form types, e.g. ['10-K','10-Q','8-K']. Amendments ('10-K/A') match their base form.
limitNoMaximum filings (default 20).
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
end_dateNoFiled on/before (YYYY-MM-DD).
start_dateNoFiled on/after (YYYY-MM-DD).
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds useful behavioral detail beyond that: results are newest-first and include form type, dates, accession number, and document URL.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences deliver the core purpose, output shape, ordering, and a useful forms reference with no wasted words. The most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with rich annotations and full schema coverage, this description is sufficiently complete. It even supplies the return shape despite the lack of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema carries most parameter meaning. The description adds domain value beyond the schema, especially the form-type glossary and the note that 8-K items such as 2.02 indicate earnings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List'), a concrete resource ('a company's SEC filings'), and defines the output fields and ordering. This clearly distinguishes it from siblings like edgar_read_filing and edgar_get_company_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence clearly identifies when to use the tool: to list a company's SEC filings. It does not explicitly name alternatives or exclusions, leaving some routing decisions to inference, but the context is unmistakable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_rank_companiesRank all companies on one concept (XBRL frames)A
Read-onlyIdempotent

Rank every SEC filer on one XBRL concept for a calendar period (XBRL "frames"), e.g. largest revenues in CY2025, most cash at end of 2025. Period formats: 'CY2025' (annual duration), 'CY2025Q4' (quarter duration), 'CY2025Q4I' (instant, for balance-sheet items). Values are aligned to calendar periods by the SEC, so fiscal years that don't match the calendar map to the closest calendar period.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit, e.g. 'USD', 'USD/shares' (or 'USD-per-shares'), 'shares' (default USD).USD
limitNoHow many companies to return (default 25).
orderNoSort order (default largest first).desc
periodYesCalendar period.
conceptYesConcept, e.g. 'us-gaap:Revenues', 'us-gaap:NetIncomeLoss', 'us-gaap:CashAndCashEquivalentsAtCarryingValue'.
highlightNoAlso report this company's rank.
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent/non-destructive hints, so the description only adds value beyond safety. It contributes a useful behavioral detail about how fiscal periods are mapped to calendar periods, which is exactly the kind of context that would otherwise be surprising to an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states the core operation and examples, followed by only the non-obvious period format and calendar-alignment behavior. Every sentence contributes information that isn't already in the schema, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, no output schema, and annotations carrying the safety profile, the description covers the two required parameters' subtleties and the calendar-period mapping that affects result interpretation. It could additionally mention what fields each ranked row returns, but that is not necessary for selecting or invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers 100% of parameters, so the baseline is 3. The description adds real added value on top by explaining the period grammar (CY2025/CY2025Q4/CY2025Q4I) and giving concept examples, adding meaning beyond the regex patterns. It doesn't need to add every parameter because the schema already documents unit/limit/order/response_format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Rank every SEC filer') with a specific object ('one XBRL concept') and a scope ('calendar period') plus concrete examples like largest revenues and most cash. This makes the tool's purpose unmistakable and distinct from company-specific siblings like edgar_get_financial_statement or edgar_compare_companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context: universe-wide ranking across all SEC filers, with period semantics and calendar-alignment caveats explained. It does not explicitly say 'use X instead for named-company comparisons' or mention when not to use it, but the framing frames vs specific filer tools is clear enough for an agent to infer the right selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_read_filingRead an SEC filingA
Read-onlyIdempotent

Read the text of a filing's main document (10-K, 10-Q, 8-K, proxy, S-1...) or one of its exhibits. Long documents are paginated by characters.

  • section jumps to a 10-K/10-Q section: business, risk_factors, legal_proceedings, mdna, market_risk, financial_statements.

  • find jumps to the first occurrence of a phrase (e.g. 'share repurchase', 'backlog').

  • document reads another file of the filing, e.g. the earnings press release exhibit of an 8-K ('msft-ex99_1.htm'); the header lists the filing's exhibits.

  • Otherwise continue with offset as instructed at the end of each chunk. Omit accession_number to read the latest 10-K (or 20-F/40-F).

ParametersJSON Schema
NameRequiredDescriptionDefault
findNoCase-insensitive phrase to jump to.
offsetNoCharacter offset to start reading from.
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
sectionNo10-K section to read.
documentNoFile name within the filing to read instead of the main document (see the exhibit list in the header).
max_charsNoMaximum characters to return (default 12000).
accession_numberNoAccession number from edgar_list_filings, e.g. '0001193125-26-323660'. Default: latest annual report.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses pagination by characters, jump semantics, continuation via offset, and that the header lists exhibits. It also reveals that omitting accession_number returns the latest annual report. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-sentence core, followed by four scannable bullets that map to parameters/modes, each with concrete examples. The final sentence adds a useful default behavior. There is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no output schema, it covers all access modes, pagination continuation, exhibit selection, and the latest-10-K default. It also tells the agent where to find valid document filenames (the header), making the tool safely callable in realistic workflows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds useful semantic context with examples for find phrases, exhibit filenames, offset continuation, and accession_number default behavior. It enriches the schema without repeating it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource: 'Read the text of a filing's main document... or one of its exhibits,' and includes the filing types covered. This clearly distinguishes it from siblings like edgar_list_filings (listing) and edgar_get_financial_statement (structured financials).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit operational guidance for the main modes: section, find, document, and offset continuation, and explains the default when accession_number is omitted. It does not explicitly contrast with sibling tools, but the first sentence makes the read-text use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_search_companiesSearch SEC registrantsA
Read-onlyIdempotent

Find companies that file with the SEC (≈10,000 listed registrants) by ticker or name. Returns ticker, name, CIK and exchange. Use it when you are unsure of a ticker; most other tools accept a ticker, CIK or name directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 20).
queryYesTicker or part of the company name, e.g. 'coca', 'BRK'.
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by scoping the search to roughly 10,000 SEC registrants and by specifying the returned fields, which is valuable because there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences each earn their place: the first defines the action and scope, the second lists the return fields, and the third gives decision guidance for when to use the tool. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only search with one required parameter and complete schema documentation, the description covers purpose, scope, return values, and usage context. The agent has enough information to decide when to call it and what to expect back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: query, limit, and response_format all have descriptions, defaults, and examples in the schema itself. The tool description does not meaningfully add parameter-level semantics beyond restating that the query can be a ticker or name, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Find companies that file with the SEC' and explains the two search paths, ticker or name. It also states the exact return fields, which distinguishes it from related search tools like edgar_search_concepts and edgar_full_text_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit usage condition: 'Use it when you are unsure of a ticker.' It also tells the agent that most sibling tools accept a ticker, CIK, or name directly, so the agent can skip this lookup when an identifier is already known.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgar_search_conceptsSearch a company's XBRL conceptsA
Read-onlyIdempotent

Find XBRL concepts (tags) a company reports, by keyword in the tag name or label — e.g. 'backlog', 'deferred revenue', 'segment', 'lease', 'employees'. Returns the concept name, label, units and the latest value. Then use edgar_get_concept for the full history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum concepts (default 25).
queryYesKeyword(s) matched against concept name and label; all words must match.
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds useful behavioral context beyond those annotations by stating exactly what is returned (concept name, label, units, latest value) and what is intentionally omitted (full history) and where to get it. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences get straight to the point, with front-loaded action and result. The examples are compact and the pointer to edgar_get_concept is valuable without adding noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a keyword search tool, the description covers what it searches, what it returns, and what to use next. There is no output schema, so the return-field summary is sufficient. It could additionally mention response_format or edge cases, but the schema already documents those.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters like query, company, limit, and response_format are already fully documented there. The description reinforces the meaning of query with examples but does not need to add more parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Find), a specific resource (XBRL concepts/tags), and the matching strategy (keyword in tag name or label). It includes concrete examples and points to edgar_get_concept for full history, making it easy to distinguish from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is clear: search for concepts by keyword and then use edgar_get_concept if full history is needed. It explicitly names an alternative for follow-up. It does not spell out when to prefer edgar_full_text_search or edgar_search_companies, but the context is strong enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

macro_get_country_indicatorGet country macro indicators (World Bank)A
Read-onlyIdempotent

Get annual macroeconomic indicators for any country (or aggregates like 'WLD' world, 'EUU' EU) from the World Bank, e.g. to compare the markets a company sells in. Indicators: gdp_usd, gdp_growth, gdp_per_capita, gdp_per_capita_ppp, inflation, unemployment, population, government_debt, current_account, exports, fdi_inflows, lending_rate, real_interest_rate, market_cap, exchange_rate; or any World Bank indicator ID (e.g. 'NY.GDP.MKTP.KD.ZG'). Data are annual and usually lag 6-18 months.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_yearNoLast year. Default: current year.
countriesYesISO codes or English names, e.g. ['MX','US','Spain'].
indicatorYesOne of gdp_usd, gdp_growth, gdp_per_capita, gdp_per_capita_ppp, inflation, unemployment, population, government_debt, current_account, exports, fdi_inflows, lending_rate, real_interest_rate, market_cap, exchange_rate, or a World Bank indicator ID.
start_yearNoFirst year. Default: 10 years ago.
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnly/idempotent/openWorld hints, and the description adds useful behavior beyond those annotations: data are annual, typically lag 6-18 months old, and arbitrary World Bank indicator IDs are accepted. This helps set expectations without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and use case, and every sentence serves a purpose. The indicator list is long and partially duplicates schema content, which slightly reduces conciseness, but the overall structure is efficient and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only World Bank retrieval tool, the description covers the important decision-relevant facts: country scope, aggregate support, supported indicators, annual frequency, and lag time. It does not describe pagination or failure behavior, but the schema is thorough and no output schema exists, so this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema coverage is 100%, the schema already describes every parameter, so the baseline is 3. The description does add aggregate examples such as 'WLD' and 'EUU' and a sample World Bank indicator ID, but it mostly repeats the indicator list already present in the parameter schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Get annual macroeconomic indicators') and resource ('any country from the World Bank'), and clarifies scope with country aggregates. It clearly conveys what the tool does, but does not explicitly differentiate it from the sibling tool macro_get_series, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a concrete use context ('e.g. to compare the markets a company sells in') and explains data cadence and recency. It does not explicitly state when not to use this tool or point to alternatives, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

macro_get_seriesGet economic data series (FRED)A
Read-onlyIdempotent

Get US and global economic time series from FRED (Federal Reserve Bank of St. Louis, 800,000+ series): interest rates, inflation, GDP, jobs, money supply, credit spreads, FX, commodities, recession indicators. Pass 1-5 series IDs to line them up by date. Common IDs: DGS10 / DGS2 (Treasury yields), T10Y2Y (yield curve), FEDFUNDS, CPIAUCSL / CPILFESL (CPI / core), PCEPILFE (core PCE), UNRATE, PAYEMS, GDPC1 (real GDP), A191RL1Q225SBEA (GDP growth), M2SL, BAMLH0A0HYM2 (high-yield spread), VIXCLS, DCOILWTICO (oil), DEXUSEU / DEXMXUS (FX), USREC. Use transform 'pct_change_yoy' for inflation rates from price indexes, and frequency to aggregate daily data (e.g. monthly averages). Find other IDs with macro_search_series.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoLast observation date. Default: latest (YYYY-MM-DD).
frequencyNoAggregate to a lower frequency: 'weekly', 'monthly', 'quarterly', 'annual'.
transformNo'level' (default), 'change', 'change_yoy', 'pct_change', 'pct_change_yoy', 'pct_change_annualized' or 'log'.level
max_pointsNoRows in the table (default 30, evenly sampled; the latest value is always included).
series_idsYesFRED series IDs, e.g. ['DGS10','DGS2'] or ['CPIAUCSL'].
start_dateNoFirst observation date. Default: 10 years ago (YYYY-MM-DD).
aggregationNoHow to aggregate when `frequency` is set: average (default), sum or end of period.avg
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context: series are aligned by date, max_points rows are evenly sampled with the latest value always included, and defaults for dates are explained (10 years back, latest end). This goes beyond the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence adds value: it covers purpose, usage, examples, and alternative routing in a structured way. It is front-loaded with the primary action and then expands with necessary details, with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, 4 enums, and no output schema, this description is remarkably complete. It covers what to pass, how to transform, how to aggregate, defaults, and references the sibling for discovery. An agent would have no trouble calling it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema covers 100% of parameters, the description adds practical meaning: common series IDs (DGS10, CPIAUCSL, etc.), recommended transform for inflation, and how frequency/aggregation work together. This significantly enriches the bare schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves economic time series from FRED, specifies the domain (US/global), and lists common series IDs. It distinguishes itself from the sibling macro_search_series (which is for finding IDs) and other market tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells users to pass 1-5 series IDs, provides guidance on transforms (e.g., 'pct_change_yoy' for inflation) and frequency aggregation, and directs users to macro_search_series for finding other IDs. This clearly delineates when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

macro_search_seriesSearch economic data series (FRED)A
Read-onlyIdempotent

Find FRED series IDs by keyword, e.g. 'mortgage rate', 'core inflation', 'unemployment', 'yen', 'high yield'. Searches all 800,000+ FRED series when the server has a (free) FRED_API_KEY; otherwise a built-in catalog of ~50 key US series.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 15).
queryYesKeywords.
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations' readOnlyHint and idempotentHint, the description discloses an important behavioral wrinkle: search coverage depends on whether the server has a FRED_API_KEY and falls back to a ~50-series catalog otherwise. This conditional data-source behavior directly affects result completeness and is exactly the kind of context annotations do not provide. It also implicitly communicates that no state is mutated, consistent with destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: keyword examples up front and the behavior caveat second. Every statement earns its place and the most call-relevant information is front-loaded before conditional details. Nothing extraneous is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three simple parameters fully documented in the schema and an output-free output-free output-schema absence, the description covers the key operational context: search by keyword, scale, and API-key fallback behavior. It does not describe the result payload structure or explicit next-step guidance like using macro_get_series once an ID is found. Minor gaps; almost complete for typical keyword-search usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents query, limit, and response_format thoroughly. The description adds realistic keyword examples for query, but the description contributes little beyond what the schema itself states. Baseline 3 is appropriate since the schema carries the parameter-semantic burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource combo—'Find FRED series IDs by keyword'—and gives concrete example keywords, making it immediately clear this tool searches economic data series IDs. The first sentence distinguishes it from sibling retrieval tools like macro_get_series by framing this as keyword discovery of IDs. The FRED-specific framing and keyword examples leave no ambiguity about its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes the intended use case: keyword-based discovery of FRED series IDs, with representative queries showing when an agent would pick this tool. It does not explicitly name alternatives or state when not to use it, though the sibling set of FRED retrieval tools makes the boundary mostly implicit. Without explicit when-not/alternative language, it stops one step 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.

market_get_dividendsGet dividend historyA
Read-onlyIdempotent

Get a stock's dividend and split history (any exchange; Yahoo symbols like 'KO', 'JNJ', 'SAN.MC', 'WALMEX.MX'): trailing-12-month dividend and yield, payments per year, 5- and 10-year dividend growth (CAGR), consecutive years of increases, yearly totals and splits. Amounts are split-adjusted per share in the listing's currency. For the payout ratio, compare with EPS or FCF per share from edgar_get_key_metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsNoYears of yearly totals to show (default 12).
symbolYesTicker, e.g. 'KO', 'O', 'SAN.MC'.
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only and idempotent. The description adds valuable behavioral context: amounts are split-adjusted per share, denominated in the listing's currency, and the output includes specific growth and yield metrics. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly structured: the first sentence states the core function and output, the second adds important data semantics, and the third points to a relevant sibling. Every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates well by enumerating the key returned fields: trailing dividend and yield, payments per year, CAGR growth, consecutive increase years, yearly totals, and splits. It also clarifies currency and split adjustment, making the tool fully usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description reinforces symbol format and mentions yearly totals, which relates to the 'years' parameter, but it does not add substantial meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource: a stock's dividend and split history, with a detailed list of returned metrics. This differentiates it from siblings like market_get_stock_price and market_get_valuation, which cover price and valuation rather than dividend/split data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it works for any exchange with Yahoo-style symbols, and it explicitly directs users to edgar_get_key_metrics when they need payout ratio inputs like EPS or FCF. It does not explicitly state when not to use this tool, but the use case is well scoped.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_get_stock_priceGet stock price historyA
Read-onlyIdempotent

Get the current price and price history for a ticker (any exchange: US tickers as-is, others with a Yahoo suffix like 'SAP.DE', 'MC.PA', 'SHOP.TO', '7203.T'), an index ('^GSPC', '^MXX') or an exchange rate ('EURUSD=X', 'MXN=X' for USD/MXN). Returns current price, 52-week range, return over the range, max drawdown, and a sampled price table (split/dividend-adjusted closes). Source: Yahoo Finance's public chart endpoint (unofficial; may occasionally be unavailable).

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeNoHistory range (default 1y).1y
symbolYesTicker, e.g. 'AAPL', 'BRK-B', 'SAP.DE'.
max_pointsNoRows in the price table (default 24, evenly sampled).
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description warns that the data comes from Yahoo Finance's unofficial public endpoint and may occasionally be unavailable, which is important for agent error handling. It also discloses that closes are split/dividend-adjusted and that the price table is sampled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three purposeful sentences with no filler: purpose and input conventions lead, return summary follows, and the source caveat closes. The examples are dense but informative, not padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description's enumeration of return fields (current price, 52-week range, return over the range, max drawdown, sampled price table) is essential and mostly sufficient. Exact output shapes and behavior for invalid symbols are not specified, but an agent can still call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds real value for the symbol parameter by explaining suffix conventions, index formats, exchange-rate symbols, and the USD/MXN meaning. The remaining parameters are already well described by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and names both the resource and its full scope: current price and price history for tickers, indices, or exchange rates. The instrument taxonomy and examples make it clearly distinct from sibling tools like market_get_dividends or market_get_valuation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear eligibility rules: US tickers as-is, non-US tickers with Yahoo suffixes, indices with carets, and FX symbols with '=X'. It does not explicitly name sibling alternatives or exclusion conditions, but the intended use case is unmissable from the scope and examples.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_get_treasury_yieldsGet US Treasury yield curveA
Read-onlyIdempotent

Get the official US Treasury daily par yield curve (1 month to 30 years) from treasury.gov — useful as the risk-free rate in valuations (typically the 10-year). Returns the latest available date by default, or the closest date on/before date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate (YYYY-MM-DD); default latest.
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the burden is lower. The description adds useful behavioral context: data source, daily par yield curve, default to latest date, and fallback to the closest prior date. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the most important information front-loaded: what the tool fetches, from where, and why it's useful. Every clause contributes value, and the date semantics occupy the second sentence without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with zero required parameters, the description covers source, purpose, default behavior, and date fallback. It does not describe the JSON output shape, but the response_format parameter and the straightforward nature of the data make this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics for the 'date' parameter by clarifying it returns the latest available date by default and the closest date on/before the requested date. This is supplemental information not fully captured in the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a clear verb ('Get'), a concrete resource ('official US Treasury daily par yield curve'), the source domain (treasury.gov), and the relevant maturity range. It clearly distinguishes itself from market stock/dividend tools and macro series tools, so an agent can tell what this tool does 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear use case ('useful as the risk-free rate in valuations (typically the 10-year)') and explains the date behavior ('closest date on/before'). It does not explicitly name sibling alternatives or state when not to use this tool, but the context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_get_valuationGet valuation multiplesA
Read-onlyIdempotent

Compute valuation multiples for a US-listed SEC filer by combining the live share price (Yahoo) with trailing-twelve-month fundamentals from SEC filings: market cap, enterprise value, P/E, P/S, P/FCF, EV/Revenue, EV/EBIT, earnings yield and FCF yield. TTM = sum of the last 4 consecutive quarters, or the latest fiscal year when quarters are missing (e.g. 20-F filers). Fails with an explanation when the company reports in a different currency from its share price (ADRs such as TSM or NVO).

ParametersJSON Schema
NameRequiredDescriptionDefault
companyYesCompany: US ticker ('MSFT', 'BRK.B'), SEC CIK ('789019') or company name ('Microsoft').
response_formatNoOutput format: 'markdown' (readable, default) or 'json' (structured).markdown

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context: it explains the data sources (Yahoo price + SEC filings), the TTM calculation method (sum of last 4 quarters or fiscal year fallback), and the explicit failure condition for currency mismatches. This goes well beyond the annotations and fully discloses the tool's operational behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. The core purpose is front-loaded in the first sentence, followed by concise TTM logic and a failure note. Every sentence adds value, and the structure is efficient for an agent to quickly grasp the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists all expected outputs (market cap, EV, P/E, etc.) and explains the computation inputs and failure mode. It provides enough context for an agent to decide when to call this tool and what to expect, making it complete for a read-only calculation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters (company and response_format) already well-documented in the schema. The description does not add parameter-specific details beyond what the schema provides, so the baseline 3 applies. It mentions the company param's accepted forms, but that is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes valuation multiples for US-listed SEC filers, listing specific metrics (P/E, EV/Revenue, etc.). It distinguishes from siblings like market_get_stock_price (only price) and edgar_get_financial_statement (raw fundamentals) by specifying the combined output. The verb 'compute' is specific to the resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description defines the tool's scope (US-listed SEC filers, combining live price and TTM fundamentals) and notes a failure case (currency mismatch for ADRs). It does not explicitly name alternative tools or state when not to use it, but the scope implicitly excludes non-US or non-SEC entities and pure price queries, making the intended context clear.

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.

  1. 20 tool updatesv1.1.0
    • First observededgar_compare_companies
    • First observededgar_full_text_search
    • First observededgar_get_company_info
    • First observededgar_get_concept
    • First observededgar_get_financial_statement
    • First observededgar_get_insider_trades
    • First observededgar_get_institutional_holdings
    • First observededgar_get_key_metrics
    • First observededgar_list_filings
    • First observededgar_rank_companies
    • First observededgar_read_filing
    • First observededgar_search_companies
    • First observededgar_search_concepts
    • First observedmacro_get_country_indicator
    • First observedmacro_get_series
    • First observedmacro_search_series
    • First observedmarket_get_dividends
    • First observedmarket_get_stock_price
    • First observedmarket_get_treasury_yields
    • First observedmarket_get_valuation

TDQS

A4/5.0

Scored across 20 tools

Disambiguation4/5

Most tools have distinct domains (EDGAR filings, XBRL concepts, market data, macro data), but some overlap exists: edgar_get_financial_statement, edgar_get_key_metrics, and edgar_compare_companies all derive fundamentals from SEC filings, and edgar_search_concepts/edgar_get_concept are closely paired. Descriptions are detailed enough to differentiate, though the boundary between key metrics and financial statements could confuse an agent.

Naming Consistency3/5

The naming is mostly verb_noun with an edgar_/macro_/market_ prefix, but the prefixes are inconsistent: edgar_ tools use verbs (search, get, list, read, compare, rank), while macro_ and market_ tools mix verb styles (get_series, search_series, get_stock_price, get_dividends, get_treasury_yields, get_valuation, get_country_indicator). The pattern is readable but not uniform across the three domains.

Tool Count4/5

20 tools is on the higher end but justifiable for a server covering three distinct domains (SEC filings, market data, macro data). Each tool serves a specific purpose, though a few could be consolidated (e.g., edgar_get_financial_statement and edgar_get_key_metrics overlap). The count is slightly heavy but not excessive for the apparent scope.

Completeness4/5

The server covers the core SEC filing workflow well: search companies, list/read filings, full-text search, financial statements, key metrics, comparisons, rankings, insider trades, and institutional holdings. Market data covers price, dividends, treasury yields, and valuation. Minor gaps: no direct tool for analyst estimates or earnings call transcripts, and macro data is limited to annual World Bank indicators plus FRED series, but the surface is largely complete for fundamental analysis.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Provides access to SEC EDGAR financial data, enabling AI agents to fetch company filings, financial metrics, and narrative sections. It supports natural-language metric searching and extracts structured data from 10-K, 10-Q, and 8-K reports.
    6
    169 PyPI
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to access SEC EDGAR filings, US Treasury rates, BLS labor statistics, and economic indicators without API keys.
    6
    25 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to access real-time stock data, financial statements, cryptocurrency information, and market data via the Financial Modeling Prep API.
    4
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides Claude with free stock-market data including quotes, fundamentals, history, news, index top-10 rankings, market movers, and penny-stock screens using public sources like Yahoo Finance and Wikipedia. No API keys or subscriptions required.
    -