> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firstpromoter.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Available Tools

> Full reference for every tool exposed by the FirstPromoter MCP server.

<Warning>
  The FirstPromoter MCP server is experimental. Tool names and parameters may change without notice.
</Warning>

## Reports & analytics

| Tool | Description |
| - | - |
| `get_company_context` | Campaigns, currency, active/pending promoter counts. The "what is this company?" entry point. |
| `get_dashboard_stats` | Revenue, referrals, customers, accepted/pending promoters, pending commissions. |
| `get_dashboard_trending` | Top 3 trending promoters and campaigns over the last 30 days. |
| `get_overview_report` | Revenue, referrals, customers, clicks, sales, refunds, and earnings grouped by day, week, month, or year. |
| `get_promoters_report` | Performance ranking per promoter for a date range. |
| `get_campaigns_report` | Performance ranking per campaign for a date range. |
| `get_urls_report` | Landing-page traffic broken down by clicks, customers, sales, and revenue. |
| `get_traffic_sources_report` | Where referral traffic comes from — direct, organic, social, paid. |

## Campaigns

| Tool | Description |
| - | - |
| `list_campaigns` | Every campaign with key metrics. |
| `get_campaign` | Full detail for one campaign by ID. |
| `create_campaign` | New campaign in the company's default program; attach rewards in the same call. |
| `update_campaign` | Change name, landing URL, cookie life, referral param, visibility, attached rewards. |

## Promoters

| Tool | Description |
| - | - |
| `list_promoters` | Filterable by status, signup/approval date, campaign, revenue. Supports a `q` parameter for fuzzy search across email, first/last name, and website. |
| `get_promoter` | Detailed profile, balances, campaign membership, and all profile fields (name, country, address, social URLs, business details). |
| `create_promoter` | New promoter on an initial campaign with profile data. |
| `update_promoter` | Every field the admin Edit modal exposes: email, name, website, company name and number, VAT ID, phone, address, country, PayPal email, social URLs (Facebook, Twitter, Instagram, YouTube, LinkedIn, Twitch, TikTok), admin note, custom fields, and behaviour flags. |
| `accept_promoter` | State change scoped to a single campaign. Verifies the per-campaign state actually persisted before reporting success. |
| `reject_promoter` | State change scoped to a single campaign. |
| `block_promoter` | State change scoped to a single campaign. |
| `add_promoter_to_campaign` | Enrol in an additional campaign without affecting existing memberships. |
| `move_promoter_to_campaign` | Move between campaigns; optionally soft-move existing referrals. |
| `assign_parent_promoter` | Set or remove the parent in a sub-affiliate hierarchy. |
| `restore_promoter` | Bring an archived promoter back — history and referrals preserved. |
| `update_promoter_campaign` | Per-promoter overrides on a specific campaign: ref token, coupon, display coupon, direct URL, state, and reward override. |

## Referrals

| Tool | Description |
| - | - |
| `list_referrals` | Filter by state, date range, campaign, promoter; sorted newest first. |
| `get_referral` | Single referral with promoter, campaign, customer email, and the full event log. |

## Commissions & payouts

| Tool | Description |
| - | - |
| `list_commissions` | Filter by status, date, campaign, promoter. |
| `list_payouts` | Cash rewards paid to promoters; amounts in cents. |
| `mark_commission_fulfilled` | For non-monetary commissions only (badges, points, free months). |
| `mark_commission_unfulfilled` | Revert a fulfilled non-monetary commission. |

## Rewards

| Tool | Description |
| - | - |
| `list_rewards` | All reward rules defined in the company. |
| `get_reward` | Single reward with name, type, schemas, tier level, and coupon. |
| `create_reward` | New commission or discount rule. |
| `update_reward` | Change name, type, schemas, coupon, tier. |
| `hide_reward` | Soft-delete a reward. Existing attachments and pending commissions keep working, but it can no longer be attached to new campaigns or promoters. |

## Promo codes

| Tool | Description |
| - | - |
| `list_promo_codes` | Codes attached to promoters or campaigns. Optionally filter by promoter campaign or include archived. |
| `get_promo_code` | Single code with reward and scope details. |
| `create_promo_code` | New code attached to a reward, optionally scoped to a specific promoter and campaign. |
| `update_promo_code` | Change code, description, reward, scope. |
| `archive_promo_code` | Soft-delete. Preserved for historical reporting; new redemptions are rejected. |

## Products

| Tool | Description |
| - | - |
| `list_products` | SKUs that can have product-specific commission rules attached. |
| `get_product` | Single product detail. |
| `create_product` | New product with name, external billing-provider ID, and prices. |
| `update_product` | Update name, external billing-provider ID, and prices. |
| `delete_product` | Permanent delete. Historical sales referencing the product keep the name as a snapshot. |

## Assets

| Tool | Description |
| - | - |
| `list_assets` | Marketing assets (banners, swipe copy, images) promoters can download. |
| `get_asset` | Single asset detail. |

## Contracts

| Tool | Description |
| - | - |
| `list_contracts` | Affiliate program contracts (Terms of Service, NDAs) that promoters agree to. |
| `get_contract` | Single contract detail. |

## Emails

| Tool | Description |
| - | - |
| `list_emails` | Filter by status (`draft`, `scheduled`, `sent`, `failed`) and trigger event (`promoter_accepted`, `lead_signup`, `reward_created`, etc.). Use this to map an existing onboarding sequence. |
| `get_email` | Full HTML body and trigger configuration for a single email. |
| `create_email` | Draft a new transactional email tied to a trigger event. Created in draft status with the trigger disabled — an admin must review and enable it from the dashboard before anything sends. Merge tags like `{{promoter.first_name}}` and `{{promoter.email}}` are supported in the body. |
| `update_email` | Edit name, subject, body, or trigger on a non-sent email. Cannot touch emails already in sent status, and cannot flip a draft into a scheduled send. |

Broadcast emails and send-now actions are not exposed via MCP — those remain dashboard-only.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.