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_id is 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_affiliate for the date and returns the ranked revenue and conversions.
  • Pause campaign 212, it's burning budget. Proposes update_campaign to 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_channel and returns clicks, conversions and revenue per channel.
  • Add Northlight Media as a new affiliate. Proposes create_affiliate with 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.

1

Install the server

Clone the repo and install the requirements. The core runs on stdlib; the one dependency is the MCP SDK.

Terminalbash
# from the repo root
pip install -r mcp-server/requirements.txt
2

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.

claude_desktop_config.jsonjson
{
  "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.

3

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.

Claudeprompt
# 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.

Give 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.