Sign in
MCP / Tools & examples

Tools & examples

47 tools across 11 domains.
Tools that move funds support safe retries.
Tools that delete or cancel data require confirm="YES".
Every tool call is recorded in your request log dashboard.

Orders — 9 tools

Send branded cards (fixed brand), choice cards (recipient picks), or anonymous reward links. All create_*_order calls are idempotent and subject to the per-org daily USD spend cap.

ToolScopeHintsExample prompt
giftronaut_list_orders orders.read read-only "Show me the last 20 orders I sent this month."
giftronaut_get_order orders.read read-only "Show me the full delivery status for order OR2026...."
giftronaut_reveal_reward_links orders.read read-only · confirm="YES" "Show me the full redeem URLs for order OR2026...."
giftronaut_create_branded_card_order orders.write idempotent "Send a $50 Starbucks card to alice@acme.com from 'Acme Rewards'."
giftronaut_create_choice_card_order orders.write idempotent "Send each engineer a $100 Choice Card so they can pick their own brand."
giftronaut_create_reward_link_order orders.write idempotent "Generate 50 reward links of $10 each for our Q3 referral campaign."
giftronaut_cancel_order orders.cancel destructive · confirm="YES" "Cancel the order I scheduled for tomorrow morning."
giftronaut_resend_order orders.write idempotent "Resend the gift email to bob@acme.com; the recipient can't locate the first email."
"Update the email to bob@acme.com and resend; the previous email bounced due to a typo."
giftronaut_send_test_email orders.write preview · no funds move · daily limit "Send me a preview of the choice card email before I place the order."

Balance — 4 tools

Inspect your prepaid USD balance and ledger, request an ACH top-up, or withdraw a pending top-up request. Credit card top-ups require signing in to the Giftronaut portal and cannot be completed through MCP.

ToolScopeHintsExample prompt
giftronaut_get_balance balance.read read-only "What's my available balance right now?"
giftronaut_get_ledger balance.read read-only "List my balance changes from the last 30 days."
giftronaut_request_ach_top_up balance.write idempotent · production-only · $100 min "Request a $500 ACH top-up for Acme Corp (EIN 12-3456789, billing in San Francisco)."
giftronaut_cancel_ach_top_up balance.write destructive · confirm="YES" · production-only "Withdraw the $500 top-up request I submitted this morning; the amount was wrong."
Server-side automatic behavior — Low-balance hints · When your available balance falls below the configured threshold (default $50, set via giftronautapi.balance.low-balance-threshold-usd), get_balance / create_*_order / draft_order / execute_order responses include an advisory hints field. Your AI assistant reads this hint and may suggest a top-up. No configuration is needed — this happens automatically. The hint surfaces both paths: ACH via giftronaut_request_ach_top_up, and credit card via the portal (Account Balance → ADD FUNDS + → Credit Card).

Catalog — 4 tools

Browse what you can send. Catalog tools never touch funds — they only return product metadata.

ToolScopeHintsExample prompt
giftronaut_search_branded_cards catalog.read read-only "Find a Korean coffee-shop gift card."
giftronaut_get_branded_card catalog.read read-only "What denominations does this Amazon card support?"
giftronaut_search_choice_cards catalog.read read-only "List all Choice Card designs available to my org."
giftronaut_get_choice_card catalog.read read-only "Show the min/max denomination for the Choice Card."

Recipients — 6 tools

Manage your organization's recipient list. Emails are AES-encrypted at rest — for exact-email lookup use find_recipient_by_email rather than list with a searchKeyword.

ToolScopeHintsExample prompt
giftronaut_list_recipients recipients.read read-only "Show me everyone in the marketing department."
giftronaut_get_recipient recipients.read read-only "What's on file for recipient RC...?"
giftronaut_find_recipient_by_email recipients.read read-only "Do I already have chris@acme.com in my recipient list?"
giftronaut_create_recipient recipients.write idempotent "Add Dana from Sales (dana@acme.com) to my recipients."
giftronaut_update_recipient recipients.write idempotent "Update Dana's company to 'Acme Corp' (she got promoted)."
giftronaut_delete_recipient recipients.write destructive · confirm="YES" · supports dryRun "Preview what happens if I delete alex@old.example."

Recipient Groups — 7 tools

Named buckets for campaign targeting (e.g. "Engineering", "Q4 VIPs", "Holiday Recipients 2026"). Renaming a group preserves all members; deleting a group preserves the individual recipients — only membership rows are dropped. The new giftronaut_update_recipient_group tool lets the LLM rename a group on the fly (the only mutable field) — useful when a group is re-purposed mid-campaign (e.g. "rename 'Q4 VIPs' to 'Annual VIPs'" before the year rolls over).

