AI assistants
Connect Claude, ChatGPT, Cursor or any MCP client to Walletap, and design templates, issue passes and notify holders by asking in plain language.
Walletap runs a Model Context Protocol (MCP) server, so an AI assistant can work in your account directly. Ask for a loyalty card and the assistant uploads the artwork, designs the template and issues the first passes; ask it to add a stamp and the pass in the customer's wallet updates.
Before you start#
- A Walletap account. Sign-up is part of the connection flow, so you can create one there if you do not have one yet.
- An assistant that can connect to remote MCP servers: Claude, Claude Code, Cursor, ChatGPT, or any other MCP client.
How connecting works#
The server is at https://mcp.walletap.com. You add that address to your
assistant once, sign in to Walletap, and approve what the assistant may do. There
is nothing to install and no key to paste.
The assistant works in the Walletap account you sign in with. Sign in with the account that owns your templates.
Connect your assistant#
Walletap is listed in Claude's connectors directory. Open Walletap in the directory and click Connect. This works in Claude on the web and in the desktop app.
To add it by hand instead, add a custom connector in Claude's connector settings
with the URL https://mcp.walletap.com.
Add the server from a terminal:
claude mcp add --transport http walletap https://mcp.walletap.comThen run /mcp in Claude Code and choose walletap to sign in.
Open the Cursor install link. Cursor opens its MCP settings with Walletap filled in. Click Install, then sign in when asked.
Turn on developer mode in ChatGPT's connector settings, then create a connector
named Walletap with the URL https://mcp.walletap.com. Sign in when asked.
ChatGPT asks you to confirm the first time it uses a tool that changes something.
Any MCP client that supports remote servers over Streamable HTTP with OAuth can
connect. Add https://mcp.walletap.com as the server URL. The client registers
itself, so there is no client ID to enter.
For clients that cannot sign in with OAuth, see Connect with an API key.
Sign in and authorize#
The first time the assistant connects, a Walletap page opens.
- Sign in
Click Continue with Google, or enter your Email address and Password and click Sign in. New to Walletap? Click Create one to make an account here.
- Review the access
The Authorize access page lists what the assistant is asking to do, under This will allow the application to:.
- Approve
Click Authorize. You return to your assistant, which can now use Walletap.
Try it with "List my Walletap templates."
What the assistant may do#
What you approve on the Authorize access page decides which tools the assistant can use. Most assistants ask for the first three permissions together.
| Permission | Lets the assistant |
|---|---|
| View pass templates, passes, locations, files, and team | Read anything on the account, including pass holders' contact details |
| Create, update, and delete templates, passes, files, locations | Make changes, short of sending messages |
| Send push notifications, SMS, and email to pass holders | Message the people holding your passes |
| View your access badges and who holds one | Read access badges and their holders |
| Issue access badges — lets doors, lockers and turnstiles be opened | Send a person an access badge |
Sending messages is its own permission because it reaches your customers directly. Issuing an access badge gives a person a way through a door, so it is kept apart from issuing passes.
Tools#
Tools that only read are marked read-only to the assistant, so asking a question never changes anything. Tools that change something are marked as such, and most assistants ask you to confirm before using them.
Templates#
| Tool | What it does |
|---|---|
list_templates | Lists your templates |
get_template | Reads one template, including its field IDs |
create_template | Creates a template: type, colours, fields, artwork, stamps, NFC and barcode |
update_template | Changes part of a template, leaving the rest as it is |
delete_template | Deletes a template permanently |
Passes#
| Tool | What it does |
|---|---|
list_passes | Lists a template's passes, a page at a time |
search_passes | Finds passes on a template by email address or phone number |
get_pass | Reads one pass, by its ID or by your own reference and template |
export_passes | Exports every pass on a template as CSV |
create_pass | Issues 1 to 10 passes in one call, with field values and starting stamps |
update_pass | Changes a pass's fields, stamps or balance, or voids it |
create_pass delivers the pass. When a pass has an email address or phone number,
Walletap sends the pass link to it, following your account's
delivery settings, unless the assistant turns delivery off
for that call.
Notifications#
| Tool | What it does |
|---|---|
notify_pass | Sends a notification to the holder of one pass |
send_template_notification | Sends a notification to every holder of a template |
Files, locations and team#
| Tool | What it does |
|---|---|
upload_file_from_url | Fetches an image from a public URL and stores it for use as artwork |
get_file | Reads an uploaded file's details |
delete_file | Deletes an uploaded file |
list_locations | Lists your locations |
create_location, update_location, delete_location | Adds, changes or removes a location |
list_sub_accounts | Lists your team members |
create_sub_account, update_sub_account, delete_sub_account | Adds, changes or removes a team member |
translate_pass_text | Translates pass text into other languages |
Access badges#
For accounts with access badges.
| Tool | What it does |
|---|---|
list_access_badges | Lists your badge designs |
get_access_badge | Reads one badge, including whether it is published |
list_badge_holders | Lists the people who hold a badge, with their card numbers |
issue_access_badge | Sends one person an invitation to add a badge to their phone, by email unless the assistant asks for the link only |
A badge must be published in the dashboard before anyone can be issued it.
Things to ask#
- "Create a loyalty card for Harbour Coffee: ten stamps for a free coffee, a dark green background, and our logo from https://harbour.example/logo.png."
- "Issue a Coffee Card to maya.chen@example.com with two stamps already collected."
- "Add a stamp to the Coffee Card for luka.horvat@example.com."
- "Tell everyone holding a Summer Jazz Night ticket that doors open at 19:00."
- "Export every Northside Membership pass as a CSV."
- "Translate the labels on the Spring Offer into German."
- "Who holds the Staff door badge?"
Example: a stamp card in one request#
Alex Morgan asks:
Set up a loyalty card for Harbour Coffee — ten stamps to a free coffee, using our logo at https://harbour.example/logo.png. Then issue one to maya.chen@example.com with two stamps already collected.
The assistant:
- Calls
upload_file_from_urlwith the logo address and gets back a file ID. - Calls
create_templatefor a loyalty card with stamp collection on, ten stamps, and the uploaded logo. The reply links to the new template's design page in the dashboard. - Calls
create_passwith Maya's email address and two collected stamps. - Reports the template, the pass and its add-to-wallet link.
Because the pass has Maya's email address, Walletap emails her the link.
Give colours and a logo up front; a template created without them uses the default look. To check a design change, issue a fresh pass.
Connect with an API key#
For a client that can send headers but cannot sign in with OAuth, use a Walletap API key from SettingsAPI keys. The assistant can then do what the key can do. See authentication for keys and their presets.
Remote. Send the key in an X-API-Key header to https://mcp.walletap.com.
The client must accept both JSON and event streams:
curl -X POST https://mcp.walletap.com \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-API-Key: $WALLETAP_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_templates","arguments":{}}}'Local. Run the server on your own machine with the open-source
@walletap/mcp-server package. Any client that accepts a stdio command can use this
configuration:
{
"mcpServers": {
"walletap": {
"command": "npx",
"args": ["-y", "@walletap/mcp-server"],
"env": { "WALLETAP_API_KEY": "wtap_sk_..." }
}
}
}The hosted server at https://mcp.walletap.com also carries the access badge tools.
Limits#
The server accepts 60 requests a minute for each account, or for each API key. Past that it answers Too many requests. Retry after a number of seconds, and the assistant should wait that long. For a large import, use the dashboard or the API directly.
Disconnect#
Remove Walletap from your assistant's connector or MCP settings. To connect again, add it and sign in as before.
If something goes wrong#
The assistant says it cannot connect. Remove the connector and add it again with
exactly https://mcp.walletap.com — no trailing slash. Then sign in again.
"Invalid email or password" on the sign-in page. If you sign in to the dashboard with Google, use Continue with Google. To use an email address instead, set a password first: in the dashboard, go to SettingsAccount and click Reset password.
The Google window closes and nothing happens. The window was closed before sign-in finished. Close any leftover windows and click Continue with Google again.
A tool answers that it "requires scope" something. The connection was approved for fewer permissions than that tool needs. Remove the connector, add it again, and approve the permissions the assistant asks for.
A pass was issued, but the customer got no email or text. The email address or phone number has to be on the pass itself, and delivery must be on. The assistant can turn it on or off for each call; when it does not, your delivery settings decide.
"origin_not_allowed". A browser-based client on another website called the server. Use a desktop app, call the server from your own backend, or run the local package.
An access badge is refused as not_published. Publish the badge in the dashboard, then ask again. See access badges.