# io.github.cyanheads/usitc-tariffs-mcp-server (remote · usitc-tariffs.caseyjhand.com)

Search USITC tariff schedules, inspect heading trees, and look up published duty rates.

- Trust score: 76/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `usitc-tariffs.caseyjhand.com`: 76/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-usitc-tariffs-mcp-server/usitc-tariffs.md), [page](https://verifymcp.io/servers/cyanheads-usitc-tariffs-mcp-server/usitc-tariffs)
- npm · `@cyanheads/usitc-tariffs-mcp-server`: 73/100, [markdown](https://verifymcp.io/servers/cyanheads-usitc-tariffs-mcp-server/cyanheads-usitc-tariffs-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-usitc-tariffs-mcp-server/cyanheads-usitc-tariffs-mcp-server)

## Channel facts

- Endpoint: `https://usitc-tariffs.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.2`

## 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**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1345 tokens (~224/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 33/100
  - Stability observed for 10 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.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.cyanheads/usitc-tariffs-mcp-server server?

io.github.cyanheads/usitc-tariffs-mcp-server is a hosted endpoint at https://usitc-tariffs.caseyjhand.com/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 cyanheads-usitc-tariffs-mcp-server 'https://usitc-tariffs.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-usitc-tariffs-mcp-server": {
      "url": "https://usitc-tariffs.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-usitc-tariffs-mcp-server": {
      "type": "http",
      "url": "https://usitc-tariffs.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-usitc-tariffs-mcp-server]
url = "https://usitc-tariffs.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-usitc-tariffs-mcp-server": {
      "type": "remote",
      "url": "https://usitc-tariffs.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-usitc-tariffs-mcp-server --url 'https://usitc-tariffs.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-usitc-tariffs-mcp-server:
    url: "https://usitc-tariffs.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-usitc-tariffs-mcp-server": {
      "Transport": "http",
      "Url": "https://usitc-tariffs.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-usitc-tariffs-mcp-server -t streamable-http -u 'https://usitc-tariffs.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-usitc-tariffs-mcp-server": {
      "type": "http",
      "url": "https://usitc-tariffs.caseyjhand.com/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-03 (score 76, +1)

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

### 2026-11-01 (score 75, +1)

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

### 2026-10-30 (score 74, +1)

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

### 2026-10-28 (score 73, +1)

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

### 2026-10-27 (score 72, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-26 (score 72)

First indexed and scored.

## MCP tools (6)

### `usitc_search_hts` (~152 tokens)

Search published HTS classifications

Search published USITC descriptions or complete HTS code prefixes in source order. Matches are flat published rows with unresolved rates; call usitc_get_heading for legal ancestry and usitc_lookup_duty_rate for exact base rate columns. Follow nextCursor with identical arguments for all remaining matches.

Input parameters:

- `cursor` (string): Opaque nextCursor from the same tool with identical arguments.
- `limit` (integer): Requested items as a positive safe integer; effectiveLimit discloses clamping to at most 100, and pages may be byte limited. Keep the same requested limit for continuation.
- `query` (string, required): Nonblank commodity text or an HTS code prefix; preserve leading zeros.

Output parameters:

- `context` (string): Flat matches without reconstructed ancestry.
- `error` (object): Present when the call failed. Absent on success.
- `notice` (string): Actionable next call for this particular empty result.
- `notices` (array): Persistent source and coverage limitations.
- `page` (object): Complete matching collection and continuation.
- `query` (string): Normalized query actually sent to USITC.
- `release` (object): Edition checked for this result.
- `rows` (array): Complete source rows selected for this page.
- `source` (object): Source provenance.
- `totalCount` (integer): Complete locally filtered item count.

### `usitc_get_heading` (~195 tokens)

Inspect an HTS heading and ancestry

Inspect a four-, six- or eight-digit HTS classification and its complete indented descendants, including unnamed superior rows. Published section titles are retained separately in sections, outside legal ancestry. Ancestry is built from the whole containing heading before filtering. Each parent and inherited-rate source has an exact nodeId follow-up. Chapters 98 and 99 preserve published forest roots without inventing four-digit records.

Input parameters:

- `code` (string, required): Four-, six- or eight-digit HTS code, bare or conventionally dotted.
- `cursor` (string): Opaque nextCursor from the same tool with identical arguments.
- `limit` (integer): Requested items as a positive safe integer; effectiveLimit discloses clamping to at most 100, and pages may be byte limited. Keep the same requested limit for continuation.
- `nodeId` (string): Exact returned node identifier within this classification subtree; omit to browse.

Output parameters:

- `code` (string): Canonical requested code.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Whether the requested classification has published nodes.
- `guidance` (string): Executable research guidance for a successful classification miss.
- `nodes` (array): Flat source-order nodes with legal parents and rate provenance.
- `notice` (string): Actionable next call for this particular empty result.
- `notices` (array): Persistent source and coverage limitations.
- `page` (object): Complete selected subtree and continuation.
- `release` (object): Edition checked for this result.
- `rootId` (string): First selected source node; special chapters can have multiple published roots.
- `sections` (array): Complete published section markers from the containing heading, separate from legal ancestry.
- `source` (object): Source provenance.
- `totalCount` (integer): Complete locally filtered item count.

### `usitc_browse_chapter` (~166 tokens)

Browse published HTS chapter headings

Browse numbered headings with complete distinct eight-digit rate-line relationships and independent ten-digit statistical counts. A unique combined ten-digit source row can establish an absent eight-digit relationship. Published subchapter titles group following headings when present. Chapters 98 and 99 expose actual published entries without synthetic four-digit headings; grouping is unavailable without sourced markers. Reserved chapters can return a successful empty collection.

Input parameters:

- `chapter` (string, required): Chapter 01–99, accepting one or two digits.
- `cursor` (string): Opaque nextCursor from the same tool with identical arguments.
- `limit` (integer): Requested items as a positive safe integer; effectiveLimit discloses clamping to at most 100, and pages may be byte limited. Keep the same requested limit for continuation.

Output parameters:

- `chapter` (string): Normalized two-digit chapter.
- `error` (object): Present when the call failed. Absent on success.
- `headings` (array): Source-order numbered entries.
- `notice` (string): Actionable next call for this particular empty result.
- `notices` (array): Persistent source and coverage limitations.
- `page` (object): Complete heading collection and continuation.
- `release` (object): Edition checked for this result.
- `source` (object): Source provenance.
- `totalCount` (integer): Complete locally filtered item count.

### `usitc_lookup_duty_rate` (~177 tokens)

Look up published base duty columns

Retrieve an eight-digit rate line or exact ten-digit statistical number with all published General, Special and Column 2 cells. An explicit eight-digit row takes precedence; an absent one resolves only through a unique ten-digit source row, retaining its identity. Multiple suffixes stay unresolved. Blank statistical cells inherit only from the matching eight-digit legal ancestor. With countryCode, report edition-matched General Note 3(b) listing; Special-program membership stays unknown. Neither comparison establishes qualification or selects a column. Follow usitc_check_additional_duties for partial Chapter 99 research.

Input parameters:

- `code` (string, required): Exact eight- or ten-digit HTS identifier, bare or conventionally dotted.
- `countryCode` (string): Assigned ISO 3166-1 alpha-2 country; comparison only, never sent upstream.

Output parameters:

- `chapter99Pointers` (object): Research pointer with no fabricated candidate count.
- `code` (string): Canonical requested exact identifier.
- `countryAssessment` (object): Edition-pinned Column 2 listing with unresolved Special-program membership, qualification and column choice.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Whether an exact source row or unique combined eight-digit relationship resolves.
- `guidance` (string): Exact research follow-up for a successful miss.
- `notice` (string): Actionable next call for this particular empty result.
- `notices` (array): Persistent source and coverage limitations.
- `release` (object): Edition checked for this result.
- `resolvedRates` (object): All resolved duty columns when the exact number exists.
- `row` (object): Original published source row, including a unique combined row when resolving an absent eight-digit number.
- `source` (object): Source provenance.
- `specialPrograms` (object): Decoded nonblank Special cell, preserving unmatched text.
- `totalCount` (integer): Complete locally filtered item count.

### `usitc_check_additional_duties` (~287 tokens)

Research Chapter 99 additional-duty evidence

Find Chapter 99 candidate headings and source references for an exact eight- or ten-digit commodity number. Coverage is partial and empty candidates never establish clearance. Use candidates, evidence with a returned candidateCode, or unmapped views; follow returned noteId and noteCursor for complete source passages. Country comparisons retain unknown and different-country evidence. No applicability, current legal status, exclusions, stacking or combined duties are determined.

Input parameters:

- `candidateCode` (string): Returned Chapter 99 candidate number, only with view evidence.
- `code` (string, required): Exact eight- or ten-digit base commodity number, bare or conventionally dotted; Chapter 99 input is invalid.
- `countryCode` (string): Assigned ISO alpha-2 country; comparison only, never sent upstream.
- `cursor` (string): Opaque nextCursor from the same tool with identical arguments.
- `limit` (integer): Requested items as a positive safe integer; effectiveLimit discloses clamping to at most 100, and pages may be byte limited. Keep the same requested limit for continuation.
- `noteCursor` (string): Returned nextNoteCursor; requires the same noteId and original selectors.
- `noteId` (string): Returned supporting passage identifier; cannot combine with candidateCode, cursor or a nondefault view.
- `view` (string): One result collection; evidence requires candidateCode.

Output parameters:

- `baseLine` (object): Base-line identification without duplicating the full source row.
- `candidateCode` (string): Selected candidate in evidence view.
- `candidates` (array): Selected whole candidates, without nested evidence passages.
- `code` (string): Canonical exact commodity number.
- `collectionTotals` (object): Complete collection totals before page selection.
- `countryFilter` (object): Factual prioritization counts over the full candidate collection.
- `coverage` (object): Partial coverage facts, never a completeness or clearance claim.
- `error` (object): Present when the call failed. Absent on success.
- `evidence` (array): Selected complete evidence references for one candidate.
- `found` (boolean): Whether that exact base number exists; a statistical miss never falls back.
- `guidance` (string): Actionable follow-up for an exact base miss.
- `nextCall` (object): Exact selected-collection continuation arguments.
- `normalization` (object): Notes decoding and normalization provenance; absent when notes were not searched.
- `notComputed` (array): Legal, qualification and arithmetic questions not determined.
- `notesPage` (object): Complete passage retrieval, without candidate arrays.
- `notice` (string): Actionable next call for this particular empty result.
- `notices` (array): Persistent source and coverage limitations.
- `page` (object): Complete selected-collection pagination.
- `release` (object): Edition checked for this result.
- `source` (object): Source provenance.
- `totalCount` (integer): Complete locally filtered item count.
- `unmappedEvidence` (array): Selected unmatched references, including unresolved compiler notices.
- `view` (string): Only the selected collection is included.

### `usitc_list_reference` (~144 tokens)

Decode HTS references and published editions

List accepted identifier formats, edition-pinned Special Program Indicators, chapter/section navigation labels, quantity units or published release metadata. Program names are decoded separately from country membership, which remains unknown without independently verified lists. Release records identify published editions but do not enable historical tariff lookup. Follow nextCursor for all entries.

Input parameters:

- `cursor` (string): Opaque nextCursor from the same tool with identical arguments.
- `limit` (integer): Requested items as a positive safe integer; effectiveLimit discloses clamping to at most 100, and pages may be byte limited. Keep the same requested limit for continuation.
- `topic` (string, required): Reference table to retrieve.

Output parameters:

- `error` (object): Present when the call failed. Absent on success.
- `items` (array): Complete topic-specific records selected for this page.
- `notice` (string): Actionable next call for this particular empty result.
- `notices` (array): Persistent source and coverage limitations.
- `page` (object): Complete reference count and continuation.
- `release` (object): Edition checked for this result.
- `source` (object): Source provenance.
- `topic` (string): Requested decoder or metadata topic.
- `totalCount` (integer): Complete locally filtered item count.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-usitc-tariffs-mcp-server/usitc-tariffs#diagnostics

## Score history

- 2026-11-05: 76
- 2026-11-04: 76
- 2026-11-03: 76
- 2026-11-02: 75
- 2026-11-01: 75
- 2026-10-31: 74
- 2026-10-30: 74
- 2026-10-29: 73
- 2026-10-28: 73
- 2026-10-27: 72
- 2026-10-26: 72

## Common questions

### What is the io.github.cyanheads/usitc-tariffs-mcp-server server?

io.github.cyanheads/usitc-tariffs-mcp-server is listed in the public MCP registry as io.github.cyanheads/usitc-tariffs-mcp-server. Search USITC tariff schedules, inspect heading trees, and look up published duty rates. This page covers its hosted endpoint (https://usitc-tariffs.caseyjhand.com/mcp).

### Is the io.github.cyanheads/usitc-tariffs-mcp-server server safe to use?

io.github.cyanheads/usitc-tariffs-mcp-server scores 76 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 io.github.cyanheads/usitc-tariffs-mcp-server server expose?

io.github.cyanheads/usitc-tariffs-mcp-server exposes 6 tools: usitc_search_hts, usitc_get_heading, usitc_browse_chapter, usitc_lookup_duty_rate, usitc_check_additional_duties, usitc_list_reference. Their descriptions and schemas cost roughly 1,121 tokens of context every time the server is loaded.

### Does the io.github.cyanheads/usitc-tariffs-mcp-server server require authentication?

No. We connected to io.github.cyanheads/usitc-tariffs-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the io.github.cyanheads/usitc-tariffs-mcp-server server still maintained?

io.github.cyanheads/usitc-tariffs-mcp-server 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.

## Links

- Remote endpoint: https://usitc-tariffs.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/usitc-tariffs-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-usitc-tariffs-mcp-server/usitc-tariffs.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-usitc-tariffs-mcp-server/usitc-tariffs.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-usitc-tariffs-mcp-server/usitc-tariffs
