Skip to main content
Glama

Server Details

SEC filings, financial statements, metrics, insider and institutional holdings as structured data

Ownership verified
Status
Healthy
Uptime
35.2% over 52 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

The ten top-level tools target mostly distinct domains: account, companies, events, facts, filings, insider/institutional holdings, metrics, and statements. The main ambiguity is that facts, statements, filings, and metrics all expose filing-derived financial data, so an agent may need descriptions to pick the right one, but the boundaries are explicit enough to avoid serious misselection.

Naming Consistency5/5

Top-level tool names consistently use the akkru_ prefix followed by a domain noun: account, companies, events, facts, filings, initial_holdings, insider_transactions, institutional_holdings, metrics, statements. The convention is predictable and easy to scan, with only trivial singular/plural variation.

Tool Count5/5

Ten top-level tools is a well-scoped surface for a broad financial data platform. Each domain earns its place, and the many sub-actions are grouped under coherent parents rather than exploded into dozens of separate tools.

Completeness4/5

Coverage is extensive across company lookup, filings, statements, facts, metrics, events, insider Forms 3/4/5, and institutional 13F holdings. Minor gaps exist, such as no obvious cross-company raw-fact or statement search, but core workflows and lifecycle access are well covered for a read-only data API.

Available Tools

10 tools
akkru_accountAccountB
Read-onlyIdempotent
Inspect

Your account.

  • balance: the credits left on your account. Free.

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.

TDQS

B3.3/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 one genuinely new behavioral fact — the call is free — but says nothing about what the response contains or whether there are quota/rate considerations.

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?

Two short lines, front-loaded with the resource then the action definition. 'Your account.' is mildly redundant with the title but sets scope, and nothing else is wasted.

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

Completeness3/5

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

For a two-parameter, single-action, read-only tool with no output schema, what is present is close to sufficient. It still leaves unclear whether the balance response includes anything besides the credit count, which is the one thing an agent can't infer.

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%, but the schema explicitly defers action semantics to the description ('each action is described in the tool description'), and the description does define what 'balance' returns. The detail parameter is fully documented in the schema and needs no repetition.

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?

Names the resource (your account) and the single action (balance) with a concrete definition: 'the credits left on your account'. It is clearly distinct from all siblings (companies, filings, statements, etc.), which are data-retrieval tools rather than account/billing. Lacks an explicit verb for the tool overall, so not 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 Guidelines2/5

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

There is no statement of when to call this versus alternatives, nor prerequisites. The lone signal is 'Free', which implies there is no cost concern, but an agent gets no routing guidance beyond the obvious.

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

akkru_companiesCompaniesA
Read-onlyIdempotent
Inspect

Find a company and see what is covered for it.

  • search: companies whose name contains query, or whose ticker or registrant id starts with it; up to 8 candidates, best match first. 10 credits.

  • lookup: one company by exactly one of ticker, cik, dart_corp_code, edinet_code, lei or uscc: its identity, every ticker it has traded under, links to its filings lists, and the forms, fiscal years and quarters on file. 8 credits, also when no company matches.

  • list: every company covered, 100 per page; jurisdiction filters by market. 30 credits per page. Results stop at your plan's coverage. On Pro plans and above, search and list also give each company's industry classification.

NameRequiredDescriptionDefault
cikNo(lookup) SEC CIK, digits, e.g. "320193" (companies filing with the SEC).
leiNo(lookup) Legal Entity Identifier, 20 characters (European filers).
pageNo(list) Page number, from 1; the response's next_page gives the next one.
usccNo(lookup) Unified Social Credit Code, 18 characters (China A-share companies).
queryNo(search) Name, ticker or registrant id to search for (1-64 characters); English names only.
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(lookup) Ticker, e.g. "AAPL", "000100", "1332", "VIRI_F", "600519_CN"; any symbol the company has traded under.
page_sizeNo(list) Companies per page, 1-100 (default 100).
edinet_codeNo(lookup) Japanese EDINET code, e.g. "E02778".
jurisdictionNo(search, list) Market: "US", "KR", "JP", "EU", "CN", or "all" (default: every market your plan covers).
dart_corp_codeNo(lookup) Korean DART corp code, 8 digits, e.g. "00126380".

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the read-only annotations, the description discloses credit costs per action, that lookup is charged even when no company matches, that search returns up to 8 candidates, that list is paginated at 100 per page, and that results are constrained by plan coverage. These are important operational details an agent needs before invoking the tool.

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 its core purpose, then uses compact bullet points for each action with cost and scope details. It is appropriately sized for a 12-parameter tool with three operational modes.

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 complex tool with no output schema, the description provides enough detail about what each action returns: identity, ticker history, filing links, covered forms/fiscal years/quarters, and paginated company listings. Combined with annotations covering safety and the fully described schema, an agent has sufficient context to invoke it 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 coverage is 100%, so the schema already documents each parameter thoroughly. The description adds useful action-level grouping, such as which identifiers are used by lookup and that jurisdiction filters list by market, improving understanding beyond the raw 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 opens with a specific purpose, "Find a company and see what is covered for it," and then breaks the tool into three clearly named operations: search, lookup, and list. This distinguishes it from sibling tools focused on filings, facts, statements, and 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?

Each action is given a clear use case: search for partial name/ticker matches, lookup for exact identification by one identifier, and list for enumerating covered companies. It does not explicitly compare against sibling tools such as akkru_filings or akkru_facts, but the internal action guidance is strong.

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

akkru_eventsCorporate events (Form 8-K)A
Read-onlyIdempotent
Inspect

