MCP server
The affiliate tracker your AI can actually use.
LimeliJourney ships a tenant-scoped Model Context Protocol server. Point Claude Desktop, Claude Code or any MCP client at it and your assistant can read your live program and run safe changes over the same authenticated API your dashboard uses. No affiliate tracker on the market has one.
Reads and safe writes over your authenticated API, with no database access and DELETE gated until you enable it.
What it is
Your program, as tools your assistant understands
The MCP server turns every capability of the platform API into a typed tool an AI can
call, generated straight from the OpenAPI spec so it tracks the API automatically. Your
assistant sees list_campaigns, get_offer,
report_overview and the rest, and calls them the way it would any tool,
with your reports and records coming back as structured data.
- Runs locally as an MCP stdio server: Claude Desktop, Claude Code, or any MCP client
- The same tool surface the in-product AI assistant uses, kept in lockstep with the API
- Read plus safe create and update across advertisers, affiliates, offers, campaigns and channels
- The full reporting suite: overview, timeseries, conversions, and breakdowns by affiliate, channel, offer and sub-ID
Safe by design
It can't reach where your token can't
The server is a thin client of the authenticated API, not a second copy of the platform. It holds no database credentials and no tenant logic. It forwards your login token on every call and lets the API enforce isolation, exactly as it does for the dashboard, so a token for one tenant can only ever reach that tenant's data.
tenant_idis never a tool argument and never sent in a request body; the server refuses it- Tenancy is enforced by the API from your Cognito token, never derived by the server
- DELETE and the bulk backfill imports are off unless you set
LIMELI_ALLOW_DESTRUCTIVE=1 - Your MCP client asks you to approve each tool call before it runs
What you'd ask
Just ask your tracker
Stop clicking through dashboards to answer one question. Ask your assistant in plain language and it calls the right tool, reads your live data, and answers with real numbers, or proposes a change and runs it once you approve.
-
Which affiliate drove yesterday's revenue?
Calls
report_by_affiliatefor the date and returns the ranked revenue and conversions. -
Pause campaign 212, it's burning budget.
Proposes
update_campaignto set its status to paused, and runs it once you approve the call. -
Show me conversions that came in without revenue.
Calls
report_conversions, filters for zero-revenue rows, and flags the offers to check. -
Break performance down by channel this month.
Calls
report_by_channeland returns clicks, conversions and revenue per channel. -
Add Northlight Media as a new affiliate.
Proposes
create_affiliatewith the details, and creates the record once you approve.
Setup
Connected in three steps
The server ships in the repo under mcp-server/. Install it, drop one entry
into your client's MCP config with your API URL and login token, then restart to connect.
Install the server
Clone the repo and install the requirements. The core runs on stdlib; the one dependency is the MCP SDK.
# from the repo root
pip install -r mcp-server/requirements.txt
Add it to Claude Desktop or Claude Code
Add one server entry to your MCP config. Set LIMELI_API_BASE to your platform API URL and LIMELI_BEARER_TOKEN to your dashboard login (Cognito id) token.
{
"mcpServers": {
"limelijourney": {
"command": "python",
"args": ["/abs/path/to/mcp-server/server.py"],
"env": {
"LIMELI_API_BASE": "https://<your-api>.execute-api.us-west-2.amazonaws.com/prod",
"LIMELI_BEARER_TOKEN": "<your-cognito-id-token>"
}
}
}
}
Claude Code reads the same shape. For any other MCP client, launch python mcp-server/server.py with those two environment variables set.
Restart and ask
Restart your client. The limelijourney tools appear, and you can ask your first question. To also expose DELETE and bulk backfill, add LIMELI_ALLOW_DESTRUCTIVE=1 to the env, it's off until you do.
# in your MCP client
Using limelijourney, what were my
top 5 offers by revenue last week?
Questions, answered
Which AI clients can use it?
Any MCP-compatible client. It speaks the standard MCP stdio protocol, so Claude Desktop and Claude Code work out of the box with a small config entry, and any other client that can launch a command works the same way.
Can the AI reach another tenant's data?
No. The server forwards your Cognito login token on every call and never resolves tenancy itself, so isolation is enforced by the API exactly as it is for the dashboard. tenant_id is never a tool argument and is never sent in a request body, so a token for one tenant can only ever reach that tenant's data.
Can it delete things or make destructive changes?
Not by default. Only authenticated, non-deprecated operations are exposed, and those are read plus safe create and update. DELETE operations and the bulk backfill imports are off unless you explicitly set LIMELI_ALLOW_DESTRUCTIVE=1.
On top of that, MCP clients like Claude Desktop and Claude Code prompt you to approve each tool call before it runs.
Does it need database access?
No. The server holds no database credentials and contains no tenant logic. It is a thin HTTP client of the platform API; every request is authenticated with your login token and answered by the same handlers that serve the dashboard.
How does it authenticate?
With your Cognito id token, the same token your dashboard login uses. You set it as the LIMELI_BEARER_TOKEN environment variable, along with LIMELI_API_BASE, your platform API invoke URL. The token is read from the environment and never logged. Super-admins can target a specific tenant with an X-Tenant-Id header, set only from server config and honored solely by the API's role check.
What can it actually do?
The tool surface is generated from the platform's OpenAPI spec, so it tracks the API automatically. It covers listing and reading advertisers, affiliates, offers, campaigns and channels, safe create and update on those entities, and the full reporting suite: overview, timeseries, conversions, clicks, and breakdowns by affiliate, channel, offer and sub-ID. It is the same tool surface the in-product AI assistant uses.
What the MCP server operates on
The tools are only as good as the platform under them. Here is the tracking they read, how the journey is credited, the reporting they reason over, and the AI that acts inside the product.
The in-product operator
The same tools, inside the app: LimeliChat proposes the exact change and applies it on your approval.
Explore AI TrackingFirst-party tracking
Redirect links, a drop-in pixel and a first-party SDK that survives Safari and iOS cookie loss.
Explore tracking AttributionEvery click, credited
Idempotent ingestion and end-to-end sub-IDs so re-fires never double-count the journey.
Explore attribution ReportingReporting that reads back
Live reports across clicks, conversions, affiliates, offers and revenue, on your real data.
Explore reportingGive your assistant the keys, safely.
Book a demo and we'll wire the MCP server to your kind of program, show you the tenant boundary and the per-call approvals, and set the guardrails where you want them before it touches a thing.
Not ready for a demo?
Get launch notes and product updates. No spam, unsubscribe anytime.