# Postbye MCP tools reference

> For AI agents: a plain-text index of this site is at https://postbye.com/llms.txt

The Postbye MCP server has four tools. Each one only reads: it returns the same facts as the company's page on postbye.com and changes, buys and sends nothing. This page lists every input, its limits and what comes back.

## The four tools

Start with search_companies to find a company's slug, then pass the slug to the other two company tools.

### search_companies

Find companies by name (for example "netflix" or "planet fitness") among the subscriptions and memberships Postbye has a cancellation guide for. Returns each match's slug, category, how the company takes cancellations and the guide URL. Use the slug with get_cancellation_guide.

Inputs:

- query (string, required, 1 to 100 characters): Company or service name, or part of it.
- limit (integer, optional, 1 to 10, default 5): Maximum number of matches (1 to 10).

Structured result fields (for the example call):

- query
- results (a list; each item has name, slug, category, method, how_to_cancel, url)

Ask your assistant: "Which subscription is Netflix, and how do I cancel it?"

### get_cancellation_guide

How to cancel one company's subscription or membership: how it takes cancellations, the notice period, the traps to check first, billing-partner notes, sources, when the facts were verified, the mailing address(es) on file and the guide and address page URLs. Accepts a company slug from search_companies (merged duplicate slugs resolve to the current one).

Inputs:

- slug (string, required, 1 to 100 characters): Company slug, for example "netflix".

Structured result fields (for the example call):

- name
- slug
- category
- method
- how_to_cancel
- summary
- notice_period
- traps
- billing_notes
- sources
- verified
- verified_on
- data_status
- mailing_addresses (a list; each item has label, lines, note)
- mailing_text
- cancellation_email
- website
- phone
- page_url
- address_page_url

Ask your assistant: "What do I need to check before cancelling Netflix?"

### get_cancellation_letter

A plain-text cancellation letter for one company, built from the same template as Postbye's free letter tool, plus where to send it. Fields not supplied stay as [bracketed placeholders] to fill in. Nothing is stored.

Inputs:

- slug (string, required, 1 to 100 characters): Company slug from search_companies.
- customer_name (string, optional, up to 100 characters): Your full name as it appears on the account (optional).
- account_number (string, optional, up to 64 characters): Account, membership or reference number (optional).

Structured result fields (for the example call):

- name
- slug
- letter
- placeholders_remaining
- send_to
- page_url
- address_page_url

Ask your assistant: "Write a cancellation letter for my Netflix account."

### list_categories

The category hubs of the cancellation guides (streaming, gyms, phone and internet, insurance and more) with the number of guides in each and the hub URL.

Inputs:

- This tool takes no arguments. Send an empty arguments object.

Structured result fields (for the example call):

- categories (a list; each item has slug, name, guides, verified_guides, url)

Ask your assistant: "Which kinds of subscriptions does Postbye cover?"

## Behaviour that applies to every tool

All four tools are marked read-only, non-destructive, idempotent and closed-world in their MCP annotations.

- Results: each call returns plain text for the model plus the same facts as structured content.
- Bad input: an unknown company or an invalid value comes back as a normal result with isError set to true and a message, so the assistant can correct itself and retry.
- Unknown tool or malformed arguments: a JSON-RPC invalid-params error.
- Storage: nothing you send is stored. Customer details passed to get_cancellation_letter appear only in the returned letter text.
- Request size: up to 64 KB, one JSON-RPC message per POST (batches are not supported).

## When a lookup fails

A company the server does not know is a normal result with isError set to true, so the assistant reads the message and tries again. This is the real answer to get_cancellation_guide with the slug no-such-company:

```
Unknown company slug: no-such-company. Did you mean: nordvpn, noom, norton? Use search_companies to find the slug.
All guides: https://postbye.com/cancel
Postbye can mail this letter by certified mail: https://postbye.com/how-it-works
```

```json
{
  "isError": true,
  "structuredContent": {
    "error": "Unknown company slug: no-such-company. Did you mean: nordvpn, noom, norton? Use search_companies to find the slug."
  }
}
```

## Keep reading

The other documentation pages for the server:

- [Postbye MCP Server for AI Assistants](https://postbye.com/mcp-server): Overview of the server: what it does, the endpoint and the four tools.
- [Install the Postbye MCP Server](https://postbye.com/mcp-server/install): Set-up for Claude, Claude Code, Cursor, VS Code and ChatGPT, and how access works.
- [Postbye MCP Examples](https://postbye.com/mcp-server/examples): Example prompts, tool calls with the server's real answers, and a curl request.
- [Postbye MCP Server FAQ](https://postbye.com/mcp-server/faq): Access, cost, data, limits and how the server relates to postbye.com.
- [Connect the Postbye MCP Server](https://postbye.com/mcp-server/clients): Steps and configuration for Claude, Cursor, VS Code, ChatGPT, the OpenAI API and other clients.

## Want the letter mailed for you?

Postbye prints the letter, sends it by certified mail and emails you the signed delivery proof.

[Find your company](https://postbye.com/cancel)
