Skip to main content
Glama
walletap

@walletap/mcp-server

Official
by walletap

update_template

Destructive

Partially update an existing wallet template by sending only changed fields. Deep-merges pass JSON for targeted edits; replaces locations array wholesale. Note: design changes apply only to passes issued after the update.

Instructions

Partial update of an existing template (RFC 7396 merge-patch semantics). Send only the fields you want to change. Updating pass deep-merges with the existing pass JSON, so you can change a single color or add a field without round-tripping the whole pass. locations is the exception: it REPLACES the stored array wholesale (send the full set; [] clears them), because merging geofences by index would strand stale ones. ALREADY-ISSUED PASSES: a stored .pkpass is not rebuilt on every read, so design and artwork changes reliably show up only on passes issued AFTER the update. Verify a change by issuing a fresh pass rather than re-downloading an existing one.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
passNoPass design overrides. Most useful keys: backgroundColor, textColor, labelColor, logo, hero, icon, strip, rows, linkRows, header, barcode, nfc. Inside rows / linkRows / header you can send field shorthand like { id: "memberName", label: "Member" } — the server fills fieldValue, name and (for known ids like balance) googleId. Image fields accept either { preview: "https://…" } or { fileId: "file_…" } from POST /files. STAMP CARDS (loyalty): set `useStampCollection: true`, `stampCount: <n>`, `stamp: { fileId }` (icon — `purpose: 'template_stamp'`), AND `hero: { fileId }` (REQUIRED — the wide banner that stamps are composited onto as a dimmed background, `purpose: 'template_hero'`). Without `hero` the server skips banner generation and the pass shows no stamps. Both images must be supplied for stamps to render. VALUES: every `fieldValue: 'custom'` block — in `header`, `rows` and `linkRows` alike — is filled at issue time from `templateFields[id]` on create_pass. Do not put display values in the template itself. APPLE STRIP: Apple's banner is generated from the hero you supply here; if you supply none, the pass falls back to a stock per-type image that will not match the business. Supply a `hero` fileId for any customer-facing template. ICON: ALWAYS supply one, sourced from the business's own website — omit it and the pass ships the WALLETAP logo, which is the most visible way for a customer's card to look unfinished. Their icon is declared in their HTML; prefer `<link rel="apple-touch-icon">`, then the largest `<link rel="icon" sizes=…>`, then `msapplication-TileImage`, and take the biggest square available (a 32px favicon upscaled to 87px is mush). Then CHECK IT AGAINST THE CARD: favicons are drawn for browser tabs and are usually a dark mark on transparency, which vanishes on a dark pass. When that happens, keep their glyph but set it on a filled disc in their brand colour with the mark knocked out in white — legible at 29px, and safe under Google's circular mask. WEB LINK: `webApp` is the business's site (a full https URL is fine) and `webAppLabel` is what Google Wallet calls that row. Without a label the row is named after the pass title, which tells the holder nothing about where it goes — write e.g. 'ACME website'. Omit `webApp` rather than guessing a URL; a row that leads nowhere is worse than no row.
beaconsNo
passPageNo
enableNFCNo
locationsNo
enrollFormNo
templateIdYesTemplate id.
cardSharingNo
enableBarcodeNo
requireAuthenticationNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only provide destructiveHint: true. The description adds extensive behavioral transparency: it discloses merge-patch semantics, the deep-merge behavior of `pass`, the wholesale replacement of `locations`, and the critical caveat that already-issued passes are not rebuilt on read. It also explains the consequences of omitting `hero` or `icon` (e.g., stamps not rendering, Walletap logo). This is far beyond what annotations provide and fully transparent about the mutation's effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though long, every sentence earns its place. The description is front-loaded with the core update semantics, then organizes detail into labeled sections (STAMP CARDS, VALUES, APPLE STRIP, ICON, WEB LINK). It is structured to be scannable, with critical caveats called out in caps. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with no output schema and a very low coverage, the description is remarkably complete. It covers the main behaviors, exceptions, and pitfalls for the most impactful fields. While not every parameter is individually elaborated, the guidance is sufficient to correctly update a template. The complexity of `pass` is thoroughly addressed, and the locations exception is explicitly flagged.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 18%, so the description carries the burden. It provides deep semantic detail for the most complex parameter, `pass`, including valid keys, image formats, stamp-card requirements, and value-filling behavior. It also explains the semantics of `locations`. However, parameters like `beacons`, `passPage`, `enrollForm`, and `cardSharing` are not described beyond the schema. Given the low coverage, the description compensates well for the key parameters but not exhaustively for all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('partial update'), the resource ('existing template'), and the core semantics (RFC 7396 merge-patch). It clearly distinguishes from siblings like create_template and delete_template, and even names the alternative for a different task (creating a new template). The phrase 'partial update' immediately signals what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool: send only fields to change, with merge-patch semantics. It provides clear directives on how to handle `pass` (deep-merge), `locations` (replace wholesale), and gives concrete guidance for stamps, icons, apple strip, and web links. It also warns about already-issued passes. This is extensive usage guidance that goes far beyond a simple when/where.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/walletap/walletap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server