Skip to main content
Glama

FinBridge

Compare KR vs US Company Financials

compare_financials_kr_us
Read-only

Compare annual financial statements of a Korean listed company (source: OpenDART, K-IFRS) and a US listed company (source: SEC EDGAR, US-GAAP) side by side, with KRW values converted to USD using Federal Reserve H.10 annual-average exchange rates.

Args:

  • kr_company: Korean company name / 6-digit stock code / DART corp_code (e.g. '삼성전자', '005930')

  • us_company: US ticker / name / CIK (e.g. 'AAPL', 'Apple')

  • years: number of recent fiscal years, 1-5 (default 3; free plan up to 4)

  • metrics: subset of [revenue, gross_profit, operating_income, net_income, eps_diluted, assets, liabilities, equity, cash_and_equivalents, operating_cash_flow]

  • response_format: 'markdown' (default) or 'json'

Returns per-metric, per-year rows: {fiscal_year, kr_krw, kr_usd, us_usd, ratio_kr_over_us} plus the FX rates used, accounting-basis caveats, sources (the DART receipt or SEC accession behind each year's figures, with links) and data_as_of.

Examples:

  • "삼성전자 vs Apple 최근 3년 매출·영업이익 비교" -> {kr_company:'삼성전자', us_company:'AAPL', metrics:['revenue','operating_income']}

  • Don't use for quarterly data (annual only) or non-KR/US companies.

Errors: unknown company names suggest using search_dart_company / search_edgar_company first.

Input Schema

NameRequiredDescriptionDefault
yearsNoHow many recent fiscal years to compare (default 3; the free plan covers up to 4)
metricsNoMetrics to compare (default: revenue, operating_income, net_income, assets, equity). Available: revenue, gross_profit, operating_income, net_income, eps_diluted, assets, liabilities, equity, cash_and_equivalents, operating_cash_flow
kr_companyYesKorean company: name (e.g. '삼성전자'), 6-digit stock code (e.g. '005930'), or 8-digit DART corp_code
us_companyYesUS company: ticker (e.g. 'AAPL'), company name, or CIK
response_formatNo'markdown' for tables, 'json' for compact machine-readable outputmarkdown

Output Schema

NameRequiredDescriptionDefault
fxNo
krYes
usYes
notesNo
metricsNo
sourcesNo
comparisonYes
data_as_ofNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed32 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / properties / comparison / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / data_as_of / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / fx / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / kr / additionalProperties
      Previous value: -trueNew value: +{}
    • removedOutput schema / properties / kr / properties / cik / anyOf
      Removed value: -[
      -  {
      -    "type": [
      -      "string",
      -      "number"
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / kr / properties / cik / type
      Added value: +[
      +  "string",
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / kr / properties / market / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / kr / properties / market / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / kr / properties / page_url / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / kr / properties / page_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / kr / properties / source / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / kr / properties / source / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / kr / properties / stock_code / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / kr / properties / stock_code / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / kr / properties / ticker / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / kr / properties / ticker / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / sources / items / additionalProperties
      Previous value: -trueNew value: +{}
    • removedOutput schema / properties / sources / items / properties / accession_number / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / sources / items / properties / accession_number / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sources / items / properties / filed / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / sources / items / properties / filed / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sources / items / properties / market / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / sources / items / properties / market / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sources / items / properties / receipt_no / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / sources / items / properties / receipt_no / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sources / items / properties / url / $ref
      Removed value: -"#/properties/kr/properties/name_en"
    • addedOutput schema / properties / sources / items / properties / url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / us / $ref
      Removed value: -"#/properties/kr"
    • addedOutput schema / properties / us / additionalProperties
      Added value: +{}
    • addedOutput schema / properties / us / properties
      Added value: +{
      +  "cik": {
      +    "type": [
      +      "string",
      +      "number",
      +      "null"
      +    ]
      +  },
      +  "market": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "name": {
      +    "type": "string"
      +  },
      +  "name_en": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "page_url": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "source": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "stock_code": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "ticker": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / us / type
      Added value: +"object"
  2. Changed2 schema fields changed
    • addedOutput schema / properties / data_as_of
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / sources
      Added value: +{
      +  "items": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "accession_number": {
      +        "$ref": "#/properties/kr/properties/name_en"
      +      },
      +      "filed": {
      +        "$ref": "#/properties/kr/properties/name_en"
      +      },
      +      "fiscal_year": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "market": {
      +        "$ref": "#/properties/kr/properties/name_en"
      +      },
      +      "receipt_no": {
      +        "$ref": "#/properties/kr/properties/name_en"
      +      },
      +      "url": {
      +        "$ref": "#/properties/kr/properties/name_en"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / years / description
      Previous value: -"How many recent fiscal years to compare (default 3)"New value: +"How many recent fiscal years to compare (default 3; the free plan covers up to 4)"
  4. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnly/openWorld/non-destructive, and the description adds real value beyond them: data provenance (DART receipt / SEC accession per year, with links), FX rate source (Fed H.10 annual averages), accounting-basis caveats, data_as_of freshness, and a free-plan cap of 4 years. It stops short of stating latency or rate limits, so a 4 rather than a 5.

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

Conciseness4/5

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

Front-loaded purpose sentence followed by Args, Examples, and Errors sections makes scanning easy for an agent. It loses a point because the Args block duplicates schema descriptions nearly word for word, adding length without new information.

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

Completeness5/5

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

For a cross-market comparison tool with 5 parameters, an output schema, and rich annotations, the description covers inputs, exclusions, error recovery, and data provenance. Nothing an agent needs in order to select or call this tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters, including the accepted identifier formats and the metrics enum. The description's Args block largely restates the schema verbatim; its only added value is the example mapping of a Korean query to concrete argument values.

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

Purpose5/5

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

States a specific verb (compare) plus the two exact resources and their sources (OpenDART/K-IFRS and SEC EDGAR/US-GAAP), and adds the FX normalization method. This clearly separates it from siblings like get_dart_financials and get_edgar_financials, which return single-market data.

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?

Explicitly names the exclusions ('Don't use for quarterly data (annual only) or non-KR/US companies') and routes the agent to search_dart_company / search_edgar_company when a company name cannot be resolved. A worked natural-language-to-args example further anchors correct invocation.

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.