# global.rootz.companies/companies

> Verify a US company: officers, agents, motor carriers. Flags when our status disagrees with state.

- name: global.rootz.companies/companies
- version: 1.2.1
- connection class: R0 (autonomous)
- trust: 77/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/global.rootz.companies%2Fcompanies
- tools: https://api.protogrid.dev/v1/servers/global.rootz.companies%2Fcompanies/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "companies": {
      "type": "http",
      "url": "https://companies.rootz.global/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-99% ~updated-63d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: private_entity (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); private_officer_search (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); private_owner_operated (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,227 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 13, about 2,227 tokens to load them all
- tool set hash: 9c19a22cd66b98179675dea71d013082
- badge: [![protogrid quality](https://protogrid.dev/badge/global.rootz.companies/companies.svg)](https://protogrid.dev/servers/global.rootz.companies/companies)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://companies.rootz.global/mcp (streamable-http, auth none, reachable true, uptime30d 0.9916667)

## Packages

_none_

## Tools (13)

- `private_age_distribution`: Get business age distribution — how many entities are 0-4, 5-9, 10-14, 15-19, 20-29, 30-39, 40+ years old. Optionally filter by state.
- `private_browse`: Build a list of companies matching criteria rather than looking one up: state, industry (NAICS), entity type, age, city, ZIP. Use it for prospecting, market sizing, or finding every business of a kind in a place. Ask for an industry with the naics filter — 23 is construction, 238 specialty trades, 238160 roofing.
- `private_ceo_search`: Find the chief executive, president, chairman or manager behind a company, or find every company a named executive runs. Use when the question is "who is actually in charge here" rather than "does this company exist". Restricted to executive-level titles; use private_officer_search for any role including directors and secretaries.
- `private_entity`: You have already identified a company and now need the full official record: current status, incorporation date, EIN, registered agent, every officer with their role, addresses, and filing history. This is the record a state government actually holds, so use it to settle questions that web sources disagree about — mirrors frequently report stale status or the wrong registered agent.
- `private_geography`: Geographic distribution of private businesses. Group by city, zip, county, or state. Shows where businesses are concentrated.
- `private_officer_search`: Find which companies a named person is an officer, director or registered agent of. Use it to check whether a counterparty is who they claim, to map the other entities behind one operator, or to find every company a person controls before signing with any of them. Covers 21.2M officer records.
- `private_owner_operated`: Find businesses where an officer is also the registered agent — the filing lists the same person in both roles. This is a succession and acquisition signal: it usually means an owner-operated company with no management layer. Use it to build acquisition target lists or to judge whether a supplier depends on one person. It indicates what the filing says, not legal ownership or control.
- `private_recent_changes`: Companies that changed recently, across a state or a field — for finding corporate events rather than looking one company up. A registered-agent change signals a sale, restructuring or change of counsel; a status change is the difference between a live prospect and a dissolved one. Filter by state, by field (status, status_reason, agent_name, entity_name, principal_city, principal_state) and by date. Each row carries proof bytes and a citable page. Covers CO, CT, NY, TX.
- `private_resolve`: Resolve a messy or partial business name to ONE canonical government record, with a computed confidence score (0-1), an ambiguity flag and ranked alternatives. Use this when you have a company name from a document, email or user message and need to identify the actual registered entity. Prefer this over private_search when the goal is identification rather than browsing. If confidence is below 0.6, show the user the alternatives instead of choosing one.
- `private_search`: Find US businesses by name when you do not yet know which one you want. Full-text ranked search over 30.6M entities from 56 state and territory registries. Use it to browse candidates or check whether a name exists at all; use private_resolve instead when you need to identify one specific company. Note: this matches NAMES. There is no industry classification in the search itself, so "roofing" returns companies named "Roofing ...", not every roofer — use private_list with a naics filter for that.
- `private_stats`: Check what this dataset actually covers before relying on it. Returns per-state record counts AND the government source behind each state, which matters: some states are full business registries with officer records, while others (California, Illinois) hold only federal SAM.gov registrants with no officer data at all. Read this before asking who runs a company in a state you have not used before.
- `private_type_breakdown`: Entity type breakdown — how many domestic profit corps, LLCs, LPs, nonprofits, foreign corps, etc. Optionally filter by state.
- `private_what_changed`: What has actually CHANGED about one company, with the date we observed each change and cryptographic proof. State registries publish only current values and keep no history, so this answers questions no registry lookup can: did this company change its registered agent, did its status change, was it renamed. Accepts a messy name or an exact state + state_id. Returns a human-readable page URL you can cite. Change history covers CO, CT, NY and TX; for other states the response says so rather than returning an empty list.
