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.
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.
| Tool | Scope | Hints | Example 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." |
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.
| Tool | Scope | Hints | Example 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." |
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).
Browse what you can send. Catalog tools never touch funds — they only return product metadata.
| Tool | Scope | Hints | Example 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." |
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.
| Tool | Scope | Hints | Example 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." |
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).
| Tool | Scope | Hints | Example 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." |
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.
giftronaut_create_template / giftronaut_list_templates.giftronaut_create_campaign, attaching the template via templateId.giftronaut_execute_campaign_order against either inline recipients[] or a saved recipientGroupId.Important properties:
giftronaut_create_branded_card_order tool for branded sends.giftronaut_execute_campaign_order debits balance.giftronaut_delete_campaign sets IS_DELETED=1; past order history that references the campaign is preserved and remains queryable via giftronaut_list_orders.senderName, subject, and message can be overridden on a single execute call without touching the saved campaign.INSUFFICIENT_BALANCE (402) with a structured top-up hint.| Tool | Scope | Hints | Example 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." |
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.
giftronaut_list_templates — the response surfaces an isDefault flag so the LLM can spot the org's primary look.giftronaut_create_template (optional fields revert to org defaults).templateId into giftronaut_create_*_order, giftronaut_create_campaign, or any other tool that supports it.Important properties:
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.giftronaut_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.| Tool | Scope | Hints | Example 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'." |
DEFAULT_TEMPLATE / 409), and any template referenced by an active campaign returns TEMPLATE_IN_USE / 409. Swap referencing campaigns or delete them first.
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.
| Tool | Scope | Hints | Example 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." |
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.
| Tool | Scope | Hints | Example 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." |
GIFTRONAUT_MCP_CSV_* / GIFTRONAUT_MCP_BATCH_MAX_RECIPIENTS env vars.
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.
| Tool | Scope | Hints | Example 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." |
MCP_CREDENTIAL_PROD_BLOCKED in env=prod. clientSecret is shown
once in the response and immediately masked in the audit log.
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).
| Tool | Scope | Hints | Example 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.idempotentHint=true accept an idempotencyKey. The 4-tuple (org_id, env, tool_name, key) is cached for 24 hours; retries replay the original response.{ "code": "DAILY_SPEND_CAP_EXCEEDED", "status": 429 }.{ "code": "TOOL_DISABLED", "status": 503 } and are hidden from tools/list.org_id. Requesting another org's resource returns RESOURCE_NOT_FOUND.Full parameter reference: tools-reference.md (canonical markdown source).
Start typing to search...