# Company Facts (remote · companyfacts.dev)

Company data from official sources: new US businesses, registers, tech stack, open jobs, SEC.

- Trust score: 67/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `companyfacts.dev`: 67/100 (this document), [markdown](https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/companyfacts.md), [page](https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/companyfacts)
- pypi · `ats-jobs-mcp`: 84/100, [markdown](https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/ats-jobs-mcp.md), [page](https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/ats-jobs-mcp)

## Channel facts

- Endpoint: `https://companyfacts.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5028 tokens (~239/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Company Facts MCP server?

Company Facts is a hosted endpoint at https://companyfacts.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http groundtruthtools-ats-jobs-mcp 'https://companyfacts.dev/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "groundtruthtools-ats-jobs-mcp": {
      "url": "https://companyfacts.dev/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "groundtruthtools-ats-jobs-mcp": {
      "type": "http",
      "url": "https://companyfacts.dev/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.groundtruthtools-ats-jobs-mcp]
url = "https://companyfacts.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "groundtruthtools-ats-jobs-mcp": {
      "type": "remote",
      "url": "https://companyfacts.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add groundtruthtools-ats-jobs-mcp --url 'https://companyfacts.dev/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  groundtruthtools-ats-jobs-mcp:
    url: "https://companyfacts.dev/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "groundtruthtools-ats-jobs-mcp": {
      "Transport": "http",
      "Url": "https://companyfacts.dev/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add groundtruthtools-ats-jobs-mcp -t streamable-http -u 'https://companyfacts.dev/mcp'
```

### Other

```json
{
  "mcpServers": {
    "groundtruthtools-ats-jobs-mcp": {
      "type": "http",
      "url": "https://companyfacts.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 65, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “read_page” rewrote its description, which is the text the model reads
- [functional improvement] Stability: unverified → 0.03
- [functional] New tool “find_x402_api”

### 2026-10-31 (score 65)

First indexed and scored.

## MCP tools (21)

### `find_company_board` (~131 tokens)

Find a company's job board

Find which applicant-tracking system a company's careers page runs on. Greenhouse, Ashby, Lever and Workable all publish open job board APIs, and all of them are unusable unless you already know the company's board name. None publishes a directory of its customers, and none could, since no vendor knows about the others. Use this first when you have a company name rather than a careers URL.

Input parameters:

- `company` (string, required): Company name or board name, for example 'anthropic' or '1Password'. Case and punctuation do not matter.
- `limit` (integer): Maximum matches to return.

### `list_open_jobs` (~171 tokens)

List a company's open jobs

Every open job at one company, read from its own careers system. Returns title, department, location, employment type, workplace type, posted date, a parsed salary range where the employer publishes one, and a verify_url pointing at the employer's own advert. Salaries are refused rather than guessed: an hourly rate, an ambiguous currency, or bands in two currencies all yield no figure, and salary_text keeps whatever the employer wrote.

Input parameters:

- `company` (string, required): A board name ('stripe'), a careers URL ('https://jobs.ashbyhq.com/ramp'), or system:name ('ashby:ramp').
- `include_description` (boolean): Include the full job description. Off by default because descriptions are long; contact details are removed either way.
- `limit` (integer): Maximum postings to return.

### `compare_companies` (~93 tokens)

Compare several companies' jobs

Open jobs across several companies at once, in one schema. This is the thing no single applicant-tracking system can do: each vendor only knows about its own customers. Companies on different systems come back with the same field names. One company failing does not lose the others.

Input parameters:

- `companies` (array, required): Up to 20 company board names or careers URLs.
- `per_company` (integer): Maximum postings per company.

### `job_changes` (~202 tokens)

Jobs opened, closed or changed

What changed in hiring, day by day: jobs newly posted, taken down, reopened, or edited (title, location or salary), read daily from every job board in the directory. Call it each day with since set to the last day you saw, rather than re-reading every board. Omit companies for the whole market, or filter by kind and title words.

Input parameters:

- `companies` (array): Company or board names. Omit for every company in the directory.
- `kinds` (array): Only these kinds of change.
- `limit` (integer): Maximum changes to return.
- `offset` (integer): Skip this many, to page through a long day.
- `q` (string): Only jobs whose title contains this, e.g. 'engineer'.
- `since` (string): First day, YYYY-MM-DD. Default: the latest published day.
- `until` (string): Last day, YYYY-MM-DD. Default: the latest published day.

### `read_page` (~102 tokens)

Read a web page

Any public web page or PDF as clean markdown, with its title and final URL after redirects, plus the page's schema.org data (prices, dates) when it has any. robots.txt is honored. Some sites refuse automated readers; those calls fail with the reason and cost nothing.

Input parameters:

- `max_chars` (integer): Cut the markdown at this length; truncated says whether it was cut.
- `url` (string, required): Full address, starting http:// or https://.

### `extract_page` (~158 tokens)

Pull structured data from a page

Read a web page and return the named fields as JSON, using only what the page states; a value the page does not give comes back empty rather than guessed. Name fields, or pass a JSON Schema, or neither for a title, summary and key points. Needs an API key (5 calls from its balance); a failed extraction is refunded.

Input parameters:

- `fields` (array): Field names to fill, e.g. ['price', 'founded', 'ceo']. Letters, digits and underscores.
- `instructions` (string): Optional guidance, up to 500 characters.
- `schema` (object): A JSON Schema with type 'object', instead of fields.
- `url` (string, required): Full address, starting http:// or https://.

### `check_email` (~80 tokens)

Check an email address

Is this address worth sending to: syntax, whether the domain exists and has mail servers, and whether it is a throwaway, role (info@, sales@) or free-provider address. It never contacts the mailbox, so a missing mailbox at a real domain still passes, and the answer says so.

Input parameters:

- `email` (string, required): One email address.

### `domain_lookup` (~101 tokens)

Look up a domain (registration, DNS, email provider)

For one domain: whether it is registered, its registrar, created, updated and expiry dates, status codes and nameservers (from the registry's RDAP server), plus its A, AAAA, MX, NS and TXT records, the email provider behind its MX, and whether it publishes SPF and DMARC. No registrant names or contact details are returned.

Input parameters:

- `domain` (string, required): A domain, URL or email address; the registered domain is used.

### `detect_tech_stack` (~114 tokens)

Detect a website's tech stack

Fetch one web page and report the technologies behind it (CMS, ecommerce platform, analytics, CDN, web server, frameworks, payment processors, email provider) with a confidence and the evidence for each. Reads HTML, headers, cookies and DNS from one page load; it cannot see what only a running browser reveals.

Input parameters:

- `min_confidence` (string): Hide detections below this confidence, 0 to 100. Default 50.
- `url` (string, required): A domain or a full web address to analyze.

### `validate_vat` (~104 tokens)

Validate an EU VAT number

Checks one VAT number against the European Commission's VIES service and returns whether it is a live registration and, where the member state shares it, the registered name. Covers the 27 EU states and Northern Ireland (XI). A busy or down member state is reported as an error, never as an invalid number.

Input parameters:

- `vat` (string, required): VAT number starting with its two-letter country code. Spaces, dots and hyphens are ignored; GR is read as EL.

### `search_company_registry` (~203 tokens)

Search an official company registry

Searches one country's official company register by name and returns registered companies in one consistent shape: number, legal name, status, legal form, dates, town and postcode, and a link to the register entry. Covers GB, NO, FR, FI, CZ, SK, IE, AU, the worldwide LEI register, and US entities in any state that hold an LEI (with their state filing number). Companies only, no directors or contact details.

Input parameters:

- `country` (string, required): Register to search: gb, no, fr, fi, cz, sk, ie, au, us, or global for the LEI register.
- `limit` (string): Most companies to return, 1 to 100. Default 20.
- `name` (string, required): Company name to search for.
- `state` (string): With country us only: the US state the entity was formed in, two letters (de, ny, tx). Default: any state.

### `search_papers` (~424 tokens)

Search academic papers

Search the OpenAlex catalogue of scholarly papers by keyword, look papers up by DOI, list the papers that cite one work, or list a university's or journal's papers. Returns title, authors, year, citation count, DOI, abstract and a free full-text link when one exists.

Input parameters:

- `cited_work` (string): cited_by mode: a DOI or OpenAlex id; returns the papers that cite it
- `dois` (string): doi mode: up to 25 DOIs or OpenAlex ids, separated by commas
- `exclude_retracted` (string): true to drop retracted papers
- `from_year` (string): Only papers published this year or later
- `include_abstract` (string): false to leave abstracts out (default true)
- `institution` (string): institution mode: a name, a ROR id or an OpenAlex id; the best name match is used and echoed in matched_entity
- `max_results` (string): How many papers, 1 to 50 (default 10)
- `min_citations` (string): Only papers cited at least this many times
- `mode` (string): search (default when query is given), doi (default when dois is given), cited_by, institution or source
- `open_access_only` (string): true to keep only papers with a free full text
- `query` (string): Keywords, for example graph neural networks. Double quotes match a phrase. Required for search; narrows institution and source results
- `search_scope` (string): title_and_abstract (default) or full_text
- `sort` (string): relevance (needs query), citations, newest or oldest
- `source` (string): source mode: a journal name, an ISSN or an OpenAlex id
- `to_year` (string): Only papers published this year or earlier
- `work_types` (string): Comma separated: article, preprint, review, book, book-chapter, dissertation, dataset, report, letter, editorial, standard, other

### `search_hacker_news` (~347 tokens)

Search Hacker News

Search Hacker News stories and comments with date, points and comment-count filters, read the live front page and the top, best, new, ask and show lists in rank order, or read whole comment threads. Every item links back to news.ycombinator.com.

Input parameters:

- `content_type` (string): search mode: stories (default), comments or both
- `date_from` (string): Only items from this day on (UTC), YYYY-MM-DD
- `date_to` (string): Only items up to the end of this day (UTC), YYYY-MM-DD
- `include_story` (string): story_comments mode: false to leave the story itself out (default true)
- `max_items` (string): How many items, 1 to 50 (default 20; 50 for story_comments; front_page stops at 30)
- `min_comments` (string): Stories with at least this many comments
- `min_points` (string): Stories with at least this many points
- `mode` (string): search (default), front_page, top, best, new, ask, show or story_comments
- `query` (string): search mode: keywords. Empty matches everything the filters allow
- `search_in` (string): search mode: all (default), title, url or text
- `sort_by` (string): search mode: relevance (default) or date (newest first)
- `story_ids` (string): story_comments mode: up to 5 item ids or news.ycombinator.com links, separated by commas
- `story_tag` (string): any (default), show_hn, ask_hn or poll

### `sec_financials` (~316 tokens)

SEC financials and screener

Reads US public company financials from SEC EDGAR XBRL. Company mode returns one company's reported history of a metric (revenue, net income, assets and 20 more, or any us-gaap tag) by ticker or CIK. Screen mode ranks every filer on one metric for one calendar period. Every figure carries period_type and a link to its filing. Reports figures, not advice.

Input parameters:

- `company` (string): Company mode: ticker or CIK number.
- `limit` (string): Records to return, 1 to 100. Default 50.
- `max_value` (string): Highest value to keep.
- `metric` (string): A name such as revenue, net_income, gross_profit, operating_income, rd_expense, sga_expense, interest_expense, income_tax, or a raw us-gaap tag like Revenues. Default revenue.
- `min_value` (string): Lowest value to keep. Negatives are legal.
- `mode` (string): screen ranks all companies for one period; company gives one company's history. Defaults to company when company is set, else screen.
- `order` (string): desc by default: largest value first in screen mode, newest period first in company mode.
- `period` (string): Screen mode: CY2023 or CY2023Q1 (calendar year, optional quarter). Default CY2024.
- `period_type` (string): Keep only quarterly, half_year, nine_month, annual or instant figures. Default any.

### `hiring_summary` (~140 tokens)

Summarise a company's hiring

One company's hiring at a glance: open roles counted by department and by location, remote share, salary ranges per currency where the job board publishes pay, and which roles opened or closed in the last 7 or 30 days from a daily record of every board. Reads the company's live Greenhouse, Ashby, Lever or Workable board. Give a company name, board name or careers URL.

Input parameters:

- `company` (string, required): Company or board name (e.g. stripe), or a careers URL on Greenhouse, Ashby, Lever or Workable.
- `days` (string): Change window: 7 or 30 days. Default 30.

### `federal_contracts` (~362 tokens)

Federal contract awards and recompetes

Searches awarded US federal contracts on USAspending.gov by agency, keyword and dollar amount, largest first. Recompete mode instead lists contracts expiring soonest within a window (set min_amount to keep the search narrow), with the incumbent and days until expiry. Every record links to the official award page.

Input parameters:

- `agency` (string): Awarding top-tier agency name. Several names separated by a semicolon.
- `award_types` (string): Codes separated by commas, from one group (contracts A,B,C,D by default; 02 to 11 are grants and loans).
- `end_date` (string): YYYY-MM-DD. Default today.
- `expiring_after_days` (string): Recompete mode: skip contracts ending sooner than this, for bid lead time. Default 0.
- `expiring_within_days` (string): Recompete mode: contracts ending within this many days, 1 to 1825. Default 365.
- `keyword` (string): Free text across award descriptions and recipient names. Up to 500 characters.
- `limit` (string): Awards to return, 1 to 100. Default 25.
- `min_amount` (string): Only awards at or above this many dollars. Recompete mode usually needs this, or an agency or keyword, to be narrow enough.
- `mode` (string): search lists awards, largest first; recompete lists contracts about to expire, soonest first. Defaults to recompete when an expiring_ field is set.
- `start_date` (string): YYYY-MM-DD, awards with activity from this date. Default 2024-10-01 (the past year in recompete mode). Not before 2007-10-01.

### `app_store_lookup` (~337 tokens)

Look up Apple App Store apps

Search the Apple App Store, look apps up by id or bundle id, read customer reviews, or get the top free, paid and grossing charts, per country. Returns name, developer, price, rating, rating count, version, genres and the App Store link.

Input parameters:

- `bundle_id` (string): lookup and reviews: bundle ids such as net.whatsapp.WhatsApp, up to 5 for lookup
- `category` (string): top_charts: all (default) or a category such as games, finance, productivity, health-and-fitness
- `chart` (string): top_charts: top-free (default), top-paid or top-grossing
- `country` (string): Two letter App Store storefront code (default us)
- `ids` (string): lookup and reviews: App Store ids (or apps.apple.com links), up to 50 for lookup, comma separated
- `include_description` (string): true to add the description and release notes to app records
- `max_results` (string): How many results, 1 to 50 (search 10, charts 25, reviews 50 by default)
- `mode` (string): search, lookup, reviews or top_charts. Defaults to search when term is given, lookup when ids or bundle_id is given, top_charts when chart is given
- `page` (string): reviews: page of 50 reviews, 1 to 10 (default 1)
- `review_sort` (string): reviews: mostrecent (default) or mosthelpful
- `term` (string): search mode: keywords

### `company_lookup` (~199 tokens)

Everything public about a company

One company in one call, from its domain: registrar, DNS and email provider, the website's tech stack, and hiring from its own job board (open roles by department and place, salary ranges, roles opened or closed lately). Add name and country for the official register entry, or ticker for SEC figures. Each part links to its source; a part with nothing to report says why.

Input parameters:

- `country` (string): Register for the name: gb, no, fr, fi, cz, sk, ie, au, us (US entities with an LEI, any state), or global (LEI). Needs name.
- `domain` (string, required): The company's website domain, URL or an email address at it.
- `name` (string): Company name. Improves the hiring match, and with country adds the official register entry.
- `ticker` (string): Stock ticker or SEC CIK, to add reported revenue from SEC filings.

### `new_businesses` (~538 tokens)

Newly formed US businesses and state register lookup

Searches the official Secretary of State business registers of New York, Colorado, Oregon, Connecticut and Pennsylvania, in one record format. mode new is a feed of entities formed in a date window, newest first: use it for new-business leads (LLCs and corporations that just registered) and prospecting. mode search finds entities by legal name and mode lookup by the state's own entity number: use them for KYB (know your business) checks on a supplier or counterparty, to confirm it exists, its type, status (active, delinquent, inactive) and formation date. Every record links to the state's own data row. Never returns officers, directors, individual registered agents, emails, phones or street addresses: business city, state and ZIP only. Each record carries the company's website when one was found with proof (its own pages show the exact legal name and the same city or state), else 'no website found'. New York, Oregon and Pennsylvania publish active entities only, so a missing entity there may be inactive or unregistered. Pennsylvania publishes monthly, so its newest entities are weeks old. If one state fails the others still return and the failure is listed in missing.

Input parameters:

- `entity_numbers` (string): The state's own entity numbers, digits only, comma separated, up to 200. Required for mode lookup. Numbers are not unique across states, so pick the state too.
- `entity_type` (string): Keep only one kind of entity: llc, corporation (for profit), nonprofit or partnership. Default any.
- `limit` (integer): Most entities to return across all states, newest first, 1 to 200. Default 50.
- `mode` (string): new lists entities formed between since and until, newest first (the default). search finds entities whose legal name contains name. lookup fetches entities by entity_numbers.
- `name` (string): Part of a legal business name, not case sensitive. Required for mode search; in mode new it narrows the feed.
- `since` (string): Earliest formation date, YYYY-MM-DD. In mode new it defaults to 7 days ago. In other modes it applies only when given.
- `states` (string): Registers to read: any of NY, CO, OR, CT, PA, comma separated (an array also works). Default all five.
- `status` (string): Keep only active, active_or_delinquent or inactive entities. Default any. New York, Oregon and Pennsylvania are skipped for inactive.
- `until` (string): Latest formation date, YYYY-MM-DD, inclusive. In mode new it defaults to today.

### `company_search` (~313 tokens)

Search the companies we track

Finds companies across everything we track: newly formed New York, Colorado, Oregon, Connecticut and Pennsylvania businesses with a website found with proof, and every FDIC-insured bank in any state. Filter by state, source, city, name, formation date, technology on their site (for example Shopify or WordPress), whether they publish a phone, role inbox or contact page, and hiring. Returns register details, website, technologies and job board, newest first. No match is never charged.

Input parameters:

- `city` (string): City as the register gives it, not case sensitive.
- `formed_since` (string): Formed on or after, YYYY-MM-DD.
- `formed_until` (string): Formed on or before, YYYY-MM-DD.
- `has` (string): Keep companies whose site publishes these: any of phone, role_email, contact_page.
- `hiring` (string): true for companies with open roles on a job board we read, false for none.
- `limit` (integer): Companies per page, 1 to 100. Default 25.
- `name` (string): Part of the legal name.
- `offset` (integer): Skip this many, for the next page.
- `source` (string): Where the company came from: state_register (new businesses) or fdic (banks), comma separated.
- `state` (string): Two-letter US state codes, comma separated.
- `tech` (string): Technology names on the home page, comma separated; all must be present.

### `find_x402_api` (~281 tokens)

Find the best x402 API for a task

Say what you need in plain words ('verify an email', 'read a web page', 'company record for a domain') and get the x402 endpoints that do it, best first, ranked only on public facts: wallets that paid it more than once in the last 30 days (Coinbase's CDP catalog), whether it answered our unpaid request with a 402 last night, its price, and PayAI's uptime. Each result has the price, networks, method, and links to re-check every number. No match is never charged.

Input parameters:

- `include_down` (string): true to also list endpoints that did not answer our last unpaid request with a 402. Default false.
- `limit` (integer): How many endpoints, 1 to 10. Default 5.
- `max_price_usd` (number): Only endpoints whose catalog price is at most this, in USD.
- `need` (string, required): What the endpoint should do, in plain words, up to 300 characters.
- `network` (string): Only endpoints that take payment on this network: base, solana, polygon, arbitrum, optimism, avalanche, algorand, or a CAIP-2 id.
- `sort` (string): proven (default: most returning paying wallets first), cheapest, or fastest (our probe's response time).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/companyfacts#diagnostics

## Score history

- 2026-11-05: 67
- 2026-11-04: 66
- 2026-11-03: 66
- 2026-11-02: 65
- 2026-11-01: 65
- 2026-10-31: 65

## Common questions

### What is the Company Facts MCP server?

Company Facts is an MCP server listed in the public MCP registry as io.github.groundtruthtools/ats-jobs-mcp. Company data from official sources: new US businesses, registers, tech stack, open jobs, SEC. This page covers its hosted endpoint (https://companyfacts.dev/mcp).

### Is the Company Facts MCP server safe to use?

Company Facts scores 67 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Company Facts MCP server expose?

Company Facts exposes 21 tools: find_company_board, list_open_jobs, compare_companies, job_changes, read_page, and 16 more. Their descriptions and schemas cost roughly 4,716 tokens of context every time the server is loaded.

### Does the Company Facts MCP server require authentication?

No. We connected to Company Facts without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Company Facts MCP server still maintained?

Company Facts is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the Company Facts MCP server?

VerifyMCP ran 12 checks on Company Facts, covering TLS certificate, Authorization, HSTS header, DNSSEC and 8 more. One item could not be completed, a gap on our side rather than a finding about Company Facts: HTTPS. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://companyfacts.dev/mcp
- Repository: https://github.com/groundtruthtools/ats-jobs-mcp
- Website: https://companyfacts.dev/
- Changelog RSS feed: https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/companyfacts.xml
- Changelog JSON feed: https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/companyfacts/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/companyfacts.json
- HTML version of this page: https://verifymcp.io/servers/groundtruthtools-ats-jobs-mcp/companyfacts
