Run campaigns from Claude, Codex or any MCP client.
SparkleTree is an always-on digital promoter with an MCP server in front of it. Brief it, generate variants, publish to a screen or a store and read the numbers, from the agent you already use.
Run campaigns from any MCP client
Create, generate, publish and measure campaigns from Claude, Codex, Cursor or your own agent. Streamable HTTP, OAuth 2.1 with PKCE, dynamic client registration.
ConnectEmbed campaigns in your site or app
A one-line edge script for any page, and @sparkletree/react with Hero and Cta islands for React apps. Campaigns resize themselves and stay on brand.
Read the SDK docsEverything an agent needs to find us
llms.txt, auth.md, an RFC 9727 API catalog, an MCP server card and an agent skills index, all on this host. The homepage is served as markdown on request.
See the filesConnect the MCP server.
The server is at https://app.sparkletree.io/api/mcp. It uses streamable HTTP and OAuth 2.1 with
PKCE, and it registers clients dynamically (RFC 7591), so there is no API key to copy. Point a client at it
and sign in when the browser opens.
In Claude Code:
claude mcp add --transport http sparkletree https://app.sparkletree.io/api/mcp In any client that reads an MCP config file:
{
"mcpServers": {
"sparkletree": { "url": "https://app.sparkletree.io/api/mcp" }
}
}
Tool profiles shape which tools a client sees. Append ?profile=<name> to the URL to pick
one; authorisation is enforced per workspace regardless of profile. Ask the server with
get_platform_info and the tool_profiles topic.
The auth flow in five steps.
- Register.
POST https://clerk.sparkletree.io/oauth/registerwith a client name and redirect URIs. Keep theclient_id. - Authorise. Send the user to
/oauth/authorizewith PKCE (S256). They sign in and consent in the browser. - Exchange.
POST /oauth/tokenwith the code and verifier. You get an access token, and a refresh token ifoffline_accesswas granted. - Call.
POST https://app.sparkletree.io/api/mcpwith the bearer token. - Refresh or revoke. Refresh on 401. Revoke at
/oauth/token/revokewhen you are done.
An unauthenticated call returns 401 with a WWW-Authenticate header pointing at the protected
resource metadata, from which compliant clients bootstrap the whole flow. The long version, with error
handling, is auth.md.
What the tools do.
| Tool | What it is for |
|---|---|
get_platform_info | Health, organisation details and usage counts, plus the tool profiles available. |
query_brand, manage_brand | Read and update the brand book the campaigns write in. |
query_products, manage_products | The things being promoted: events, drinks, merch, store items. |
query_campaigns, manage_campaigns | List, inspect, publish, pause and edit campaigns and their variants. |
generate_campaign | Write a brief, get variants back, review them, publish. |
query_surfaces, manage_surfaces | Screens, QR codes, embeds and pages a campaign is deployed to. |
query_analytics | Impressions, reach, questions asked and follow-up actions per campaign and surface. |
query_video, render_video, video_commission | Turn a winning variant into a clip. |
query_* tools are read-only. manage_*, generate_* and
render_* mutate or spend, and good agents confirm before publishing, deploying, deleting or
spending credits.
Embed a campaign in your own site.
One script tag turns any container into a live campaign surface that resizes itself. For React there is
@sparkletree/react with Hero and Cta islands, and @sparkletree/core underneath for
everything else. Register your origin in the workspace and the campaign renders on your page in your brand.
<div data-sparkletree-container data-sparkletree-organization-id="…" data-sparkletree-surface-id="…"></div>
<script async src="https://app.sparkletree.io/api/embed/v1/script.js"></script> The SDK documentation covers fragments, what visitors see, how failures degrade and the full API reference. To see a live surface first, open the demo campaign and ask it a question.
Pair a screen.
Signage and DOOH screens run the SparkleTree Android kiosk app. On a small Android device in the screen's HDMI
port, it pairs any screen to a surface in minutes and keeps the campaign live and current. Anything with a
browser can show a surface too. The hardware and pairing steps are on the
integrations page.
Surfaces are managed with manage_surfaces, so an agent can create the surface, deploy the campaign
and read what the screen showed from query_analytics.
Discovery files on this host.
- /llms.txt: the site summarised for language models.
- /index.md: the homepage as markdown. The Worker also serves it for
Accept: text/markdownon/. - /auth.md: how agents register and authenticate, step by step.
- /.well-known/api-catalog: RFC 9727 discovery links for the MCP server.
- /.well-known/mcp/server-card.json: MCP discovery.
- /.well-known/agent-skills/index.json: agent skills index, with the SparkleTree skill.
- /.well-known/agent-card.json and /.well-known/ard.json: agent card and resource discovery.
The homepage also exposes WebMCP tools to browsers that support navigator.modelContext, and
robots.txt allows every major AI crawler by name.
Questions developers ask us.
Which MCP clients work?
Any client that speaks streamable HTTP and OAuth 2.1 with PKCE: Claude (desktop, Code and claude.ai connectors), Codex, Cursor, and anything built on the official MCP SDKs. The server is self-describing, so a compliant client discovers the authorisation server from the first 401 and runs the flow itself.
Do I need a developer to use SparkleTree?
No. Screens, QR codes, social and the store need no code. This page is for people who want campaigns inside their own site or app, or who want to drive SparkleTree from an agent. Every plan includes the MCP server; Enterprise adds full API access. The integrations table lists what connects on which plan, and pricing has the plans.
Can an agent act without a human?
Reading this host needs nothing. Acting on a SparkleTree workspace needs a signed-in human to grant consent once in the browser, after which the agent holds a bearer token, and a refresh token if offline_access was granted. There is no device-code or claim flow, by design. The steps are in auth.md.
Is there a rate limit?
Yes, 120 requests per minute per token. A 429 means back off exponentially and retry. 5xx is transient and safe to retry; 4xx means fix the request rather than replaying it.
Want to see it driven from an agent?
Book a walkthrough and a founder will run a campaign from Claude on the call.