tvrtke

An MCP server that provides Croatian corporate, financial, and beneficial ownership intelligence.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
93%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,314Tokens (tool definitions)
~2.4 KBTypical response size
Moderate attention impact (1.81% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "tvrtke": {
      "url": "https://tvrtke.podaci.dev/mcp"
    }
  }
}

Remote endpoints

https://tvrtke.podaci.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_company_by_id(identifier, identifier_type)

Retrieve a comprehensive 360-degree profile of a Croatian company from the Sudski Registar by its unique identifier (OIB or MBS), including legal status and ongoing legal proceedings (such as liquidation or bankruptcy). Always use this as the primary starting point for entity due diligence when an identifier is available. RULES: Never invent, guess, or fabricate company identifiers (OIB/MBS), names, or addresses. If identifier is missing, interview the user first.

Input Schema

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "description": "The company identifier"
    },
    "identifier_type": {
      "type": "string",
      "description": "Type of identifier: 'oib' or 'mbs'"
    }
  },
  "required": [
    "identifier",
    "identifier_type"
  ],
  "additionalProperties": false
}
🟡get_company_financials(identifier, from_year, to_year, include_aop_lines, aop_filter)

Retrieve historical annual financial reports (RGFI/GFI) submitted to FINA by a Croatian company over a specified range of reporting years using its OIB or MBS. To inspect detailed statutory line items (AOP codes), set include_aop_lines=true and provide aop_filter. RULES: Never invent financial figures, revenues, expenses, or identifiers. If identifier is missing, interview the user first.

Input Schema

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "description": "The company identifier (OIB or MBS)"
    },
    "from_year": {
      "type": "integer",
      "description": "Optional start year (e.g. 2018)"
    },
    "to_year": {
      "type": "integer",
      "description": "Optional end year (e.g. 2024)"
    },
    "include_aop_lines": {
      "type": "boolean",
      "description": "If true returns full raw AOP JSON data"
    },
    "aop_filter": {
      "items": {
        "type": "string"
      },
      "description": "Optional list of specific AOP codes to filter when include_aop_lines is true",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "array"
        }
      ]
    }
  },
  "required": [
    "identifier"
  ],
  "additionalProperties": false
}
🟢get_company_history(mbs)

Retrieve the chronological timeline of official legal and corporate changes (promjene) recorded in the Sudski Registar for a specific Croatian company identified by its MBS (Court Register Number). Returns the most recent 100 historical filings ordered by date. RULES: Never invent court register numbers (MBS) or historical events. Ask the user for the company's MBS first.

Input Schema

{
  "type": "object",
  "properties": {
    "mbs": {
      "type": "string",
      "description": "The MBS of the company"
    }
  },
  "required": [
    "mbs"
  ],
  "additionalProperties": false
}
🟢get_company_overview(query)

Get an overview of Croatian company registry due diligence workflows and data availability across Sudski Registar, FINA RGFI, and RSV. Returns open questions to ask the user and rules against inventing entity data. RULES: Never invent prices, licence numbers, reviews, addresses, or registration numbers. Interview the user first.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Optional company name or identifier mentioned by the user"
    }
  },
  "additionalProperties": false
}
🟢get_company_true_owners(identifier)

Retrieve the registered true owners (stvarni vlasnici) and authorized representatives for a Croatian company from the FINA Registry of True Owners (RSV). Returns direct and indirect ownership structures and control nature. RULES: Never invent true owners, ownership stakes, or corporate parent chains. If identifier is missing, interview the user first.

Input Schema

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "description": "The company identifier (OIB or MBS)"
    }
  },
  "required": [
    "identifier"
  ],
  "additionalProperties": false
}
🟢search_companies(name, city, county, street, house_number, ...)

Search and discover Croatian companies in the Sudski Registar using flexible filtering criteria such as partial/fuzzy name, street address, house number, house sub-number (podbroj), city, county (županija), inception date range, NACE/NKD industry activity code prefix, legal status, or legal proceedings (e.g. likvidacija, stečaj). Returns up to 50 matching records with basic entity profile summaries. RULES: Never invent company names, addresses, or filters. If search criteria are empty, interview the user with clarifying questions before calling this tool.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Optional name of the company (fuzzy search)"
    },
    "city": {
      "type": "string",
      "description": "Optional city of the company"
    },
    "county": {
      "type": "string",
      "description": "Optional county (županija) of the company"
    },
    "street": {
      "type": "string",
      "description": "Optional street name (e.g., Ilica, Radnička cesta)"
    },
    "house_number": {
      "type": "string",
      "description": "Optional house number (e.g., 10, 25)"
    },
    "house_subnumber": {
      "type": "string",
      "description": "Optional house sub-number / podbroj (e.g., A, B, 1/2)"
    },
    "inception_date_from": {
      "type": "string",
      "description": "Optional lower bound for company inception/foundation date (inclusive, format: YYYY-MM-DD or YYYY)"
    },
    "inception_date_to": {
      "type": "string",
      "description": "Optional upper bound for company inception/foundation date (inclusive, format: YYYY-MM-DD or YYYY)"
    },
    "nkd_code": {
      "type": "string",
      "description": "Optional NKD code (e.g. 62.01)"
    },
    "status": {
      "type": "string",
      "description": "Optional status (e.g., active, brisan, likvidacija)"
    },
    "proceeding": {
      "type": "string",
      "description": "Optional legal proceeding / status (e.g., likvidacija, stečaj)"
    }
  },
  "additionalProperties": false
}
🟢search_financial_screener(year, size_indicators, county, city, nkd_codes, ...)

