@walletap/mcp-server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_passesA | List all passes for a given template with pagination and optional status filtering. Use this to browse passes, check counts, or find passes by their installation status. Returns pass objects with IDs, emails, phones, and device counts. |
| search_passesA | Search passes within a template by email or phone number. Use this when you need to find a specific customer's pass. Returns matching passes ordered by creation date. |
| export_passesA | Export all passes for a template as CSV data. Use this to get a full data dump of passes for reporting or migration. Returns CSV with columns: Pass ID, External ID, Email, Phone, Name, Member ID, Status, Installation Status, Device Count, Created, Updated. |
| get_passA | Get a single pass by ID or by externalId + templateId. Returns the pass with wallet download URLs (Apple, Google, Huawei) and installation badge URLs. Use includeTemplate to also get the full template configuration. |
| create_passA | Create one or more wallet passes for a template. Use this to issue new loyalty cards, event tickets, coupons, or membership passes to customers. Can optionally send the pass link via email or SMS. |
| update_passA | Update an existing pass's fields, stamps, or balance. Use this to modify customer data, add/remove loyalty stamps, adjust balance, or invalidate a pass. Identify the pass by ID or by externalId + templateId. |
| notify_passA | Send a push notification to a single pass holder via Google Wallet. Use this for targeted messages to individual customers (e.g. balance update, reward earned). For bulk notifications to all pass holders, use send_template_notification instead. |
| list_templatesA | List pass templates owned by this account, cursor-paginated. Returns { object: 'list', data, has_more, next_cursor, total_count }. |
| get_templateA | Fetch a single template by id. Use this to inspect existing field ids (rows, linkRows, header) before issuing passes — the same ids are used as keys in customFields / templateFields at issuance time. |
| create_templateA | Create a new pass template. Only |
| update_templateA | Partial update of an existing template (RFC 7396 merge-patch semantics). Send only the fields you want to change. Updating |
| delete_templateA | Permanently delete a template and deactivate its Stripe billing meters. Existing passes issued from this template are orphaned. Cannot be undone. |
| send_template_notificationA | Send a push notification to every pass holder of a template (Apple, Google, Huawei). Use for announcements that apply to all customers. For individual notifications, use notify_pass. |
| create_certificateA | Create or renew the Apple Wallet certificate for a template. Usually triggered automatically on template create; this is for manual renewals. |
| upload_file_from_urlA | Fetch a public image URL, validate it, and store it in Walletap-managed storage. Returns a file_… id you can reference inside a template's pass design as { "fileId": "file_…" } on any image field (logo, hero, icon, strip, background, stamp, thumbnail). When USE A URL YOU HAVE ACTUALLY SEEN — one the user gave you, or one you read out of the page you fetched. Do not construct a plausible-looking asset URL from a brand name: guessed Wikimedia and logo-CDN paths are the single most common cause of failure here. If the fetch reports that the source returned 404, the URL is wrong — find a different one rather than retrying, and ask the user for the image if you cannot. |
| get_fileA | Retrieve a file's metadata by id. Returns url, mime_type, size, width, height, variants (1×/2×/3×), purpose, source_url, and timestamps. |
| delete_fileA | Delete a file and all its variants from storage. Templates that still reference the URL keep their JSON intact but the linked image URL will return 404. |
| list_locationsA | List all locations for the authenticated account. Use this to see available business locations for reader deployment or pass association. Returns location names, addresses, and coordinates. |
| create_locationB | Create a new business location for reader deployment and pass management. Use this when setting up a new store, venue, or checkpoint. Locations can be associated with passes and readers for validation. |
| update_locationA | Update an existing location's details. Use this to correct addresses, rename locations, or update coordinates. Only provided fields are updated — omitted fields remain unchanged. |
| delete_locationA | Delete a location permanently. Use with caution — readers associated with this location will need reassignment. Subscription is updated automatically. |
| list_sub_accountsA | List all sub-accounts (team members) for the main account. Use this to see who has access and their template permissions. Returns sub-account details with template access counts. |
| create_sub_accountA | Create a new sub-account (team member) with specific permissions and template access. Use this to grant team members limited access to manage specific templates. The sub-account gets their own login credentials. |
| update_sub_accountA | Update a sub-account's permissions, template access, or active status. Use this to grant/revoke access or deactivate a team member. Only provided fields are updated. |
| delete_sub_accountA | Permanently delete a sub-account and revoke all their access. Use with caution — this removes the user's Firebase auth account and all template access records. This cannot be undone. |
| translate_pass_textA | Translate pass text to multiple languages using Google Cloud Translation. Use this to localize pass content (field labels, messages) for international customers. Supports all Google Translate languages. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| api-reference |
TDQS
Scored across 26 tools
Each tool targets a distinct resource and action (templates, passes, files, locations, sub-accounts, notifications, translation). Even similar tools like list_passes vs search_passes are clearly separated by browsing vs. finding a specific customer, and notify_pass vs send_template_notification distinguish single vs. bulk. No ambiguity exists.
All tools follow a consistent verb_noun pattern with snake_case (e.g., list_templates, create_pass, update_location, upload_file_from_url). Even longer names like send_template_notification and translate_pass_text follow the same convention. No mixing of styles or vague verbs.
26 tools is slightly above the typical well-scoped range, but the server covers a broad domain with multiple resource types (templates, passes, files, locations, sub-accounts, notifications, translation). Each tool contributes to a distinct workflow, and the count is manageable without being bloated.
The tool surface provides full CRUD for templates, locations, and sub-accounts, and robust pass management (create, read, update, search, export, notify) but lacks a delete_pass tool. File operations lack listing, and certificate management is minimal, but these are minor gaps that do not block core workflows.