Koskamo

Annalist Financial Statements MCP

Read-only MCP server providing financial statements, ratios, findings, screens, and peer comparisons from official filings like SEC EDGAR and FCA reports. It allows agents to search companies, retrieve snapshots, and cite figures with source document IDs without requiring an account or API key.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Annalist Financial Statements MCP logo, by AnnalistCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Annalist
MCP endpoint (Streamable HTTP)
https://annalist.io/mcp
Vendor documentation

What you can do with it

  • Retrieve company financial statements and ratios
  • Screen companies based on financial metrics
  • Compare multiple companies side-by-side
  • Generate credit reviews and peer comparisons

Source and maintenance

Community listingRegistry 1.3.0

Protocol and capabilities

Server
annalist 1.3.0
MCP protocol
2025-06-18
Tools
15 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
3 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Annalist serves company fundamentals collected from official filings (company investor-relations sites and SEC EDGAR) as versioned snapshots. Use search_companies to find a company id, and get_company_overview for one answer on a company: its latest figures, measures, key findings and peers. get_statement and get_ratios give the series, get_findings the key findings with their figures and history, screen_companies runs the screens of the Screener page (conditions on the latest figures, each of the last fiscal years, trends, changes, ranks and credit signals) or ranks the coverage by a measure, compare_companies sets 2 to 4 companies side by side on calendar quarters, get_events lists corporate events and get_data_quality the withheld and restated values. get_snapshot_info gives the units, sign conventions and the fiscal calendar, and get_sources resolves source document ids. Amounts are in the unit given for each item; period labels follow the issuer's fiscal calendar and every row has start and end dates. Pass compact: true to get_statement and get_ratios for the figures without the conventions and definitions, and at: an ISO date for the snapshot that was the latest on that date (list_snapshots lists them). Quote figures as published and cite them as: Annalist, {company}, snapshot {company id}/{snapshot id}; {item}, {period}; source {document id}.

Tools

15 advertised

search_companies — Search companies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find companies covered by Annalist by name, ticker, SEC CIK or id, optionally filtered by country. Returns each company's id (used by the other tools), identifiers, sources and latest snapshot.

