offerbanner.com — model context protocol
The banner bar on your website,
operated by your agent.
This URL is an MCP server. It is not a web page for people to use; you are reading the note left on the door. Point an AI client at it and the client gets 16 tools for running the promotional bars on your own site: design a bar, put it on a calendar, and create a real Stripe discount code on your own Stripe key.
One script tag goes on your site once. After that everything a campaign needs — which banner shows, on which days, in which countries, with which code — is a tool call. OfferBanner holds no Stripe key of its own that could reach your account; codes are created with the restricted key you connect per site.
Connect
-
Claude Code
claude mcp add --transport http offerbanner https://offerbanner.com/mcp -
Claude.ai / Claude Desktop
Settings → Connectors → Add custom connector → https://offerbanner.com/mcp -
Anything else that speaks MCP
Streamable HTTP server URL: https://offerbanner.com/mcp
No API key to copy. The first call gets a 401, your client
follows it to the consent screen, you sign in and approve in the browser, and it
stores and refreshes its own token. Scripts and CI, which have no browser to
consent in, can still send Authorization: Bearer ob_… with a key
from Agents.
Endpoint
- URLhttps://offerbanner.com/mcp
- TransportStreamable HTTP (POST, JSON-RPC)
- Protocol2025-06-18
- AuthOAuth 2.1 + PKCE, or a Bearer API key
- Scopesbanners:read, banners:write
- Card/.well-known/mcp.json · /llms.txt
Tools
-
whoamireadReport what this connection is and what it can do: the account it is bound to, the client that connected, whether it holds full access or a narrowed scope, and — if any tools are hidden — exactly why and how to fix it.
-
list_sitesreadList every website on this OfferBanner account: its host, its site code, the one-line snippet that installs it, and what it is showing right now.
-
get_sitereadOne site in depth: the snippet that installs it, every banner filed under it, and its whole schedule.
-
create_sitewriteRegister a website and create its site code, so the merchant has a tag to install. This is the first call for a host that list_sites does not show.
-
check_installreadFetch a page of the merchant's site and say whether the tag is really working. It is the same check that runs by itself the moment the merchant opens their site's Install screen, run here from your side of the conversation.
-
get_site_statsreadDaily traffic for a whole site — every banner filed under that host, added up — plus the per-banner breakdown for the same window.
-
schedule_sitewriteDecide which banner a site shows, and when. This is the only verb that changes what a visitor sees — there is no separate activate step and no status to set.
-
create_bannerwriteDesign a bar for one site. The banner is filed under that site immediately — every banner belongs to exactly one host — and nobody sees it until schedule_site books it.
-
update_bannerwriteChange a banner: its copy, colours, size, position, countdown, planned discount — or which site it belongs to. Fields you omit are left exactly as they are, so send only what changes.
-
get_bannerreadRead one banner in full: its copy, colours, size, position, countdown, which site it belongs to, where it is booked, and whether its discount code is backed by anything real.
-
get_banner_statsreadDaily traffic for one banner, plus totals for the window: views, clicks, click-through rate, dismissals, discount-code copies — and redeemed, how many orders actually used the code at checkout.
-
create_offerwriteCreate a real discount code on the user's own Stripe account and attach it to a banner, so the banner advertises a code that actually works at checkout.
-
retire_offerwriteTurn off the discount code a banner carries, in the merchant's own Stripe. A code that exists is refused at checkout from that moment; a plan that had not created one yet is cancelled before it can.
-
delete_bannerwriteDelete a banner and every version of it, permanently. Its stats go with it.
-
connect_stripewriteHand the merchant a one-time link that connects a Stripe account to one site. Every discount on that host runs on this key: create_offer and a booked offerPlan create the shared code with it, a per-visitor banner mints each visitor their own code with it at the moment they unwrap the gift, and get_banner_stats reads redemptions back through it. Without a key the shared code is never created, every gift opens empty, and redeemed answers no_key.
-
list_activityreadEverything that changed on this account, newest first: what was done, to what, by whom, and from where.
Cost
Unlimited sites. Unlimited banners. Unmetered views. $49, once — Pro is one payment, not a subscription, and nobody here counts impressions: a bar seen a million times costs what a bar seen twice costs. Free runs one banner at a time per site: worldwide, from the moment the page loads, on whatever dates the calendar books it, with a code the merchant made themselves. Pro adds country targeting, delay/scroll/exit/click triggers, several campaigns at once, discount codes created on the merchant's own Stripe account, every effect and no "Powered by OfferBanner" credit. A Free account can still build a country-targeted campaign: it is saved, it is on the calendar, and it goes live the moment they pay. See pricing.