Skip to content

Company Facts

dev.companyfacts/company-datacompanyfacts.devstreamable-httpv1.0.0Scanned

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

20 tools: 5 change things and 15 only read.

Tools: 0 delete, 0 irreversible, 5 write, 15 read.
  • Reads private data · 4
  • Reads text others write · 20
  • Can send data out · 3
  • 2 findings

Anlyon alternative

5 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

20 tools

Changes things 5Claude Code: ask
  • app_store_lookupSearch 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.Reads text others write1 finding

    Why it is in this group

    • The name "app_store_lookup" says "store": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

      The server marks "app_store_lookup" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "app_store_lookup" says "store": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Look up Apple App Store apps
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • check_emailIs 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.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Check an email address
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • compare_companiesOpen jobs across several companies at once, in one schema.Reads text others write1 finding

    Why it is in this group

    • The name "compare_companies" says "compare": a word for reading.
    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

      The server marks "compare_companies" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "compare_companies" says "compare": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Compare several companies' jobs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • hiring_summaryOne 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 open…Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Summarise a company's hiring
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • job_changesWhat 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.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Jobs opened, closed or changed
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 15Show 15 read-only tools
  • company_lookupOne 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…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "company_lookup" says "lookup": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Everything public about a company
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • detect_tech_stackFetch 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…Reads private dataReads text others writeCan send data outNo findings

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "fetch" and "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "fetch" and "web": it reads web pages, which anyone can write.
    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Detect a website's tech stack
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • domain_lookupFor 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…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "domain_lookup" says "lookup": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Look up a domain (registration, DNS, email provider)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • extract_pageRead 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.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "read" and "web": it reads web pages, which anyone can write.
    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Pull structured data from a page
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • federal_contractsSearches awarded US federal contracts on USAspending.gov by agency, keyword and dollar amount, largest first.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Federal contract awards and recompetes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • find_company_boardFind which applicant-tracking system a company's careers page runs on.Reads text others writeNo findings

    Why it is in this group

    • The name "find_company_board" says "find": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Find a company's job board
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_open_jobsEvery open job at one company, read from its own careers system.Reads text others writeNo findings

    Why it is in this group

    • The name "list_open_jobs" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List a company's open jobs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • new_businessesSearches the official Secretary of State business registers of New York, Colorado, Oregon, Connecticut and Pennsylvania, in one record format.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Newly formed US businesses and state register lookup
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • read_pageAny public web page or PDF as clean markdown, with its title and final URL after redirects.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "read_page" says "read": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "web": it reads web pages, which anyone can write.
    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    Any public web page or PDF as clean markdown, with its title and final URL after redirects. Some sites refuse automated readers; those calls fail with the reason and cost nothing.

    Annotations the server declares

    • title: Read a web page
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_company_registrySearches 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,…Reads text others writeNo findings

    Why it is in this group

    • The name "search_company_registry" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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 and the worldwide LEI register. Companies only, no directors or contact details.

    Annotations the server declares

    • title: Search an official company registry
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_hacker_newsSearch 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 whol…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "search_hacker_news" says "search": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "search" and "thread": it reads messages.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "search" and "comment": it reads comments, which other people can write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Search Hacker News
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_papersSearch 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.Reads text others writeNo findings

    Why it is in this group

    • The name "search_papers" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Search academic papers
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • sec_financialsReads US public company financials from SEC EDGAR XBRL.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: SEC financials and screener
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • validate_vatChecks 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.Reads text others writeNo findings

    Why it is in this group

    • The name "validate_vat" says "validate": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Validate an EU VAT number
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

240 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 3 outbound tools breaks every one.

Reads private data4
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write20
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out3
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__company-data__detect_tech_stack",
      "mcp__company-data__extract_page",
      "mcp__company-data__read_page"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "compare_companies" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "compare_companies" says "compare": a word for reading.

    What this check looks for
  • The server marks "app_store_lookup" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "app_store_lookup" says "store": a word for a change.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http company-data https://companyfacts.dev/mcp/
claude mcp add --transport http company-data https://companyfacts.dev/mcp/

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__company-data__find_company_board",
      "mcp__company-data__list_open_jobs",
      "mcp__company-data__domain_lookup",
      "mcp__company-data__validate_vat",
      "mcp__company-data__search_company_registry",
      "mcp__company-data__search_papers",
      "mcp__company-data__search_hacker_news",
      "mcp__company-data__sec_financials",
      "mcp__company-data__federal_contracts",
      "mcp__company-data__company_lookup",
      "mcp__company-data__new_businesses",
      "mcp__company-data__company_search"
    ],
    "ask": [
      "mcp__company-data__compare_companies",
      "mcp__company-data__job_changes",
      "mcp__company-data__read_page",
      "mcp__company-data__extract_page",
      "mcp__company-data__check_email",
      "mcp__company-data__detect_tech_stack",
      "mcp__company-data__hiring_summary",
      "mcp__company-data__app_store_lookup"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as company-data. Review it before you use it.

Capability tags behind 20 rules
  • mcp__company-data__find_company_board untrusted-input
  • mcp__company-data__list_open_jobs untrusted-input
  • mcp__company-data__compare_companies untrusted-input
  • mcp__company-data__job_changes untrusted-input
  • mcp__company-data__read_page untrusted-input, outbound
  • mcp__company-data__extract_page untrusted-input, outbound
  • mcp__company-data__check_email untrusted-input
  • mcp__company-data__domain_lookup private-data, untrusted-input
  • mcp__company-data__detect_tech_stack private-data, untrusted-input, outbound
  • mcp__company-data__validate_vat untrusted-input
  • mcp__company-data__search_company_registry untrusted-input
  • mcp__company-data__search_papers untrusted-input
  • mcp__company-data__search_hacker_news private-data, untrusted-input
  • mcp__company-data__sec_financials untrusted-input
  • mcp__company-data__hiring_summary untrusted-input
  • mcp__company-data__federal_contracts untrusted-input
  • mcp__company-data__app_store_lookup untrusted-input
  • mcp__company-data__company_lookup private-data, untrusted-input
  • mcp__company-data__new_businesses untrusted-input
  • mcp__company-data__company_search untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/dev.companyfacts/company-data/verify?hash=4b5174d95ad3f2e8c2b99b0a847b3d4105a070e0dd8c825efdacb66d5f327cb7" | jq -e '.changed == false'

Pinned hash 4b5174d95ad3, from Oct 31, 2026, 00:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/dev.companyfacts/company-data/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for dev.companyfacts/company-data
[![anlyon.dev](https://anlyon.dev/badge/dev.companyfacts/company-data.svg)](https://anlyon.dev/servers/dev.companyfacts/company-data)

Source: MCP Registry · repository. Synced Oct 31, 2026, 00:18 UTC.