search_companies input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1,
      "description": "maximum number of companies (default 20)"
    },
    "query": {
      "type": "string",
      "description": "part of a name, ticker, CIK or id; leave empty to list all"
    },
    "country": {
      "type": "string",
      "description": "ISO 3166 country code, for example US, GB, ID, HK or JP"
    }
  },
  "additionalProperties": false
}
search_companies output schema
{
  "type": "object",
  "required": [
    "total",
    "companies"
  ],
  "properties": {
    "total": {
      "type": "integer"
    },
    "companies": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "cik": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "latest": {
            "type": [
              "object",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "sources": {
            "type": [
              "string",
              "null"
            ]
          },
          "tickers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}
search_companies annotations
{
  "title": "Search companies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_company_overview — Get a company overview
Advertised by the server during the last successful anonymous check.
Advertised read-only

One answer on a company, the first call for a question about it: identity, sector, latest snapshot, revenue and net income of the latest quarter (or fiscal year) with their change against a year earlier, the latest value of each measure of the directory (margins, returns, growth, debt, liquidity) with its period and unit, the current key findings with their source document ids, 3 peers, data quality and links to the page and the workbook.

get_company_overview input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or telkom-indonesia"
    }
  },
  "additionalProperties": false
}
get_company_overview output schema
{
  "type": "object",
  "required": [
    "company",
    "name",
    "snapshot",
    "as_of",
    "latest",
    "measures",
    "findings",
    "peers",
    "citation"
  ],
  "properties": {
    "more": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "as_of": {
      "type": "object",
      "required": [],
      "properties": {
        "period": {
          "type": [
            "string",
            "null"
          ]
        },
        "period_end": {
          "type": [
            "string",
            "null"
          ]
        },
        "release_date": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "links": {
      "type": "object",
      "required": [],
      "properties": {
        "api": {
          "type": "string"
        },
        "page": {
          "type": "string"
        },
        "workbook": {
          "type": "string"
        }
      }
    },
    "peers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "checks": {
      "type": "object"
    },
    "latest": {
      "type": "object"
    },
    "market": {
      "type": [
        "string",
        "null"
      ]
    },
    "sector": {
      "type": [
        "string",
        "null"
      ]
    },
    "company": {
      "type": "string"
    },
    "country": {
      "type": [
        "string",
        "null"
      ]
    },
    "sources": {
      "type": [
        "string",
        "null"
      ]
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "citation": {
      "type": "object",
      "required": [
        "snapshot"
      ],
      "properties": {
        "as_of": {
          "type": "object",
          "required": [],
          "properties": {
            "period": {
              "type": [
                "string",
                "null"
              ]
            },
            "period_end": {
              "type": [
                "string",
                "null"
              ]
            },
            "release_date": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "format": {
          "type": "string"
        },
        "snapshot": {
          "type": "string"
        },
        "documents": {
          "type": "string"
        }
      }
    },
    "exchange": {
      "type": [
        "string",
        "null"
      ]
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "rule",
          "claim",
          "state"
        ],
        "properties": {
          "rule": {
            "type": "string"
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "claim": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "module": {
            "type": [
              "string",
              "null"
            ]
          },
          "documents": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "industry": {
      "type": [
        "string",
        "null"
      ]
    },
    "measures": {
      "type": "object"
    },
    "snapshot": {
      "type": "string"
    },
    "template": {
      "type": "string"
    },
    "documents": {
      "type": "integer"
    },
    "accounting": {
      "type": [
        "string",
        "null"
      ]
    },
    "data_quality": {
      "type": [
        "object",
        "null"
      ]
    },
    "published_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "fiscal_year_end": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}
get_company_overview annotations
{
  "title": "Get a company overview",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_statement — Get a financial statement
Advertised by the server during the last successful anonymous check.
Advertised read-only

Figures of one statement for one company from its latest snapshot, filtered by period and item. Every row gives its period with start and end dates, whether each value is reported or derived, and the source document ids of its values; item units are in `items`. Cite the snapshot and the source document id.

get_statement input schema
{
  "type": "object",
  "required": [
    "company",
    "statement"
  ],
  "properties": {
    "at": {
      "type": "string",
      "description": "an ISO date: the snapshot that was the latest on that date, in place of the latest snapshot"
    },
    "to": {
      "type": "string",
      "description": "last period, in the same forms"
    },
    "from": {
      "type": "string",
      "description": "first period: a fiscal year (2024), a fiscal quarter (FY2024 Q2) or an ISO date"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "description": "item keys to keep, for example [\"revenue\", \"net_income\"]; leave empty for all"
    },
    "limit": {
      "type": "integer",
      "maximum": 60,
      "minimum": 1,
      "description": "maximum rows, latest first kept (default 40, at most 60)"
    },
    "compact": {
      "type": "boolean",
      "description": "true for the rows with their units only, without the conventions, item definitions and citation format"
    },
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or mizuho"
    },
    "frequency": {
      "enum": [
        "annual",
        "quarterly"
      ],
      "type": "string",
      "description": "for income_statement and cash_flow (default annual); other statements have one frequency"
    },
    "statement": {
      "enum": [
        "income_statement",
        "cash_flow",
        "balance_sheet",
        "capital",
        "npl",
        "shares",
        "annual_highlights"
      ],
      "type": "string",
      "description": "income_statement, balance_sheet and cash_flow; Mizuho also has capital, npl, shares and annual_highlights"
    }
  },
  "additionalProperties": false
}
get_statement output schema
{
  "type": "object",
  "required": [
    "company",
    "snapshot",
    "statement",
    "items",
    "rows",
    "rows_matched",
    "truncated",
    "citation"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "as_of": {
      "type": "object",
      "required": [],
      "properties": {
        "period": {
          "type": [
            "string",
            "null"
          ]
        },
        "period_end": {
          "type": [
            "string",
            "null"
          ]
        },
        "release_date": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "items": {
      "type": "object"
    },
    "company": {
      "type": "string"
    },
    "citation": {
      "type": "object",
      "required": [
        "snapshot"
      ],
      "properties": {
        "snapshot": {
          "type": "string"
        }
      }
    },
    "snapshot": {
      "type": "string"
    },
    "frequency": {
      "type": "string"
    },
    "statement": {
      "type": "string"
    },
    "truncated": {
      "type": "boolean"
    },
    "conventions": {
      "type": "object"
    },
    "published_at": {
      "type": "string"
    },
    "rows_matched": {
      "type": "integer"
    }
  }
}
get_statement annotations
{
  "title": "Get a financial statement",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_ratios — Get financial ratios
Advertised by the server during the last successful anonymous check.
Advertised read-only

Ratios computed from a company's latest snapshot by formulas with stable ids (bank.roe, corp.roic). Every value gives its unit, period and the snapshot figures it was computed from, each with its value and source document ids. Banks use the bank template (quarterly values annualised; Mizuho under Japanese GAAP, the other banks under US GAAP or IFRS on the measures their statements give); other companies use the corporate template (annual, quarterly and trailing four quarters, ttm), which includes credit metrics, liquidity, earnings quality and forensic scores; scores, credit reconciliations and the liquidity cover also give their parts, named with their coefficients in the catalogue. A value computed with an estimated input, such as the lease cost of the latest fiscal year for quarters that do not report it, names it in estimates; a ratio that a rule leaves out for the company gives the reason in excluded. Call without ratios to list the catalogue of one frequency.

get_ratios input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "at": {
      "type": "string",
      "description": "an ISO date: answers when the snapshot that was the latest on that date is the latest one, since ratios are published beside the latest snapshot only"
    },
    "to": {
      "type": "string",
      "description": "last period, in the same forms"
    },
    "from": {
      "type": "string",
      "description": "first period: a fiscal year (2024), a fiscal quarter (FY2024 Q2) or an ISO date"
    },
    "limit": {
      "type": "integer",
      "maximum": 400,
      "minimum": 1,
      "description": "maximum values, those of the latest periods kept (default 120)"
    },
    "ratios": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "description": "ratio ids or short names, for example [\"roe\", \"corp.operating_margin\"]; leave empty for all"
    },
    "compact": {
      "type": "boolean",
      "description": "true for the values with their units only, without the conventions, the catalogue entries, the inputs and the citation format"
    },
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or mizuho"
    },
    "category": {
      "type": "string",
      "description": "keep one category, for example Profitability or Credit metrics"
    },
    "frequency": {
      "enum": [
        "annual",
        "quarterly",
        "ttm"
      ],
      "type": "string",
      "description": "default annual"
    }
  },
  "additionalProperties": false
}
get_ratios output schema
{
  "type": "object",
  "required": [
    "company",
    "snapshot",
    "frequency",
    "values",
    "values_matched",
    "truncated",
    "citation"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "engine": {
      "type": "string"
    },
    "ratios": {
      "type": "object"
    },
    "values": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "ratio",
          "period",
          "value"
        ],
        "properties": {
          "end": {
            "type": [
              "string",
              "null"
            ]
          },
          "unit": {
            "type": [
              "string",
              "null"
            ]
          },
          "parts": {
            "type": "object"
          },
          "ratio": {
            "type": "string"
          },
          "value": {
            "type": [
              "number",
              "null"
            ]
          },
          "inputs": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "period": {
            "type": "string"
          },
          "estimates": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "company": {
      "type": "string"
    },
    "citation": {
      "type": "object",
      "required": [
        "snapshot"
      ],
      "properties": {
        "snapshot": {
          "type": "string"
        }
      }
    },
    "snapshot": {
      "type": "string"
    },
    "template": {
      "type": "string"
    },
    "frequency": {
      "type": "string"
    },
    "truncated": {
      "type": "boolean"
    },
    "conventions": {
      "type": "object"
    },
    "values_matched": {
      "type": "integer"
    }
  }
}
get_ratios annotations
{
  "title": "Get financial ratios",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_findings — Get key findings
Advertised by the server during the last successful anonymous check.
Advertised read-only

The key findings of a company, written by fixed rules from its figures: each a sentence ready to quote with its rule, claim, state (New, Confirmed, Strengthened, Weakened), the period, the measure and the figures it states with their source document ids. Modules: overview (growth, margins, returns, net debt), credit (debt against the S&P benchmark bands), liquidity, quality (cash backing of earnings) and scores (Altman, Beneish, Piotroski). Pass history for the record of each finding across snapshots, and retired for findings that no longer apply.

get_findings input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "module": {
      "enum": [
        "overview",
        "credit",
        "liquidity",
        "quality",
        "scores"
      ],
      "type": "string",
      "description": "keep the findings of one module"
    },
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or mizuho"
    },
    "history": {
      "type": "boolean",
      "description": "true to add the records of each finding: state, change type, period and snapshot"
    },
    "retired": {
      "type": "boolean",
      "description": "true to add the findings that no longer apply"
    }
  },
  "additionalProperties": false
}
get_findings output schema
{
  "type": "object",
  "required": [
    "company",
    "snapshot",
    "count",
    "findings",
    "citation"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "page": {
      "type": "string"
    },
    "as_of": {
      "type": "object",
      "required": [],
      "properties": {
        "period": {
          "type": [
            "string",
            "null"
          ]
        },
        "period_end": {
          "type": [
            "string",
            "null"
          ]
        },
        "release_date": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "count": {
      "type": "integer"
    },
    "company": {
      "type": "string"
    },
    "modules": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "citation": {
      "type": "object",
      "required": [
        "snapshot"
      ],
      "properties": {
        "as_of": {
          "type": "object",
          "required": [],
          "properties": {
            "period": {
              "type": [
                "string",
                "null"
              ]
            },
            "period_end": {
              "type": [
                "string",
                "null"
              ]
            },
            "release_date": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "format": {
          "type": "string"
        },
        "snapshot": {
          "type": "string"
        },
        "documents": {
          "type": "string"
        }
      }
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "thread",
          "rule",
          "claim",
          "state",
          "figures",
          "documents"
        ],
        "properties": {
          "rule": {
            "type": "string"
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "basis": {
            "type": [
              "string",
              "null"
            ]
          },
          "claim": {
            "type": "string"
          },
          "since": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": "string"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "active": {
            "type": "boolean"
          },
          "module": {
            "type": [
              "string",
              "null"
            ]
          },
          "period": {
            "type": [
              "string",
              "null"
            ]
          },
          "thread": {
            "type": "string"
          },
          "figures": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "history": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "measure": {
            "type": [
              "object",
              "null"
            ]
          },
          "snapshot": {
            "type": [
              "string",
              "null"
            ]
          },
          "documents": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "period_end": {
            "type": [
              "string",
              "null"
            ]
          },
          "rule_version": {
            "type": "string"
          },
          "claim_meaning": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "snapshot": {
      "type": "string"
    },
    "conventions": {
      "type": "object"
    },
    "corrections": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "findings_version": {
      "type": "string"
    }
  }
}
get_findings annotations
{
  "title": "Get key findings",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
screen_companies — Screen companies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Screen the companies of the coverage as the Screener page of Annalist does, or rank them by one measure. With screen, the conditions of the page joined by commas: roic.gt.12 (latest value above 12; lt below), roic.gt.12.y5 (above 12 in each of the last 5 fiscal years), om.up.3 (higher than the year before in each of the last 3 fiscal years; dn lower), dte.chg.gt.0.5.y1 (change over the last fiscal year above 0.5), roic.top.25 (among the highest 25% of the companies screened; bot the lowest; .s within the sector) and band.in.minimal-modest (credit and quality signals: band, cover, netdebt, fcf, backing, altman, piotroski, beneish). start runs a starting screen such as rising-debt or high-returns. Each company comes with the figures behind each condition and its page, and page links the same screen for a person. Without screen, where and sort filter and rank by the latest value of ratio ids with a frequency, as corp.roic@ttm or corp.current_ratio@quarterly; an amount such as corp.net_debt is ranked within its currency. Call without arguments to list the measures and the starting screens.

screen_companies input schema
{
  "type": "object",
  "properties": {
    "sort": {
      "type": "string",
      "description": "the measure to rank by, for example corp.operating_margin@ttm"
    },
    "basis": {
      "enum": [
        "latest",
        "fy"
      ],
      "type": "string",
      "description": "with screen: latest (default) for the last 4 quarters where reported, fy for the latest fiscal year of every company"
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "maximum companies (default 20)"
    },
    "order": {
      "enum": [
        "desc",
        "asc"
      ],
      "type": "string",
      "description": "desc (default) for the highest first"
    },
    "start": {
      "type": "string",
      "description": "a starting screen of the Screener page, for example high-returns, rising-debt or credit-watch"
    },
    "where": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "measure"
        ],
        "properties": {
          "max": {
            "type": "number"
          },
          "min": {
            "type": "number"
          },
          "measure": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "maxItems": 8,
      "description": "conditions that every company meets, for example [{\"measure\": \"corp.roic@ttm\", \"min\": 15}]"
    },
    "screen": {
      "type": "string",
      "maxLength": 400,
      "description": "the conditions of a screen, for example roic.gt.12.y5,nde.lt.2 or band.in.significant-aggressive"
    },
    "sector": {
      "type": "string",
      "description": "part of a sector name, for example Technology or Health care"
    },
    "country": {
      "type": "string",
      "description": "ISO 3166 country code, for example US, GB, ID or HK"
    },
    "markets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 6,
      "description": "with screen: ISO country codes, for example [\"SG\", \"ID\"]"
    },
    "currency": {
      "type": "string",
      "description": "keep the companies that report in one currency, for example USD"
    },
    "industry": {
      "type": "string",
      "description": "part of an industry name, for example Semiconductors or Banks"
    },
    "template": {
      "enum": [
        "corporate",
        "bank"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
screen_companies output schema
{
  "type": "object",
  "required": [
    "measures",
    "matched",
    "companies",
    "truncated"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "page": {
      "type": "string"
    },
    "basis": {
      "type": "string"
    },
    "start": {
      "type": "object"
    },
    "screen": {
      "type": "string"
    },
    "filters": {
      "type": "object"
    },
    "matched": {
      "type": "integer"
    },
    "measures": {
      "type": "object"
    },
    "screened": {
      "type": "integer"
    },
    "companies": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "values"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "page": {
            "type": "string"
          },
          "as_of": {
            "type": "object",
            "required": [],
            "properties": {
              "period": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "period_end": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "release_date": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "sector": {
            "type": [
              "string",
              "null"
            ]
          },
          "values": {
            "type": "object"
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "reports": {
            "type": "string"
          },
          "industry": {
            "type": [
              "string",
              "null"
            ]
          },
          "template": {
            "type": "string"
          },
          "latest_period": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "truncated": {
      "type": "boolean"
    },
    "conditions": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "rules_version": {
      "type": "string"
    },
    "without_value": {
      "type": "integer"
    },
    "screens_available": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "measures_available": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
screen_companies annotations
{
  "title": "Screen companies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_companies — Compare companies on calendar quarters
Advertised by the server during the last successful anonymous check.
Advertised read-only

2 to 4 companies side by side, aligned on calendar quarters as Annalist Compare places their fiscal periods, so that companies whose fiscal years end in different months stand in the same quarter. Measures are ratio ids (corp.operating_margin, corp.roic, corp.revenue_growth, bank.roe; short names such as roic work) or statement items (revenue, net_income, total_assets, cfo). Ratios use the last 4 quarters where the ratio has them, else the quarter; a company that reports fiscal years only gives fiscal years. Each value gives the company's fiscal period, and each statement value its source document ids. Amounts stay in the currency of each company.

compare_companies input schema
{
  "type": "object",
  "required": [
    "companies",
    "measures"
  ],
  "properties": {
    "to": {
      "type": "string",
      "description": "last calendar quarter, in the same forms"
    },
    "from": {
      "type": "string",
      "description": "first calendar quarter: CY2025 Q1, a year (2025) or an ISO date"
    },
    "measures": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 6,
      "minItems": 1,
      "description": "1 to 6 ratio ids or statement item keys, for example [\"corp.operating_margin\", \"revenue\"]"
    },
    "quarters": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "the latest calendar quarters kept (default 8)"
    },
    "companies": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 4,
      "minItems": 2,
      "description": "2 to 4 company ids from search_companies"
    },
    "frequency": {
      "enum": [
        "ttm",
        "quarterly",
        "annual"
      ],
      "type": "string",
      "description": "the form of every ratio, in place of the last 4 quarters where a ratio has them; annual compares fiscal years"
    }
  },
  "additionalProperties": false
}
compare_companies output schema
{
  "type": "object",
  "required": [
    "companies",
    "measures",
    "quarters",
    "quarters_matched",
    "truncated",
    "notes"
  ],
  "properties": {
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "citation": {
      "type": "object"
    },
    "measures": {
      "type": "object"
    },
    "quarters": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "quarter",
          "quarter_end",
          "companies"
        ],
        "properties": {
          "quarter": {
            "type": "string"
          },
          "companies": {
            "type": "object"
          },
          "quarter_end": {
            "type": "string"
          }
        }
      }
    },
    "companies": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "snapshot"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "as_of": {
            "type": "object",
            "required": [],
            "properties": {
              "period": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "period_end": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "release_date": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "annual": {
            "type": "boolean"
          },
          "snapshot": {
            "type": "string"
          }
        }
      }
    },
    "truncated": {
      "type": "boolean"
    },
    "conventions": {
      "type": "object"
    },
    "quarters_matched": {
      "type": "integer"
    },
    "latest_common_quarter": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}
compare_companies annotations
{
  "title": "Compare companies on calendar quarters",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_events — Get corporate events
Advertised by the server during the last successful anonymous check.
Advertised read-only

Corporate events of a company found by fixed rules in its filings: acquisitions, disposals, spin-offs, discontinued operations, reorganisations, stock splits, restatements, name changes and changes of fiscal year, each with its date, fiscal period, a sentence, the counterparty and amount where the filing names them, and its source document ids. Events are recorded for companies that file with the SEC.

get_events input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "at": {
      "type": "string",
      "description": "an ISO date: the snapshot that was the latest on that date, in place of the latest snapshot"
    },
    "to": {
      "type": "string",
      "description": "last date, in the same forms"
    },
    "from": {
      "type": "string",
      "description": "first date: a year (2024) or an ISO date"
    },
    "types": {
      "type": "array",
      "items": {
        "enum": [
          "spin_off",
          "acquisition",
          "disposal",
          "acquisition_or_disposal",
          "reorganisation",
          "discontinued_operations",
          "cash_acquisitions",
          "cash_disposals",
          "stock_split",
          "reverse_split",
          "restatement",
          "non_reliance",
          "name_change",
          "fiscal_year_change"
        ],
        "type": "string"
      },
      "maxItems": 14,
      "description": "keep these event types"
    },
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or mizuho"
    }
  },
  "additionalProperties": false
}
get_events output schema
{
  "type": "object",
  "required": [
    "company",
    "snapshot",
    "total",
    "matched",
    "events",
    "citation"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "as_of": {
      "type": "object",
      "required": [],
      "properties": {
        "period": {
          "type": [
            "string",
            "null"
          ]
        },
        "period_end": {
          "type": [
            "string",
            "null"
          ]
        },
        "release_date": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "total": {
      "type": "integer"
    },
    "types": {
      "type": "object"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": "string"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "company": {
      "type": "string"
    },
    "matched": {
      "type": "integer"
    },
    "citation": {
      "type": "object",
      "required": [
        "snapshot"
      ],
      "properties": {
        "as_of": {
          "type": "object",
          "required": [],
          "properties": {
            "period": {
              "type": [
                "string",
                "null"
              ]
            },
            "period_end": {
              "type": [
                "string",
                "null"
              ]
            },
            "release_date": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "format": {
          "type": "string"
        },
        "snapshot": {
          "type": "string"
        },
        "documents": {
          "type": "string"
        }
      }
    },
    "snapshot": {
      "type": "string"
    }
  }
}
get_events annotations
{
  "title": "Get corporate events",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_data_quality — Get data quality
Advertised by the server during the last successful anonymous check.
Advertised read-only

How far the figures of a company are proven: the values published, confirmed by a check, confirmed by a second document, derived from reported figures and withheld, with the meaning of each measure; every withheld value with its reason and documents; and every restated figure with the first, latest and published value, each with its document and filing date.

get_data_quality input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "at": {
      "type": "string",
      "description": "an ISO date: the snapshot that was the latest on that date, in place of the latest snapshot"
    },
    "limit": {
      "type": "integer",
      "maximum": 200,
      "minimum": 1,
      "description": "maximum withheld values and restated figures each (default 50)"
    },
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or mizuho"
    }
  },
  "additionalProperties": false
}
get_data_quality output schema
{
  "type": "object",
  "required": [
    "company",
    "snapshot",
    "withheld",
    "withheld_total",
    "restated",
    "restated_total",
    "citation"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "page": {
      "type": "string"
    },
    "as_of": {
      "type": "object",
      "required": [],
      "properties": {
        "period": {
          "type": [
            "string",
            "null"
          ]
        },
        "period_end": {
          "type": [
            "string",
            "null"
          ]
        },
        "release_date": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "company": {
      "type": "string"
    },
    "citation": {
      "type": "object",
      "required": [
        "snapshot"
      ],
      "properties": {
        "as_of": {
          "type": "object",
          "required": [],
          "properties": {
            "period": {
              "type": [
                "string",
                "null"
              ]
            },
            "period_end": {
              "type": [
                "string",
                "null"
              ]
            },
            "release_date": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "format": {
          "type": "string"
        },
        "snapshot": {
          "type": "string"
        },
        "documents": {
          "type": "string"
        }
      }
    },
    "measures": {
      "type": [
        "object",
        "null"
      ]
    },
    "restated": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "snapshot": {
      "type": "string"
    },
    "withheld": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [],
        "properties": {
          "item": {
            "type": [
              "string",
              "null"
            ]
          },
          "table": {
            "type": [
              "string",
              "null"
            ]
          },
          "period": {
            "type": [
              "string",
              "null"
            ]
          },
          "reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "truncated": {
      "type": "boolean"
    },
    "conventions": {
      "type": "object"
    },
    "measures_note": {
      "type": "string"
    },
    "restated_total": {
      "type": "integer"
    },
    "withheld_total": {
      "type": "integer"
    }
  }
}
get_data_quality annotations
{
  "title": "Get data quality",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_snapshot_info — Get snapshot information
Advertised by the server during the last successful anonymous check.
Advertised read-only

The latest snapshot of a company: as-of period, release date and time of publication, coverage, conventions (units, signs, fiscal calendar), validation summary, available statements, files with SHA-256 and the citation format. With at, the snapshot that was the latest on that date (point in time).

get_snapshot_info input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "at": {
      "type": "string",
      "description": "an ISO date: the snapshot that was the latest on that date, in place of the latest snapshot"
    },
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or mizuho"
    }
  },
  "additionalProperties": false
}
get_snapshot_info output schema
{
  "type": "object",
  "required": [
    "snapshot"
  ],
  "properties": {
    "as_of": {
      "type": "object",
      "required": [],
      "properties": {
        "period": {
          "type": [
            "string",
            "null"
          ]
        },
        "period_end": {
          "type": [
            "string",
            "null"
          ]
        },
        "release_date": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "files": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "company": {
      "type": "object"
    },
    "citation": {
      "type": "object"
    },
    "snapshot": {
      "type": "string"
    },
    "statements": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "published_at": {
      "type": "string"
    }
  }
}
get_snapshot_info annotations
{
  "title": "Get snapshot information",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_snapshots — List published snapshots
Advertised by the server during the last successful anonymous check.
Advertised read-only

Every snapshot that the site has published for a company, oldest first, with its as-of period, dataset hash and time of publication: the point-in-time record of the coverage. Pass a date of it as at to get_statement, get_snapshot_info, get_sources, get_events or get_data_quality for the figures as they stood then.

list_snapshots input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or mizuho"
    }
  },
  "additionalProperties": false
}
list_snapshots output schema
{
  "type": "object",
  "required": [
    "company",
    "latest",
    "count",
    "snapshots"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "count": {
      "type": "integer"
    },
    "latest": {
      "type": "string"
    },
    "company": {
      "type": "string"
    },
    "snapshots": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "snapshot",
          "published_at"
        ],
        "properties": {
          "info": {
            "type": "string"
          },
          "as_of": {
            "type": "object",
            "required": [],
            "properties": {
              "period": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "period_end": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "release_date": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "snapshot": {
            "type": "string"
          },
          "available": {
            "type": "boolean"
          },
          "published_at": {
            "type": "string"
          },
          "dataset_sha256": {
            "type": "string"
          }
        }
      }
    },
    "conventions": {
      "type": "object"
    }
  }
}
list_snapshots annotations
{
  "title": "List published snapshots",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_sources — Get source documents
Advertised by the server during the last successful anonymous check.
Advertised read-only

Source documents of a company's latest snapshot: kind, period, release or filing date (indexed: the date an index added a report that states no date of publication), URL of the official document or of the search page of its store, and SHA-256 of the file used. Pass the document ids found in a statement's sources to resolve them.

get_sources input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "at": {
      "type": "string",
      "description": "an ISO date: the snapshot that was the latest on that date, in place of the latest snapshot"
    },
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "description": "document ids, for example [\"10-K:0000320193-25-000079\"]; leave empty for all"
    },
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple or mizuho"
    }
  },
  "additionalProperties": false
}
get_sources output schema
{
  "type": "object",
  "required": [
    "company",
    "snapshot",
    "documents",
    "citation"
  ],
  "properties": {
    "company": {
      "type": "string"
    },
    "citation": {
      "type": "object",
      "required": [
        "snapshot"
      ],
      "properties": {
        "as_of": {
          "type": "object",
          "required": [],
          "properties": {
            "period": {
              "type": [
                "string",
                "null"
              ]
            },
            "period_end": {
              "type": [
                "string",
                "null"
              ]
            },
            "release_date": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "format": {
          "type": "string"
        },
        "snapshot": {
          "type": "string"
        },
        "documents": {
          "type": "string"
        }
      }
    },
    "snapshot": {
      "type": "string"
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    }
  }
}
get_sources annotations
{
  "title": "Get source documents",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
run_buyout — Run a buyout model
Advertised by the server during the last successful anonymous check.
Advertised read-only

Run the buyout model 1.0 of Annalist Deal Lab on a company's published figures, at its starting values or with the caller's assumptions under the keys of the address of the page (entry, exit_mult, years, debt, growth, margin, tax, base and the others that the starting values list). Returns the returns, sources and uses, the debt schedule, the covenants and the checks of the model, optionally the 3 solvers, every input with its source document ids, and the address of the same deal on the site. Shares and rates are fractions (0.2 for 20%) and multiples are times EBITDA. The result is arithmetic on published figures and the caller's assumptions: it values no company, recommends no transaction and forecasts nothing.

run_buyout input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "company": {
      "type": "string",
      "description": "company id from search_companies, for example apple"
    },
    "solvers": {
      "type": "boolean",
      "description": "also return the highest entry multiple for the target return, the growth it needs and the debt capacity"
    },
    "assumptions": {
      "type": "object",
      "description": "assumptions to change, for example {\"entry\": 8, \"debt\": 4}; leave out for the starting values",
      "additionalProperties": {
        "type": "number"
      }
    }
  },
  "additionalProperties": false
}
run_buyout output schema
{
  "type": "object",
  "required": [
    "company",
    "snapshot",
    "model",
    "assumptions",
    "ok",
    "address",
    "citation"
  ],
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "base": {},
    "name": {
      "type": "string"
    },
    "model": {
      "type": "object"
    },
    "inputs": {
      "type": [
        "object",
        "null"
      ]
    },
    "address": {
      "type": "string"
    },
    "company": {
      "type": "string"
    },
    "returns": {
      "type": [
        "object",
        "null"
      ]
    },
    "solvers": {
      "type": "object"
    },
    "citation": {
      "type": "string"
    },
    "computed": {
      "type": "string"
    },
    "currency": {},
    "snapshot": {
      "type": "string"
    },
    "projection": {
      "type": "object"
    },
    "assumptions": {
      "type": "object"
    },
    "debt_schedule": {
      "type": "object"
    },
    "failed_checks": {},
    "return_bridge": {
      "type": [
        "object",
        "null"
      ]
    },
    "sources_and_uses": {
      "type": "object"
    }
  }
}
run_buyout annotations
{
  "title": "Run a buyout model",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search — Search documents
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the documents of Annalist for a question in words, as ChatGPT connectors and deep research do: the overview, key findings, statements and ratios of the companies that the question names, or the overviews of the companies of an industry or sector it names. Returns ids for fetch, titles and the address of each page. For a company id to pass to the other tools, use search_companies.

search input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "the question or keywords, for example Apple revenue growth or semiconductor margins"
    }
  },
  "additionalProperties": false
}
search output schema
{
  "type": "object",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        }
      }
    }
  }
}
search annotations
{
  "title": "Search documents",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch — Fetch a document
Advertised by the server during the last successful anonymous check.
Advertised read-only

The full text of one document that search returned (an overview, key findings, a statement or the ratios of one frequency of a company), as JSON with its figures, units, periods and source document ids, with the address of its page for the citation.

fetch input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "a document id from search, for example company:apple or statement:apple:pl_annual"
    }
  },
  "additionalProperties": false
}
fetch output schema
{
  "type": "object",
  "required": [
    "id",
    "title",
    "text",
    "url"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "metadata": {
      "type": "object"
    }
  }
}
fetch annotations
{
  "title": "Fetch a document",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

3 advertised

company_brief — Company brief

Advertised by the server during the last successful anonymous check.

A brief of one company from its latest figures and key findings, each figure with its source document.

company
the company: its name, ticker or Annalist id (required)
credit_review — Credit review

Advertised by the server during the last successful anonymous check.

The credit metrics, liquidity, earnings quality and scores of one company, with the benchmark bands that its findings state.

company
the company: its name, ticker or Annalist id (required)
peer_comparison — Peer comparison

Advertised by the server during the last successful anonymous check.

2 to 4 companies side by side on calendar quarters, or one company with the 3 peers that Annalist names for it.

companies
1 to 4 companies, by name, ticker or Annalist id, separated by commas (required)

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
446 ms
95th percentile latency
446 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 446 ms · metadata changed · 15 tool(s), 3 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http annalist-financial-statements-mcp https://annalist.io/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add annalist-financial-statements-mcp --url https://annalist.io/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable annalist-financial-statements-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "annalist-financial-statements-mcp": {
      "url": "https://annalist.io/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "annalist-financial-statements-mcp": {
      "type": "streamableHttp",
      "url": "https://annalist.io/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start annalist-financial-statements-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "annalist-financial-statements-mcp": {
      "type": "http",
      "url": "https://annalist.io/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http annalist-financial-statements-mcp https://annalist.io/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "annalist-financial-statements-mcp": {
      "url": "https://annalist.io/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "annalist-financial-statements-mcp": {
      "serverUrl": "https://annalist.io/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Annalist Financial Statements MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.