← All scenarios
Self-serve · Returns & Service Assistant

Self-Serve Card Reissue

A signed-in BlastPass member has lost their physical membership card and just wants a replacement sent over. It's the kind of small, everyday errand that usually means waiting in a support queue. Here it's fully self-serve, with no associate in the loop, and one firm rule underneath it all: nothing on the account changes until the member proves the card is really theirs.

BlastPass Concierge Membership MCP membership-card-png skill PNG out

The conversation

  1. 1
    Member (signed in)
    Hi, I lost my BlastPass card. Can you send me a new one?
  2. BlastPass Concierge

    "They want a replacement card. I don't have a membership ID yet, and I can't look anything up, or verify anyone, without it. I'll ask for it first; nothing changes until I have it."

    "Oh no, let's get you a new one. 💜 To pull up your membership, what's your BlastPass member ID? It usually looks like MEGA-BLAST-####."

  3. 2
    Member
    Sure, it's MEGA-BLAST-1024.
  4. BlastPass Concierge
    get_membership looks up MEGA-BLAST-1024 (read-only)

    Finds a BlastPass Plus Extra membership. Before deactivating a card, the agent verifies identity with two factors the real owner has, and reveals neither.

    "Got it, I found a Plus Extra membership under that ID. Before I deactivate the old card and issue a new one, I just need to confirm it's really you. Can you give me two things: the name on the membership, and the last 4 digits of your console's serial number?"

  5. 3
    Member
    It's Jordan Pixel, and the last 4 are 1024.
  6. BlastPass Concierge

    "Name Jordan Pixel matches, and the serial ends in 1024. Both factors match. Identity confirmed. Now I can safely reissue."

    reissue_card deactivates the old card, mints a new serial, keeps membership active
    membership-card-png generates & runs Python (matplotlib)

    Renders a CR80 digital card from the get_membership details plus the freshly minted serial: name, Plus Extra purple tier badge, member ID, console serial, dates, barcode, and perks line.

    📄 hands back blastpass_card.png

    "Thanks, Jordan. You're verified. ✅ Your new digital card is ready. The old card is now deactivated; your tier, term, and BlastPoints are unchanged."

🦺
Output
blastpass_card.png: a tier-colored "PLUS EXTRA" digital membership card with the new serial

What was demonstrated

Verify before you mutate

Identity is confirmed with two factors (name and last-4 of the serial) before any card is touched. The agent never reveals either value while asking.

It actually changes state

reissue_card deactivates the lost card server-side and mints a new one, distinct from cancelling the membership. The PNG reflects the new serial, not the old.

The foundation pattern

MCP → verify → MCP → skill → file is the core loop. The flagship scenario stacks connected agents, policy, and chained math on top of it.

What gets generated

The member gets a digital card, rendered live by the membership-card-png skill (matplotlib) from the get_membership details plus the freshly minted serial. This is the actual PNG from a real run of the skill — download it to see exactly what the member saves to their phone.

BlastPass Plus Extra digital membership card for Jordan Pixel, member ID MEGA-BLAST-1024, with the freshly reissued card serial BLAST-A1B2-1024, purple tier band, member dates, console serial, and barcode.