TIC

We provide an MCP (Model Context Protocol) server with prompts, resources and tools that you can use for building AI-applications. The server uses streamable HTTP transport providing real-time communication with Server-Sent Events (SSE) streaming support.

Getting Started

Our MCP server is located at https://mcp.tic.io. It accepts your TIC API key via either of two headers:

  • x-api-key: <your_api_key> - same scheme as our REST API
  • Authorization: Bearer <your_api_key> - for clients (such as the Anthropic Messages API connector) that only forward an OAuth-style bearer token

Either form authenticates the same way against the same key. Pick whichever your MCP client supports.

IP restrictions

Every request is checked against the calling IP address before the API key is looked up, as AbuseIPDB reports it. The MCP server accepts more countries than the LENS API, since AI platforms call from their own cloud regions, most of them in the US:

  • Every country is accepted except China (CN), Taiwan (TW), Russia (RU), Brazil (BR), India (IN) and Iran (IR).
  • An address with an abuse confidence score above 25 (of 100, from reports in the last 90 days) is refused, whatever its country.

A refused request gets 403 Forbidden with a plain-text body: Forbidden IP-address, contact support@tic.io. (abuse score) or Forbidden country, contact support@tic.io. (country). The answer for an address is cached for 7 days.

Example of using OpenAI Responses API

Full documentation for the OpenAI Responses API is available here.

Endpoint: https://api.openai.com/v1/responses

Note you need to include Bearer authentication for the OpenAI API. An example request body follows below.

{
  "model": "gpt-5",
  "input": [
    {
      "role": "developer",
      "content": [
        {
          "type": "input_text",
          "text": "Talk like a chief financial officer"
        }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Get company information for Bahnhof AB (publ)."
        }
      ]
    }
  ],
  "text": {
    "format": {
      "type": "text"
    },
    "verbosity": "medium"
  },
  "reasoning": {
    "effort": "medium",
    "summary": "auto"
  },
  "tools": [
    {
      "type": "mcp",
      "allowed_tools": [
        "get_company_by_registration_number",
        "get_company_by_name",
        "get_company_by_company_id",
        "get_companies_by_sni_code",
        "get_financial_reports",
        "get_annual_reports",
        "get_risk_and_intelligence",
        "get_credit_score",
        "get_company_risk_summary",
        "get_company_debt_cases",
        "get_company_penalties",
        "get_company_lansstyrelsen_decisions",
        "get_company_kammarkollegiet_sanctions",
        "get_company_tax_deferrals",
        "get_company_business_mortgages",
        "get_company_payroll_history",
        "get_company_share_structure",
        "get_company_address_history",
        "get_company_name_history",
        "get_company_vehicles",
        "get_company_bankruptcies"
      ],
      "headers": {
        "x-api-key": "your_api_key"
      },
      "require_approval": "never",
      "server_label": "TIC",
      "server_url": "https://mcp.tic.io"
    }
  ],
  "store": true,
  "include": ["reasoning.encrypted_content"]
}

Example of using Anthropic Messages API

Anthropic’s Messages API can call remote MCP servers directly through its MCP connector. Full documentation is available here.

Endpoint: https://api.anthropic.com/v1/messages

You need three headers on the request:

  • x-api-key: <your_anthropic_api_key> - your Anthropic API key
  • anthropic-version: 2023-06-01
  • anthropic-beta: mcp-client-2025-11-20

The authorization_token field on the MCP server entry is forwarded by Anthropic to our server as Authorization: Bearer <token> - pass your TIC API key there. An example request body:

{
  "model": "claude-opus-5-5",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": "Get company information for Bahnhof AB (publ)."
    }
  ],
  "mcp_servers": [
    {
      "type": "url",
      "url": "https://mcp.tic.io",
      "name": "tic",
      "authorization_token": "your_tic_api_key"
    }
  ],
  "tools": [
    {
      "type": "mcp_toolset",
      "mcp_server_name": "tic"
    }
  ]
}

To restrict which TIC tools the model can see, use the mcp_toolset allowlist pattern - disable everything by default, then enable specific tools:

{
  "tools": [
    {
      "type": "mcp_toolset",
      "mcp_server_name": "tic",
      "default_config": { "enabled": false },
      "configs": {
        "get_company_by_registration_number": { "enabled": true },
        "get_company_risk_summary":            { "enabled": true },
        "get_company_debt_cases":              { "enabled": true },
        "get_company_penalties":               { "enabled": true }
      }
    }
  ]
}

Example of LibreChat configuration

If you wish to use our MCP in LibreChat you simply add a block inside mcpServers section in yaml configuration file:

librechat.yamlyaml
mcpServers:
  tic:
    type: streamable-http
    url: https://mcp.tic.io
    headers:
      x-api-key: 'your_api_key'

Prompts

Prompts are user-invokable workflow templates that combine multiple tools into a single investigation flow with explicit framing and a named deliverable. Pick one from your MCP client’s prompt menu to kick off an end-to-end analysis.

Most prompts take registrationNumber (organisation number, e.g. 556519-9493) and resolve identity to the internal companyId as their first step. build_prospect_list is the exception - it starts from a free-text brief rather than a known company.

Prompt Parameters What it does
investigate_company registrationNumber Full company workup: identity, risk, debts, penalties, addresses, naming, share structure. Deliverable: red-flag report grouped by category.
liquidity_stress_check registrationNumber Combines credit risk, Skatteverket tax deferrals, Kronofogden debts, and payroll trend. Deliverable: stress score (Low/Medium/High/Critical) with evidence.
due_diligence_check registrationNumber Know-Your-Business check. Resolves identity then runs the full workup. Deliverable: KYB verdict (Proceed / Conditions / Decline).
shell_company_indicators registrationNumber Screens for shell-company / fraud signals: name churn, address intelligence, missing payroll, share-capital anomalies. Deliverable: shell likelihood + indicators.
build_prospect_list brief Turns a free-text ideal-customer brief into firmographic search filters, calibrates on the result count, and returns a qualified, contactable lead list.