An advanced financial screener and discovery engine for Croatian companies based on FINA statutory filings for a specific reporting year (default 2024). Supports range filtering for revenue (total_income), operating income, net profit, total assets, liabilities, equity, profit before tax, estimated EBITDA, and equity solvency ratios. Results can be sorted and paginated. RULES: Never invent financial thresholds or company profiles. If screening criteria are not provided, interview the user first.

Input Schema

{
  "type": "object",
  "properties": {
    "year": {
      "type": "integer",
      "description": "Target financial reporting year (default 2024)"
    },
    "size_indicators": {
      "items": {
        "type": "string"
      },
      "description": "Filter by size classifications (e.g. Mikro, Mali, Srednji, Veliki)",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "array"
        }
      ]
    },
    "county": {
      "type": "string",
      "description": "Filter by county / Županija"
    },
    "city": {
      "type": "string",
      "description": "Filter by city / municipality"
    },
    "nkd_codes": {
      "items": {
        "type": "string"
      },
      "description": "Filter by primary NACE/NKD industry activity codes",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "array"
        }
      ]
    },
    "min_total_income": {
      "description": "Minimum revenue / total income",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_total_income": {
      "description": "Maximum revenue / total income",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "min_operating_income": {
      "description": "Minimum operating revenue",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_operating_income": {
      "description": "Maximum operating revenue",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "min_net_profit": {
      "description": "Minimum net profit/loss",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_net_profit": {
      "description": "Maximum net profit/loss",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "min_total_assets": {
      "description": "Minimum total assets",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_total_assets": {
      "description": "Maximum total assets",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "min_total_liabilities": {
      "description": "Minimum total liabilities",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_total_liabilities": {
      "description": "Maximum total liabilities",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "min_equity": {
      "description": "Minimum capital and reserves (equity)",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_equity": {
      "description": "Maximum capital and reserves (equity)",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "min_profit_before_tax": {
      "description": "Minimum profit before tax",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_profit_before_tax": {
      "description": "Maximum profit before tax",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "min_ebitda": {
      "description": "Minimum estimated EBITDA (operating income - expenses)",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_ebitda": {
      "description": "Maximum estimated EBITDA (operating income - expenses)",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "min_equity_ratio": {
      "description": "Minimum solvency / equity ratio (0.0 to 1.0)",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "max_equity_ratio": {
      "description": "Maximum solvency / equity ratio (0.0 to 1.0)",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number"
        }
      ]
    },
    "is_profitable": {
      "description": "Filter profitable (true) or loss-making (false) companies",
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "boolean"
        }
      ]
    },
    "sort_by": {
      "type": "string",
      "description": "Metric to sort by (e.g. total_income, profit_for_the_year). Default total_income"
    },
    "sort_order": {
      "type": "string",
      "description": "Sort direction: asc or desc. Default desc"
    },
    "limit": {
      "type": "integer",
      "description": "Number of results (default 20, max 100)"
    },
    "offset": {
      "type": "integer",
      "description": "Pagination offset"
    }
  },
  "additionalProperties": false
}
🟢search_true_owners(first_name, last_name, birth_month_year, residence_country, citizenship, ...)

Search across the Croatian Registry of True Owners (RSV) to discover all companies and legal entities associated with a specific individual owner or representative. RULES: Never invent personal identities, birth details, or corporate connections. If criteria are missing, interview the user first.

Input Schema

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "description": "First name of the true owner or representative"
    },
    "last_name": {
      "type": "string",
      "description": "Last name of the true owner or representative"
    },
    "birth_month_year": {
      "type": "string",
      "description": "Birth month and year in format MM.YYYY (e.g. 02.1974)"
    },
    "residence_country": {
      "type": "string",
      "description": "Country of residence (e.g. Hrvatska)"
    },
    "citizenship": {
      "type": "string",
      "description": "Citizenship / nationality (e.g. Hrvatska)"
    },
    "company_name": {
      "type": "string",
      "description": "Optional partial match on company name"
    },
    "city": {
      "type": "string",
      "description": "Optional match on city / municipality"
    },
    "limit": {
      "type": "integer",
      "description": "Number of results (default 20, max 100)"
    },
    "offset": {
      "type": "integer",
      "description": "Pagination offset"
    }
  },
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools