Find food, beverage and pet brands that sell direct, and where to apply for a wholesale account.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
A Linty key (lk_…) from linty.xyz/account. Without it, the free tools.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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`. The text in `q` can match the name, other names or description of a brand. Search allows small spelling errors and returns at most the best 1,000 matches. `submittable` is true when the brand has an active web form at its address, and LintyBot read that page. It is false when a `robots.txt` file asks Linty not to use the page, or a part of the page where the form can be. Each page has up to 50 brands. To get the next page, send `next_cursor` as `cursor`.
Text to find in the brand's name, other names or description. Search allows small spelling errors and returns at most the best 1,000 matches.
The `next_cursor` of the earlier page.
A two-letter country code in capitals, for example `US`.
A category path, for example `snacks/protein-bars`.
True: only brands with an active web form at their address, whose page LintyBot read, and no `robots.txt` refusal of the page or of a part of it where the form can be.
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`. The text in `q` can match the name, other names or description of a brand. Search allows small spelling errors and returns at most the best 1,000 matches. `submittable` is true when the brand has an active web form at its address, and LintyBot read that page. It is false when a `robots.txt` file asks Linty not to use the page, or a part of the page where the form can be. Each page has up to 50 brands. To get the next page, send `next_cursor` as `cursor`.
| Argument | Type | Description |
|---|---|---|
| q | string | Text to find in the brand's name, other names or description. Search allows small spelling errors and returns at most the best 1,000 matches. |
| cursor | string | The `next_cursor` of the earlier page. |
| country | string | A two-letter country code in capitals, for example `US`. |
| category | string | A category path, for example `snacks/protein-bars`. |
| submittable | boolean | True: only brands with an active web form at their address, whose page LintyBot read, and no `robots.txt` refusal of the page or of a part of it where the form can be. |
| availability | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Text to find in the brand's name, other names or description. Search allows small spelling errors and returns at most the best 1,000 matches."
},
"cursor": {
"type": "string",
"maxLength": 100,
"description": "The `next_cursor` of the earlier page."
},
"country": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "A two-letter country code in capitals, for example `US`."
},
"category": {
"type": "string",
"pattern": "^[a-z0-9-]+(?:\\/[a-z0-9-]+)*$",
"maxLength": 300,
"minLength": 1,
"description": "A category path, for example `snacks/protein-bars`."
},
"submittable": {
"type": "boolean",
"description": "True: only brands with an active web form at their address, whose page LintyBot read, and no `robots.txt` refusal of the page or of a part of it where the form can be."
},
"availability": {
"enum": [
"direct",
"indirect_only",
"unavailable",
"unknown"
],
"type": "string"
}
},
"additionalProperties": false
}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`.
| Argument | Type | Description |
|---|---|---|
| slug* | string | A slug: lower-case letters, digits and hyphens, for example `acme-foods`. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"maxLength": 200,
"minLength": 1,
"description": "A slug: lower-case letters, digits and hyphens, for example `acme-foods`."
}
},
"additionalProperties": false
}Get one company by its slug, with the brands that it owns. The result is the JSON twin at `/companies/{slug}.json`.
| Argument | Type | Description |
|---|---|---|
| slug* | string | A slug: lower-case letters, digits and hyphens, for example `acme-foods`. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"maxLength": 200,
"minLength": 1,
"description": "A slug: lower-case letters, digits and hyphens, for example `acme-foods`."
}
},
"additionalProperties": false
}Get a brand's relationship: where to apply, each fact with its source quote, and whether Linty read the brand's terms. The facts include the form fields and the documents that the brand asks for. A fact has its quote in `source` only when LintyBot read it on the brand's page. Read `terms` before you apply: it says whether Linty read the agreement that the form asks you to accept. The default relationship is `wholesale`. The result is the JSON twin at `/brands/{slug}/{relationship}.json`.
| Argument | Type | Description |
|---|---|---|
| brand* | string | A slug: lower-case letters, digits and hyphens, for example `acme-foods`. |
| relationship | string | The relationship slug. The default is `wholesale`. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"brand"
],
"properties": {
"brand": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"maxLength": 200,
"minLength": 1,
"description": "A slug: lower-case letters, digits and hyphens, for example `acme-foods`."
},
"relationship": {
"type": "string",
"default": "wholesale",
"pattern": "^[a-z0-9-]+$",
"maxLength": 200,
"minLength": 1,
"description": "The relationship slug. The default is `wholesale`."
}
},
"additionalProperties": false
}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`.
| Argument | Type | Description |
|---|---|---|
| path | string | A category path, for example `snacks/protein-bars`. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"path": {
"type": "string",
"pattern": "^[a-z0-9-]+(?:\\/[a-z0-9-]+)*$",
"maxLength": 300,
"minLength": 1,
"description": "A category path, for example `snacks/protein-bars`."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| body* | string | What is wrong, and what is right. |
| brand* | string | A slug: lower-case letters, digits and hyphens, for example `acme-foods`. |
| relationship | string | A slug: lower-case letters, digits and hyphens, for example `acme-foods`. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"brand",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 2000,
"minLength": 10,
"description": "What is wrong, and what is right."
},
"brand": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"maxLength": 200,
"minLength": 1,
"description": "A slug: lower-case letters, digits and hyphens, for example `acme-foods`."
},
"relationship": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"maxLength": 200,
"minLength": 1,
"description": "A slug: lower-case letters, digits and hyphens, for example `acme-foods`."
}
},
"additionalProperties": false
}