Resources

Resources are static reference data the model reads once into context - no tool call required. They decode the codes that appear in tool responses.

URI What it contains
ormeo://reference/codes Decoder for LocalCompanyCode (legal-form codes: AB, HB, KB, BRF, EK, SF, FL, …) and Kronofogden KFM_DebtCaseType (A vs E debt cases).

Tools

Functions the model invokes to retrieve company, property, or vehicle data. Tools are grouped below by purpose.

Company search & identity

Tool Description
get_company_by_name Find a company by current or historical name
get_company_by_registration_number Find a company by registration number
get_company_by_company_id Get the core company record by internal companyId
get_companies_by_sni_code List companies matching a 5-digit SNI industry code. Supports both SNI 2007 and SNI 2025 - pass sniStandard="2007" (default) or "2025".

Company financials & risk

Tool Description
get_financial_reports Income statement and balance sheet across all available periods (TKR, SEK)
get_annual_reports List of available annual reports in PDF with metadata and download URLs
get_credit_score Current credit score (0-100) with its creditScoreStatus (scored, or cannotBeDetermined when a ceased company, bankruptcy, liquidation, reconstruction, a new board or network risk stopped the scoring) and the descriptions used as the basis of the calculation
get_company_risk_summary Numeric risk scores: credit score with its creditScoreStatus, forward risk forecast/class, board score, beneficial-owners score, financial-discrepancy score, other-intelligence score, intelligence aggregates, and ORB network-risk aggregate counts. Scores only - no per-person details. 4-hour cache.
get_risk_and_intelligence Raw company-intelligence records (flags and signals collected over time)

Company enforcement & compliance

Tool Description
get_company_debt_cases Kronofogden enforcement: debtor summary, debt summary, current cases, weekly aggregates
get_company_penalties Consolidated penalties (Skatteverket, Kammarkollegiet, Länsstyrelsen, Försäkringskassan, fees)
get_company_lansstyrelsen_decisions Länsstyrelsen (County Administrative Board) decisions and penalty fees
get_company_kammarkollegiet_sanctions Kammarkollegiet sanction cases grouped by diary number, with current balance and full case history
get_company_tax_deferrals Skatteverket TF-ANST temporary tax-payment deferrals (liquidity-stress signal)
get_company_bankruptcies Bankruptcies initiated on a given date

Company structure & history

Tool Description
get_company_business_mortgages Bolagsverket-registered business mortgages - collateral encumbrance
get_company_payroll_history Skatteverket MOMS-AG (VAT/employer tax) filings and aggregated CompanyPayroll2 history
get_company_share_structure Registered share capital over time and share-class structure (A/B/C, …) from Bolagsverket
get_company_address_history All addresses (visiting, mailing, registered) enriched with active AddressIntelligence signals
get_company_name_history Current and historical legal names plus trade names (bifirma)

Vehicles

Tool Description
get_company_vehicles Vehicles owned or operated by a company
get_vehicle_by_license_plate Look up a vehicle by license plate
get_vehicle_by_vin Look up a vehicle by VIN (vehicle identification number)

Property

Tool Description
get_property_by_label Find a property by its label (property designation / fastighetsbeteckning)
get_orthophoto_by_year Get an orthophoto for a property; leave year empty for the most recent year
list_property_orthophotos List every available orthophoto for a property, optionally filtered to one flight year
get_property_by_location Find the property at a latitude/longitude position (WGS84)

Prospecting & registers

Tool Description
search_companies_for_leads Firmographic company search for building sales lead lists. See below for the filter set.
search_lei Search the LEI register (Legal Entity Identifiers) by name, LEI code or national registration number

search_companies_for_leads

The broadest tool on the server. It combines free-text matching against company name, business purpose (verksamhet) and SNI industry names with structured firmographic filters, and returns a paged lead list.

Filter group Parameters
Text & industry purposeOrKeywords, sniCode - the SNI filter matches SNI 2025 or SNI 2007, so a company is found whether or not it has been reclassified yet
Geography county, municipality - by official name (e.g. "Stockholm", "Skane") or SCB numeric code
Size minNetSalesThousandSEK, maxNetSalesThousandSEK, minEmployees, maxEmployees - matched against SCB size-class bands, which cover far more companies than filed annual reports
Contactability requireEmailAddress, requirePhoneNumber, requireWebsite
Registrations onlyVATRegistered, onlyFTaxRegistered, onlyEmployers, legalForm
Risk excludeCompaniesWithKfmRecord - drops any company with a Kronofogden debtor record
Incorporation registeredAfter, registeredBefore
Paging & sort pageNumber, pageSize (max 250), sortBy - one of registrationDateNewest, registrationDateOldest, debtBalance

Size filters are bucketed: pass a number and it maps to the SCB band containing it. Sorting by turnover or employee count is not available, because the SCB size-class field is not sortable - filter on it instead.

search_lei

Parameter Description
query Free text matched against legal name, LEI code and national registration number
jurisdiction ISO 3166 country code, e.g. "SE", "FI", "DE". US entities are registered per state, e.g. "US-DE"
registrationStatus ISSUED, LAPSED, PENDING_VALIDATION, PENDING_TRANSFER, PENDING_ARCHIVAL, TRANSFERRED, DUPLICATE, RETIRED, ANNULLED, CANCELLED, MERGED
entityStatus ACTIVE or INACTIVE
sortBy registrationDateNewest or registrationDateOldest
pageNumber, pageSize Paging; pageSize maxes out at 250

We will continuously add new tools - check back here for new additions.