# Terminal Tax (remote · mcp.terminal.tax)

Tax software: your AI agent sends the facts, we calculate and e-file; you review and sign.

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

## Components

- remote · `mcp.terminal.tax`: 67/100 (this document), [markdown](https://verifymcp.io/servers/tax-terminal-filing/v1-hosted-mcp.md), [page](https://verifymcp.io/servers/tax-terminal-filing/v1-hosted-mcp)

## Channel facts

- Endpoint: `https://mcp.terminal.tax/v1/hosted-mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.337.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.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (create_filing_session).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - 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**: 58/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1251 tokens (~417/item across 3 items; 3 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 28/100
  - Stability check failed: schema churn in the 16 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 0 additions.
- **Tool Coverage**: 92/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 71% 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 3 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 4 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 Terminal Tax MCP server?

Terminal Tax is a hosted endpoint at https://mcp.terminal.tax/v1/hosted-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 tax-terminal-filing 'https://mcp.terminal.tax/v1/hosted-mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "tax-terminal-filing": {
      "url": "https://mcp.terminal.tax/v1/hosted-mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "tax-terminal-filing": {
      "type": "http",
      "url": "https://mcp.terminal.tax/v1/hosted-mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.tax-terminal-filing]
url = "https://mcp.terminal.tax/v1/hosted-mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tax-terminal-filing": {
      "type": "remote",
      "url": "https://mcp.terminal.tax/v1/hosted-mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add tax-terminal-filing --url 'https://mcp.terminal.tax/v1/hosted-mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  tax-terminal-filing:
    url: "https://mcp.terminal.tax/v1/hosted-mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "tax-terminal-filing": {
      "Transport": "http",
      "Url": "https://mcp.terminal.tax/v1/hosted-mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add tax-terminal-filing -t streamable-http -u 'https://mcp.terminal.tax/v1/hosted-mcp'
```

### Other

```json
{
  "mcpServers": {
    "tax-terminal-filing": {
      "type": "http",
      "url": "https://mcp.terminal.tax/v1/hosted-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-04 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 22 to 25.

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

No change was recorded against any check on this day. Stability & Change Management went from 15 to 18.

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

- [functional] Server version: 0.335.0 → 0.337.0

### 2026-10-31 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 8 to 12.

### 2026-10-29 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 2 to 5.

### 2026-10-26 (score 63, 0)

- [security regression] Endpoint reachability: reachable → behind authorisation
- [security regression] Stability: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Transport: pass → unverified
- [security regression] HSTS header: pass → fail
- [security] Authorization: The endpoint enforces authorisation, but returns a challenge with no valid RFC 9728 metadata, so a client cannot discover where to get a token.
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “create_filing_session” rewrote its description, which is the text the model reads
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Endpoint reachability: behind authorisation → reachable
- [functional] First check of Schema quality: unverified
- [functional] Server version: 0.334.0 → 0.335.0

### 2026-10-25 (score 63, 0)

- [functional] Server version: 0.332.0 → 0.334.0

### 2026-10-24 (score 63, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “continue_filing_session” rewrote its description, which is the text the model reads
- [security] Tool “create_filing_session” rewrote its description, which is the text the model reads
- [functional improvement] Schema quality: 1931 → 403
- [functional] Server version: 0.319.0 → 0.332.0

## MCP tools (3)

### `create_filing_session` (~185 tokens)

Start filing session

Starts a filing session for a US federal individual income tax return when the taxpayer asks to file. Input: none. Output: a continuationHandle that identifies this filing session in later calls, and packetRules, the packet rules as text. This call receives no tax facts and creates no return and no link; the filing link comes with an accepted packet. A new filing session is also how a fresh link replaces one that expired or was left unfinished, through which nothing was filed or charged: the same packet sent on the new handle returns the new link.

Covered returns: one original tax year 2025 US federal individual income tax return (Form 1040 or 1040-SR, and some Form 1040-SS and Form 1040-NR situations), with no state or local return. The packet rules this call returns list each covered and refused situation.

Output parameters:

- `blockers` (array)
- `continuationHandle` (string)
- `packetRules` (string)

### `get_packet_schema` (~342 tokens)

Get packet schema

Takes the filing session's continuationHandle. Returns the packet schema a completed return packet is checked against (the packet holds no Social Security number, ITIN or PIN: the taxpayer types those on the filing page): requestPacketSchema=true returns the schema digest (packetSchemaSha256, sent with the completed packet), an outline whose larger parts are named sections, the section list and the packetStarterTemplates list; packetSchemaSection=<name> returns one section and packetStarterTemplate=<id> one complete starter packet, in which each taxpayer-specific value is the placeholder REPLACE_WITH_TAXPAYER_VALUE, refused by path until replaced, with its askTheTaxpayer messages (the questions for the taxpayer) and each preset answer listed in presets with how it is settled. Read-only: no tax facts are sent here and no return is written. The tax year is return.taxYear=2025 inside the packet, not a tool argument; any other argument is refused by name.

Input parameters:

- `continuationHandle` (string)
- `packetSchemaSection` (string): One section of the packet schema, by a name from packetSchemaSections. Returns that section's members exactly as they sit in the full schema, where the outline shows {"x-terminalTaxSchemaSection":"<n…
- `packetStarterTemplate` (string): One complete starter packet, by an id from packetStarterTemplates.templates, with its askTheTaxpayer messages and its presets.
- `requestPacketSchema` (boolean): Returns the packet schema outline, its section list and digest, and the starter-template list; no tax facts are sent and no return is written.

Output parameters:

- `blockers` (array)
- `packetSchemaOutline` (object): The packet JSON Schema with each sectioned member replaced by {"x-terminalTaxSchemaSection":"<section name>"}.
- `packetSchemaRetrieval` (string)
- `packetSchemaSection` (object): One section: name, covers, parentPointer (JSON Pointer of the properties object its members belong to), sha256 and members.
- `packetSchemaSections` (array): Every schema section left out of the outline: name, what it covers, its size in characters and the sha256 of its members.
- `packetSchemaSha256` (string): SHA-256 of the compact JSON serialization of the FULL packet schema: the outline with every section's members put back in place of its marker.
- `packetStarterTemplate` (object): One starter template: id, shape, askTheTaxpayer, packet and presets.
- `packetStarterTemplates` (object): How to use a starter template, the presets every template carries, and the list of templates; a template's packet comes back with packetStarterTemplate.

### `continue_filing_session` (~491 tokens)

Continue filing session

Checks the taxpayer's completed draft packet for a federal return and, when it passes, holds it as an unsigned draft and returns the link to the filing page; otherwise returns a list of problems to correct. This call files nothing and sends nothing to the IRS: the taxpayer reviews, signs and files on the filing page.

Inputs: the filing session's continuationHandle, completedReturnPacketJson (the whole packet as one JSON string, in this server's packet schema) and packetSchemaSha256 (that schema's digest); other arguments are refused by name. The tax year is return.taxYear=2025 inside the packet. The packet carries the facts the taxpayer stated in this chat and the figures printed on documents the taxpayer gave in it; a fact the taxpayer has not stated is left out rather than written as no, none or 0, and a required fact that is left out comes back as a blocker asking for the taxpayer's answer.

Output: status filing_session_ready with a filingSessionUrl when the packet is accepted; the taxpayer opens that link to give permission, review the return and sign it. Otherwise, blockers (each with a path, a rule and a plain detail) and no link; that packet is not kept, and the same handle accepts a corrected packet. Nothing is filed or charged through a link that expires or is left unfinished, and the same packet sent again with a new filing session's handle returns a fresh link. An accepted packet is held until the taxpayer gives permission on the filing page; declining there, or expiry, erases it. Federal returns: no state, territory or local return is filed. The return has no taxpayer identity fields: the taxpayer's own details go in the packet's separate, required agentIdentity section, which the filing page shows for the taxpayer to confirm. Business identifiers printed on each source form, such as an employer's or payer's name and EIN, are packet fields.

Input parameters:

- `completedReturnPacketJson` (string): The complete return packet as one JSON string, in this server's packet schema. Its values are the facts the taxpayer stated and the figures printed on the taxpayer's documents.
- `continuationHandle` (string)
- `packetSchemaSha256` (string): The current digest returned by get_packet_schema. The server checks it against the current packet schema; packet-schema-stale means the submitted digest no longer matches that schema.

Output parameters:

- `blockers` (array)
- `filingSessionUrl` (string)
- `readBackToTaxpayer` (string): With the filing link: the packet's own answers to the which-apply questions, in plain words, to read to the taxpayer before they open the link.
- `status` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/tax-terminal-filing/v1-hosted-mcp#diagnostics

## Score history

- 2026-11-05: 67
- 2026-11-04: 67
- 2026-11-03: 66
- 2026-11-02: 66
- 2026-11-01: 65
- 2026-10-31: 65
- 2026-10-30: 64
- 2026-10-29: 64
- 2026-10-28: 63
- 2026-10-27: 63
- 2026-10-26: 63
- 2026-10-25: 63
- 2026-10-24: 63
- 2026-10-23: 62
- 2026-10-22: 62
- 2026-10-21: 62
- 2026-10-20: 62

## Common questions

### What is the Terminal Tax MCP server?

Terminal Tax is an MCP server listed in the public MCP registry as tax.terminal/filing. Tax software: your AI agent sends the facts, we calculate and e-file; you review and sign. This page covers its hosted endpoint (https://mcp.terminal.tax/v1/hosted-mcp).

### Is the Terminal Tax MCP server safe to use?

Terminal Tax 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 Terminal Tax MCP server expose?

Terminal Tax exposes 3 tools: create_filing_session, get_packet_schema, continue_filing_session. Their descriptions and schemas cost roughly 1,018 tokens of context every time the server is loaded.

### Does the Terminal Tax MCP server require authentication?

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

### Is the Terminal Tax MCP server still maintained?

Terminal Tax 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://mcp.terminal.tax/v1/hosted-mcp
- Repository: https://github.com/terminaltax/terminal-tax-mcp-server
- Website: https://terminal.tax/integrations
- Changelog RSS feed: https://verifymcp.io/servers/tax-terminal-filing/v1-hosted-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/tax-terminal-filing/v1-hosted-mcp.json
- HTML version of this page: https://verifymcp.io/servers/tax-terminal-filing/v1-hosted-mcp
