Skip to main content
Glama

Financial facts

akkru_facts
Read-onlyIdempotent

Single reported numbers (and text facts) from filings, each with its period, unit, dimensions and a link to its place in the filing.

  • get: by name, give line_items (e.g. ["revenue", "net income"]); by id, give fact_ids. For one filing name it with filing_id, or with ticker and fiscal_year; to compare years or companies, give filings instead, one row per filing (by id, each row carries its own fact_ids). A name is matched to the filing's concepts in four levels, L0 to L3, costing 10, 20, 30 or 50 credits per name and per filing; _resolution_level says which level matched. Ids cost 10 credits per 5 ids. A name matches consolidated totals and can return several facts, best first.

  • breakdown: split a consolidated total into its segments, products or regions; give line_item (a name) or fact_id. By id: 10 credits per 5 facts, counting the total and its direct slices; by name: the name's level price plus 10 credits per 5 slices returned.

Input Schema

NameRequiredDescriptionDefault
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, breakdown) 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.
fact_idNo(breakdown) The id of the consolidated fact to split.
filingsNo(get) Filings to compare (1-25), each {"filing_id": ...} or {"ticker": ..., "fiscal_year": ..., "form_type"?, "quarter"?}; with fact_ids in each row to compare by id. Filings that cannot be returned are listed in failed_filings with their error code and are not charged.
quarterNo(get, breakdown) "FY", "Q1", "Q2", "Q3" or "Q4". Needed only when the fiscal year has several filings of the form; the error then lists the quarters on file.
fact_idsNo(get) Fact ids from an earlier result (1-500), charged 10 credits per 5.
filing_idNo(get, breakdown) Filing id from akkru_filings action "list". Name the filing with filing_id, or with ticker and fiscal_year, not both.
form_typeNo(get, breakdown) 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.
line_itemNo(breakdown) The line-item name to split, e.g. "revenue".
recursiveNo(breakdown) true (default): every level of the split; false: only the first level.
as_of_dateNo(get, breakdown) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. Default: no cutoff.
line_itemsNo(get) Line-item names, e.g. ["revenue", "net income"] (1-50). A name asked twice is charged once.
fiscal_yearNo(get, breakdown) Fiscal year of the filing (1990-2100).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / as_of_date
      Added value: +{
      +  "description": "(get, breakdown) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. Default: no cutoff.",
      +  "format": "date",
      +  "type": "string"
      +}
  2. Added

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds genuinely useful non-annotation context: credit pricing (10/20/30/50 per name by resolution level, 10 per 5 ids), the fact that failed filings appear in failed_filings and are not charged, and that a name match can return several facts, best first. However, the return payload is only sketched and pagination/limits are not discussed.

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 with the resource definition, then organized into one bullet per action, which matches the action enum. Dense but earns most of its words given 14 parameters; a missing word in 'A name is matched to the filing's concepts' slightly hurts readability.

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 14-parameter tool with no output schema, the description covers cost model, matching behavior, comparison mode, and failure handling well enough to call it correctly. The main residual gap is the shape of returned fact records, which is only described in general terms in the first sentence.

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%, so the schema already documents every parameter including pricing notes, form_type defaults, and quarter behavior. The description adds the concept of L0-L3 name resolution and the _resolution_level output marker, but most other parameter guidance restates what the schema already says. Baseline 3 is appropriate.

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 opening sentence states the resource precisely (single reported numbers and text facts from filings, each with period, unit, dimensions and a filing link), and the two bullets define the distinct verbs: 'get' retrieves facts by name or id, 'breakdown' splits a consolidated total into segments/products/regions. It does not explicitly contrast itself with siblings like akkru_statements or akkru_metrics, so an agent must infer the boundary.

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?

Clear routing between the two actions (use breakdown to split a total, get to retrieve values) and between addressing modes (one filing via filing_id or ticker+fiscal_year vs. multiple filings for year/company comparison). No explicit when-not guidance or sibling comparison is given, but the intra-tool alternatives are well covered.

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