ToolScopeHintsExample prompt
giftronaut_list_recipient_groups recipients.read read-only "Show me my recipient groups."
giftronaut_get_recipient_group_with_members recipients.read read-only "Who is in the 'Q4 VIPs' group?"
giftronaut_create_recipient_group recipients.write idempotent "Create a new group called 'Engineering Birthdays'."
giftronaut_update_recipient_group recipients.write PUT "Rename 'Q4 VIPs' to 'Annual VIPs'."
giftronaut_delete_recipient_group recipients.write destructive · confirm="YES" "Delete the empty 'Test Group' (recipients stay in my recipient list)."
giftronaut_add_recipient_to_group recipients.write idempotent "Add Dana to 'Q4 VIPs'."
giftronaut_remove_recipient_from_group recipients.write destructive · confirm="YES" "Remove Dana from 'Q4 VIPs' but keep her in my recipient list."

Campaigns — 6 tools

A campaign is a reusable, named template for sending choice cards — it bundles the product, per-recipient amount, subject line, sender display name, message body, attached email template, and refund policy into a single addressable unit. Once saved, the campaign can be executed for any recipient (inline recipient list OR a saved recipient group) with a single giftronaut_execute_campaign_order call.

Use campaigns for recurring sends where the configuration stays stable but the audience changes — monthly bonus drops, quarterly partner appreciation, recurring referral rewards, holiday greetings. For one-off sends use giftronaut_create_choice_card_order or giftronaut_create_branded_card_order instead.

Typical 3-step workflow · LLM-friendly because each step is a separate, idempotent tool call:
  1. (Optional) Create or pick an email template with giftronaut_create_template / giftronaut_list_templates.
  2. Save the campaign with giftronaut_create_campaign, attaching the template via templateId.
  3. Execute it with giftronaut_execute_campaign_order against either inline recipients[] or a saved recipientGroupId.

Important properties:

  • All campaigns are Choice Card (USD 1:1) — branded-card campaigns are not supported via this API surface. Use the one-off giftronaut_create_branded_card_order tool for branded sends.
  • Creating/updating/deleting a campaign does NOT move funds — only giftronaut_execute_campaign_order debits balance.
  • Soft deletegiftronaut_delete_campaign sets IS_DELETED=1; past order history that references the campaign is preserved and remains queryable via giftronaut_list_orders.
  • Per-execute overridessenderName, subject, and message can be overridden on a single execute call without touching the saved campaign.
  • Guards — execute is subject to GeoIP country allowlist, daily USD spend cap, and balance check. Insufficient balance returns INSUFFICIENT_BALANCE (402) with a structured top-up hint.
ToolScopeHintsExample prompt
giftronaut_list_campaigns campaigns.read read-only "List my saved campaigns."
giftronaut_get_campaign campaigns.read read-only "Show me the configuration of campaign CP20260521000001."
giftronaut_create_campaign campaigns.write idempotent "Save a new $50 Choice Card campaign called 'Q4 Quarterly Bonus'."
giftronaut_update_campaign campaigns.write PUT "Bump the 'Quarterly Bonus' campaign from $50 to $75."
giftronaut_delete_campaign campaigns.write destructive · confirm="YES" "Delete the discontinued 'Old Pilot' campaign."
giftronaut_execute_campaign_order campaigns.write + orders.write idempotent · destructive · value-moving "Execute the 'Quarterly Bonus' campaign for the 'Engineering' recipient group."

Templates — 5 tools

A template defines the visual style of a gift-card delivery email — the logo image URL, button color palette, sender display name, and an optional plaintext message body. Every order or campaign references a template via templateId; when null, the org's default template is auto-attached at send time. Templates let you maintain brand consistency across all gift-card emails without re-specifying the visuals on every send.

Color fields (borderColor, buttonColor, buttonFontColor) are 6-digit hex strings in #RRGGBB format. imageAlignment is one of left · center · right. imageSize is a pixel dimension. The logo image URL itself is auto-populated server-side to the default Giftronaut asset — custom logo uploads require the portal.

Typical workflow · Templates plug into orders and campaigns:
  1. Discover existing templates with giftronaut_list_templates — the response surfaces an isDefault flag so the LLM can spot the org's primary look.
  2. Either reuse a templateId from the list, or create a new one with giftronaut_create_template (optional fields revert to org defaults).
  3. Pass the templateId into giftronaut_create_*_order, giftronaut_create_campaign, or any other tool that supports it.

Important properties:

  • The isDefault flag is portal-managed — it cannot be flipped via giftronaut_create_template or giftronaut_update_template. The default template is auto-attached to any order/campaign that omits templateId.
  • PUT-semantics updategiftronaut_update_template replaces ALL optional fields with the supplied values (or server defaults if omitted). Fetch via giftronaut_get_template first to preserve current settings.
  • Delete is hard (not soft) and blocked by two service-level guards — see the callout below the table.
  • Message body is plain text only, max 2000 chars. HTML is NOT supported here — the visual style around the body comes from the template's color palette and the system's email scaffold.
