AkkruData
Server Details
SEC filings, financial statements, metrics, insider and institutional holdings as structured data
- Status
- Healthy
- Uptime
- 40.7% over 59 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 10 tools
The ten top-level tools map to clearly distinct domains such as companies, filings, facts, statements, metrics, events, insider forms, and institutional holdings, so an agent can usually choose the right tool. Minor ambiguity remains between facts/statements/metrics and between initial insider holdings versus ongoing insider transactions, but the descriptions make the distinctions workable.
All tool names use the same snake_case, resource-oriented convention with the akkru_ prefix, giving a highly predictable pattern. There is no mixing of casing or verb styles across the top-level tools.
Ten top-level tools is well within the ideal 3–15 range and each tool corresponds to a distinct data domain. The dense sub-action lists within each tool are a design choice rather than evidence that the overall tool count is wrong.
The surface covers company lookup, filing lists, XBRL facts, statements, computed metrics, corporate events, insider Forms 3/4/5, institutional 13F holdings, and account billing, which is broad for a financial data API. A generic cross-company filing search is not present—filings are only listed per company—but most agents can route around this via the other search-enabled tools.
Available Tools
10 toolsakkru_accountAccountBRead-onlyIdempotentInspect
Your account.
balance: the credits left on your account. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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
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.
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.
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.
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.
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.
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_companiesCompaniesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | (lookup) SEC CIK, digits, e.g. "320193" (companies filing with the SEC). | |
| lei | No | (lookup) Legal Entity Identifier, 20 characters (European filers). | |
| page | No | (list) Page number, from 1; the response's next_page gives the next one. | |
| uscc | No | (lookup) Unified Social Credit Code, 18 characters (China A-share companies). | |
| query | No | (search) Name, ticker or registrant id to search for (1-64 characters); English names only. | |
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| ticker | No | (lookup) Ticker, e.g. "AAPL", "000100", "1332", "VIRI_F", "600519_CN"; any symbol the company has traded under. | |
| page_size | No | (list) Companies per page, 1-100 (default 100). | |
| as_of_date | No | (lookup) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. Default: no cutoff. | |
| edinet_code | No | (lookup) Japanese EDINET code, e.g. "E02778". | |
| jurisdiction | No | (search, list) Market: "US", "KR", "JP", "EU", "CN", or "all" (default: every market your plan covers). | |
| dart_corp_code | No | (lookup) Korean DART corp code, 8 digits, e.g. "00126380". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses the non-obvious economics and limits: 10 credits for search, 8 for lookup 'also when no company matches', 30 credits per page for list, results truncated at the plan's coverage, and industry classification only on Pro and above. Billing-on-empty-result and plan gating are exactly the behaviors an agent could not infer from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One framing sentence followed by three labeled bullets, each front-loading the action name and appending cost — the highest-value facts in the smallest space for a 13-parameter, three-action tool. No sentence is redundant with the title or with the structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 13 parameters, the description carries return-value burden well: lookup is described as returning identity, all historical tickers, filing-list links, and forms/fiscal years/quarters on file, and list returns 100 per page. It never states what a search candidate records contain beyond industry classification, a small gap for the search action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter constraints the schema cannot express: lookup requires 'exactly one of' the six identifier fields, search matches name-contains versus ticker/registrant-id prefix, and the 8-candidate best-match-first ordering. It does not add format details for identifiers, but the schema already covers those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource (companies) and enumerates three distinct verbs — search, lookup, list — with a precise scope for each: 'companies whose name contains query, or whose ticker or registrant id starts with it' versus 'one company by exactly one of ticker, cik, ...'. This is specific enough that an agent can pick the right action without opening the schema, and the identity/lookup semantics distinguish it from sibling tools like akkru_filings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The bullets give clear per-action selection context (find a company, resolve one entity, enumerate coverage) plus a concrete narrowing rule via jurisdiction. It does not explicitly route the agent to sibling tools (e.g. akkru_filings for the filing lists this returns links to), so there is no stated when-not or alternatives clause, keeping it below a 5.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | (list) Company SEC CIK, digits, e.g. "320193"; any CIK the company has filed under. Give ticker or cik, not both. | |
| page | No | (list, search) Page number, from 1; the response's next_page gives the next one. | |
| items | No | (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. | |
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| ticker | No | (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. | |
| tickers | No | (search) Only these companies (up to 100); any symbol a company has traded under. Default: every company. | |
| end_date | No | (search) Latest filing date, "YYYY-MM-DD". | |
| filing_id | No | (get) Event filing id from action "list" or "search". | |
| page_size | No | (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_date | No | (list, get, search) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. Default: no cutoff. | |
| item_match | No | (search) "any" (default): a filing with at least one of items; "all": a filing with every one. | |
| start_date | No | (search) Earliest filing date, "YYYY-MM-DD". | |
| include_exhibits | No | (get) true: also return the filing's attachments with their text. | |
| exclude_likely_merged | No | (search) true: leave out filings whose amendment match is only probable. | |
| include_original_raw_text | No | (get) true: also return the filing's complete original text. | |
| include_unresolved_amendments | No | (search) true: include amendments that could not be matched to their original filing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations by disclosing per-action credit costs (10 per list page, 30 for get, 65-280 per search page), plan gating (Starter vs Pro), the history-window truncation, and the important billing caveat that list, get and search are charged even on empty or not-found results. It also explains that amendments are merged into the filing they amend, which affects what results mean.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is front-loaded with the resource and the section model, and the four bullets map cleanly to the action enum with costs attached. It is dense and the action labels are abbreviated ('- types:', '- list:'), but almost every clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter tool with no output schema, the description covers the four modes, their required inputs, and partial return shapes (ids/dates/Items for list; sections, amendment history, optional raw text and exhibits for get). It does not describe the search response layout or the detail-level output differences, leaving a modest gap for a tool this complex.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3; the description adds value by tying parameters to actions and by clarifying per-action economics and result semantics (e.g. amendment merging, which shapes how exclude_likely_merged and include_unresolved_amendments behave). It still does not explain item_match, as_of_date, or detail beyond the schema text, keeping it at 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the specific resource (US corporate Form 8-K events) and the per-Item section structure, and the bulleted actions (types/list/get/search) give each verb a concrete object. It does not explicitly differentiate itself from siblings such as akkru_filings, so an agent must infer the boundary from the resource name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action carries its own guidance: types is free and enumerates Item codes, list takes a ticker or cik, search requires Pro plan and takes items plus date ranges, get takes a filing_id from list/search. Plan tier and history-window constraints are stated, but there is no explicit when-not-to-use or named alternative among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
akkru_factsFinancial factsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| ticker | No | (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_id | No | (breakdown) The id of the consolidated fact to split. | |
| filings | No | (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. | |
| quarter | No | (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_ids | No | (get) Fact ids from an earlier result (1-500), charged 10 credits per 5. | |
| filing_id | No | (get, breakdown) Filing id from akkru_filings action "list". Name the filing with filing_id, or with ticker and fiscal_year, not both. | |
| form_type | No | (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_item | No | (breakdown) The line-item name to split, e.g. "revenue". | |
| recursive | No | (breakdown) true (default): every level of the split; false: only the first level. | |
| as_of_date | No | (get, breakdown) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. Default: no cutoff. | |
| line_items | No | (get) Line-item names, e.g. ["revenue", "net income"] (1-50). A name asked twice is charged once. | |
| fiscal_year | No | (get, breakdown) Fiscal year of the filing (1990-2100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds genuinely useful non-annotation context: credit pricing (10/20/30/50 per name by resolution level, 10 per 5 ids), the fact that failed filings appear in failed_filings and are not charged, and that a name match can return several facts, best first. However, the return payload is only sketched and pagination/limits are not discussed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource definition, then organized into one bullet per action, which matches the action enum. Dense but earns most of its words given 14 parameters; a missing word in 'A name is matched to the filing's concepts' slightly hurts readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with no output schema, the description covers cost model, matching behavior, comparison mode, and failure handling well enough to call it correctly. The main residual gap is the shape of returned fact records, which is only described in general terms in the first sentence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter including pricing notes, form_type defaults, and quarter behavior. The description adds the concept of L0-L3 name resolution and the _resolution_level output marker, but most other parameter guidance restates what the schema already says. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states the resource precisely (single reported numbers and text facts from filings, each with period, unit, dimensions and a filing link), and the two bullets define the distinct verbs: 'get' retrieves facts by name or id, 'breakdown' splits a consolidated total into segments/products/regions. It does not explicitly contrast itself with siblings like akkru_statements or akkru_metrics, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear routing between the two actions (use breakdown to split a total, get to retrieve values) and between addressing modes (one filing via filing_id or ticker+fiscal_year vs. multiple filings for year/company comparison). No explicit when-not guidance or sibling comparison is given, but the intra-tool alternatives are well covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
akkru_filingsFilingsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| ticker | No | (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. | |
| quarter | No | (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_id | No | (excel) Filing id from akkru_filings action "list". Name the filing with filing_id, or with ticker and fiscal_year, not both. | |
| form_type | No | (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". | |
| as_of_date | No | (list) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. Default: no cutoff. | |
| fiscal_year | No | (list, excel) Fiscal year of the filing (1990-2100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds substantive context beyond them: per-action credit costs (10 vs 300), a one-hour expiry on the Excel download URL, the presence of a has_excel flag, amendment-merge notes, and the caveat that older years and some markets depend on the plan. These are exactly the operational facts an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One framing sentence followed by two action bullets with costs inline — dense and front-loaded, with no filler. The plan caveat is tucked at the end where it belongs, though the action bullets are terse enough that the fiscal-year scoping assumption has to be inferred.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so for both actions: it enumerates list fields (id, form, quarter, registrant, fact count, has_excel, amendment note) and describes the Excel response as a time-limited URL. Minor gap: it says list covers 'one fiscal year' while fiscal_year is not a required parameter and no default or error behavior is stated for omitting it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains every parameter, including the alternative of naming a filing by filing_id versus ticker plus fiscal_year. The description adds little parameter-level meaning beyond noting that results are confined to a single fiscal year, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (regulatory filings: 10-K, 10-Q, 20-F, 40-F plus non-US equivalents) and splits it into two clearly named actions, 'list' and 'excel'. An agent can tell this apart from akkru_statements or akkru_facts by resource, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives per-action guidance: 'list' for one company's filings for a fiscal year, 'excel' when a downloadable spreadsheet is needed, and the error-listing behavior when a fiscal year has multiple filings of a form. It does not say when to prefer this over sibling tools like akkru_statements, so the routing between tools is left implicit.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | (list, stats, insiders) Company SEC CIK, digits, e.g. "320193"; any CIK the company has filed under. Give ticker or cik, not both. | |
| page | No | (list, get, tickers, search) Page number, from 1; the response's next_page gives the next one. | |
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| ticker | No | (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. | |
| sectors | No | (search) Only companies in these sectors (names from akkru_metrics action "catalog"). Pro plan or higher. | |
| sort_by | No | (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. | |
| tickers | No | (search) Only these companies (up to 100); any symbol a company has traded under. Default: every company. | |
| ids_page | No | (stats) Page of holding_ids in the stats response (default 1). | |
| page_size | No | (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_date | No | (list, stats, get, insiders, tickers, search) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. stats, search: also the end of the filing-date window. Default: no cutoff. | |
| sort_order | No | (search) "desc" (default) or "asc". | |
| start_date | No | (stats, search) Window start, filing date "YYYY-MM-DD". | |
| holding_ids | No | (get) Holding ids from action "stats" (1-100). | |
| insider_cik | No | (list, stats) Insider SEC CIK, digits (from action "insiders"). | |
| relationship | No | (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_size | No | (stats) holding_ids per page, 1-1,000 (default 200). | |
| is_derivative | No | (stats) true: derivative rows only; false: non-derivative rows only. | |
| exclude_tickers | No | (search) Leave these companies out (up to 100). | |
| group_by_ticker | No | (search) true (default): one row per company; false: one row per holding. | |
| holding_filters | No | (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_filters | No | (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_anomalies | No | (list, stats) true: include rows that fail a consistency check (left out by default). | |
| no_securities_owned | No | (list) true: only filings that report holding nothing; false: only filings with holdings; default both. | |
| exclude_likely_merged | No | (list, stats) true: leave out filings whose amendment match is only probable. | |
| include_unresolved_amendments | No | (list, stats) true: include amendments that could not be matched to their original filing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which already assert readOnly/idempotent/non-destructive), the description discloses per-action credit pricing, that 'A company outside your plan's coverage returns 403 and the call is still charged', that rows failing a consistency check are silently excluded unless include_anomalies is true, what no_securities_owned=true means, and that shares_owned_total and underlying_shares_total are in different units. These are non-obvious behaviors an agent would otherwise get wrong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence establishes scope and the anomaly caveat up front, followed by a tight per-action bullet list where each line carries distinct information (scope plus cost). Density is high and the opening sentence is packed, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 26-parameter, six-action tool with no output schema, the description covers action selection, credit cost, plan restrictions, failure semantics, and the anomaly default. Return-value detail is delegated to the parameter schema's detail enum and next_page note, which is acceptable, though a brief note on what a stats response contains beyond ids would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline would be 3. The description still adds meaning the schema does not: the unit-mismatch caveat between the two share totals, the fact that stats returns ids for every holding counted (enabling the 'get' action), and the 100-id cap framing for get. It stops short of clarifying interaction rules among the many search filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the specific resource and data domain ('What insiders report holding when they become insiders (SEC Form 3)') and explains the nesting order ('nested filing then holdings'), then enumerates all six actions with what each returns. An agent can tell this apart from sibling akkru_insider_transactions because the scope is explicitly limited to Form 3 initial holdings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action carries an inline signal of when to use it: 'list' for one company/insider filings, 'stats' for windowed totals with ids, 'get' for holdings by id 'from stats', 'insiders' for one row per CIK, 'search' for cross-company screening. It also states plan gating (Pro plan or higher) and the natural list->stats->get chaining. It does not explicitly contrast with sibling tools such as akkru_insider_transactions or akkru_institutional_holdings, which is the only real gap.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | (list, stats, insiders) Company SEC CIK, digits, e.g. "320193"; any CIK the company has filed under. Give ticker or cik, not both. | |
| page | No | (list, get, tickers, search) Page number, from 1; the response's next_page gives the next one. | |
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| method | No | (stats) "ad" (default): totals by acquired_disposed_code; "ps": P as a buy and S as a sell, only those two codes. | |
| ticker | No | (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. | |
| sectors | No | (search) Only companies in these sectors (names from akkru_metrics action "catalog"). Pro plan or higher. | |
| sort_by | No | (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. | |
| tickers | No | (search) Only these companies (up to 100); any symbol a company has traded under. Default: every company. | |
| ids_page | No | (stats) Page of transaction_ids in the stats response (default 1). | |
| page_size | No | (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_date | No | (list, stats, get, insiders, tickers, search) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. stats, search: also the end of the transaction-date window. Default: no cutoff. | |
| sort_order | No | (search) "desc" (default) or "asc". | |
| start_date | No | (stats, search) Window start, transaction date "YYYY-MM-DD". | |
| insider_cik | No | (list, stats) Insider SEC CIK, digits (from action "insiders"). | |
| relationship | No | (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_size | No | (stats) transaction_ids per page, 1-1,000 (default 200). | |
| is_derivative | No | (stats) true: derivative rows only; false: non-derivative rows only. | |
| trade_filters | No | (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_tickers | No | (search) Leave these companies out (up to 100). | |
| group_by_ticker | No | (search) true (default): one row per company; false: one row per transaction. | |
| transaction_ids | No | (get) Transaction ids from action "stats" (1-100). | |
| transaction_code | No | (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_filters | No | (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_anomalies | No | (list, stats) true: include rows that fail a consistency check (left out by default). | |
| exclude_likely_merged | No | (list, stats) true: leave out filings whose amendment match is only probable. | |
| transaction_form_type | No | (list) Only "4" or only "5". | |
| include_unresolved_amendments | No | (list, stats) true: include amendments that could not be matched to their original filing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations by disclosing per-action credit costs, the fact that out-of-plan companies return 403 and are still charged, and the default exclusion of rows failing a consistency check with the omitted count reported. These are decision-relevant behaviors (cost, failure, data filtering) that no structured field carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-sentence model of the resource, then a bullet per action with cost, then the plan/403 caveat last. Dense but every line carries information an agent needs to choose an action, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 28-parameter, 7-action tool with no output schema, the description covers what each action returns, how ids flow between actions, cost, and pagination behavior. Remaining gaps are error handling beyond the 403 case and any differentiation from sibling data tools, which is a minor shortfall rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself annotates each parameter with its applicable actions, so the description correctly stays out of per-parameter restatement. It adds a little beyond the schema — the A/D direction meaning and the id handoff between stats and get — but most parameter meaning is already schema-side, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (insider trades reported on SEC Form 4/5) plus the exact data shape returned (filing-nested transactions with insiders, footnotes and filing links), then enumerates all seven actions so the agent knows the tool is a multi-action surface rather than a single lookup. It also disambiguates the direction field (acquired_disposed_code A/D), which an agent could otherwise misread.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes between actions: stats outputs ids that get consumes, insiders outputs the insider_cik that list/stats take, types is the lookup for transaction_code, search is plan-gated. That is real when-to-use guidance. It does not, however, say when to prefer this tool over siblings like akkru_filings or akkru_institutional_holdings, so the sibling boundary is left to inference.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | (history, portfolio) Manager (filer) CIK, digits without leading zeros (from action "managers"). Give cik or name, not both. | |
| name | No | (history, portfolio) Manager name, exact apart from spaces and case; a name several managers share returns 404. | |
| page | No | (history, portfolio, holders, search) Page number, from 1; the response's next_page gives the next one. | |
| type | No | (portfolio, holders) "positions" (stock rows), "derivatives" (option rows) or "exited" (positions closed out that quarter); default all three. | |
| cusip | No | (portfolio, holders) 9-character CUSIP. portfolio: only this security; holders: the security (or give ticker). | |
| query | No | (managers) Manager name (1-64 characters; under 3 characters matches the start of the name) or CIK digits. | |
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| ticker | No | (portfolio, holders) Security ticker; any symbol the company has traded under. portfolio: only this security; holders: the security (or give cusip). | |
| quarter | No | (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_by | No | (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. | |
| activity | No | (portfolio, holders) Any of "NEW", "ADD", "REDUCE", "HOLD", "CUSIP_CHANGE"; unknown values are dropped with a warning. Exited rows have no activity. | |
| end_date | No | (search) Only quarters ending on or before this date, "YYYY-MM-DD". Omit both dates for every quarter. | |
| restated | No | (portfolio) Any of "added", "modified", "cancelled": rows a merged amendment changed. | |
| page_size | No | (history, portfolio, holders, search) Rows per page, 1-100 (default 50); search: page times page_size at most 500. | |
| conditions | No | (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_amended | No | (search) true: only quarters with merged amendments; false: only quarters without. | |
| sort_order | No | (history, portfolio, holders, search) "desc" (default) or "asc". | |
| start_date | No | (search) Only quarters ending on or after this date, "YYYY-MM-DD". | |
| confidential | No | (search) true: only quarters with confidential holdings; false: only without. | |
| group_by_quarter | No | (holders) true: one row per quarter (holders, total shares, total value of stock rows), unpaged. | |
| is_combination_report | No | (search) true: only combination reports (the filer also reports for other managers); false: only holdings reports. |
TDQS
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.
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.
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.
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.
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.
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 metricsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | (history, search) Page number, from 1; the response's next_page gives the next one. | |
| sort | No | (history) "period_end_asc" (default) or "period_end_desc". | |
| where | No | (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. | |
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| ticker | No | (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. | |
| quarter | No | (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. | |
| sectors | No | (search) Only companies in these sectors (names from akkru_metrics action "catalog"). Pro plan or higher. | |
| tickers | No | (search) Only these companies (up to 100); any symbol a company has traded under. Default: every company. | |
| category | No | (get) One group of metrics: profitability, growth, financial_health, efficiency, cash_flow or valuation. | |
| lookback | No | (search) How many filings back the conditions look (1-120, default 1); cut to your plan's history window. | |
| usd_only | No | (search) true: only rows whose values are in USD. | |
| filing_id | No | (get) Filing id from akkru_filings action "list". One of metric_group_id, filing_id, or ticker with fiscal_year names the filing. | |
| form_type | No | (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_size | No | (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_date | No | (get, history, list, search) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. Default: no cutoff. | |
| form_types | No | (list) Forms to include, e.g. ["10-K", "10-Q"] (up to 8). Default: every form. | |
| fiscal_year | No | (get, list) Fiscal year of the filing (1990-2100). | |
| period_type | No | (history) "quarterly" (default) or "annual". annual covers 10-K, 20-F and 40-F; quarterly covers 10-Q. | |
| metric_names | No | (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_price | No | (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). With as_of_date it is taken as the price on that day. Without it the current-price block says it is missing. | |
| end_period_end | No | (history) Latest period end, "YYYY-MM-DD". | |
| current_fx_rate | No | (get) Exchange rate for a foreign-currency filing (above 0, at most 1,000,000, at most 6 decimals). Without as_of_date, used only when the current rate is briefly unavailable; with as_of_date and current_price, required for price-based ratios: the rate on that day. | |
| exclude_tickers | No | (search) Leave these companies out (up to 100). | |
| group_by_ticker | No | (search) true (default): one row per company; false: one row per filing. | |
| include_metrics | No | (search) Extra metric ids to return next to the ones in the conditions (up to 10). | |
| metric_group_id | No | (get) Metric set id from action "list". One of metric_group_id, filing_id, or ticker with fiscal_year names the filing. | |
| formula_override | No | (get, history) Your own formula per metric id, e.g. {"interest_coverage": {"concepts": ["OperatingIncomeLoss", "InterestExpense"], "operators": ["/"]}}. Pro plan or higher. | |
| include_quarterly | No | (search) true: quarterly filings count too; default annual only. | |
| start_period_start | No | (history) Earliest period start, "YYYY-MM-DD". | |
| exclude_derivations | No | (search) Conditions ignore metric values derived these ways, e.g. "composite" (the kinds are in action "catalog"). | |
| filing_date_price_only | No | (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_formula | No | (get, history) true: compute the metrics that need a formula choice with the suggested formula. | |
| include_metrics_using_filing_date_price | No | (search) false: the 13 price-based valuation ratios cannot be used in conditions or sorting; default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantial behavior beyond them: exact credit costs per action ('158 credits', '55 credits plus 148 per period'), plan gating (Starter vs Pro), pricing semantics for price-based ratios, page limits ('up to 5 periods per page'), and the failure mode on unknown metric names. This is far more than the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then a scannable per-action bullet list with cost appended to each. A few lines duplicate schema content, such as the six category names that also appear in the category enum, but there is little true filler for a five-action, 34-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity multi-action tool with nested filter trees and no output schema, the description covers action selection, cost, plan requirements, naming conventions, and error behavior. The remaining gap is response shape — with no output schema, nothing tells the agent what a metrics payload or a search row looks like beyond incidental mentions of next_page and a 'current-price block'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds cross-parameter meaning the schema does not, notably that a filing is named by metric_group_id, filing_id, or ticker+fiscal_year, and that filing_date_price_only suppresses the current-price block. It does not attempt to cover the 34 parameters individually, which is acceptable given the schema carries them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete statement of the resource — '82 metrics computed from each filing' with the metric families enumerated — and then defines five named actions each with a specific object. Scope is narrowed ('US companies only'). It never explicitly contrasts itself with siblings like akkru_statements or akkru_filings, so the computed-vs-raw distinction must be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action gets an explicit routing rule: 'get' for a single filing, 'history' for many periods for one ticker, 'list' to discover metric_group_id, 'catalog' for metric names/operators, 'search' to screen across companies. It also names the fallback path ('a wrong name returns the full list of names') and states which actions require Pro, so the agent knows which action is viable before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
akkru_statementsStatements and notesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | What to do; each action is described in the tool description. | |
| detail | No | Response 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. | |
| ticker | No | (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. | |
| quarter | No | (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_id | No | (get, list) Filing id from akkru_filings action "list". Name the filing with filing_id, or with ticker and fiscal_year, not both. | |
| form_type | No | (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. | |
| as_of_date | No | (get, list) Date "YYYY-MM-DD" (not in the future): only what had been filed by that day counts. Default: no cutoff. | |
| role_label | No | (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_index | No | (get) The block's position as list returns it. Give one of statement_type, role_label, block_index. | |
| fiscal_year | No | (get, list) Fiscal year of the filing (1990-2100). | |
| statement_type | No | (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
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses credit pricing per action (28, 48, 10), the surcharge for fuzzy role_label matching, that statement_type is US-only while role_label works in any filing, and the error behavior when a fiscal year has multiple filings ("the error then lists the quarters on file"). That is exactly the operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the return-shape summary, then bulleted per-action guidance, then the filing-identification rule. Efficient overall, though the closing "Name the filing with filing_id, or with ticker and fiscal_year" restates what the schema already says.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no output schema, the description supplies what the response contains for both actions (rows with value/period/unit/source; blocks with block_index/statement_type/role_label) and how to resolve a filing. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds value by tying costs to parameter choices and reinforcing that the filing is named by filing_id or ticker+fiscal_year, not both. Much of the per-parameter wording overlaps the schema descriptions, so it is additive rather than transformative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: "Whole statements and notes of one filing, as filed: every row with its value, period, unit and source," then splits it into two named actions (get/list) with distinct return shapes. An agent can tell this apart from akkru_facts or akkru_filings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the get vs list split and, for get, which of the three selectors to use and what each one accepts (statement_type for the five US main statements, role_label for any filer-named block, block_index for a position that list returns), which implies the list-then-get workflow. It does not name a sibling tool as an alternative, so the boundary with akkru_facts is left to inference.
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.
8 tool updates
- Changed
akkru_companies1 field changed- added
Input schema / properties / as_of_dateAdded value: +{ + "description": "(lookup) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. Default: no cutoff.", + "format": "date", + "type": "string" +}
- Changed
akkru_events1 field changed- changed
Input schema / properties / as_of_date / descriptionPrevious value: -"(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."New value: +"(list, get, search) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. Default: no cutoff."
- Changed
akkru_facts1 field changed- added
Input schema / properties / as_of_dateAdded value: +{ + "description": "(get, breakdown) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. Default: no cutoff.", + "format": "date", + "type": "string" +}
- Changed
akkru_filings1 field changed- added
Input schema / properties / as_of_dateAdded value: +{ + "description": "(list) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. Default: no cutoff.", + "format": "date", + "type": "string" +}
- Changed
akkru_initial_holdings1 field changed- changed
Input schema / properties / as_of_date / descriptionPrevious value: -"(stats, search) Window end, filing date \"YYYY-MM-DD\" (not in the future)."New value: +"(list, stats, get, insiders, tickers, search) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. stats, search: also the end of the filing-date window. Default: no cutoff."
- Changed
akkru_insider_transactions1 field changed- changed
Input schema / properties / as_of_date / descriptionPrevious value: -"(stats, search) Window end, transaction date \"YYYY-MM-DD\" (not in the future); filings submitted after it are left out too."New value: +"(list, stats, get, insiders, tickers, search) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. stats, search: also the end of the transaction-date window. Default: no cutoff."
- Changed
akkru_metrics3 fields changed- changed
Input schema / properties / as_of_date / descriptionPrevious value: -"(get, history, list, search) Date \"YYYY-MM-DD\": only what had been filed by that day counts. Default: no cutoff."New value: +"(get, history, list, search) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. Default: no cutoff." - changed
Input schema / properties / current_fx_rate / descriptionPrevious value: -"(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)."New value: +"(get) Exchange rate for a foreign-currency filing (above 0, at most 1,000,000, at most 6 decimals). Without as_of_date, used only when the current rate is briefly unavailable; with as_of_date and current_price, required for price-based ratios: the rate on that day." - changed
Input schema / properties / current_price / descriptionPrevious value: -"(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."New value: +"(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). With as_of_date it is taken as the price on that day. Without it the current-price block says it is missing."
- Changed
akkru_statements1 field changed- added
Input schema / properties / as_of_dateAdded value: +{ + "description": "(get, list) Date \"YYYY-MM-DD\" (not in the future): only what had been filed by that day counts. Default: no cutoff.", + "format": "date", + "type": "string" +}
60 tool updates
- Added
akkru_account - Added
akkru_companies - Added
akkru_events - Added
akkru_facts - Added
akkru_filings - Added
akkru_initial_holdings - Added
akkru_insider_transactions - Added
akkru_institutional_holdings - Added
akkru_metrics - Added
akkru_statements - Removed
compare_facts - Removed
compare_line_items - Removed
get_balance_sheet - Removed
get_cash_flow_metrics - Removed
get_cash_flow_statement - Removed
get_comprehensive_income - Removed
get_dimensional_breakdown_by_fact_id - Removed
get_dimensional_breakdown_by_line_item - Removed
get_efficiency_metrics - Removed
get_equity_statement - Removed
get_event_filing - Removed
get_filing_excel - Removed
get_filing_facts - Removed
get_filing_statement - Removed
get_financial_health_metrics - Removed
get_growth_metrics - Removed
get_income_statement - Removed
get_initial_holding_stats - Removed
get_initial_holdings_by_id - Removed
get_insider_stats - Removed
get_insider_transactions_by_id - Removed
get_institutional_manager_history - Removed
get_institutional_portfolio - Removed
get_institutional_security_holders - Removed
get_metrics_bundle - Removed
get_metrics_bundle_filing_date - Removed
get_metrics_subset - Removed
get_metrics_timeseries - Removed
get_profitability_metrics - Removed
get_valuation_metrics - Removed
get_valuation_metrics_filing_date - Removed
list_companies - Removed
list_company_insiders - Removed
list_event_filings - Removed
list_event_types - Removed
list_filing_statements - Removed
list_filings - Removed
list_initial_holdings - Removed
list_insider_tickers - Removed
list_insider_transaction_types - Removed
list_insider_transactions - Removed
list_metric_snapshots - Removed
list_screener_filters - Removed
lookup_company - Removed
query_line_items - Removed
search_events - Removed
search_initial_holdings - Removed
search_insider_trades - Removed
search_institutional_holdings - Removed
search_stocks
27 tool updates
- Changed
get_balance_sheet1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_cash_flow_statement1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_comprehensive_income1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_dimensional_breakdown_by_fact_id1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_dimensional_breakdown_by_line_item1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_equity_statement1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_filing_facts1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_filing_statement1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_income_statement1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_initial_holding_stats2 fields changed- added
Input schema / properties / cikAdded 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" +} - changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_insider_stats2 fields changed- added
Input schema / properties / cikAdded 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" +} - changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_institutional_portfolio1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_institutional_security_holders1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
get_metrics_timeseries1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
list_company_insiders6 fields changed- added
Input schema / properties / cikAdded 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" +} - added
Input schema / properties / ticker / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / ticker / defaultAdded value: +null - changed
Input schema / properties / ticker / descriptionPrevious value: -"Company ticker."New value: +"Company ticker; any symbol the company has traded under. Provide ticker or cik." - removed
Input schema / properties / ticker / typeRemoved value: -"string" - removed
Input schema / requiredRemoved value: -[ - "ticker" -]
- Changed
list_event_filings2 fields changed- changed
Input schema / properties / cik / descriptionPrevious 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." - changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
list_filing_statements1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
list_filings1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
list_initial_holdings2 fields changed- added
Input schema / properties / cikAdded 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" +} - changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
list_insider_transactions2 fields changed- added
Input schema / properties / cikAdded 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" +} - changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
list_metric_snapshots1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
lookup_company3 fields changed- added
Input schema / properties / leiAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Legal Entity Identifier, 20 characters, e.g. \"213800LRO7NS5CYQMN21\" (European companies only).", + "title": "Lei" +} - changed
Input schema / properties / ticker / descriptionPrevious 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." - added
Input schema / properties / usccAdded 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" +}
- Changed
query_line_items1 field changed- changed
Input schema / properties / ticker / descriptionPrevious 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."
- Changed
search_events1 field changed- changed
Input schema / properties / tickers / descriptionPrevious 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."
- Changed
search_initial_holdings2 fields changed- changed
Input schema / properties / group_by_ticker / descriptionPrevious 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." - changed
Input schema / properties / tickers / descriptionPrevious 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."
- Changed
search_insider_trades2 fields changed- changed
Input schema / properties / group_by_ticker / descriptionPrevious 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." - changed
Input schema / properties / tickers / descriptionPrevious 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."
- Changed
search_stocks2 fields changed- changed
Input schema / properties / group_by_ticker / descriptionPrevious 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." - changed
Input schema / properties / tickers / descriptionPrevious 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."
50 tool updates
- First observed
compare_facts - First observed
compare_line_items - First observed
get_balance_sheet - First observed
get_cash_flow_metrics - First observed
get_cash_flow_statement - First observed
get_comprehensive_income - First observed
get_dimensional_breakdown_by_fact_id - First observed
get_dimensional_breakdown_by_line_item - First observed
get_efficiency_metrics - First observed
get_equity_statement - First observed
get_event_filing - First observed
get_filing_excel - First observed
get_filing_facts - First observed
get_filing_statement - First observed
get_financial_health_metrics - First observed
get_growth_metrics - First observed
get_income_statement - First observed
get_initial_holding_stats - First observed
get_initial_holdings_by_id - First observed
get_insider_stats - First observed
get_insider_transactions_by_id - First observed
get_institutional_manager_history - First observed
get_institutional_portfolio - First observed
get_institutional_security_holders - First observed
get_metrics_bundle - First observed
get_metrics_bundle_filing_date - First observed
get_metrics_subset - First observed
get_metrics_timeseries - First observed
get_profitability_metrics - First observed
get_valuation_metrics - First observed
get_valuation_metrics_filing_date - First observed
list_companies - First observed
list_company_insiders - First observed
list_event_filings - First observed
list_event_types - First observed
list_filing_statements - First observed
list_filings - First observed
list_initial_holdings - First observed
list_insider_tickers - First observed
list_insider_transaction_types - First observed
list_insider_transactions - First observed
list_metric_snapshots - First observed
list_screener_filters - First observed
lookup_company - First observed
query_line_items - First observed
search_events - First observed
search_initial_holdings - First observed
search_insider_trades - First observed
search_institutional_holdings - First observed
search_stocks
Publisher details
- Operator
- Akkru Inc. · Publisher source
- Operator website
- https://www.akkrudata.ai · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://www.akkrudata.ai/documents#11-mcp-access · 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
US company financial statements, insider trades, 13F funds and short interest, each with its filing
Financial statements, metrics, screens and insider trades for US-listed companies.
1Verified SEC filing data for US equities: fundamentals, point-in-time values, 13F holders, insiders
SEC filings, company financials, holdings, earnings calls, stock prices, options and macro data.
Related MCP Servers
AlicenseAqualityDmaintenanceProvides as-reported US equity fundamentals, live quotes, financial statements, valuation comps, and a screener from SEC filings, with per-cell filing provenance for citations.717 PyPIMIT- AlicenseNot gradedqualityBmaintenanceProvides 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.1MIT
- FlicenseAqualityDmaintenanceProvides 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.61-
- AlicenseAqualityCmaintenanceGive 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.845 PyPIMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.