Skip to main content
Glama

Overfit — German tenders & procurement law

Bilanzzahlen einer Firma abrufen

get_company_financials
Read-onlyIdempotent

Returns the financial history of a German company from its filed annual accounts, one row per fiscal year: Bilanzsumme (total assets), Eigenkapital (equity), Jahresüberschuss (net income), Umsatz (revenue), Mitarbeiter (employees). Intended for requests where the user asks about revenue, equity, profit or headcount of a company over the years. Small companies may legally omit revenue; NULL means the figure was not published (not zero). Example user questions: 'What were the revenues of K1101_HRB52093 (HRB 52093, Amtsgericht Hamburg) in 2022?', 'Show me the equity history of this company'. Whether the company is still active is answered by check_company_status.

Input Schema

NameRequiredDescriptionDefault
to_yearNoMost recent fiscal year to include (e.g. 2023). Optional.
registerYescompany_number_norm — the unique register key for a German company. Format: {CourtLetter}{4digits}_{HRB|HRA|PR|GnR|VR}{Nummer}, Example: 'K1101_HRB52093' is HRB 52093 at Amtsgericht Hamburg (court code K1101). Court codes are not derivable from city names or initials; the key comes from find_company (company name, register number + court, EUID, LEI, VAT ID) or from an earlier firm tool result. Input that is not a key (e.g. 'HRB 52093 Hamburg') is resolved the same way as in find_company; a well-formed key that belongs to no company is answered 'not found' (usually a wrong court code).
from_yearNoOldest fiscal year to include (e.g. 2018). Optional.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / register / description
      Previous value: -"company_number_norm — the unique register key for a German company. Format: {CourtLetter}{4digits}_{HRB|HRA|PR|GnR|VR}{Nummer}, Example: 'K1101_HRB52093' is HRB 52093 at Amtsgericht Hamburg (court code K1101). Court codes are not derivable from city names or initials; the key comes from find_company (register number + court, EUID, LEI, VAT ID) or from an earlier firm tool result. Input that is not a key (e.g. 'HRB 52093 Hamburg') is resolved the same way as in find_company; a well-formed key that belongs to no company is answered 'not found' (usually a wrong court code)."New value: +"company_number_norm — the unique register key for a German company. Format: {CourtLetter}{4digits}_{HRB|HRA|PR|GnR|VR}{Nummer}, Example: 'K1101_HRB52093' is HRB 52093 at Amtsgericht Hamburg (court code K1101). Court codes are not derivable from city names or initials; the key comes from find_company (company name, register number + court, EUID, LEI, VAT ID) or from an earlier firm tool result. Input that is not a key (e.g. 'HRB 52093 Hamburg') is resolved the same way as in find_company; a well-formed key that belongs to no company is answered 'not found' (usually a wrong court code)."
  2. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds real behavioral semantics beyond them: one row per fiscal year, small companies may legally omit revenue, NULL means 'not published, not zero', and a well-formed key belonging to no company returns 'not found' (usually a wrong court code). These are failure-mode and data-interpretation facts an agent cannot infer from the read-only hints.

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

Conciseness5/5

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

Front-loaded with the return shape, then intent, then data caveats, then the sibling escape hatch — no redundant restatement of the name or title. The example questions are compact and directly reinforce the register-key format rather than padding the text.

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

Completeness5/5

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

No output schema exists, and the description compensates by describing the row granularity and the meaning of each returned column plus NULL semantics — exactly what is needed to interpret results. Combined with the rich input schema, nothing an agent needs to call or read the results correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the register parameter is already exceptionally well documented in-schema (format, example, court-code non-derivability, fallback resolution). The description's example questions echo the register format but add no rule or constraint about from_year/to_year beyond what the schema states, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('returns the financial history of a German company from its filed annual accounts') and enumerates the exact columns returned (Bilanzsumme, Eigenkapital, Jahresüberschuss, Umsatz, Mitarbeiter). It also explicitly routes company-status questions to check_company_status, so an agent can separate it from get_company_profile and check_company_status without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

States the triggering intent ('requests where the user asks about revenue, equity, profit or headcount of a company over the years') and provides two concrete example user questions. It also names the adjacent tool for a question this tool does not answer ('whether the company is still active is answered by check_company_status').

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources