---
title: "Connect Easypromos to ChatGPT: Manage Campaigns and Prize Inventory"
slug: connect-easypromos-to-chatgpt-manage-campaigns-and-prize-inventory
date: 2026-10-07
author: Uday Gajavalli
categories: ["AI & Agents"]
excerpt: "Learn how to connect Easypromos to ChatGPT using Truto's MCP Server. Automate prize inventories, virtual coin ledgers, and complex campaign workflows."
tldr: "Connect Easypromos to ChatGPT in minutes using Truto's managed MCP server. This guide covers how to securely expose campaign data, prize inventories, and virtual coin ledgers to AI agents without writing integration code."
canonical: https://truto.one/blog/connect-easypromos-to-chatgpt-manage-campaigns-and-prize-inventory/
---

# Connect Easypromos to ChatGPT: Manage Campaigns and Prize Inventory

**Easypromos in ChatGPT, in about a minute.** The best way to connect Easypromos to ChatGPT is Elaichi: connect Easypromos to Elaichi once, then add Elaichi to ChatGPT as a connector. Two steps, about a minute, with a 14-day free trial and no credit card required.

1. **Start your free trial.** Create your Elaichi account. 14 days free, no credit card required.
2. **Connect Easypromos.** Connect Easypromos once in Elaichi. ChatGPT never gets more access than you have.
3. **Add Elaichi to ChatGPT.** In ChatGPT, open Plugins, press +, and paste https://api.elaichi.ai/mcp into Server URL. Sign in and approve.

[Start free on Elaichi, 14 days, no credit card required](https://app.elaichi.ai/signup?utm_source=truto.one&utm_medium=referral&utm_campaign=launchpad&utm_content=post_markdown&utm_term=easypromos) · [Easypromos on Elaichi](https://elaichi.ai/connectors/easypromos/?utm_source=truto.one&utm_medium=referral&utm_campaign=launchpad&utm_content=post_markdown&utm_term=easypromos)

*Building Easypromos into your own product? The guide below is for you.*

---

If you want to connect Easypromos to ChatGPT so your AI agents can audit prize inventories, orchestrate virtual coin ledgers, and manage complex participation stages, you need a [Model Context Protocol (MCP) server](https://truto.one/auto-generated-mcp-tools-for-ai-agents-a-2026-architecture-guide/). If your team uses Claude, check out our guide on [connecting Easypromos to Claude](https://truto.one/connect-easypromos-to-claude-track-user-engagement-and-virtual-coins/) or explore our broader architectural overview on [connecting Easypromos to AI Agents](https://truto.one/connect-easypromos-to-ai-agents-sync-participations-and-leaderboards/).

Giving a Large Language Model (LLM) [read and write access](https://truto.one/connect-ai-agents-to-read-and-write-data-in-salesforce-and-hubspot/) to a gamification and digital promotions platform is an engineering challenge. You either spend weeks building, hosting, and maintaining a custom MCP server to translate LLM JSON arguments into Easypromos's highly specific payload structures, or you use a managed infrastructure layer.

This guide breaks down exactly how to use Truto to generate a secure, authenticated MCP server for Easypromos, connect it natively to ChatGPT, and execute complex campaign workflows - including virtual coin allocations and prize inventory management - using natural language.

> Stop writing boilerplate API integration code. Let Truto generate secure, managed MCP servers for your AI agents in seconds.
>
> [Talk to us](https://truto.one/book-a-demo/)

## The Engineering Reality of the Easypromos API

A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, implementing it against the Easypromos API is exceptionally painful. 

If you decide to build a custom MCP server for Easypromos, you own the entire API lifecycle. Here are the specific integration challenges that break standard CRUD assumptions when working with Easypromos:

### Stage-Gated Participation State Machines
Easypromos does not use simple monolithic entry forms. Promotions are broken down into participation "stages" (e.g., a spin-the-wheel stage, a code-validation stage, a survey stage). Users have remaining participations tied to specific stages, governed by frequency limits (per day, per hour) or prerequisite requirements (holding enough virtual coins). If an LLM needs to manually trigger a participation for a user, your MCP server cannot just hit a generic `/participate` endpoint. It must first resolve the `promotion_id`, query the `stage_id`, validate the user's remaining participation limits, and then submit the participation to the correct stage envelope.

### Multi-Currency Virtual Coin Ledgers
Modern promotions often use multicurrency economies. When an agent needs to reward a user with 50 points, it must interact with the virtual coin ledger. The API does not allow blind updates to a "score" integer. Instead, you must query the user's specific coin balances (which returns an array of coin objects, as a single promotion can have multiple currencies), and then execute a transactional mutation using an exact `coin_id`, passing a specific `amount` (positive for credits, negative for debits) and a `reason` string for audit trails. Your MCP server has to orchestrate this multi-step ledger logic flawlessly, or risk corrupting the campaign economy.

### Polymorphic Prize Inventory Allocation
Prizes in Easypromos have strict inventory constraints. An LLM querying prize data will encounter polymorphic payload structures where a prize might be a direct digital download, a physical item requiring shipping details, or a probability-based instant win. The API tracks `units` (total available) versus `given` (already claimed). Your tool definitions must map these complex, deeply nested JSON schemas perfectly so the LLM understands exactly how much prize liquidity remains before it attempts to issue a reward.

### Rate Limits and Traffic Spikes
Easypromos campaigns often see massive, sudden spikes in traffic. When you hit a rate limit, the API returns an HTTP 429 error. Truto normalizes upstream rate limit info into standardized headers (`ratelimit-limit`, `ratelimit-remaining`, `ratelimit-reset`) per the IETF spec. It is important to note that Truto does not retry, throttle, or apply backoff on rate limit errors automatically. Truto passes that 429 error directly to the caller. Your AI agent or framework (like LangGraph or AutoGen) is fully responsible for reading these standardized headers and implementing its own retry and backoff logic.

## Generating and Connecting the Easypromos MCP Server

Truto dynamically generates MCP tools based on the integration's documented resources and schemas. You can generate a dedicated MCP server scoped entirely to a single Easypromos account in a matter of seconds, either via the Truto dashboard or the Truto REST API.

### Method 1: Creating the Server via the Truto UI

For teams moving fast, the dashboard provides a [zero-code path](https://truto.one/how-to-connect-claude-to-saas-apis-via-mcp-zero-data-retention/):

1. Log into your Truto account and navigate to **Integrated Accounts**.
2. Select your connected Easypromos account (or connect a new one).
3. Click the **MCP Servers** tab.
4. Click **Create MCP Server**.
5. Select your desired configuration (e.g., restrict methods to `read` only, or filter by specific tags like `promotions` or `prizes`).
6. Copy the generated MCP server URL. (It will look like `https://api.truto.one/mcp/<secure-token>`).

### Method 2: Creating the Server via the API

For platform engineers dynamically provisioning AI agents for end-users, you can generate MCP servers programmatically. Make a `POST` request to the `/integrated-account/:id/mcp` endpoint.

```bash
curl -X POST https://api.truto.one/integrated-account/<easypromos_account_id>/mcp \
  -H "Authorization: Bearer $TRUTO_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Easypromos Campaign Manager AI",
    "config": {
      "methods": ["read", "write", "custom"],
      "tags": ["promotions", "prizes", "virtual_coins"]
    }
  }'
```

The API response returns your routing token and the exact URL to hand to ChatGPT:

```json
{
  "id": "mcp_abc123",
  "name": "Easypromos Campaign Manager AI",
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}
```

### Connecting to ChatGPT (UI Method)

If you are using ChatGPT Pro, Plus, Business, Enterprise, or Education, you can add this server directly to your workspace:

1. Open ChatGPT and navigate to **Settings -> Apps -> Advanced settings**.
2. Toggle on **Developer mode**.
3. Under **MCP servers / Custom connectors**, click **Add**.
4. Name the connection (e.g., "Easypromos API").
5. Paste the Truto MCP URL into the **Server URL** field and click **Add**.

ChatGPT will immediately ping the endpoint, execute an MCP `initialize` handshake, and learn all the available Easypromos tools.

### Connecting to Custom Frameworks (Config File Method)

If you are running a custom agent architecture (or local desktop clients) that requires standard MCP configuration files, you can wrap the Truto URL using the standard SSE transport mechanism.

Create or update your `mcp.json` (or framework-equivalent config) like this:

```json
{
  "mcpServers": {
    "easypromos-truto": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "https://api.truto.one/mcp/a1b2c3d4e5f6..."
      ]
    }
  }
}
```

## Easypromos Hero Tools for ChatGPT

Truto automatically maps the Easypromos API surface into LLM-friendly schemas. Instead of generic CRUD, the LLM sees descriptive tools. Here are the highest-leverage hero tools for campaign management.

### `list_all_easypromos_promotions`
Retrieves the foundational list of campaigns in the account. This is almost always the first tool an agent calls to orient itself and find the required `promotion_id` for subsequent actions.

> "Fetch all currently active Easypromos promotions and find the ID for the 'Summer Spin to Win' campaign."

### `get_single_easypromos_prizes_inventory_by_id`
Crucial for auditing prize liquidity. This tool retrieves the complete list of prize types defined in a promotion, exposing the exact number of `units` originally allocated versus the number already `given` to users.

> "Check the prize inventory for the Summer Spin to Win promotion. Are we running low on the $50 Gift Card prize tier?"

### `list_all_easypromos_participation_check_requirements`
Evaluates whether a specific user is eligible to enter a participation stage. This handles the complex logic of checking if the user meets gating requirements - most commonly, whether they have a sufficient Virtual Coin balance to "buy" a spin or entry.

> "Check if user ID 99812 meets the requirements to participate in stage 4 of the promotion."

### `list_all_easypromos_participation_participates`
Executes a new participation for a registered user in a specific stage (like direct participation, spin the wheel, or scratch & win). It consumes one of the user's available entries and returns the `participation_id` and the `prize` if they won instantly.

> "Submit a spin-the-wheel participation for user 99812 in stage 4. Tell me if they won a prize and what their remaining participation count is."

### `list_all_easypromos_coin_users`
Queries the virtual coin ledger for a specific participant. Because promotions can support multiple currencies, this returns all coin balances (ID, name, and current balance) attached to that user.

> "Pull the virtual coin balances for user 99812. How many 'Gold Tokens' do they currently hold?"

### `create_a_easypromos_coin_transaction`
Mutates the ledger. This tool adds or removes virtual coins for a participant. Passing a positive amount credits the user; passing a negative amount spends their coins. It requires a specific `reason` string for the audit log.

> "Credit user 99812 with 500 'Gold Tokens' and log the reason as 'Customer Support appeasement for system error'."

### `get_single_easypromos_ranking_by_id`
Retrieves the leaderboard data for a specific promotion. It returns an array of ranked users, their points, and full profile attributes, capped to the requested limit (defaults to 25).

> "Get the current ranking leaderboard for the Summer promotion. Who are the top 5 players right now and what are their point totals?"

To see the full schema definitions, pagination mechanics, and the remaining endpoints available, view the [Easypromos integration page](https://truto.one/integrations/detail/easypromos).

## Workflows in Action

When you connect Easypromos to ChatGPT using Truto, the LLM can chain these operations together to handle complex, multi-step requests autonomously.

### Workflow 1: Auditing Prize Liquidity and Campaign Health

Campaign managers need to ensure instant-win promotions don't run out of prizes prematurely. Instead of clicking through five different reporting dashboards, they can ask the agent.

> "Look up the 'Holiday Giveaway' promotion. Check the prize inventory and tell me if any physical prize tiers have less than 10% of their units remaining."

**How the agent executes this:**
1. Calls `list_all_easypromos_promotions` to search for "Holiday Giveaway" and extracts the `id`.
2. Calls `get_single_easypromos_prizes_inventory_by_id` using that promotion ID.
3. Parses the array of prize types, comparing the `units` (total capacity) against the `given` (distributed) fields.
4. Returns a natural language summary to the user, highlighting that the "T-Shirt" tier has 450/500 units given, dipping below the 10% threshold.

```mermaid
sequenceDiagram
    participant User as Campaign Manager
    participant ChatGPT as ChatGPT
    participant Truto as Truto MCP
    participant Easypromos as Easypromos API

    User->>ChatGPT: "Check prize inventory for Holiday Giveaway..."
    ChatGPT->>Truto: Call list_all_easypromos_promotions
    Truto->>Easypromos: GET /promotions
    Easypromos-->>Truto: { promotions: [...] }
    Truto-->>ChatGPT: Returns promotion ID
    ChatGPT->>Truto: Call get_single_easypromos_prizes_inventory_by_id(id)
    Truto->>Easypromos: GET /promotions/{id}/prizes/inventory
    Easypromos-->>Truto: { inventory: [...] }
    Truto-->>ChatGPT: Returns units vs given
    ChatGPT-->>User: "The T-Shirt tier is critically low (450/500 given)."
```

### Workflow 2: Customer Support Virtual Coin Resolution

If a user complains that a system glitch consumed their coins without granting them a spin, support agents need to audit the ledger, verify the user, and manually issue a refund.

> "Find user email 'john.doe@example.com' in the Holiday Giveaway. Check their coin balance. If they have less than 50 coins, credit them 100 coins with the reason 'Support ticket refund'."

**How the agent executes this:**
1. Calls `list_all_easypromos_promotions` to resolve the campaign ID.
2. Calls `list_all_easypromos_users` (passing the promotion ID) to search for `john.doe@example.com` and retrieves their user ID.
3. Calls `list_all_easypromos_coin_users` to verify John's current balance.
4. If the balance condition is met, calls `create_a_easypromos_coin_transaction` with a positive integer and the specified reason.
5. Returns a confirmation to the support agent that the ledger was successfully updated.

## Security and Access Control

Exposing an enterprise promotions engine to an LLM requires strict boundaries. Truto provides four critical security controls on the MCP server configuration:

*   **Method Filtering (`config.methods`):** Restrict the server entirely to safe operations. By passing `["read"]` during creation, the MCP server will only expose GET/list tools (like `list_all_easypromos_promotions`), completely stripping the LLM's ability to mutate coins or trigger participations.
*   **Tag Filtering (`config.tags`):** Scope the server by domain. If you only want an agent to handle ledger operations, pass `["virtual_coins"]`. Tools related to email segments or organizing brands are hidden from the model.
*   **Authentication Requirement (`require_api_token_auth`):** By default, the MCP URL acts as a bearer token. For higher security, set this to `true` - the client must then inject a valid Truto API token into the HTTP headers to successfully call the tools.
*   **Time-to-Live (`expires_at`):** Generate short-lived MCP servers for temporary workflows. When the ISO timestamp passes, the server URL instantly revokes itself and all underlying KV storage is purged.

## The Shift to Agentic Campaign Ops

Managing digital sweepstakes, leaderboards, and virtual economies has historically required dedicated dashboard operators clicking through complex UIs. When you connect Easypromos to ChatGPT via Truto, you convert that entire operational surface area into a conversational interface. 

By normalizing the bizarre realities of stage-gated API endpoints, polymorphic prize objects, and standardized rate-limit headers, Truto removes the integration friction. Your engineering team avoids weeks of parsing YAML docs and mapping JSON-RPC schemas, allowing your operations teams to orchestrate campaigns autonomously with AI.

> Stop writing boilerplate API integration code. Let Truto generate secure, managed MCP servers for your AI agents in seconds.
>
> [Talk to us](https://truto.one/book-a-demo/)
