# CNC Compass

> Search reviewed Chinese CNC machining suppliers, with each fact linked to its source page.

- name: com.cnccompass/suppliers
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 82/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.cnccompass%2Fsuppliers
- tools: https://api.protogrid.dev/v1/servers/com.cnccompass%2Fsuppliers/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "suppliers": {
      "type": "http",
      "url": "https://cnccompass.com/mcp"
    }
  }
}
```


## Trust

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

## Quality 82/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: 79 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 3 of 3 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_supplier (destructiveHint); search_suppliers (destructiveHint); list_facets (destructiveHint)
- pass `tools.token_cost`: about 1,044 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: 3, about 1,044 tokens to load them all
- tool set hash: f855cbff843d399a748742e1d67ddfae
- badge: [![protogrid quality](https://protogrid.dev/badge/com.cnccompass/suppliers.svg)](https://protogrid.dev/servers/com.cnccompass/suppliers)
- 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://cnccompass.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9622642)

## Packages

_none_

## Tools (3)

- `get_supplier`: Return one published supplier record in full, by the `slug` from search_suppliers results.

        Includes identity (legal name, Chinese registered name when a registry lookup confirmed it, location, business type, founded year, employee range), the
        official website or source listing, the Made-in-China.com inquiry form when there is one,
        capabilities (processes, materials, certifications, equipment, industries, tolerance, maximum
        part size) and the facet keys search_suppliers matches, certificates, product families,
        facilities and news items with their own source pages, the listings the record was read from
        with permission basis and check date, and field-level evidence (the quote, page, extraction
        method, and review status behind each claim). `buyer_facts.checked` lists what CNC Compass confirmed (registry review,
        source factory, certificates on China's national register, a named third-party audit);
        `buyer_facts.profile` is what the supplier publishes about itself (tolerance, inspection, lead time,
        MOQ, Incoterms, payment terms, ...), each item with its quote and source page: present it as the
        supplier's statement, to be confirmed at quotation. `verification_status`, `factory_verification`
        ("Verified source factory" or empty) and `last_verified_at` report editorial review.
        An unknown slug is a tool error.
        
- `list_facets`: List the values search_suppliers can filter on, with how many published suppliers declare each.

        Fields are process, material, finish, and location; pass `field` for one of them. Each value has
        a stable `key`, a display `label`, a `records` count, and `implies` (broader keys a narrower one
        also matches, such as aluminum-6061 implying aluminum). Pass a label or key as the matching
        optional argument of search_suppliers. Locations are the city and province words that at least
        three supplier addresses share, most common first; `omitted_values` counts the rarer ones, which
        search_suppliers still matches. `index_records` is the number of published suppliers.
        
- `search_suppliers`: Search published CNC Compass supplier records with a natural-language sourcing brief.

        Returns the normalized brief, the fields the brief did not state, matched suppliers with
        match reasons and source evidence, the filters applied with record counts, and paging
        fields (offset, limit, has_more). A brief with no recognisable process, material, finish,
        or location returns no records and a follow-up question instead of the whole index.
        `query` is 3 to 5000 characters, `limit` 1 to 20, `offset` 0 to 1000. When you already
        know the buyer's material, process, finish, or location, pass them as the optional
        fields: each overrides the parsed value (for example material="aluminum 6061",
        process="CNC turning", finish="anodizing", location="Dongguan"); a value the index cannot
        match is ignored and listed in `retrieval.ignored_fields`.
        