ToolScopeHintsExample prompt
giftronaut_list_templates templates.read read-only "What email templates do I have?"
giftronaut_get_template templates.read read-only "Show the colors and body for my 'Welcome' template."
giftronaut_create_template templates.write idempotent "Create a 'Holiday Greetings' template with red button color #C81E1E."
giftronaut_update_template templates.write PUT "Change my 'Welcome' template's sender name to 'The Acme Team'."
giftronaut_delete_template templates.write destructive · confirm="YES" "Delete the unused 'Test Template'."
Delete guards · The default template cannot be deleted (DEFAULT_TEMPLATE / 409), and any template referenced by an active campaign returns TEMPLATE_IN_USE / 409. Swap referencing campaigns or delete them first.

Draft / Execute — 2 tools

A 2-step pattern that your AI assistant may use to protect you from accidental sends. When used, the draft is created first without moving funds — you review it, then confirm. The assistant decides whether to use this pattern based on the context.

draft_order human review execute_order
ToolScopeHintsExample prompt
giftronaut_draft_order orders.write idempotent · no funds moved "Draft a $500 Choice Card order for the 'Q4 VIPs' group so I can review before sending."
giftronaut_execute_order orders.write idempotent · destructive "OK, looks good — execute that draft."

CSV — 2 tools

Bulk recipient import. Parse first to detect duplicates and validation errors, then batch-create up to 100 rows per call. Cells are sanitized for prompt-injection markers before validation.

ToolScopeHintsExample prompt
giftronaut_parse_recipients_csv recipients.read read-only "Here's a CSV of new hires — preview what would be imported before I commit."
giftronaut_batch_create_recipients recipients.write idempotent · max 100/batch "Looks clean — create those 47 recipients."
Limits · max 1 MB / 5000 rows / 20 columns per parse call, max 100 recipients per batch create. Configurable via GIFTRONAUT_MCP_CSV_* / GIFTRONAUT_MCP_BATCH_MAX_RECIPIENTS env vars.

Credentials — 1 tool

Creates a sandbox credential for REST API use only — MCP itself is production-only, so the created sandbox credential cannot be used to connect MCP. Production apps are created in the portal (Apps → Create new app → Production) and are active immediately for MCP delegation.

ToolScopeHintsExample prompt
giftronaut_create_api_credential sandbox-only · one-time-secret response "My consent screen is empty — create a sandbox credential called 'My Slack bot' with orders.read and balance.read."
Production credentials require admin approval via the portal — this tool returns MCP_CREDENTIAL_PROD_BLOCKED in env=prod. clientSecret is shown once in the response and immediately masked in the audit log.

Limits — 1 tool

Use when an organization admin asks to raise their daily and/or monthly order spending limit. Submits a limit-increase request to the operations team for review (approval typically within 1-2 business days) — the new limit is NOT applied immediately. Requires the current daily and monthly limits (as the user currently sees them, used purely as a confirmation check) plus the requested new daily and monthly limits, all in USD. If the supplied current limits do not match our records, the request is rejected with STALE_LIMIT_SNAPSHOT (409) so you can refresh and retry. Each requested limit must be greater than the current limit. Returns status PENDING_REVIEW with a confirmation message. Idempotent via idempotencyKey (24h cache).

ToolScopeHintsExample prompt
giftronaut_request_order_limit_increase idempotent · review required "Request raising our daily order limit to $2,000 and monthly to $20,000 (currently $500 / $4,000)."

Parameters (all required):

  • idempotencyKey · Unique idempotency key (max 64 chars). Reuse to safely retry the same request — the 24h cache returns the original response.
  • currentDailyLimitUsd · Your current daily order limit in USD, exactly as shown to you (confirmation check). Pass as a decimal, e.g. 500.
  • currentMonthlyLimitUsd · Your current monthly order limit in USD, exactly as shown to you (confirmation check). Pass as a decimal, e.g. 4000.
  • requestedDailyLimitUsd · The requested new daily order limit in USD. Must be greater than the current daily limit.
  • requestedMonthlyLimitUsd · The requested new monthly order limit in USD. Must be greater than the current monthly limit.

Common behaviors

  • Idempotency · Tools with idempotentHint=true accept an idempotencyKey. The 4-tuple (org_id, env, tool_name, key) is cached for 24 hours; retries replay the original response.
  • Spend cap · Every value-moving tool checks the daily USD cap before invoking the service. Exceeding it returns { "code": "DAILY_SPEND_CAP_EXCEEDED", "status": 429 }.
  • Kill switch · Operators can disable individual tools per environment. Disabled tools return { "code": "TOOL_DISABLED", "status": 503 } and are hidden from tools/list.
  • Cross-org guard · All queries are filtered by org_id. Requesting another org's resource returns RESOURCE_NOT_FOUND.

Full parameter reference: tools-reference.md (canonical markdown source).