Connect Easypromos to ChatGPT: Manage Campaigns and Prize Inventory
from the team behind Truto
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.
- No credit card required
- 500+ connectors
- Credentials vaulted, never read back
-
Start your free trial
14 days free, no credit card required.
-
Connect Easypromos
Once, in Elaichi. ChatGPT never gets more access than you have.
-
Add Elaichi to ChatGPT
In ChatGPT, open Plugins, press +, and paste the URL into Server URL. Sign in and approve.
https://api.elaichi.ai/mcp
Building Easypromos into your own product? This guide is for you.
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.
The developer guide
Learn how to connect Easypromos to ChatGPT using Truto's MCP Server. Automate prize inventories, virtual coin ledgers, and complex campaign workflows.
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. If your team uses Claude, check out our guide on connecting Easypromos to Claude or explore our broader architectural overview on connecting Easypromos to AI Agents.
Giving a Large Language Model (LLM) read and write access 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.
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:
- Log into your Truto account and navigate to Integrated Accounts.
- Select your connected Easypromos account (or connect a new one).
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration (e.g., restrict methods to
readonly, or filter by specific tags likepromotionsorprizes). - 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.
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:
{
"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:
- Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
- Toggle on Developer mode.
- Under MCP servers / Custom connectors, click Add.
- Name the connection (e.g., "Easypromos API").
- 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:
{
"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.
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:
- Calls
list_all_easypromos_promotionsto search for "Holiday Giveaway" and extracts theid. - Calls
get_single_easypromos_prizes_inventory_by_idusing that promotion ID. - Parses the array of prize types, comparing the
units(total capacity) against thegiven(distributed) fields. - Returns a natural language summary to the user, highlighting that the "T-Shirt" tier has 450/500 units given, dipping below the 10% threshold.
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:
- Calls
list_all_easypromos_promotionsto resolve the campaign ID. - Calls
list_all_easypromos_users(passing the promotion ID) to search forjohn.doe@example.comand retrieves their user ID. - Calls
list_all_easypromos_coin_usersto verify John's current balance. - If the balance condition is met, calls
create_a_easypromos_coin_transactionwith a positive integer and the specified reason. - 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 (likelist_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 totrue- 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.
FAQ
- What is the easiest way to connect Easypromos to ChatGPT?
- 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.
- Can I restrict ChatGPT from spending virtual coins in Easypromos?
- Yes. When you generate the MCP server in Truto, you can set the methods filter to ["read"]. This exposes only safe, non-mutating endpoints to ChatGPT, preventing it from executing transactions.
- How does Truto handle Easypromos API rate limits?
- Truto normalizes upstream rate limit information into standard headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). When a 429 occurs, Truto passes it to the caller—your AI framework is responsible for implementing retry and backoff logic.
- Do I need to write custom JSON-RPC schemas for the Easypromos API?
- No. Truto dynamically derives the MCP tool definitions directly from the Easypromos API documentation and schemas, providing ChatGPT with fully formatted query and body parameters automatically.