Vereel MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Vereel MCP ServerAdd a Vereel campaign for our new vitamin C serum on Instagram"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Vereel MCP server
Find influencers for your brand by talking to your AI assistant.
Vereel is an influencer-marketing marketplace: brands and companies publish offers (campaigns), and creators on Instagram, TikTok, YouTube and X apply to them.
This MCP server lets brands and companies add their offers to Vereel from Claude, Cursor and other AI agents, so creators can find them and apply, and lets anyone search the offers that are already public. Describe your campaign in plain language; the assistant fills in the offer, attaches a photo and sends it to Vereel.
You: Add a campaign to Vereel: we're launching a vitamin C serum. We want one Reel and two Stories
from beauty creators on Instagram and TikTok, 800 PLN plus the product, creators with at
least 5,000 followers. Use the photo at /Users/me/Desktop/serum.jpg.
Claude: I'll check Vereel's categories first… Here is the offer I'm about to send. Shall I go ahead?
You: Yes.
Claude: Done. "Spring skincare launch" is waiting for Vereel's review; it goes public once it is approved.What you can do
Tool | What it does | Needs a brand token |
| Add an offer to Vereel. It waits for review before it goes public. | yes (read and write) |
| Add a photo to an offer: from a link, or from a file on your computer. | yes (read and write) |
| Change an offer while it is still in review. | yes (read and write) |
| List your offers and where each one stands (in review, public, rejected). | yes |
| One of your offers in full, with what is still missing and the reviewer's note. | yes |
| The categories offers are filed under. | no |
| Search the public offers by words, category, type, platform and language. | no |
| One public offer, with what its page on vereel.com shows. | no |
Searching public offers needs no account and no token. Everything else acts for your brand, through a token you create.
Related MCP server: ProductClank MCP Server
What happens to an offer
Every offer sent through this server waits for a Vereel admin to approve it before creators can see it. It needs at least one photo to be approved. While it waits you can still change it and add photos. If Vereel rejects it, the offer goes back to your drafts with the reason, and vereel_get_my_offer shows the note.
The API cannot publish, delete, pay or start a cooperation: those stay in Vereel, in your hands.
Set up
1. Have a Vereel brand account. No account yet? Sign up as a brand at vereel.com.
2. Create a token. In Vereel open Settings › API tokens, choose Read and write, accept the Cooperation Terms for the token, and create it. The token (it starts with vrl_) is shown once: copy it now. Offers sent with it fall under the Cooperation Terms.
3. Add the server to your AI client. You need Node.js 20 or newer.
Open Settings › Developer › Edit Config and add to claude_desktop_config.json:
{
"mcpServers": {
"vereel": {
"command": "npx",
"args": ["-y", "github:hans100x-dotcom/vereel-mcp"],
"env": { "VEREEL_API_TOKEN": "vrl_paste-your-token-here" }
}
}
}On Windows, if Claude cannot start npx, use "command": "cmd" and "args": ["/c", "npx", "-y", "github:hans100x-dotcom/vereel-mcp"]. Restart Claude Desktop.
claude mcp add vereel --env VEREEL_API_TOKEN=vrl_paste-your-token-here -- npx -y github:hans100x-dotcom/vereel-mcpAdd to .cursor/mcp.json (or Settings › MCP):
{
"mcpServers": {
"vereel": {
"command": "npx",
"args": ["-y", "github:hans100x-dotcom/vereel-mcp"],
"env": { "VEREEL_API_TOKEN": "vrl_paste-your-token-here" }
}
}
}Run npx -y github:hans100x-dotcom/vereel-mcp as a stdio server with VEREEL_API_TOKEN in its environment.
4. Ask. For example:
"Show me the Vereel categories, then add a campaign for our new running shoes for Instagram and TikTok."
"Which of my Vereel offers are still waiting for review?"
"Search Vereel for travel campaigns on YouTube."
Leave the token out and the server still searches public offers.
Configuration
Set these as environment variables of the server:
Variable | Meaning |
| Your brand token ( |
|
|
| Folders the assistant may upload photos from, separated by |
| Default |
Vereel can switch its API off at any time; the tools then answer API_DISABLED and say to try again later.
Security
You are giving an AI assistant a key to your brand's account, so the safeguards come in several layers.
A token can only do a little. It can create and edit offers that wait for review, add photos, and read. It cannot publish, delete, pay, see other brands' offers or create tokens. Tokens expire (30, 90 or 365 days), can be revoked in Settings, and show when they were last used. Vereel stores only a hash of them.
Nothing goes public unannounced. A Vereel admin approves every offer, and can switch the whole API off.
Offer text is treated as data. Descriptions on public offers are written by other people. Every result that carries such text starts with a notice telling the assistant not to follow instructions found inside it.
Photos are checked on your machine first. A file is read and sent only if its content is a JPEG, PNG or WebP of at most 5 MB, whatever its name. Nothing else leaves your computer, even if an assistant is tricked into asking.
VEREEL_IMAGE_DIRSlimits the folders as well.The token goes to Vereel and nowhere else. It is sent only as a header, only to
VEREEL_API_URL, never on anonymous requests, never to the photo upload address, and redirects are refused. It is never written to logs or shown in results.No automatic retries. A request that gets no answer is reported, not repeated, so an offer is not created twice.
Keep the token private. Put it in your client's configuration, not in a chat, a repository or a web page. If it leaks, revoke it in Settings › API tokens and make a new one.
Found a vulnerability? Please email contact@vereel.com rather than opening a public issue.
Limits
Set by Vereel's API: 60 anonymous requests a minute per address; per token 120 requests a minute and 30 changes per 10 minutes; 20 offers in review and 50 new offers a day per brand; bodies up to 64 KB; at most 6 photos per offer. The tools pass Vereel's error on, with what to do next.
Documentation
Vereel's API documentation: https://www.vereel.com/en/api
OpenAPI definition: https://www.vereel.com/api/v1/public/openapi.yaml
This server is a thin layer over that API. If you prefer plain HTTP, use the API directly.
Development
git clone https://github.com/hans100x-dotcom/vereel-mcp.git
cd vereel-mcp
npm install # also builds
npm test # no network needed
npm run typecheck
node dist/index.js --helpThe tools' inputs mirror the API definition, which is kept in spec/openapi.json. test/spec-drift.test.ts compares the two field by field; when Vereel changes its API, run npm run sync-spec and the test says what to update.
To try the server against a local Vereel, set VEREEL_API_URL=http://localhost:3000/api/v1/public.
src/
index.ts start-up: reads the environment, speaks MCP on stdin/stdout
server.ts creates the MCP server and its instructions
tools.ts the eight tools
schemas.ts the tools' inputs
client.ts the only code that talks to Vereel
results.ts what the model reads back: data, notices, errors with hints
images.ts reading a photo from disk, judged by its content
config.ts environment and its checksRoadmap
A hosted (Streamable HTTP) server with sign-in through OAuth, so Vereel can be added as a connector in Claude and ChatGPT without handling a token.
A listing in the MCP Registry.
License
Available Tools
8 toolsvereel_add_offer_imageAdd a photo to an offerA
Add one photo to an offer that is still in review. Give either imageUrl (an https link Vereel downloads) or filePath (an image on the machine this server runs on, which is uploaded for you). JPEG, PNG or WebP, at most 5 MB, at most 6 photos per offer; the first photo is the cover. Needs a read-and-write brand token.
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The offer's id, as returned by vereel_create_offer or vereel_list_my_offers | |
| filePath | No | Path of a JPEG, PNG or WebP of at most 5 MB on the machine this server runs on | |
| imageUrl | No | An https:// URL of a JPEG, PNG or WebP of at most 5 MB, which Vereel downloads |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the state gate (offer in review), that Vereel downloads https URLs versus uploading a file from the server's machine, the 5 MB and 6-photo caps, that the first photo becomes the cover, and the auth requirement. These are exactly the operational facts an agent needs before calling a non-idempotent, open-world write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and its precondition, followed by the input choice and then the limits. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers preconditions, input modes, format/size/count limits, cover ordering, and auth. The only gap is the return value and what happens when the offer isn't in review; with no output schema, a brief note on the response would have made it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds real value by framing imageUrl and filePath as mutually exclusive alternatives and clarifying where filePath resolves (the server's machine, not the caller's). It doesn't state behavior if both are supplied, but the added semantics exceed the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Add one photo to an offer") plus a scoping condition ("still in review"), which cleanly separates it from siblings like vereel_create_offer and vereel_update_offer. An agent knows exactly what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear preconditions (offer must be in review, read-and-write brand token required) and the either/or choice between imageUrl and filePath. It does not explicitly name sibling alternatives or say what to do if the offer is no longer in review, but the context for use is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vereel_create_offerCreate an offerA
Add an offer (an influencer-marketing campaign) to Vereel for the brand that owns the token, so creators on Instagram, TikTok, YouTube or X can find it and apply. The offer is NOT public yet: Vereel reviews every offer sent through the API and publishes it once approved. It needs at least one photo before it can be approved: pass imageUrls, or add one afterwards with vereel_add_offer_image. Get categoryIds from vereel_list_categories. Show the user the campaign details and get their go-ahead before calling, because this sends the offer to Vereel's reviewers. Needs a read-and-write brand token.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name shown to creators | |
| remarks | No | Anything else creators should know | |
| audience | No | Who the creator's audience should be | |
| currency | No | PLN or EUR; defaults to the brand's currency | |
| isBarter | Yes | The creator receives a product or service instead of (or besides) money | |
| language | No | Language of the campaign; defaults to the brand's language | |
| imageUrls | No | Up to 6 https image URLs Vereel downloads (JPEG, PNG or WebP, ≤ 5 MB each). The first is the cover. | |
| isPayment | Yes | The creator is paid | |
| offerType | Yes | PRODUCT, SERVICE or EVENT | |
| platforms | Yes | Where the creator publishes: instagram, tiktok, youtube, x | |
| eventPlace | No | EVENT only: where it takes place | |
| applyByDays | No | Creators can apply for this many days after the offer goes live; default 21 | |
| categoryIds | Yes | Up to 3 category ids from vereel_list_categories | |
| description | Yes | What the campaign is about and what the creator does | |
| trackingUrl | No | Page that the creators' tracking links lead to; enables tracking links | |
| deliverables | No | How many pieces of each kind the creator publishes | |
| eventDateTime | No | EVENT only: when it starts, ISO 8601 | |
| followerMinimum | No | Smallest follower count a creator needs; one of 1000, 2000, 5000, 10000, 25000, 50000, 100000 | |
| presenceAddress | No | ||
| presenceEndDate | No | ||
| productIncluded | No | A paid offer also includes a product or service. Always true for barter. | |
| ticketsIncluded | No | EVENT only: the creator receives tickets or entry | |
| expectedAudience | No | Free-text description of the audience wanted | |
| additionalPayment | No | Cash paid to the creator | |
| logisticsRequired | No | Something must be sent or arranged before the creator can start; default true | |
| presenceStartDate | No | ||
| includedDescription | No | What the creator receives. Required when a product, service or tickets are included. | |
| productServiceValue | No | Value of the product or service the creator receives | |
| publicationDuration | No | How long the post stays online; default DAYS_30 | |
| textProvidedByBrand | No | The brand supplies the post text | |
| requiresGoodsShipping | No | The brand ships goods to the creator | |
| hashtagsProvidedByBrand | No | The brand supplies the hashtags | |
| requiresPhysicalPresence | No | The creator must be somewhere in person |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-idempotent, non-destructive write; the description adds the material behavior: the offer is NOT public on creation, Vereel reviews and publishes it, the call notifies reviewers, and it requires a read-and-write brand token. That is real operational context (approval gate, external side effect, auth requirement) an agent could not infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, front-loaded with what the tool does, then the approval state, then the photo/category prerequisites, then the user-confirmation requirement, then auth. Every sentence carries a distinct constraint; nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 33-parameter nested creation tool with no output schema, the description covers the workflow, gating conditions, and auth, which is the hard part. The one gap is the return value: with no output schema, the agent is not told whether an offer id or pending status comes back, which matters for follow-up calls like vereel_add_offer_image.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 91%, so the schema already carries parameter meanings and the baseline is 3. The description adds value on top by stating that at least one image is required before approval and that imageUrls can be deferred via vereel_add_offer_image, neither of which is in the schema. It says nothing about the conditional/EVENT-only fields, but those are well documented in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb and resource ('Add an offer … to Vereel') and immediately defines what an offer is ('an influencer-marketing campaign') plus the scope ('for the brand that owns the token'). It also names the sibling tools that supply related pieces (vereel_add_offer_image, vereel_list_categories), so an agent can distinguish it from create/update paths without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the preconditions for calling (needs a read-and-write brand token, category ids from vereel_list_categories, at least one photo) and the human-in-the-loop step ('Show the user the campaign details and get their go-ahead before calling'). It also gives the alternative path for images (add afterwards with vereel_add_offer_image), which is exactly the when-vs-which guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vereel_get_my_offerGet one of my offersARead-only
Get one offer the brand created through the API, in full: every field, its status, the photos, what is still missing before Vereel can approve it, and the reviewer's note if it was rejected. Needs a brand token (read or read-and-write).
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The offer's id, as returned by vereel_create_offer or vereel_list_my_offers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description goes beyond them by spelling out the auth requirement and exactly which non-obvious data comes back (pre-approval gaps, rejection reviewer note). It does not cover not-found or not-owned error behavior, which is a mutation-free read so the omission is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: the return payload first, the credential requirement second. The field enumeration is long but each item (status, photos, missing items, reviewer note) carries information an agent cannot get from a schema, so nothing is gratuitous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately takes on the job of describing return content, and with one fully documented parameter the input side needs no more. The only gap is the absence of failure behavior (invalid or foreign offerId), which would round out a single-record fetch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single offerId parameter is documented in the schema itself, including where to obtain it (vereel_create_offer / vereel_list_my_offers). The description adds no format, length, or validation detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (get) plus resource scoped to the brand's own offer, and it enumerates the payload (fields, status, photos, missing requirements, reviewer note). Ownership wording ('the brand created through the API') implicitly separates it from vereel_list_my_offers and the public vereel_get_offer, but it never names those siblings outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'my offer' ownership framing and by the sibling naming pattern, and the required credential type (brand token, read or read-and-write) is stated. There is no explicit when-to-use-this-instead-of-X guidance, e.g. no pointer telling the agent to use vereel_list_my_offers to discover an offerId or vereel_get_offer for another brand's offer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vereel_get_offerGet a public offerARead-only
Get one public Vereel offer with the details its page on vereel.com shows: what the creator does, deliverables, platforms, audience, follower minimum, apply-by date and the link to the offer's page. No payment amounts. No token needed.
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The offer's id or numeric id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds real context beyond them: no authentication token is needed and no payment amounts are exposed. That auth and content-boundary disclosure is exactly the kind of value annotations can't carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the returned-field list does the heavy lifting and the two constraints come last. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates the returned fields (creator activity, deliverables, platforms, audience, follower minimum, deadline, link), so the agent knows what to expect on return. For a single-param read tool this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single offerId parameter is already documented in the schema as 'The offer's id or numeric id'. The description adds no format, sourcing, or id-derivation guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (one public Vereel offer) and enumerates the fields returned, so the agent knows exactly what comes back. It never names vereel_get_my_offer or vereel_search_offers; the 'public' qualifier implies a private counterpart but leaves the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the right context (fetching a single public offer by id, no token required), but gives no explicit when-to-use versus search_offers or get_my_offer, and no exclusions. With seven siblings, routing guidance is thin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vereel_list_categoriesList Vereel categoriesARead-only
List the categories Vereel files offers under (for example beauty, fashion, travel). Their ids are what vereel_create_offer takes as categoryIds and vereel_search_offers takes as category. No token needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the non-obvious auth detail "No token needed" and enumerates example category values, both of which are new information an agent would otherwise have to discover by failing a call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying a distinct payload: what it lists, what the output is good for, and the auth constraint. Front-loaded with the purpose, zero filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey the return shape; it conveys that the response is categories with ids and human-readable names via examples. It could be slightly firmer about the exact fields returned, but for a trivial zero-param lookup this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. The description correctly sticks to explaining the output (category ids) rather than inventing input semantics, which is the right allocation for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the categories Vereel files offers under") and immediately grounds it with concrete examples (beauty, fashion, travel). It also names the two sibling tools that consume the result, so an agent can distinguish it from vereel_search_offers and vereel_create_offer without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Their ids are what vereel_create_offer takes as categoryIds and vereel_search_offers takes as category" explicitly tells the agent the downstream use case and the prerequisites for those tools. It stops short of an imperative like "call this first to discover valid category ids" or naming when not to use it, but the routing context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vereel_list_my_offersList my offersARead-only
List the offers the brand that owns the token has created through the API, newest first, with each one's status: in_review (waiting for Vereel), active (public), rejected (with Vereel's note) or closed. Use it to check progress or to find an offer's id. Needs a brand token (read or read-and-write).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Items per page, 1–50, default 20 | |
| cursor | No | The nextCursor of the previous page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds real substance beyond that: newest-first ordering, the four possible status values with their meanings (including that rejected carries Vereel's note), and the auth requirement (brand token, read or read-and-write). This is exactly the context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with scope and ordering, then status semantics, then use cases and auth. No filler; each clause (ordering, statuses, token type) carries information an agent would otherwise lack.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-param read tool with no output schema, the description covers ordering, status interpretation, use-case intent, and the auth prerequisite. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so limit (1–50, default 20) and cursor are already fully documented in the schema. The description adds no pagination or ordering semantics beyond what the schema states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource with explicit scope: offers created by the brand that owns the token, newest first. This cleanly separates it from vereel_search_offers (broad search) and vereel_get_my_offer (single item) without the agent needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names concrete use cases ('check progress', 'find an offer's id'), which is genuinely actionable. It stops short of stating exclusions or pointing to alternatives like vereel_search_offers or vereel_get_offer, so routing is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vereel_search_offersSearch public offersARead-only
Search the influencer-marketing offers (campaigns) that brands have published on Vereel and that creators can apply to, newest first. Filter by words, category, type, platform and language. Shows what an anonymous visitor of the site sees: no payment amounts. Use nextCursor to get the next page. No token needed.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words in the name or description | |
| limit | No | Items per page, 1–50, default 20 | |
| cursor | No | The nextCursor of the previous page | |
| category | No | A category id from vereel_list_categories | |
| language | No | ||
| platform | No | ||
| offerType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses ordering (newest first), a data-visibility constraint (no payment amounts shown to anonymous visitors), pagination behavior, and that no token is needed. That last point is a genuinely useful auth clarification, though it omits any rate-limit or result-size context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with purpose, then filters, then the visibility caveat, then pagination/auth. Every sentence carries distinct information with no repetition of name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param read-only search with no output schema, the description covers purpose, filtering, paging, auth, and data visibility. It doesn't sketch what an offer record contains beyond ordering, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description enumerates the filter dimensions (words, category, type, platform, language), which helps map intent to parameters. But with 57% schema coverage it leaves gaps (e.g., the `limit` param is undocumented here) and the mismatch between its 'nextCursor' wording and the actual `cursor` parameter name adds minor friction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search the influencer-marketing offers') plus scope ('published on Vereel', 'creators can apply to', 'newest first'). This clearly separates it from sibling tools like vereel_list_my_offers and vereel_get_offer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'public offers, what an anonymous visitor sees' framing implicitly tells the agent to use this instead of the my-offers siblings, and 'Use nextCursor to get the next page' gives concrete usage. However, it never explicitly names an alternative or a when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vereel_update_offerChange an offer in reviewADestructiveIdempotent
Change an offer the brand created through the API, while it is still in review. Only the fields you give change. To reorder or remove photos, pass photos with the offer's current photo URLs in the new order (leaving one out removes it); to add a photo use vereel_add_offer_image. An offer that is already public or rejected cannot be changed through the API. Needs a read-and-write brand token.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Campaign name shown to creators | |
| photos | No | The offer's current photo URLs in the new order; leaving one out removes it. The first is the cover. | |
| offerId | Yes | The offer's id, as returned by vereel_create_offer or vereel_list_my_offers | |
| remarks | No | Anything else creators should know | |
| audience | No | Who the creator's audience should be | |
| currency | No | PLN or EUR; defaults to the brand's currency | |
| isBarter | No | The creator receives a product or service instead of (or besides) money | |
| language | No | Language of the campaign; defaults to the brand's language | |
| isPayment | No | The creator is paid | |
| offerType | No | PRODUCT, SERVICE or EVENT | |
| platforms | No | Where the creator publishes: instagram, tiktok, youtube, x | |
| eventPlace | No | EVENT only: where it takes place | |
| applyByDays | No | Creators can apply for this many days after the offer goes live; default 21 | |
| categoryIds | No | Up to 3 category ids from vereel_list_categories | |
| description | No | What the campaign is about and what the creator does | |
| trackingUrl | No | A page to lead to, or null to switch tracking links off | |
| deliverables | No | How many pieces of each kind the creator publishes | |
| eventDateTime | No | EVENT only: when it starts, ISO 8601 | |
| followerMinimum | No | Smallest follower count a creator needs; one of 1000, 2000, 5000, 10000, 25000, 50000, 100000 | |
| presenceAddress | No | ||
| presenceEndDate | No | ||
| productIncluded | No | A paid offer also includes a product or service. Always true for barter. | |
| ticketsIncluded | No | EVENT only: the creator receives tickets or entry | |
| expectedAudience | No | Free-text description of the audience wanted | |
| additionalPayment | No | Cash paid to the creator | |
| logisticsRequired | No | Something must be sent or arranged before the creator can start; default true | |
| presenceStartDate | No | ||
| includedDescription | No | What the creator receives. Required when a product, service or tickets are included. | |
| productServiceValue | No | Value of the product or service the creator receives | |
| publicationDuration | No | How long the post stays online; default DAYS_30 | |
| textProvidedByBrand | No | The brand supplies the post text | |
| requiresGoodsShipping | No | The brand ships goods to the creator | |
| hashtagsProvidedByBrand | No | The brand supplies the hashtags | |
| requiresPhysicalPresence | No | The creator must be somewhere in person |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare mutation, destructive, idempotent, and open-world behavior. The description adds important operational context: partial updates only change supplied fields, photo omission removes photos, public/rejected offers are immutable via API, and a read-and-write brand token is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and constraints, then covers photo handling and auth. Every sentence contributes actionable information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 34 parameters but 91% schema description coverage, annotations covering safety traits, and no output schema, the description provides the missing operational essentials: state eligibility, partial-update behavior, photo handling, alternative tool routing, and auth requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 91%, so the schema carries most parameter detail. The description still adds meaningful semantics beyond the schema, especially that omitted fields are unchanged and how the photos array should be passed for reorder/removal versus addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (change an offer), scopes it to offers the brand created through the API while in review, and distinguishes it from sibling actions like vereel_create_offer and vereel_add_offer_image. An agent can identify what this tool does without reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly covers when the tool can be used (offer still in review) and when it cannot (already public or rejected). It also names the correct alternative for adding photos, vereel_add_offer_image, making the routing decision clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
vereel_add_offer_image - First observed
vereel_create_offer - First observed
vereel_get_my_offer - First observed
vereel_get_offer - First observed
vereel_list_categories - First observed
vereel_list_my_offers - First observed
vereel_search_offers - First observed
vereel_update_offer
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: category listing, public offer search/get, brand-owned offer list/get, create, update, and image addition. The public-versus-owned offer distinction is explicitly reinforced in the descriptions, so list_my_offers/get_my_offer are unlikely to be confused with search_offers/get_offer.
All tools use the same vereel_ prefix and consistent snake_case verb_noun naming. Variants such as list_my_offers and get_my_offer predictably signal ownership scope.
Eight tools is a well-scoped set for an offer-management API, covering browsing, reading, creating, updating, and adding images. Each tool earns its place without obvious redundancy.
The core offer lifecycle is well covered: categories, public discovery, brand-owned listing/getting, creation, in-review updates, and image upload. Minor gaps remain around deleting or closing an offer and managing applications, but the main brand workflow is supported.
Maintenance
Related MCP Connectors
Manage 230M+ influencers, track campaigns, and access real-time CIMS analytics via AI agents
B2B LinkedIn creator campaigns from your AI assistant: find creators, run campaigns, read results.
Search 455M+ Instagram, TikTok and YouTube creators and analyze influencers from your AI assistant.
Instagram analytics, media kits, bio link and brand deals for creators, from your AI assistant.
Related MCP Servers
AlicenseAqualityCmaintenanceEnables AI-native creator discovery for influencer marketing, including creator search, lookalikes, profile lookup, and Instagram post transcript analysis.1426 npm1MIT- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to launch community growth campaigns, boost posts with real engagement, and manage content campaigns via ProductClank, with OAuth and credit-based billing.11MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to automate social media content generation, approval, and publishing, along with blog management, SEO/GEO audits, and ad operations through natural language.3AGPL 3.0

Mysocial Intelligenceofficial
AlicenseNot gradedqualityCmaintenanceEnables creators to connect their social channels so AI assistants can read their published Instagram, TikTok, YouTube, LinkedIn and Threads history, including posts, metrics, transcripts, comments and audience data, then use bundled skills to plan next posts, research creators, maintain brand docs, manage product catalogues and find outreach targets.MIT