Skip to main content
Glama

Computed metrics

akkru_metrics
Read-onlyIdempotent

82 metrics computed from each filing (margins, growth, leverage, efficiency, cash flow, valuation), each with its formula and the facts it used. US companies only. Starter plan or higher; formula_override needs Pro.

  • get: one filing's metrics. Name the filing with metric_group_id, filing_id, or ticker and fiscal_year. All metrics by default; metric_names for chosen ones; category for one of six groups. Price-based ratios come at the filing-date price, and also at current_price when you give it; filing_date_price_only skips the current-price block. 158 credits.

  • history: the same metrics over many periods for one ticker, newest or oldest first, up to 5 periods per page. 55 credits plus 148 per period on the page.

  • list: a company's filings that have metrics, with their metric_group_id; give fiscal_year or as_of_date. 10 credits.

  • catalog: every metric name with its unit, plus the operators and options search takes. Free.

  • search: screen every covered company with conditions on metrics (where). Pro plan or higher; 89-1,825 credits depending on the conditions; the response shows the price. Metric names are catalog ids such as gross_margin; a wrong name returns the full list of names.

Input Schema

NameRequiredDescriptionDefault
pageNo(history, search) Page number, from 1; the response's next_page gives the next one.
sortNo(history) "period_end_asc" (default) or "period_end_desc".
whereNo(search) Conditions and sort: {"filter": <tree>, "sort_by"?: <metric id, or "ticker", "period_end", "filing_date", "match_count">, "sort_order"?: "asc" or "desc"}. A tree is a leaf {"metric": <id>, "op": ">", ">=", "<", "<=" or "between", "value": <number, or [low, high] for between>} with at most one of "for_latest", "for_consecutive", "for_at_least": N; or {"and": [...]}, {"or": [...]}, {"not": <tree>}. 1-10 leaves, nesting depth at most 4.
actionYesWhat to do; each action is described in the tool description.
detailNoResponse detail, same price at every level: "full" (default) returns everything; "light" leaves out the bulkiest fields, such as breakdown lists; "minimal" returns only the values and what identifies them, without sources or calculation details. Every action takes it; a call without detail levels ignores it. Try "light" or "minimal" for shorter replies that use less context and fewer tokens.
tickerNo(get, history, list) Company ticker, e.g. "AAPL" (US), "000100" (Korea), "1332" (Japan), "VIRI_F" (Europe), "600519_CN" (China A-share); any symbol the company has traded under.
quarterNo(get, list) "FY", "Q1", "Q2", "Q3" or "Q4". list: filters the list, omit for every quarter; get: needed only when the fiscal year has several filings of the form; the error then lists the quarters on file.
sectorsNo(search) Only companies in these sectors (names from akkru_metrics action "catalog"). Pro plan or higher.
tickersNo(search) Only these companies (up to 100); any symbol a company has traded under. Default: every company.
categoryNo(get) One group of metrics: profitability, growth, financial_health, efficiency, cash_flow or valuation.
lookbackNo(search) How many filings back the conditions look (1-120, default 1); cut to your plan's history window.
usd_onlyNo(search) true: only rows whose values are in USD.
filing_idNo(get) Filing id from akkru_filings action "list". One of metric_group_id, filing_id, or ticker with fiscal_year names the filing.
form_typeNo(get) Form, default "10-K": "10-K" or "10-Q" for US filers, "20-F" or "40-F" for foreign issuers filing with the SEC. Korean, Japanese, Chinese and European filings use "10-K" for annual and "10-Q" for interim reports.
page_sizeNo(history, search) history: periods per page, 1-5 (default 3); search: rows per page, 1-100 (default 50), with page times page_size at most 500.
as_of_dateNo(get, history, list, search) Date "YYYY-MM-DD": only what had been filed by that day counts. Default: no cutoff.
form_typesNo(list) Forms to include, e.g. ["10-K", "10-Q"] (up to 8). Default: every form.
fiscal_yearNo(get, list) Fiscal year of the filing (1990-2100).
period_typeNo(history) "quarterly" (default) or "annual". annual covers 10-K, 20-F and 40-F; quarterly covers 10-Q.
metric_namesNo(get, history) Metric ids, e.g. ["gross_margin", "pe_ratio"]. get: only these; history: only these (default all). The names are in action "catalog".
current_priceNo(get) Current share price in USD; price-based ratios are then also computed at it (above 0, at most 10,000,000, at most 4 decimals). Without it the current-price block says it is missing.
end_period_endNo(history) Latest period end, "YYYY-MM-DD".
current_fx_rateNo(get) Fallback exchange rate, used only when the current rate for a foreign-currency filing is briefly unavailable (above 0, at most 1,000,000, at most 6 decimals).
exclude_tickersNo(search) Leave these companies out (up to 100).
group_by_tickerNo(search) true (default): one row per company; false: one row per filing.
include_metricsNo(search) Extra metric ids to return next to the ones in the conditions (up to 10).
metric_group_idNo(get) Metric set id from action "list". One of metric_group_id, filing_id, or ticker with fiscal_year names the filing.
formula_overrideNo(get, history) Your own formula per metric id, e.g. {"interest_coverage": {"concepts": ["OperatingIncomeLoss", "InterestExpense"], "operators": ["/"]}}. Pro plan or higher.
include_quarterlyNo(search) true: quarterly filings count too; default annual only.
start_period_startNo(history) Earliest period start, "YYYY-MM-DD".
exclude_derivationsNo(search) Conditions ignore metric values derived these ways, e.g. "composite" (the kinds are in action "catalog").
filing_date_price_onlyNo(get) true: price-based ratios at the filing-date price only, without the current-price block; with all metrics or with category valuation.
accept_suggested_formulaNo(get, history) true: compute the metrics that need a formula choice with the suggested formula.
include_metrics_using_filing_date_priceNo(search) false: the 13 price-based valuation ratios cannot be used in conditions or sorting; default true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.9/5.0
Behavior4/5

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

Adds a lot beyond the readOnly/idempotent annotations: per-action credit costs, plan requirements, the filing-date vs current-price ratio behavior, filing_date_price_only, the 5-periods-per-page cap, and that a wrong metric name returns the full name list. Caveat: 'US companies only' conflicts with the schema's Korean/Japanese/European/China ticker examples and with the search tool's sector/ticker coverage, which is a factual inconsistency an agent could trip over.

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?

Front-loaded one-line purpose followed by a bullet per action, so an agent can scan to the right sub-command. It is long, but for a 34-parameter, five-action tool the length is largely earned; a few schema-echoing phrases (six category names, price-based ratio wording) could be trimmed.

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 the complexity (five actions, nested where-clause, no output schema), the description covers action selection, costs, plan gates, and the main return-shape hints (current-price block, wrong-name error, next_page exists per schema). It leaves the actual response payload of get/history/search under-described, but an agent has enough to invoke 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 the baseline is 3. The description does add real value on metric naming (catalog ids like gross_margin) and on the three ways to name a filing, but most parameter semantics remain in the 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?

States a specific resource (82 computed metrics per filing, with formulas and source facts) and enumerates the five sub-actions, each with what it returns. It does not distinguish itself from siblings like akkru_facts or akkru_statements, so an agent still has to infer that this is the derived-metrics layer rather than raw facts.

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?

Each action gets a use case and a selector: get names the filing via three alternatives, history covers multiple periods for one ticker, list returns filings with metric_group_id, catalog lists metric ids, search screens companies. Plan gates (Starter+, Pro for formula_override and search) are stated, but no guidance on when to prefer a sibling tool.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources