That gating is stated on the tools that create and read them, together with the instruction not to retry — so a caller that finds them missing is looking at an account setting, not a broken install. Everything else here is written the same defensive way: clone_sweepstakes and create_sweepstakes are marked billable and production, draw_winners selects real winners, deletes across sweepstakes, surveys, files, participants and rules are marked irreversible, and the participant tools repeat that no participant data may be invented when the API returns nothing. Calendar events are the odd corner — the server works in UTC, so today's date can be rejected as past.
A server over the Sweeppea promotions platform, exposing 83 tools across the sweepstakes lifecycle, entry-page configuration, participants, official rules, winner drawings, surveys, invoices, Drive files, notes, calendar events, support tickets and US reference data.
- The sweepstakes lifecycle as separate calls: create_sweepstakes takes a name, a unique handler and start and end dates and times; clone_sweepstakes copies entry pages, calendar events, short links, groups and configuration into a new one; pause_sweepstakes and unpause_sweepstakes close and reopen entry without touching data; update_sweepstakes changes only sweepstakes_name, start_date, end_date, start_time and end_time; delete_sweepstakes takes participants, statistics and automations with it.
- Entry-page settings you read before you write: get_entry_settings returns display, colours, spacing, entry settings, compliance, confirmation page, winners page, age gate, AMOE, geolocation, analytics, social media follows, sharing rewards, bonus entries and sponsor profiles, and update_entry_settings accepts 1-5 fields per request against those same names.
- Participants added against the form's real shape: get_entry_fields returns field names, types and which are required before add_participant, which needs both email and phone and expects field names with underscores instead of spaces; fetch_participants pages 20 per page with search by name, email or phone; get_participant resolves one by token, email or phone; count_participants filters by all, participants, amoe or optouts over a date range; update_bonus_entries overwrites a participant's bonus entries.
- Official rules with the primary-versus-secondary trap surfaced: create_rules_wizard walks a 14-step wizard prefilled from get_business and get_profile, fetch_rules shows whether primary rules already exist, and update_rule can change title, document_content and abbreviated_rules_shopify while the sweepstakes association and primary status stay fixed after creation.
- Winner selection immediate or booked: draw_winners uses weighted random selection favouring participants with bonus entries, with exclude_spam and include_opted_out shaping the pool; schedule_drawing books a future drawing with frequency, timezone, delivery time, the group to draw from and whether results publish to the winners page; fetch_scheduled_drawings and delete_scheduled_drawing cover pending ones, and fetch_winners pages results by draw date.
- Surveys attached to a sweepstakes: create_survey holds up to 5 questions per page, 50 pages, 250 questions and 30 options per question; get_survey returns the full question set sorted by page then order; fetch_survey_report gives visit, start and complete totals, completion rate, device and browser breakdown, a daily timeline and per-question distributions capped at 25 buckets; fetch_survey_responses pages individual answers, with include_metadata adding IP address, user agent and device.
- Money the account has already spent and is allowed to spend: get_plan returns plan name, authoritative limits and live usage, with MaxSweepstakesAllowed as a single cap on total sweepstakes; fetch_billing_consumptions aggregates monthly and yearly totals; fetch_billing_transactions lists invoices, amounts and status; fetch_wallet_transactions covers credits and debits; fetch_data_transfer reports bytes and rates for one sweepstakes.
- Invoices with the arithmetic kept server-side: create_invoice and update_invoice compute Subtotal, TaxAmount and Total from items, discount_amount and tax_rate, items and bill_to are replaced whole rather than merged, and the status machine runs draft to pending to paid with cancelled reachable from draft or pending; get_invoice can include the event timeline and QR code.
- A Drive with explicit limits: upload_file takes base64 content up to 10 MB across PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, CSV, JPG, JPEG, PNG, GIF, WEBP, SVG and BMP; get_file_url returns a short-lived presigned S3 URL carrying Content-Type and Content-Disposition; send_file emails an attachment up to 5 MB and records the transmission in the file's sharing history; delete_file frees the storage quota immediately.
- The working surface around a promotion: notes stored with AES-256-CBC encryption and a fixed HTML tag set; calendar events with location, coordinates, notifications and SMS notification; support tickets split into open and closed, filterable by platform and by priority 1, 2 or 3, assignable to a named admin; To-Do items that answer 403 for a non-admin user.
- US reference data behind the same key: fetch_areacodes searches area codes by number or state, fetch_zipcodes by zip, city or state, fetch_states returns states including DC, Puerto Rico and US territories, fetch_countries matches on name, dial code or ISO abbreviation, and fetch_timezones returns IANA identifiers with UTC offsets.
A Sweeppea account and an API key, sent as a bearer token — health_check exists to confirm it works. The invoice and survey tools additionally need those modules switched on for the account; they are off by default and Sweeppea support turns them on.
One command plus a key — claude mcp add sweeppea https://mcp.sweeppea.com/ --transport http --header "Authorization: Bearer YOUR_API_KEY" --header "MCP-Protocol-Version: 2025-11-25", then supply credentials
