Skip to main content
Glama
hans100x-dotcom

Vereel MCP Server

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

vereel_create_offer

Add an offer to Vereel. It waits for review before it goes public.

yes (read and write)

vereel_add_offer_image

Add a photo to an offer: from a link, or from a file on your computer.

yes (read and write)

vereel_update_offer

Change an offer while it is still in review.

yes (read and write)

vereel_list_my_offers

List your offers and where each one stands (in review, public, rejected).

yes

vereel_get_my_offer

One of your offers in full, with what is still missing and the reviewer's note.

yes

vereel_list_categories

The categories offers are filed under.

no

vereel_search_offers

Search the public offers by words, category, type, platform and language.

no

vereel_get_offer

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-mcp

Add 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

VEREEL_API_TOKEN

Your brand token (vrl_…). Without it the server can only search public offers.

VEREEL_READ_ONLY

1 hides the tools that create or change offers. Use it with a token you only want to read with.

VEREEL_IMAGE_DIRS

Folders the assistant may upload photos from, separated by ; on Windows and : elsewhere. Default: any folder. Setting it is a good idea.

VEREEL_API_URL

Default https://www.vereel.com/api/v1/public. http:// is accepted only for localhost.

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_DIRS limits 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

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 --help

The 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 checks

Roadmap

  • 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

Apache-2.0

Available Tools

8 tools
vereel_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.

NameRequiredDescriptionDefault
offerIdYesThe offer's id, as returned by vereel_create_offer or vereel_list_my_offers
filePathNoPath of a JPEG, PNG or WebP of at most 5 MB on the machine this server runs on
imageUrlNoAn https:// URL of a JPEG, PNG or WebP of at most 5 MB, which Vereel downloads

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
nameYesCampaign name shown to creators
remarksNoAnything else creators should know
audienceNoWho the creator's audience should be
currencyNoPLN or EUR; defaults to the brand's currency
isBarterYesThe creator receives a product or service instead of (or besides) money
languageNoLanguage of the campaign; defaults to the brand's language
imageUrlsNoUp to 6 https image URLs Vereel downloads (JPEG, PNG or WebP, ≤ 5 MB each). The first is the cover.
isPaymentYesThe creator is paid
offerTypeYesPRODUCT, SERVICE or EVENT
platformsYesWhere the creator publishes: instagram, tiktok, youtube, x
eventPlaceNoEVENT only: where it takes place
applyByDaysNoCreators can apply for this many days after the offer goes live; default 21
categoryIdsYesUp to 3 category ids from vereel_list_categories
descriptionYesWhat the campaign is about and what the creator does
trackingUrlNoPage that the creators' tracking links lead to; enables tracking links
deliverablesNoHow many pieces of each kind the creator publishes
eventDateTimeNoEVENT only: when it starts, ISO 8601
followerMinimumNoSmallest follower count a creator needs; one of 1000, 2000, 5000, 10000, 25000, 50000, 100000
presenceAddressNo
presenceEndDateNo
productIncludedNoA paid offer also includes a product or service. Always true for barter.
ticketsIncludedNoEVENT only: the creator receives tickets or entry
expectedAudienceNoFree-text description of the audience wanted
additionalPaymentNoCash paid to the creator
logisticsRequiredNoSomething must be sent or arranged before the creator can start; default true
presenceStartDateNo
includedDescriptionNoWhat the creator receives. Required when a product, service or tickets are included.
productServiceValueNoValue of the product or service the creator receives
publicationDurationNoHow long the post stays online; default DAYS_30
textProvidedByBrandNoThe brand supplies the post text
requiresGoodsShippingNoThe brand ships goods to the creator
hashtagsProvidedByBrandNoThe brand supplies the hashtags
requiresPhysicalPresenceNoThe creator must be somewhere in person

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 offersA
Read-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).

NameRequiredDescriptionDefault
offerIdYesThe offer's id, as returned by vereel_create_offer or vereel_list_my_offers

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 offerA
Read-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.

NameRequiredDescriptionDefault
offerIdYesThe offer's id or numeric id

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 categoriesA
Read-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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 offersA
Read-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).

NameRequiredDescriptionDefault
limitNoItems per page, 1–50, default 20
cursorNoThe nextCursor of the previous page

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 offersA
Read-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.

NameRequiredDescriptionDefault
qNoWords in the name or description
limitNoItems per page, 1–50, default 20
cursorNoThe nextCursor of the previous page
categoryNoA category id from vereel_list_categories
languageNo
platformNo
offerTypeNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 reviewA
DestructiveIdempotent

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.

NameRequiredDescriptionDefault
nameNoCampaign name shown to creators
photosNoThe offer's current photo URLs in the new order; leaving one out removes it. The first is the cover.
offerIdYesThe offer's id, as returned by vereel_create_offer or vereel_list_my_offers
remarksNoAnything else creators should know
audienceNoWho the creator's audience should be
currencyNoPLN or EUR; defaults to the brand's currency
isBarterNoThe creator receives a product or service instead of (or besides) money
languageNoLanguage of the campaign; defaults to the brand's language
isPaymentNoThe creator is paid
offerTypeNoPRODUCT, SERVICE or EVENT
platformsNoWhere the creator publishes: instagram, tiktok, youtube, x
eventPlaceNoEVENT only: where it takes place
applyByDaysNoCreators can apply for this many days after the offer goes live; default 21
categoryIdsNoUp to 3 category ids from vereel_list_categories
descriptionNoWhat the campaign is about and what the creator does
trackingUrlNoA page to lead to, or null to switch tracking links off
deliverablesNoHow many pieces of each kind the creator publishes
eventDateTimeNoEVENT only: when it starts, ISO 8601
followerMinimumNoSmallest follower count a creator needs; one of 1000, 2000, 5000, 10000, 25000, 50000, 100000
presenceAddressNo
presenceEndDateNo
productIncludedNoA paid offer also includes a product or service. Always true for barter.
ticketsIncludedNoEVENT only: the creator receives tickets or entry
expectedAudienceNoFree-text description of the audience wanted
additionalPaymentNoCash paid to the creator
logisticsRequiredNoSomething must be sent or arranged before the creator can start; default true
presenceStartDateNo
includedDescriptionNoWhat the creator receives. Required when a product, service or tickets are included.
productServiceValueNoValue of the product or service the creator receives
publicationDurationNoHow long the post stays online; default DAYS_30
textProvidedByBrandNoThe brand supplies the post text
requiresGoodsShippingNoThe brand ships goods to the creator
hashtagsProvidedByBrandNoThe brand supplies the hashtags
requiresPhysicalPresenceNoThe creator must be somewhere in person

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 8 tool updatesv0.1.0
    • First observedvereel_add_offer_image
    • First observedvereel_create_offer
    • First observedvereel_get_my_offer
    • First observedvereel_get_offer
    • First observedvereel_list_categories
    • First observedvereel_list_my_offers
    • First observedvereel_search_offers
    • First observedvereel_update_offer

TDQS

A4.3/5.0

Scored across 8 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI-native creator discovery for influencer marketing, including creator search, lookalikes, profile lookup, and Instagram post transcript analysis.
    14
    26 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to launch community growth campaigns, boost posts with real engagement, and manage content campaigns via ProductClank, with OAuth and credit-based billing.
    11
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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