Corporate events US companies report to the SEC, one section per Item (e.g. 5.02, officer changes), each with a summary and a link to its place in the filing; amendments are merged into the filing they amend. Starter plan or higher; results stop at your plan's history window.

  • types: the Item codes with their official titles. Free.

  • list: one company's (ticker or cik) event filings, newest first, with their ids, dates and Items. 10 credits per page.

  • get: one filing by filing_id: its sections, amendment history, and on request the original text and the attachments, at no extra cost. 30 credits.

  • search: filings across companies by Items and filing dates, newest first, with the matching sections. Pro plan or higher; 65-280 credits per page. list, get and search are charged even when nothing matches or the filing or company is not found.

NameRequiredDescriptionDefault
cikNo(list) Company SEC CIK, digits, e.g. "320193"; any CIK the company has filed under. Give ticker or cik, not both.
pageNo(list, search) Page number, from 1; the response's next_page gives the next one.
itemsNo(get, search) Item codes, e.g. ["5.02"] (1-33; action "types" lists them). get: only these sections; search: filings with these Items. Default: every Item.
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(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.
tickersNo(search) Only these companies (up to 100); any symbol a company has traded under. Default: every company.
end_dateNo(search) Latest filing date, "YYYY-MM-DD".
filing_idNo(get) Event filing id from action "list" or "search".
page_sizeNo(list, search) list: filings per page, 1-100 (default 50); search: filings per page, 1-10 (default 5), with page times page_size at most 500.
as_of_dateNo(get, search) Date "YYYY-MM-DD", not in the future. get: the filing only if it was filed by then (404 otherwise); search: only filings filed by then.
item_matchNo(search) "any" (default): a filing with at least one of items; "all": a filing with every one.
start_dateNo(search) Earliest filing date, "YYYY-MM-DD".
include_exhibitsNo(get) true: also return the filing's attachments with their text.
exclude_likely_mergedNo(search) true: leave out filings whose amendment match is only probable.
include_original_raw_textNo(get) true: also return the filing's complete original text.
include_unresolved_amendmentsNo(search) true: include amendments that could not be matched to their original filing.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the read-only and idempotent annotations, the description discloses crucial operational traits: plan gating ('Starter plan or higher', 'Pro plan or higher' for search), credit costs per action, the fact that list/get/search are charged even when nothing matches, and the history window limit. These are exactly the kind of behavioral details an agent needs before invoking a paid read tool.

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 organized as a short intro followed by a bullet per action, which is front-loaded and easy to scan. It is slightly dense but every sentence carries meaningful information about cost, plan, or behavior; there is no padding.

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 multi-action paid data-retrieval tool with no output schema, the description covers everything an agent needs: what each action returns ('ids, dates and Items', 'sections, amendment history, original text and attachments'), pagination behavior, credit costs, plan prerequisites, and not-found billing rules. Nothing critical is omitted.

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?

With 100% schema description coverage, the schema already documents all 17 parameters well. The description adds value by explaining the required 'action' enum in detail—each action's behavior, cost, and plan requirement—which the schema defers to ('each action is described in the tool description'). It does not add syntax details for other parameters, but it doesn't need to.

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 resource ('Corporate events US companies report to the SEC') and then enumerates the four actions available (types, list, get, search) with their exact scope, so the agent can immediately distinguish this from sibling tools. The Form 8-K framing and Section-per-Item explanation make the purpose unmistakable.

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 is given a clear role: 'list' is one company's filings, 'search' is across companies by Items and dates, 'get' is one filing by id, and 'types' enumerates Item codes. The description does not explicitly say 'use search instead of list when…' but the action distinctions and plan/price notes make the correct choice sufficiently clear.

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

akkru_factsFinancial factsA
Read-onlyIdempotent
Inspect

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.

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

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the read-only, idempotent annotations, the description adds important behavior: credit costs, four name-resolution levels, best-first multiple-fact matching, and breakdown slicing rules. It does not cover every operational edge case, but it discloses the cost and matching behavior an agent needs before calling.

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

Conciseness4/5

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

The description is front-loaded with the resource definition and then structured by action. It is dense but not wasteful; almost every sentence carries actionable detail about matching, comparison, or cost.

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 complex 13-parameter tool with no output schema, the description is largely complete: it explains actions, filing selection, comparison mode, resolution behavior, and cost implications. Minor details such as failed-filing handling live in the schema rather than the description, but the core calling context is covered.

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 parameter details are already well documented. The description still adds real meaning beyond the schema by explaining how names are priced and matched across L0-L3, how fact_ids are charged, and how breakdown costs count the total and direct slices.

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 the resource and action: reported financial facts from filings, with 'get' and 'breakdown' modes. It is specific about what is returned (period, unit, dimensions, filing link), but it does not explicitly distinguish this tool from siblings like akkru_statements or akkru_metrics.

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?

It provides substantial guidance for choosing between 'get' and 'breakdown' and for naming one filing versus passing multiple filings to compare. However, it does not say when to use this tool instead of related sibling tools such as akkru_statements, akkru_metrics, or akkru_filings.

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

akkru_filingsFilingsA
Read-onlyIdempotent
Inspect

The financial reports (10-K, 10-Q, 20-F, 40-F and their Korean, Japanese, Chinese and European equivalents) on file for a company.

  • list: one company's filings for one fiscal year, with each filing's id, form, quarter, registrant, fact count, whether it has an Excel file (has_excel), and a note when an amendment was merged in. 10 credits.

  • excel: a download URL for one filing's Excel file, valid for one hour. 300 credits. Older years and some markets depend on your plan.

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(list, excel) 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(list, excel) "FY", "Q1", "Q2", "Q3" or "Q4". list: filters the list, omit for every quarter; excel: needed only when the fiscal year has several filings of the form; the error then lists the quarters on file.
filing_idNo(excel) Filing id from akkru_filings action "list". Name the filing with filing_id, or with ticker and fiscal_year, not both.
form_typeNo(list, excel) Form: "10-K", "10-Q", "20-F" or "40-F" (Korean, Japanese, Chinese and European filings use "10-K" for annual and "10-Q" for interim reports). list: filters the list, omit for every form; excel: defaults to "10-K".
fiscal_yearNo(list, excel) Fiscal year of the filing (1990-2100).

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations (readOnly/idempotent/non-destructive, closed-world), the description discloses credit costs (10 for list, 300 for excel), that the download URL expires after one hour, that amended filings are noted in the list output, and that older years and some markets depend on the plan. That is meaningful operational context an agent cannot get from the annotations alone.

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 structure is strong: a one-line scope statement followed by two bulleted action definitions, each front-loading what the action returns. The parenthetical listing of form types is long but earns its place by preempting ambiguity about regional filings. Minor density keeps it from a 5.

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?

With no output schema and seven parameters, the description does the necessary work: it enumerates the list response fields (id, form, quarter, registrant, fact count, has_excel, amendment note) and describes the excel return value plus its expiry. The plan-dependent limitation is flagged, though it could be more specific about which years or markets are restricted.

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, but the description adds action-scoping value the schema cannot: which parameters apply to list versus excel, that form_type defaults to 10-K for excel, that quarter is optional for list and conditional for excel, and that mutual exclusivity rules govern filing naming. This meaningfully reduces mis-invocation risk.

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 the resource (a company's financial reports, with the specific form types 10-K/10-Q/20-F/40-F and their regional equivalents) and splits it into two concrete actions: list filings for a fiscal year, and fetch an Excel download URL for one filing. An agent can distinguish exactly what this tool returns versus a generic financial-data sibling.

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 is given its own when-to-use context, including that quarter is only needed for excel when a fiscal year has multiple filings of that form and that the error will list the available quarters. It also explains the either/or naming (filing_id or ticker+fiscal_year). It stops short of naming sibling tools to redirect to, so it stays at 4.

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

akkru_initial_holdingsInitial holdings (Form 3)A
Read-onlyIdempotent
Inspect

What insiders report holding when they become insiders (SEC Form 3), nested filing then holdings; no_securities_owned true means the filer reported holding nothing. Rows failing a consistency check carry data_quality_flags and are left out unless include_anomalies is true.

  • list: one company's (ticker or cik) and/or one insider's (insider_cik) Form 3 filings. 30 credits per page.

  • stats: totals over a filing-date window, with the ids of every holding counted. 40 credits plus 5 per 1,000 holdings counted. shares_owned_total and underlying_shares_total are in different units.

  • get: holdings by id (from stats), up to 100. 10 credits per 5 ids.

  • insiders: everyone who filed a Form 3 for one company, one row per CIK. 30 credits.

  • tickers: the companies with Form 3 data, 500 per page. 30 credits per page.

  • search: screen every company's holdings with holding_filters and aggregate_filters. Pro plan or higher; 65-920 credits. A company outside your plan's coverage returns 403 and the call is still charged.

NameRequiredDescriptionDefault
cikNo(list, stats, insiders) Company SEC CIK, digits, e.g. "320193"; any CIK the company has filed under. Give ticker or cik, not both.
pageNo(list, get, tickers, search) Page number, from 1; the response's next_page gives the next one.
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(list, stats, insiders) 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.
sectorsNo(search) Only companies in these sectors (names from akkru_metrics action "catalog"). Pro plan or higher.
sort_byNo(search) Grouped: ticker, holdings_count or shares_owned_total. One row per holding: filing_date, shares_owned, split_adjusted_shares_owned, underlying_security_shares or conversion_or_exercise_price.
tickersNo(search) Only these companies (up to 100); any symbol a company has traded under. Default: every company.
ids_pageNo(stats) Page of holding_ids in the stats response (default 1).
page_sizeNo(list, get, tickers, search) list, get: filings per page; search: rows per page, with page times page_size at most 500; tickers: companies per page, up to 500.
as_of_dateNo(stats, search) Window end, filing date "YYYY-MM-DD" (not in the future).
sort_orderNo(search) "desc" (default) or "asc".
start_dateNo(stats, search) Window start, filing date "YYYY-MM-DD".
holding_idsNo(get) Holding ids from action "stats" (1-100).
insider_cikNo(list, stats) Insider SEC CIK, digits (from action "insiders").
relationshipNo(list, stats, insiders) list, stats: the role on the filing, any of "is_director", "is_officer", "is_ten_percent_owner", "is_other". insiders: a role ever reported, any of "ever_director", "ever_officer", "ever_ten_percent_owner", "ever_other".
ids_page_sizeNo(stats) holding_ids per page, 1-1,000 (default 200).
is_derivativeNo(stats) true: derivative rows only; false: non-derivative rows only.
exclude_tickersNo(search) Leave these companies out (up to 100).
group_by_tickerNo(search) true (default): one row per company; false: one row per holding.
holding_filtersNo(search) Holding-level filters: relationship, is_derivative, direct_or_indirect (D or I), include_anomalies, exclude_likely_merged, include_unresolved_amendments, and up to 8 conditions {field, op, value} on shares_owned, split_adjusted_shares_owned, underlying_security_shares, split_adjusted_underlying_security_shares or conversion_or_exercise_price.
aggregate_filtersNo(search) Company-level conditions (up to 8) {metric, op, value} on filing_count, no_securities_filing_count, distinct_insiders, holdings_count or shares_owned_total. Operators for both: >, >=, <, <=, between ([low, high]).
include_anomaliesNo(list, stats) true: include rows that fail a consistency check (left out by default).
no_securities_ownedNo(list) true: only filings that report holding nothing; false: only filings with holdings; default both.
exclude_likely_mergedNo(list, stats) true: leave out filings whose amendment match is only probable.
include_unresolved_amendmentsNo(list, stats) true: include amendments that could not be matched to their original filing.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description adds substantial context beyond them: per-action credit costs, a Pro-plan gate on search, and the key warning that a 403 for out-of-plan coverage is still charged. It also discloses that rows failing a consistency check carry data_quality_flags and are excluded unless include_anomalies is true, and warns that shares_owned_total and underlying_shares_total use different units.

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 summary followed by one bullet per action is the right structure for a 26-parameter, 6-action tool, and pricing is folded into each action rather than a separate block. A few clauses are dense ('nested filing then holdings'), but nothing is 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?

For a wide, multi-action tool with no output schema, the description covers action selection, cost, plan gating, anomaly handling, and a units caveat. Response shape is only loosely implied (via the detail levels and the stats/get id handoff), so an agent still learns the return format largely from the 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 baseline is 3, but the description adds real meaning on top: the anomaly-flagging behavior tied to include_anomalies and the unit mismatch between the two aggregate totals. It also clarifies what no_securities_owned=true represents (filer reported holding nothing) in business terms rather than just a boolean.

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 opening sentence names the specific resource (SEC Form 3 initial holdings reported by insiders on becoming insiders), its nesting shape, and the meaning of no_securities_owned. This clearly separates it from siblings like akkru_insider_transactions (Form 4) and akkru_institutional_holdings (13F).

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 of the six actions is scoped explicitly (list = one company/insider, stats = window totals, get = ids from stats, insiders = roster per company, tickers = covered companies, search = cross-company screening), with cost and plan requirements attached to support action choice. It stops short of naming sibling tools as alternatives (e.g., when to prefer akkru_insider_transactions), so 4 rather than 5.

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

akkru_insider_transactionsInsider transactions (Form 4)A
Read-onlyIdempotent
Inspect

Trades insiders report on SEC Form 4 (and Form 5), nested filing then transactions, with the insiders, footnotes and links to the filing. A trade's direction is its acquired_disposed_code (A or D). Rows failing a consistency check carry data_quality_flags and are left out unless include_anomalies is true; the count left out is reported.

  • list: one company's (ticker or cik) and/or one insider's (insider_cik) filings. 30 credits per page.

  • stats: totals over a date window for one company and/or insider, with the ids of every transaction counted. 40 credits plus 5 per 1,000 transactions counted.

  • get: transactions by id (from stats), up to 100. 10 credits per 5 ids.

  • insiders: everyone who filed a Form 4 for one company, one row per CIK, with roles, latest title and filing counts; gives the insider_cik the other actions take. 30 credits.

  • types: the transaction codes with their official names. Free.

  • tickers: the companies with Form 4 data, 500 per page. 30 credits per page.

  • search: screen every company's trades with trade_filters and aggregate_filters. Pro plan or higher; 65-920 credits. A company outside your plan's coverage returns 403 and the call is still charged.

NameRequiredDescriptionDefault
cikNo(list, stats, insiders) Company SEC CIK, digits, e.g. "320193"; any CIK the company has filed under. Give ticker or cik, not both.
pageNo(list, get, tickers, search) Page number, from 1; the response's next_page gives the next one.
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.
methodNo(stats) "ad" (default): totals by acquired_disposed_code; "ps": P as a buy and S as a sell, only those two codes.
tickerNo(list, stats, insiders) 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.
sectorsNo(search) Only companies in these sectors (names from akkru_metrics action "catalog"). Pro plan or higher.
sort_byNo(search) Grouped: ticker or txn_count. One row per transaction: transaction_date, filing_date, transaction_value, shares, price_per_share, own_pct_change, split_adjusted_shares or split_adjusted_price.
tickersNo(search) Only these companies (up to 100); any symbol a company has traded under. Default: every company.
ids_pageNo(stats) Page of transaction_ids in the stats response (default 1).
page_sizeNo(list, get, tickers, search) list, get: filings per page; search: rows per page, with page times page_size at most 500; tickers: companies per page, up to 500.
as_of_dateNo(stats, search) Window end, transaction date "YYYY-MM-DD" (not in the future); filings submitted after it are left out too.
sort_orderNo(search) "desc" (default) or "asc".
start_dateNo(stats, search) Window start, transaction date "YYYY-MM-DD".
insider_cikNo(list, stats) Insider SEC CIK, digits (from action "insiders").
relationshipNo(list, stats, insiders) list, stats: the role on the filing, any of "is_director", "is_officer", "is_ten_percent_owner", "is_other". insiders: a role ever reported, any of "ever_director", "ever_officer", "ever_ten_percent_owner", "ever_other".
ids_page_sizeNo(stats) transaction_ids per page, 1-1,000 (default 200).
is_derivativeNo(stats) true: derivative rows only; false: non-derivative rows only.
trade_filtersNo(search) Trade-level filters: transaction_code, relationship, is_derivative, principal_amount_not_shares, include_anomalies, exclude_likely_merged, include_unresolved_amendments, and up to 8 conditions {field, op, value} on transaction_value, price_per_share, shares, own_pct_change, split_adjusted_shares or split_adjusted_price.
exclude_tickersNo(search) Leave these companies out (up to 100).
group_by_tickerNo(search) true (default): one row per company; false: one row per transaction.
transaction_idsNo(get) Transaction ids from action "stats" (1-100).
transaction_codeNo(list, stats) SEC transaction codes to keep, e.g. ["P", "S"] (up to 20; action "types" lists them). Unknown codes are dropped and reported in _warnings.
aggregate_filtersNo(search) Company-level conditions (up to 8) {metric, op, value} on value_acquired, value_disposed, net_value, shares_acquired, shares_disposed, net_shares, txn_count, txn_count_acquired, txn_count_disposed, max_txn_value_acquired, max_txn_value_disposed or distinct_insiders. Operators for both: >, >=, <, <=, between ([low, high]).
include_anomaliesNo(list, stats) true: include rows that fail a consistency check (left out by default).
exclude_likely_mergedNo(list, stats) true: leave out filings whose amendment match is only probable.
transaction_form_typeNo(list) Only "4" or only "5".
include_unresolved_amendmentsNo(list, stats) true: include amendments that could not be matched to their original filing.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/closed-world, but the description adds unique behavior: per-action credit pricing, Pro-only gating on search, the fact that an out-of-plan company throws 403 and is still charged, and that anomaly rows are filtered unless include_anomalies is set with the excluded count reported. This is well beyond annotation coverage.

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?

Front-loaded summary paragraph establishes response shape and anomaly behavior, then a tightly scannable per-action bullet list with costs. Every line carries actionable information; 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 28-parameter, seven-action tool with no output schema, the description covers return shape ('nested filing then transactions, with the insiders, footnotes and links'), insiders row granularity, stats id emission, pagination hints, cost and error/plan behavior. Nothing an agent needs to invoke it correctly 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%, so the schema already documents all 28 parameters in detail; the description only adds the acquired_disposed_code A/D direction meaning and the anomaly filtering flow. That is modest added value over an already complete schema, so baseline 3 plus a negligible bump is right.

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?

States a specific verb+resource (SEC Form 4/5 insider trades) and then enumerates each of the seven actions with what it returns. Clearly distinguishable from siblings like akkru_institutional_holdings or akkru_initial_holdings by naming the filer type (insiders) and form type (4/5).

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?

Provides explicit routing between actions: 'get: transactions by id (from stats)' and 'insiders ... gives the insider_cik the other actions take', plus plan prerequisites for search (Pro or higher) and per-action credit costs. An agent can pick the right action without opening schemas, and knows when a call is costly or gated.

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

akkru_institutional_holdingsInstitutional holdings (13F)A
Read-onlyIdempotent
Inspect

What institutional managers report holding each quarter on SEC Form 13F, by manager (filer CIK) and quarter. Links open the filing's EDGAR index page.

  • managers: managers whose latest name matches query, or whose CIK is query when it is all digits; up to 8, largest latest portfolio first, with their latest quarter. 10 credits.

  • history: one manager's quarters (cik, or the exact name) with each quarter's headline numbers and its quarter label (e.g. "2026Q2", for portfolio). 30 credits.

  • portfolio: one manager's holdings for one quarter: positions, derivatives and positions closed out (exited), under a header with the quarter's numbers and its amendment record. 30 credits per page.

  • holders: who holds one security (cusip or ticker), row by row, or one row per quarter with group_by_quarter. 30 credits per page; 40 grouped.

  • search: screen every manager-quarter by its numbers (conditions), by quarter end dates and flags. Pro plan or higher; 160-720 credits. An unknown manager, quarter or security returns 404 and is still charged.

NameRequiredDescriptionDefault
cikNo(history, portfolio) Manager (filer) CIK, digits without leading zeros (from action "managers"). Give cik or name, not both.
nameNo(history, portfolio) Manager name, exact apart from spaces and case; a name several managers share returns 404.
pageNo(history, portfolio, holders, search) Page number, from 1; the response's next_page gives the next one.
typeNo(portfolio, holders) "positions" (stock rows), "derivatives" (option rows) or "exited" (positions closed out that quarter); default all three.
cusipNo(portfolio, holders) 9-character CUSIP. portfolio: only this security; holders: the security (or give ticker).
queryNo(managers) Manager name (1-64 characters; under 3 characters matches the start of the name) or CIK digits.
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(portfolio, holders) Security ticker; any symbol the company has traded under. portfolio: only this security; holders: the security (or give cusip).
quarterNo(portfolio, holders) Calendar quarter "YYYYQn", e.g. "2026Q1" (Q1 ends March 31, Q2 June 30, Q3 September 30, Q4 December 31). portfolio: required; holders: default every quarter.
sort_byNo(portfolio, holders, search) portfolio, holders: period, d_shares, ticker, issuer_norm or type (holders also shares or value); search: total_positions_value (default), positions_count, derivatives_count, total_derivatives_notional, portfolio_value_qoq_pct, top1_security_pct, top10_security_pct, est_turnover, period or filing_date.
activityNo(portfolio, holders) Any of "NEW", "ADD", "REDUCE", "HOLD", "CUSIP_CHANGE"; unknown values are dropped with a warning. Exited rows have no activity.
end_dateNo(search) Only quarters ending on or before this date, "YYYY-MM-DD". Omit both dates for every quarter.
restatedNo(portfolio) Any of "added", "modified", "cancelled": rows a merged amendment changed.
page_sizeNo(history, portfolio, holders, search) Rows per page, 1-100 (default 50); search: page times page_size at most 500.
conditionsNo(search) Up to 8 {field, op, value}; op is >, >=, <, <= or between ([low, high]); field is total_positions_value, positions_count, derivatives_count, total_derivatives_notional, portfolio_value_qoq_pct, top1_security_pct, top10_security_pct, est_turnover, cover_table_value, new_count, add_count, reduce_count, hold_count, sold_out_count or filing_date ("YYYY-MM-DD"). A quarter where the field is empty never matches.
is_amendedNo(search) true: only quarters with merged amendments; false: only quarters without.
sort_orderNo(history, portfolio, holders, search) "desc" (default) or "asc".
start_dateNo(search) Only quarters ending on or after this date, "YYYY-MM-DD".
confidentialNo(search) true: only quarters with confidential holdings; false: only without.
group_by_quarterNo(holders) true: one row per quarter (holders, total shares, total value of stock rows), unpaged.
is_combination_reportNo(search) true: only combination reports (the filer also reports for other managers); false: only holdings reports.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent, and the description adds what they cannot: per-action credit costs (10/30/40/160-720), Pro-plan requirement for search, per-page charging, and that a 404 for an unknown manager/quarter/security is still billed. It also notes that links open the EDGAR index page and that portfolio carries the amendment record.

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-sentence scope followed by five tight action bullets, one line per action. Phrasing is telegraphic ('10 credits.', 'exited') but nothing is wasted.

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?

Covers all five actions, their costs, plan gating, error behavior, and paging ('30 credits per page', 'next_page' in schema), which is enough to call a 22-parameter tool correctly. Output shape is only sketched ('row by row', 'header with the quarter's numbers') and no output schema exists, but the gap is minor against the schema's per-param documentation.

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 is already tagged with its applicable actions, so the description's action-by-action summary largely restates structured data. It adds little parameter-level detail beyond page-size implications in the credit lines.

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?

Opens with a specific verb+resource: what institutional managers report holding each quarter on SEC Form 13F, keyed by manager CIK and quarter. The five actions are each named and scoped, so an agent can tell managers/history/portfolio/holders/search apart 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?

Each action has an explicit selection rule (managers to discover CIKs, history for quarters, portfolio for one quarter, holders for reverse lookup, search for screening) plus a plan gate on search. It never names a sibling tool or states when NOT to use this instead of akkru_initial_holdings, so routing is intra-tool only.

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

akkru_metricsComputed metricsA
Read-onlyIdempotent
Inspect

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.

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.

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.

akkru_statementsStatements and notesA
Read-onlyIdempotent
Inspect

Whole statements and notes of one filing, as filed: every row with its value, period, unit and source.

  • get: one statement or note, named by exactly one of statement_type, role_label or block_index. statement_type takes the five main statements by name, for US filings. role_label takes any statement or note by the name the filer gave it, in any filing. block_index takes the position that list shows. 28 credits; 48 when role_label is matched to a differently worded name.

  • list: every statement and note block of the filing with its block_index, statement_type and role_label. 10 credits. Name the filing with filing_id, or with ticker and fiscal_year.

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, 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". Needed only when the fiscal year has several filings of the form; the error then lists the quarters on file.
filing_idNo(get, list) Filing id from akkru_filings action "list". Name the filing with filing_id, or with ticker and fiscal_year, not both.
form_typeNo(get, list) 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.
role_labelNo(get) The statement or note name as the filer gave it, e.g. "CONSOLIDATED STATEMENTS OF OPERATIONS" or "Revenue Recognition"; a name that differs from the filing's is matched for 20 more credits. Give one of statement_type, role_label, block_index.
block_indexNo(get) The block's position as list returns it. Give one of statement_type, role_label, block_index.
fiscal_yearNo(get, list) Fiscal year of the filing (1990-2100).
statement_typeNo(get) "Income Statement", "Balance Sheet", "Cash Flow Statement", "Comprehensive Income" or "Stockholders Equity" (US filings only). Give one of statement_type, role_label, block_index.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare this read-only, idempotent and closed-world, so the safety profile is covered. The description adds real value with pricing (28 credits, 10 for list) and the 48-credit surcharge when role_label is matched to a differently worded name, which is a behavioral trait not in any structured field. It does not cover response size limits, pagination, or what happens for non-US filings on statement_type beyond saying it is US-only.

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 summary sentence, then dash-delimited per-action blocks, then a one-line filing-identification rule. Every sentence carries information, though the mutual-exclusivity instruction is repeated from the schema and costs a little space.

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?

There is no output schema, so the description must characterize returns, and it does: get yields every row with value, period, unit and source; list yields block_index, statement_type and role_label per block. It also explains that detail tiers trade fields for tokens, which the schema covers. Inputs are fully covered at 10 parameters; only extreme cases (non-US statement naming, very large statements) are left unaddressed.

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 the field definitions and the baseline would be 3. The description goes further by explaining the practical semantics: statement_type only resolves the five main statements and only for US filings, role_label accepts any filer-given name and costs more when fuzzy-matched, block_index mirrors what list returns, and quarter is only needed for ambiguous fiscal years. That is meaning beyond the schema text.

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 names the exact resource and scope: whole statements and notes of one filing, as filed, with rows carrying value, period, unit and source. The two actions are then given concrete verbs (return one block vs. enumerate all blocks). It does not say how it differs from akkru_facts, which an agent might reach for when it wants numbers instead of full statements.

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 states explicitly how to select a block — exactly one of statement_type, role_label or block_index — and explains what each selector is for and where block_index comes from. It also says a filing is named either by filing_id or by ticker plus fiscal_year, not both, and when quarter is needed. No guidance on when to prefer this tool over sibling fact/metric tools.

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. 60 tool updates
    • Addedakkru_account
    • Addedakkru_companies
    • Addedakkru_events
    • Addedakkru_facts
    • Addedakkru_filings
    • Addedakkru_initial_holdings
    • Addedakkru_insider_transactions
    • Addedakkru_institutional_holdings
    • Addedakkru_metrics
    • Addedakkru_statements
    • Removedcompare_facts
    • Removedcompare_line_items
    • Removedget_balance_sheet
    • Removedget_cash_flow_metrics
    • Removedget_cash_flow_statement
    • Removedget_comprehensive_income
    • Removedget_dimensional_breakdown_by_fact_id
    • Removedget_dimensional_breakdown_by_line_item
    • Removedget_efficiency_metrics
    • Removedget_equity_statement
    • Removedget_event_filing
    • Removedget_filing_excel
    • Removedget_filing_facts
    • Removedget_filing_statement
    • Removedget_financial_health_metrics
    • Removedget_growth_metrics
    • Removedget_income_statement
    • Removedget_initial_holding_stats
    • Removedget_initial_holdings_by_id
    • Removedget_insider_stats
    • Removedget_insider_transactions_by_id
    • Removedget_institutional_manager_history
    • Removedget_institutional_portfolio
    • Removedget_institutional_security_holders
    • Removedget_metrics_bundle
    • Removedget_metrics_bundle_filing_date
    • Removedget_metrics_subset
    • Removedget_metrics_timeseries
    • Removedget_profitability_metrics
    • Removedget_valuation_metrics
    • Removedget_valuation_metrics_filing_date
    • Removedlist_companies
    • Removedlist_company_insiders
    • Removedlist_event_filings
    • Removedlist_event_types
    • Removedlist_filing_statements
    • Removedlist_filings
    • Removedlist_initial_holdings
    • Removedlist_insider_tickers
    • Removedlist_insider_transaction_types
    • Removedlist_insider_transactions
    • Removedlist_metric_snapshots
    • Removedlist_screener_filters
    • Removedlookup_company
    • Removedquery_line_items
    • Removedsearch_events
    • Removedsearch_initial_holdings
    • Removedsearch_insider_trades
    • Removedsearch_institutional_holdings
    • Removedsearch_stocks
  2. 27 tool updates
    • Changedget_balance_sheet1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_cash_flow_statement1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_comprehensive_income1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_dimensional_breakdown_by_fact_id1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_dimensional_breakdown_by_line_item1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_equity_statement1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_filing_facts1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_filing_statement1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_income_statement1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedget_initial_holding_stats2 fields changed
      • addedInput schema / properties / cik
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company SEC CIK, 1–10 digits as a string; leading zeros are optional; any CIK the company has filed under. Provide cik or ticker, not both.",
        +  "title": "Cik"
        +}
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker. Provide this and/or insider_cik."New value: +"Company ticker; any symbol the company has traded under. Provide this and/or insider_cik."
    • Changedget_insider_stats2 fields changed
      • addedInput schema / properties / cik
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company SEC CIK, 1–10 digits as a string; leading zeros are optional; any CIK the company has filed under. Provide cik or ticker, not both.",
        +  "title": "Cik"
        +}
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker. Provide this and/or insider_cik."New value: +"Company ticker; any symbol the company has traded under. Provide this and/or insider_cik."
    • Changedget_institutional_portfolio1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Ticker to pin one security inside the quarter."New value: +"Ticker to pin inside the quarter; any symbol the company has traded under. A former symbol can pin several CUSIPs."
    • Changedget_institutional_security_holders1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Ticker. A ticker can match several CUSIPs (share classes, renumberings) — rows for all of them are included and the securities block lists each one."New value: +"Ticker; any symbol the company has traded under. A ticker can match several CUSIPs — rows for all of them are included and the securities block lists each one."
    • Changedget_metrics_timeseries1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US) or \"000100\" (Korea)."New value: +"Company ticker, e.g. \"AAPL\" (US) or \"000100\" (Korea); any symbol the company has traded under."
    • Changedlist_company_insiders6 fields changed
      • addedInput schema / properties / cik
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company SEC CIK, 1–10 digits as a string; leading zeros are optional; any CIK the company has filed under. Provide cik or ticker, not both.",
        +  "title": "Cik"
        +}
      • addedInput schema / properties / ticker / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / ticker / default
        Added value: +null
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker."New value: +"Company ticker; any symbol the company has traded under. Provide ticker or cik."
      • removedInput schema / properties / ticker / type
        Removed value: -"string"
      • removedInput schema / required
        Removed value: -[
        -  "ticker"
        -]
    • Changedlist_event_filings2 fields changed
      • changedInput schema / properties / cik / description
        Previous value: -"Company SEC CIK, 1–10 digits as a string; leading zeros are optional. Provide cik or ticker, not both."New value: +"Company SEC CIK, 1–10 digits as a string; leading zeros are optional; any CIK the company has filed under. Provide cik or ticker, not both."
      • changedInput schema / properties / ticker / description
        Previous value: -"Company stock symbol, 1–32 characters. Provide ticker or cik, not both."New value: +"Company stock symbol, 1–32 characters; any symbol the company has traded under. Provide ticker or cik, not both."
    • Changedlist_filing_statements1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedlist_filings1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US) or \"000100\" (Korea)."New value: +"Company ticker, e.g. \"AAPL\" (US) or \"000100\" (Korea); any symbol the company has traded under."
    • Changedlist_initial_holdings2 fields changed
      • addedInput schema / properties / cik
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company SEC CIK, 1–10 digits as a string; leading zeros are optional; any CIK the company has filed under. Provide cik or ticker, not both.",
        +  "title": "Cik"
        +}
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker. Provide this and/or insider_cik."New value: +"Company ticker; any symbol the company has traded under. Provide this and/or insider_cik."
    • Changedlist_insider_transactions2 fields changed
      • addedInput schema / properties / cik
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company SEC CIK, 1–10 digits as a string; leading zeros are optional; any CIK the company has filed under. Provide cik or ticker, not both.",
        +  "title": "Cik"
        +}
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker. Provide this and/or insider_cik."New value: +"Company ticker; any symbol the company has traded under. Provide this and/or insider_cik."
    • Changedlist_metric_snapshots1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US) or \"000100\" (Korea)."New value: +"Company ticker, e.g. \"AAPL\" (US) or \"000100\" (Korea); any symbol the company has traded under."
    • Changedlookup_company3 fields changed
      • addedInput schema / properties / lei
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Legal Entity Identifier, 20 characters, e.g. \"213800LRO7NS5CYQMN21\" (European companies only).",
        +  "title": "Lei"
        +}
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe: ticker + country marker), or \"600519_CN\" (China A-share: 6-digit code + _cn). Provide exactly one of ticker / cik / dart_corp_code / edinet_code."New value: +"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe: ticker + country marker), or \"600519_CN\" (China A-share: 6-digit code + _cn). Provide exactly one of ticker / cik / dart_corp_code / edinet_code / lei / uscc."
      • addedInput schema / properties / uscc
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "China Unified Social Credit Code, 18 characters, e.g. \"9152000071430580XT\" (China A-share companies only).",
        +  "title": "Uscc"
        +}
    • Changedquery_line_items1 field changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Company ticker, e.g. \"AAPL\" (US), \"000100\" (Korea), \"1332\" (Japan), \"VIRI_F\" (Europe), \"600519_CN\" (China A-share). Use with fiscal_year when filing_id is omitted."New value: +"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. Use with fiscal_year when filing_id is omitted."
    • Changedsearch_events1 field changed
      • changedInput schema / properties / tickers / description
        Previous value: -"Optional company symbols, 1–100 entries. Omit to search all available US companies."New value: +"Optional company symbols, 1–100 entries; any symbol a company has traded under. Omit to search all available US companies."
    • Changedsearch_initial_holdings2 fields changed
      • changedInput schema / properties / group_by_ticker / description
        Previous value: -"When true (default), group rows by ticker; when false, return flat rows."New value: +"When true (default), one group per company; when false, flat rows, each carrying company_id."
      • changedInput schema / properties / tickers / description
        Previous value: -"Whitelist, <= 100. Omit to scan the whole library."New value: +"Whitelist, <= 100; any symbol a company has traded under. Omit to scan the whole library."
    • Changedsearch_insider_trades2 fields changed
      • changedInput schema / properties / group_by_ticker / description
        Previous value: -"When true (default), group rows by ticker; when false, return flat rows."New value: +"When true (default), one group per company; when false, flat rows, each carrying company_id."
      • changedInput schema / properties / tickers / description
        Previous value: -"Whitelist, <= 100. Omit to scan the whole library."New value: +"Whitelist, <= 100; any symbol a company has traded under. Omit to scan the whole library."
    • Changedsearch_stocks2 fields changed
      • changedInput schema / properties / group_by_ticker / description
        Previous value: -"When true (default), return one row per ticker; when false, one row per filing."New value: +"When true (default), one row per company; when false, one row per filing."
      • changedInput schema / properties / tickers / description
        Previous value: -"Optional whitelist restricting the search to these tickers (≤ 100)."New value: +"Optional whitelist restricting the search to these tickers (≤ 100); any symbol a company has traded under."
  3. 50 tool updates
    • First observedcompare_facts
    • First observedcompare_line_items
    • First observedget_balance_sheet
    • First observedget_cash_flow_metrics
    • First observedget_cash_flow_statement
    • First observedget_comprehensive_income
    • First observedget_dimensional_breakdown_by_fact_id
    • First observedget_dimensional_breakdown_by_line_item
    • First observedget_efficiency_metrics
    • First observedget_equity_statement
    • First observedget_event_filing
    • First observedget_filing_excel
    • First observedget_filing_facts
    • First observedget_filing_statement
    • First observedget_financial_health_metrics
    • First observedget_growth_metrics
    • First observedget_income_statement
    • First observedget_initial_holding_stats
    • First observedget_initial_holdings_by_id
    • First observedget_insider_stats
    • First observedget_insider_transactions_by_id
    • First observedget_institutional_manager_history
    • First observedget_institutional_portfolio
    • First observedget_institutional_security_holders
    • First observedget_metrics_bundle
    • First observedget_metrics_bundle_filing_date
    • First observedget_metrics_subset
    • First observedget_metrics_timeseries
    • First observedget_profitability_metrics
    • First observedget_valuation_metrics
    • First observedget_valuation_metrics_filing_date
    • First observedlist_companies
    • First observedlist_company_insiders
    • First observedlist_event_filings
    • First observedlist_event_types
    • First observedlist_filing_statements
    • First observedlist_filings
    • First observedlist_initial_holdings
    • First observedlist_insider_tickers
    • First observedlist_insider_transaction_types
    • First observedlist_insider_transactions
    • First observedlist_metric_snapshots
    • First observedlist_screener_filters
    • First observedlookup_company
    • First observedquery_line_items
    • First observedsearch_events
    • First observedsearch_initial_holdings
    • First observedsearch_insider_trades
    • First observedsearch_institutional_holdings
    • First observedsearch_stocks

Publisher details

Operator
Akkru Inc. · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not applicable
Restrictions
A free account is required — self-serve sign-up with email verification, no approval or invite. OAuth uses dynamic client registration, so no custom OAuth app is needed. The free plan covers S&P 500 issuers and three years of history; Russell 3000 and calculated metrics need Starter, and screening plus non-US markets (KR / JP / EU / CN) need Pro. Usage is metered in credits — 5,000 on sign-up and 1,500 monthly on the free plan. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides as-reported US equity fundamentals, live quotes, financial statements, valuation comps, and a screener from SEC filings, with per-cell filing provenance for citations.
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides free SEC filing fundamentals for US public companies, including financial statements, 10-K/10-Q summaries, and 8-K event histories. No API key or signup required.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides access to SEC filings and detailed XBRL financial data for all publicly traded U.S. companies. It enables users to search for company info, retrieve historical metrics like revenue and assets, and compare financial performance across different industries.
    6
    1
    -
  • A
    license
    A
    quality
    C
    maintenance
    Give your AI agent live SEC EDGAR data: company financials, insider trades, 8-K events, 13F holdings, and the raw filings stream — all normalized to clean JSON, every number traceable back to its sec.gov source filing.
    8
    33 PyPI
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources