# Use Linty from an agent

> Linty has an MCP server. An agent uses it to find brands that sell direct, see where to apply and read what each brand asks for.

## 1. What does the Linty MCP server do?

The server reads the same records as the pages and their twins.

It finds brands by text, category, country and availability. It returns the facts of a brand, a relationship, a company or a category.

It also takes a correction to a fact.

The address of the server is `https://mcp.linty.xyz/mcp`. It needs no key.

## 2. What does it not do yet?

Linty does not submit applications yet. To apply, follow the link to the form, portal or email of the brand.

## 3. How do I install it?

Run this command in a terminal. It finds the agents on your computer, adds the Linty server to each one, and shows each file that it changes.

`npx linty-mcp setup`

## 4. How do I add it to one agent?

The address of the server is `https://mcp.linty.xyz/mcp`. It needs no key.

- Claude Code: Run `claude plugin marketplace add SidestreamAI/linty-plugins`, then `claude plugin install linty@linty`. The plugin adds the server at https://mcp.linty.xyz/mcp and a skill that tells Claude how to use it. To add the server only, run `claude mcp add --transport http linty https://mcp.linty.xyz/mcp`.
- Claude.ai, Cowork and Claude Desktop: Open Customize, then Connectors. Select Add, then Add custom connector. Enter the name Linty and the address of the server, then select No sign in.
- Cursor: Open the Add to Cursor link, or add this to `~/.cursor/mcp.json`: `{"mcpServers":{"linty":{"url":"https://mcp.linty.xyz/mcp"}}}`.
- Codex: Run `codex mcp add linty --url https://mcp.linty.xyz/mcp`.
- VS Code: Run `code --add-mcp '{"name":"linty","type":"http","url":"https://mcp.linty.xyz/mcp"}'`.
- OpenCode: Add this to `~/.config/opencode/opencode.json`: `{"mcp":{"linty":{"type":"remote","url":"https://mcp.linty.xyz/mcp","enabled":true}}}`.
- Other clients: A client that runs only local servers can use `mcp-remote`: `npx -y mcp-remote https://mcp.linty.xyz/mcp --transport http-only`.

## 5. Which tools does it have?

Each tool returns a record that follows a published JSON Schema.

- `find_brands`: Find food, beverage and pet brands, and see where to apply to each for a wholesale account. Filter by text, category path, country, availability or `submittable`. `submittable` is true when the brand has a web form at its address. Each page has up to 50 brands. To get the next page, send `next_cursor` as `cursor`.
- `get_brand`: Get the facts of one brand by its slug: its company, its categories, each relationship with its availability, and the sources. The result is the JSON twin at `/brands/{slug}.json`.
- `get_relationship`: Get one relationship of a brand: where to apply, the form fields and documents the brand asks for, and the sources. The default relationship is `wholesale`. The result is the JSON twin at `/brands/{slug}/{relationship}.json`.
- `get_company`: Get one company by its slug, with the brands that it owns. The result is the JSON twin at `/companies/{slug}.json`.
- `list_categories`: List the categories under a path, or the top-level categories, with counts of published brands. A category has a page when it has 10 published brands. With a page, the result also has that category and up to 200 of its brands. Without a page, `category` is null and the result has the categories under the path. A path that is no category answers `not_found`.
- `report_correction`: Report a wrong fact about a brand or one of its relationships. Write what is wrong and what is right, in 10 to 2,000 characters. A person at Linty reads each correction.

## 6. Which JSON Schemas does Linty publish?

Linty publishes each JSON Schema at `/schemas/{name}.json`. A JSON twin and a tool result follow the same schema.

- `/schemas/brand.json`: The shape of a brand twin and of the `get_brand` result.
- `/schemas/relationship.json`: The shape of a relationship twin and of the `get_relationship` result.
- `/schemas/company.json`: The shape of a company twin and of the `get_company` result.
- `/schemas/category.json`: The shape of a category twin. The `list_categories` result has it in `category`, when the category has a page.
- `/schemas/brand-matches.json`: The shape of the `find_brands` result.
- `/schemas/category-list.json`: The shape of the `list_categories` result.
- `/schemas/correction-receipt.json`: The shape of the `report_correction` result.
- `/schemas/error.json`: The shape of an error result. It has `code`, and sometimes `issues` or `retry_after`.

## 7. How do I read Linty over HTTP?

Each brand, relationship, company and category page has a JSON twin and a markdown twin. Add `.json` or `.md` to the address of the page.

The page addresses are `/brands/{slug}`, `/brands/{slug}/{relationship}`, `/companies/{slug}` and `/categories/{path}`.

A request to the HTML address with `Accept: text/markdown` returns the markdown twin.

Each JSON twin follows one of the JSON Schemas in the list above.

A twin sends `Cache-Control` with `s-maxage=86400`, an `ETag` and `Access-Control-Allow-Origin: *`. Send `If-None-Match` to get a 304 when the twin did not change.

One IP address can send 60 requests a minute to the twins. Over the limit, Linty answers 429 with `Retry-After`.

One IP address can send 60 requests a minute to the MCP server. Over the limit, it answers 429 with `Retry-After`.

A change to a record only adds fields. A change that removes or renames a field gets a new suffix.

## Links

- [Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=linty&config=eyJ1cmwiOiJodHRwczovL21jcC5saW50eS54eXovbWNwIn0%3D)
- [Read the llms.txt file](https://linty.xyz/llms.txt)
- JSON Schema: https://linty.xyz/schemas/brand.json
