mcpField
F
firmfind

firmfind

Local
github.com/CloudCorpRecordsBusiness & Marketing0Updated 1w ago

About firmfind

firmfind is a client for the CompanyData service, for finding companies in official business registers and retrieving their records. It supports detailed company filters, full-record exports by ID and city suggestions, while passing service responses through unchanged.

Key features

  1. 01Search companies with detailed filters
  2. 02Export a full company record by ID
  3. 03Find city suggestions from place names
  4. 04Pass through unmodified service responses

Use cases

  1. 01Find companies by location and industry
  2. 02Identify records with specific contact details
  3. 03Retrieve a company’s complete register entry
  4. 04Resolve a partial city name before searching

MCP support

Exposes three CompanyData-backed tools to MCP clients: company search, full-record export and city lookup. Requests require a CompanyData API key.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"cloudcorprecords-firmfind": {
"command": "npx",
"args": [
"-y",
"@reneturcios/firmfind"
]
}
}
}
Run commandnpx -y @reneturcios/firmfind

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@reneturcios/firmfind0.1.0
ocighcr.io/cloudcorprecords/firmfind:0.1.0

Tools

3

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
IDstringNoThe identifier for this call.
pageintegerNoPage number for paginated results (optional).
emailstringNoEmail address.
searchstringNoSearch text filter (optional).
websitestringNoWebsite URL (optional).
cityNamestringNoThe city name for this call.
hasEmailbooleanNoFilter to records that have an email address (optional).
hasPhonebooleanNoFilter to records that have a phone number (optional).
pageSizeintegerNoThe page size for this call.
hasCEONamebooleanNoFilter to records that have a CEO name (optional).
hasWebsitebooleanNoFilter to records that have a website (optional).
nationalIdstringNoNational ID value (optional).
postalCodestringNoThe postal code for this call.
regionNamestringNoThe region name for this call.
sic4DigitsstringNoThe sic4 digits for this call.
statusCodestringNoThe status code for this call.
streetNamestringNoThe street name for this call.
countryCodestringNoThe country code for this call.
countryNamestringNoThe country name for this call.
legalStatusstringNoThe legal status for this call.
phoneNumberstringNoPhone number (optional).
provinceNamestringNoThe province name for this call.
hasNationalIDbooleanNoFilter to records that have a national ID (optional).
strictCountrybooleanNoRequire strict country matching (optional).
annualSalesMaxintegerNoThe annual sales maximum for this call.
annualSalesMinintegerNoThe annual sales minimum for this call.
subsidiaryCodestringNoThe subsidiary code for this call.
employeesHereMaxintegerNoThe employees here maximum for this call.
employeesHereMinintegerNoThe employees here minimum for this call.
foundingYearsMaxintegerNoThe founding years maximum for this call.
foundingYearsMinintegerNoThe founding years minimum for this call.
hasMarketabilitybooleanNoFilter to marketable records (optional).
importExportCodestringNoThe import export code for this call.
employeesTotalMaxintegerNoThe employees total maximum for this call.
employeesTotalMinintegerNoThe employees total minimum for this call.
postalCodeIntegerMaxintegerNoThe postal code integer maximum for this call.
postalCodeIntegerMinintegerNoThe postal code integer minimum for this call.
worldwideHeadquarterIDstringNoThe worldwide headquarter identifier for this call.

Details

From the project README

firmfind

Find companies in official business registers, then pull the full record for the one you meant. firmfind is a small client for the CompanyData service: search the registers by name, place, industry code, company size, age and whether a record carries an email address, a phone number, a website or a named CEO; export the complete entry for a single company by its ID; or resolve a half-remembered place name into city suggestions before you search with it.

Whatever the service returns comes back exactly as it was sent — nothing is trimmed, renamed or summarised on the way through.

Configuration

  • COMPANYDATA_API_KEY (required) — sent on every request as the x-api-key header. When it is not set, every tool fails with COMPANYDATA_API_KEY is not set and no request is made.
  • COMPANYDATA_API_BASE_URL (optional) — API base URL. Defaults to https://app.companydata.com.

Tools

  • company_search — search companies by name, location, industry, size and contact filters. All 38 arguments are optional: paging (page, pageSize), identity and text filters (ID, search, sic4Digits, importExportCode, legalStatus, statusCode, subsidiaryCode, countryCode, provinceName, cityName, streetName, regionName, countryName, postalCode, phoneNumber, email, worldwideHeadquarterID, nationalId, website), numeric ranges (postalCodeIntegerMin/Max, employeesHereMin/Max, employeesTotalMin/Max, annualSalesMin/Max, foundingYearsMin/Max) and presence flags (hasEmail, hasMarketability, hasPhone, hasWebsite, hasNationalID, hasCEOName, strictCountry). Only arguments you actually set are sent; booleans go as true/false and the range bounds use the API's bracketed wire names, for example employeesHere[min].
  • company_enrich — export the full record for one company by its CompanyData ID (required). The call always asks the export endpoint for the export form of the record.
  • field_lookup — city suggestions for a place-name search (required), optionally narrowed by countries and capped by limit.

An upstream non-2xx reply fails with companydata error: HTTP <status> and an unreachable API with companydata unreachable.

Endpoint provenance

The tool surface, the key environment variable and header, the default base URL and the enrichment behaviour are pinned by the original package's README; the parameter names, types and wire names are pinned by the official OpenAPI document:

  • GET <base>/api/company/search?<params> — company_search.
  • GET <base>/api/company/export?ID=<id>&export=true — company_enrich.
  • GET <base>/api/cities?<params> — field_lookup.

CLI

Each tool is a subcommand taking one JSON argument string:

npx @reneturcios/firmfind company_search '{"search":"bakery","countryCode":"NL","hasEmail":true}'
npx @reneturcios/firmfind company_enrich '{"ID":"abc-123"}'
npx @reneturcios/firmfind field_lookup '{"search":"amster","countries":"NL","limit":5}'
npx @reneturcios/firmfind --version

Output is the tool's result text (the upstream body on success). Exit codes: 0 on success, 1 on a runtime error (including a missing key or an upstream failure), 2 on a usage error.

MCP server

npx -y @reneturcios/firmfind mcp

MCP client config:

{
  "mcpServers": {
    "firmfind": {
      "command": "npx",
      "args": ["-y", "@reneturcios/firmfind", "mcp"],
      "env": {
        "COMPANYDATA_API_KEY": "<your key>"
      }
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/firmfind
docker run --rm ghcr.io/cloudcorprecords/firmfind company_search '{"search":"bakery"}'

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.