Company data

Read the statements in an annual report

companies_read_accounts · Reads only · Markdown

The balance sheet and income statement read out of an annual report PDF, a scan by OCR, line by line with its page, German HGB or English.

$0.05 a call

From your agent’s balance. A call that fails costs nothing.

An example

Here is Kuechentechnik Nord's Jahresabschluss for 2025. Pull out its revenue, profit, equity and bank debt.

Your agent callscompanies_read_accounts$0.05 a call

The example business is Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff. The reply is the one the tool really gives.

With these arguments
{
  "file_id": "5b8e2c4d-1a9f-4e3b-8c7d-6f5e4d3c2b1a"
}
What comes back
{
  "file_id": "5b8e2c4d-1a9f-4e3b-8c7d-6f5e4d3c2b1a",
  "pages_read": [
    1,
    2
  ],
  "page_count": 2,
  "scan": false,
  "statement_pages": [
    {
      "page": 1,
      "heading": "Bilanz"
    },
    {
      "page": 2,
      "heading": "Gewinn- und Verlustrechnung"
    }
  ],
  "unit_scale": 1,
  "currency": "EUR",
  "number_format": "german",
  "columns": [
    "2025",
    "2024"
  ],
  "lines": [
    {
      "label": "A. Anlagevermögen",
      "field": "fixed_assets",
      "page": 1,
      "values": [
        2749492,
        2512000
      ]
    },
    {
      "label": "II. Sachanlagen",
      "field": "ppe_net",
      "page": 1,
      "values": [
        2311000,
        2100000
      ]
    }
  ],
  "mapped": {
    "2024": {
      "fixed_assets": 2512000,
      "ppe_net": 2100000,
      "current_assets": 13900000,
      "inventory": 5800000,
      "receivables": 6000000,
      "cash": 2100000,
      "total_assets": 16412000,
      "total_equity": 3300000,
      "provisions": 1100000,
      "bank_debt": 2400000,
      "payables": 3900000,
      "total_liabilities": 12012000,
      "revenue": 50792301,
      "materials": -37000000,
      "staff_costs": 6900000,
      "depreciation": 480000,
      "other_operating_expenses": 4700000,
      "interest_expense": 300000,
      "income_taxes": 280000,
      "net_income": 712000
    },
    "2025": {
      "fixed_assets": 2749492,
      "ppe_net": 2311000,
      "current_assets": 15381836,
      "inventory": 6133476,
      "receivables": 6494584,
      "cash": 2753776,
      "total_assets": 18131328,
      "total_equity": 3791770,
      "provisions": 1200000,
      "bank_debt": 2228883,
      "payables": 4100000,
      "total_liabilities": 13139558,
      "revenue": 52211351,
      "materials": -38000000,
      "staff_costs": 7120030,
      "depreciation": 512000,
      "other_operating_expenses": 4910493,
      "interest_expense": 285514,
      "income_taxes": 292669,
      "net_income": 824858
    }
  },
  "method": "Statement lines recognised by their labels (HGB in German, IFRS and UK GAAP in English), with the figures at the end of each line, scaled by the unit the document states. Check each figure against its page; a field found twice keeps its first figures."
}

Use it when

For a company whose register publishes no figures: German ones from their own annual report, big UK ones from the scan companies_save_accounts saves.

What it does

The balance sheet and income statement read out of an annual report PDF in the file store (German HGB or English IFRS and UK GAAP): each recognised line with its figures per year and its page, and the figures by year under the fields companies_financials uses, scaled by the unit the report states. For companies whose register publishes no figures: German ones from their own report (from the business or the Bundesanzeiger), big UK ones from the accounts companies_save_accounts saves. A scan is read by OCR on Conecto's own server, from the pages that open with a statement's name; OCR can misread a digit, so check says which pages to look at yourself with documents_page_images. Nothing is charged when no statement line is found.

What comes back

file_id, pages_read, page_count, scan, statement_pages, unit_scale, currency, number_format, columns (the years), lines (label, field, page, values), mapped (the figures by year and field) and method; for a scan also ocr_pages and check (the pages to look at yourself); with a note and no charge when no line was recognised. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
file_idRequiredstringThe annual report, a PDF in the file store. Exactly 36 characters.
first_pageintegerAt least 1. Default: 1.
last_pageintegerAt least 1.

The call

Over MCP, call companies_read_accounts on https://api.conecto.chat/mcp/companies. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/companies_read_accounts \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_id":"5b8e2c4d-1a9f-4e3b-8c7d-6f5e4d3c2b1a"}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404No file with that id on this account.files_list shows them.
unsupported_type400The file isn't a PDF.Send the annual report as a PDF.
invalid_input400The PDF can't be read, or took too long.For a damaged file, ask for a new copy; for a long scan, pass the statements' first_page and last_page.
unavailable503The analysis service isn't switched on yet, or didn't answer.Try again later.

More Company data tools

All 9 tools

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md