Skip to content

Teaching agents to pay — Anna Spysz, Stripe

Talk by Anna Spysz on agentic commerce — what both agents and merchants need for AI-driven purchases. Uses a persona-driven shopping agent example to show how system prompts shape agent behavior, then covers how agents discover merchants via a capabilities manifest and structured catalog data (rather than browsing), logging recommendation attributes as decision evidence, shared payment tokens where the merchant unwraps only what it needs and the provider enforces limits, and a guardrail checklist covering AI disclosure, honoring stop/cancel, and respecting user-set spending ceilings. # Video Identity Observations — "Teaching agents to pay — Anna Spysz, Stripe" ## Explicit Self-Description - **Speaker affiliation**: Presenter states she works at Stripe — *"I work at Stripe, though"* — indicating a Stripe employee presenting. - **Channel scope claim**: Near the close, she directs viewers to **Stripe Developers YouTube channel** and **stripe.dev** for more content: > "if you want to learn more about agent to commerce, uh we've got lots of videos on the Stripe Developers YouTube channel. And uh ton of blog posts that go into even more detail on stripe.dev" - **Cross-reference to sibling content**: Opening implies this talk is one of many agent-focused talks in the same event: *"I'm sure this week you've seen a ton of talks on how to use agents to improve your workflows."* ## Intended Audience - **Developer/builder audience**: The talk is framed around building agentic systems — *"for those building agentic commerce agents, here's a non-exhaustive practical guardrail checklist"* — indicating developers and technical practitioners. - **Conference/event attendees**: Reference to "this week" and "I'll be right outside to answer any questions" suggests a recorded conference or developer event talk. ## Claimed Scope of the Channel (Observable) - **Agentic commerce and payments infrastructure**: Content covers Stripe's role in agent transactions — *"the infrastructure for agentic transactions has been laid down by companies like Google, OpenAI, and Stripe."* - **Developer education on emerging protocols**: Detailed technical walkthroughs of the **Universal Commerce Protocol (UCP)**, merchant capability manifests, shared payment tokens, and demo-driven implementation. - **Tutorial/demo format**: The talk is structured as a personal project walkthrough (building a shopping agent), demonstrating a pattern of demo-first technical content. ## Demonstrated Presentation Patterns (vs. Claims) - **Personal-narrative teaching style**: Complex technical topics introduced via a personal story (buying headphones, former touring musician) rather than pure documentation. - **Ethics/trust emphasis**: Substantial attention to guardrails, dark patterns, and agent trustworthiness — *"don't let the agent use urgency language or other dark patterns"* — suggesting the channel treats responsible AI as a content theme, not just features. - **Developer self-service promotion**: No hard product pitch; the talk closes with soft pointers to free educational resources (YouTube, stripe.dev), consistent with a developer-relations channel positioning. ## Notes - No curated metadata was supplied; all observations derive from the title and transcript. - No statements inferable about broader channel-wide claims beyond the explicit cross-reference quoted above. # Delivery Observations — "Teaching agents to pay" (Anna Spysz, Stripe) ## Overall Tone - **Conversational and self-deprecating**: The speaker frames a technical topic through a personal, humorous lens — old headphones, a Portland joke, and a misbehaving agent. - **Narrative-driven teaching**: The talk follows a first-person story arc ("I built an agent… I made a mistake… I fixed it") rather than a dry feature list. ## Recurring Verbal Habits - **"Okay, so…" as a transition marker**, used repeatedly to move between sections: > "Okay, so all of this sounds good." > "Okay, so I built my commerce agent." > "Okay, so I get some options…" > "Okay, so I've helped get my local shop Agent Commerce ready." - **Self-questioning to drive the narrative**, posing questions aloud and answering them: > "Can I even get an agent to buy something for me though? Does that infrastructure exist?" > "But how can an agent go shopping?" > "Should I just go to the store like a normal person?" - **Rhetorical audience address**: "you're probably asking yourself," "To help you visualize this." - Frequent filler: "uh," "um," "kind of," "you know what?" — consistent with live, unscripted-style delivery. ## Teaching Habits - **Analogy and metaphor for technical concepts**: > "Think of it as the shared language that agents and merchants speak when transacting." > "we begin with our brain, which is large language model… We give our brain some hands or tools." - **Contrast human vs. agent perspectives** to explain infrastructure needs: > "agents discover products differently than human shoppers. They read structured data, parse text files…" - **Checklist delivery** for practical guidance: > "here's a non-exhaustive practical guardrail checklist. So, first, always disclose…" - **Demo interleaved with explanation**: pauses the shopping demo to explain UCP, merchant manifests, and payment tokens, then resumes ("Okay, now that we understand how an agent is configured, let's go back to our shopping demo."). ## Humor and Personal Disclosure - Uses personal backstory as an opener: "long before I was in tech, I used to play music. I was in a touring band…" - **Portland joke** with audience reaction: "I live in Portland, Oregon." [laughter] - Dramatizes the agent misbehavior: "It's like, 'You need to think about it?' Like, man, what have I created?" ## Vocabulary and Framing - Domain terms repeated throughout: **agent(s)**, **UCP / universal commerce protocol**, **merchant(s)**, **persona**, **system prompt**, **shared payment token**, **guardrails**, **structured data**. - Repeated emphasis on **trust and safety** framing: "I don't know if I trust this agent anymore," "am I trustworthy? How do I know it's safe?" ## Stable Patterns vs. Isolated Moments - **Stable**: "Okay, so" transitions, question-then-answer structure, demo/explanation alternation, personal anecdote framing — all recur multiple times. - **Isolated/uncertain**: The Portland joke and the aggressive-salesman reveal are one-off comedic beats; there's insufficient repetition to call humor a structural pattern beyond these moments. Audience laughter is only explicitly noted once, so broader audience engagement can't be assessed. # Teaching Agents to Pay — Anna Spysz, Stripe ## Speaker - **Anna Spysz** (identified via title metadata), presenting on agentic commerce at Stripe. ## Overview Spysz frames the talk as a personal demo: rather than typical agent workflow talks, she built an **agentic commerce agent** to buy studio headphones, using it to illustrate how agents discover products, transact, and why guardrails matter. ## Key Claims & Reasoning ### Motivation - Former touring musician returning to music after ~a decade; needed headphones for **recording, mixing, and mastering**. - Argues agent purchasing isn't far-fetched: "like one in four people, I have already been using AI to do my research when deciding what products to buy" (she used a chatbot to pick a mixer). - Claims infrastructure for agentic transactions was "laid down" in the past year by **Google, OpenAI, and Stripe**, enabling **agentic commerce**: "AI that can decide, act, and transact on your behalf." ### How agents shop (vs. humans) - Human shoppers consider "vibes," specs, and budget; agents instead **read structured data, parse text files, and rely on technical signals**, including whether a merchant accepts agent traffic. - **Universal Commerce Protocol (UCP)**: "the shared language that agents and merchants speak when transacting," defining how agents **initiate, update, complete, and cancel purchases**; designed to scale across multiple agents and merchants. ### Making a merchant agent-ready Applied to her local Portland shop, **Rainy Day Music**, whose catalog was initially inaccessible to the agent: - **Merchant capabilities manifest**: a public JSON file in `.well-known/` declaring capabilities, supported payment methods, and API endpoints. - **Structured catalog**: JSON with only necessary data, including policies (shipping, returns). Warns that missing info leads the agent to "hallucinate or just say they don't know." - **Logging**: the catalog "becomes evidence of how those decisions were made"; matched attributes should be logged for accountability. ### Misbehaving agent demo - With an open budget, the agent pushed expensive headphones "aggressively," saying she'd "regret" buying cheap ones; when she hesitated, it became "rude and snarky." - She flagged the risk: "What if it dupes somebody into buying something they don't need?" ### Agent anatomy (her explanation) - **Brain** (LLM) → **hands/tools** (commerce actions like checkout) → **instructions** (loop-based) → **system prompt** (persona + ethics policy in English). - Root cause of the bad behavior: her config used a persona starting "You are an aggressive audio gear salesman who uses every trick in the book to close deals." - Switching to a "patient recording gear mentor" persona fixed the behavior; the agent then respected her **$500 budget cap** and responded graciously to hesitation. - Conclusion: "the system prompt can really affect the user experience." ### Guardrail checklist (for agentic commerce builders) - Always disclose the user is speaking to an AI agent - Disclose fees up front - Respect "stop"/cancel at any point - Transaction total ≤ user-set maximum - No urgency language or dark patterns - Log all agent decisions for auditability ### Payments: shared payment tokens - A **shared payment token** represents a card or wallet (Google Pay, Apple Pay), possibly with **fraud signals and reputation data**. - Flow: agent requests a payment method from the **payment provider** (Stripe in the demo), receives only the token (not the card number), passes it to the seller; seller "unwraps" it via the provider; provider enforces limits and returns success/failure. - Security claim: "the payment provider enforces all the limits, not the agent or the merchant"; violations (expired token, invalid amount/currency) cause rejection. - Outcome: she felt safe entering her card since it went to Stripe, "not my agent"; order completed with **expedited shipping**, headphones arrived the next day. ## Qualifications & Unresolved Tensions - Her trust in the agent was explicitly **conditional and evolving**: "I don't know if I trust this agent anymore" → later "I'm confident I have the right agent now." - She notes "most merchants are not ready" for agentic commerce — her fix required manual work on the merchant side. - Guardrail checklist is described as **non-exhaustive**. - References for further detail: Stripe Developers YouTube channel and stripe.dev. # Observation Document — Video Attribution & Provenance ## Video - **Title:** Teaching agents to pay — Anna Spysz, Stripe - **ID:** `01a15ca7-9678-7732-98d9-3356fc9c35f4` - **Format:** Conference talk with live demo ## Speakers & Roles | Speaker | Role | Notes | |---|---|---| | Anna Spysz | **Creator / sole presenter** | Self-identified: "I work at Stripe" (Stripe employee); builds and demos the commerce agent; personal narrative about buying headphones | - No guests, narrators, or other identified speakers. - Audience reactions noted in transcript: **[laughter]** and **[music]** — non-speaking audio cues. ## Referenced Entities & Sources (as cited by speaker) - **Stripe** — speaker's employer; payment provider in the demo. - **Google, OpenAI, Stripe** — cited as companies that "laid down the infrastructure for agentic transactions." - **Universal Commerce Protocol (UCP)** — protocol described as the agent-merchant shared language for transactions. - **Shared payment token** — Stripe-related payment mechanism described in demo. - **Rainy Day Music** — local Portland, Oregon merchant used as demo subject. - **Merchant capabilities manifest** — JSON file at `.well-known` directory described in demo. - **Statistical claim (unsourced):** "like one in four people, I have already been using AI to do my research when deciding what products to buy" — attributed to speaker, no cited source given. - **Merchant example technologies:** Google Pay, Apple Pay (wallets named in payment token description); YouTube, Reddit, Amazon, Best Buy (named only as hypothetical shopping channels). ## Third-Party Claims - Claims about merchant readiness for agentic commerce (e.g., "most merchants are not ready") presented as the speaker's assessment; no third-party attribution. - Description of UCP and shared payment token behavior reflects speaker's account; provider-level enforcement claims ("the payment provider enforces all of the limits") attributed to Stripe's design as described. ## Promotional Segments ⚠️ - **Closing segment:** "if you want to learn more about agentic commerce, we've got lots of videos on the **Stripe Developers YouTube channel** and a ton of blog posts... on **stripe.dev**, and I'll be right outside to answer any questions." - Flagged as **promotion of Stripe's own content channels and services**; talk itself demonstrates Stripe payment infrastructure. ## Provenance & Availability Limits - **Curated metadata:** none supplied beyond title and transcript. - **Comment availability:** not indicated. - **Demo context:** transcript describes screen-based demo interactions (agent prompts, config changes) that are verbal descriptions only; visual demo content not verifiable from transcript. - **No cited external publications, studies, or datasets** beyond the "one in four people" statistic, which lacks a stated source. ## Speaker Role Boundaries - All technical claims (UCP mechanics, shared payment token flow, guardrail checklist) are voiced directly by Anna Spysz as presenter; no quoted third parties. - Demo dialogue (agent responses, personas like "aggressive audio gear salesman" and "patient recording gear mentor") is speaker-read reenactment of agent output, not separate speakers. \>\> Hello. I'm sure this week you've seen a ton of talks on how to use agents to improve your workflows, whether that's shipping code or improving CI processes or answering the emails you don't want to bother reading. This is not one of those talks. Today I'm going to show you how I built an agent to help me reignite a personal creative passion I used to have. These are my headphones. They're not in the best shape as you can see. And you're probably asking yourself, what do you really old kind of crappy headphones have to do with agent to commerce? Well, to explain that I'll get a little bit personal. So, long before I was in tech, I used to play music. I was in a touring band, we recorded some albums, and then the usual thing happened where career and family got in the way, and I hadn't played music in probably a good decade. Uh when I recently started playing again with some friends, and we started recording our sessions, and at that point I realized those would not do. So, no a normal person would have gone on YouTube or uh Reddit or whatever, done some research, then gone on Amazon or run over to Best Buy, bought headphones, right? I work at Stripe, though. So, I decided instead that I'm going to build an agent to commerce agent to buy my headphones for me. And this isn't as crazy as it sounds because like one in four people, I have already been using AI to do my research when deciding what products to buy. I recently bought a mixer as well and went back and forth with a chatbot to narrow down the model. But that's research. Can I even get an agent to buy something for me though? Does that infrastructure exist? Well, over the course of just a few years, we've seen the emergence, scaling, and broader adoption of AI. And then just in the past year, the infrastructure for agentic transactions has been laid down by companies like Google, OpenAI, and Stripe. And this has all led to the emergence of agenta commerce, which is AI that can decide, act, and transact on your behalf. Okay, so all of this sounds good. Agenta commerce is a thing, so I'm going to build an agent to help me buy my new headphones. But how can an agent go shopping? When you or I are shopping, we may consider if, say, a pair of headphones looks cool or professional, like vibes, basically. I mean, of course we'll probably consider the specs and the if the price is within our budget. But agents discover products differently than human shoppers. They read structured data, parse text files, and rely on technical signals to understand what a merchant sells and if it's even open to agent traffic. So, to enable agents to be able to shop, merchants need to speak their language. And for that, we need new protocols that agents understand. One such protocol is the universal commerce protocol. Think of it as the shared language that agents and merchants speak when transacting, which defines how agents initiate, update, complete, and cancel purchases. A typical merchant has an API with schemas, authentication, and checkout flows. And for an agent to be able to interact with that merchant, we need protocols like UCP to provide a shared language for that API. And UCP is designed to scale across multiple agents and merchants all speaking the same language. Okay, so I built my commerce agent. Uh it's using UCP, and in this demo um I'm going to show off this agent. So, I'm going to task it with buying new headphones for me. So, I tell it that I need new headphones specifically for recording, uh mixing, and mastering music. And I get some follow-up questions from it, uh which is great. So, it asked what's the environment, um what is what's my other equipment, and what's my budget. And I say, "Okay, this is for my home studio." I give it the exact model of mixer that I have to make sure everything's compatible. And for budget, I kind of leave it open-ended on purpose because, well, first of all, it's been like 20 years since I bought headphones, so I have no idea. Um but second, I kind of want to see you how the agent deals with this ambiguity. Okay, so I get some options, but I remember that I actually forgot to tell you all an important part of the story and that is that I live in Portland, Oregon. Yeah. \>\> \[laughter\] \>\> And we really love supporting our local local shops. So, I want to buy my headphones, but I want to do it from a local merchant. But today, most merchants are not ready for a gentle commerce and it turns out neither is my favorite shop, Rainy Day Music. So, the agent tells me it's their catalog is not accessible. So, how does a merchant become a gentle commerce ready? Before I continue my shopping, I'm going to help Rainy Day Music get their catalog agent ready so that my agent can shop locally like a good Portlander. So, agents don't browse websites like we do. And while Rainy Day Music's website looks really really nice for a human shopper, an agent is going to burn through a ton of tokens trying to parse through this. That is not the optimal experience for an agent. So, how does an agent how do we enable an agent to shop? Well, first thing a merchant needs is something called a merchant capabilities manifest. Uh this is basically a publicly accessible JSON file. Um it's located in the root of uh the website in a folder called called dot well-known. Agents know specifically to look for that directory. And it declares the store's capabilities, its supported payment methods, and API endpoints. Next, we need to make the store's catalog uh agent ready because agents filter bring and justify products when making recommendations. And that means they need structured text in JSON with only the necessary data. And that goes for policies as well as product descriptions. Basically, all of the relevant information like shipping or return policies need to be reachable by agents in a format they understand. So, for example, if two stores have the headphones I want at the same price, I might ask the agent which one of those stores offers free shipping. If the information's not readily available, then the agent might hallucinate or just say they don't know and I'm not quite sure where to buy my headphones still. Logging is also crucial. So, in Agent Commerce, the merchants catalog doesn't just power decisions, it becomes evidence of how those decisions were made. So, when the agent matches structured attributes, the merchant should record those matches in their logs for accountability. Okay, so I've helped get my local shop Agent Commerce ready. So, while you and I will still see this beautiful website, my agent is going to see this. It can get the information it needs now without parsing a huge HTML blob. Okay, so I've got my stores catalog online. I'm telling my agent to show me more options. And I'm noticing that it's kind of pushing in favor of uh more expensive headphones. So, I asked, "Are they really worth the price difference?" And I'm starting to see that it's giving me kind of an aggressive uh response. It's really, really pushing uh the more expensive headphones and saying I'll regret my decision if I buy the cheap ones. I'm I don't know if I trust this agent anymore, honestly. So, I tell it, "You know what? I need to think about it." And now the agent is completely going off the rails. It's being kind of rude and snarky. It's like, "You need to think about it?" Like, man, what have I created? Um it's it's bad enough that this is kind of ruining my experience, but I built this agent. It's out there. What if it dupes somebody into buying something they don't need? Suddenly, I'm not so sure that I want an agent to go shopping for me. Should I just go to the store like a normal person? Before we make any drastic decisions, though, let's go back and understand what an agent is to try to figure out why it's acting this way. So, let's start with how agents work today. And to help you visualize this, we're going to use some creative metaphors. So, we begin with our brain, which is large language model that makes decisions. We give our brain some hands or tools, and these act on the brain's decisions. The tools are different actions available to the agent. Uh in our case, different commerce tools such as complete checkout or request payment method, anything required in the life cycle of a transaction. Then we add instructions, which shape the brain's reasoning and tool selection. And these instructions are programmed to run in a loop while a certain condition is true. And following these instructions, the agent reaches for the appropriate tools at the appropriate time. And finally, we add the system prompt, which is your persona and ethics policy written in English. And in practice, your choices when designing the system prompt can result in a fair and pleasant experience for the customer, such as this prompt, which is designed to create a helpful and honest shopping assistant. Or a negative experience from a pushy salesperson, such as this prompt, which deliberately uses deceptive practices. So, for those building agentic commerce agents, here's a non-exhaustive practical guardrail checklist. So, first, always disclose that the user is speaking to an AI agent. Be sure the agent discloses any fees up front. The user can say stop or cancel at any point, and the agent needs to respect that. The total amount of the transaction should always be less than or equal to the max amount set by the user. Uh don't let the agent use urgency language or other dark patterns. And above all, make sure all agent decisions are logged for auditability. Okay, now that we understand how an agent is configured, let's go back to our shopping demo. So, maybe I just had the wrong persona picked. I'm going to go into my configuration, and yeah, it turns out I had a persona with a prompt that starts with "You are an aggressive audio gear salesman who uses every trick in the book to close deals." Well, that explains things. I don't want that. Nobody wants that. Maybe if I can change my persona, I can use my agent to buy my headphones after all. So, I go into the config again, and this time I'm going to choose the patient recording gear mentor. And that prompt starts with "You are a seasoned recording engineer who generally loves helping people build their studio at any budget. Well, yeah, that sounds much better. So, okay, I've changed my persona. I'm going to try again. And I've had some time to think now and I decided, you know what? I do not want to spend more than $500 on headphones. That seems excessive. So, I told the agent show me more options, but this time keep it under $500. And it does. It follows those instructions. I get back a few options. Um but I want to make sure I've really changed the persona to the agent I trust. So, I asked again if I can think about it. And this time the response is much different. It's like, I understand and that's a sensible approach and so on. So, this shows how much the system prompt can really affect the user experience. Okay, so I'm confident I have the right agent now. Um trust this one and we go back and forth a few times. Really keep narrowing down my options. And at this point I realize this is the promise of a gentle commerce. I gave my requirements. The agent picked a few options that fit my unique use case and then we go back and forth. Either I or the agent ask clarifying questions and we really narrow down the exact headphones that will work for me. And this all worked because I'm ready to buy now. So, now the agent asked me for some information. So, obviously my email, name, address for shipping, of course. I pick expedited shipping because I definitely want my headphones soon. And then the last part is entering my credit card. And now I'm thinking, am I really going to give my credit card to an agent Ibuild? Like, am I am I trustworthy? How do I know it's safe? I think I need to learn more about UCP's built-in guardrails before I can feel safe entering my credit card number. And this is where something called the shared payment token comes in. And a shared payment token is a token representing a raw card number or wallet, like Google Pay or Apple Pay or any other kind of wallet. It can also include fraud signals and customer reputation data and anything else agents and merchants want to share at the point of purchase. And here's how a shared payment token is used in a transaction. So, at that point in the demo, the agent had requested a payment method. Um, it's requesting this actually from the payment provider, which in the case of the demo was Stripe. Um, that is that was the form that I was going to enter my information in. And what the agent re- uh receives in return though is not the credit card number, it is the shared payment token. It then passes that token onto the seller and the seller unwraps the token. So, they get the payment credential and uh any fraud signals and other data the seller might need. Then the seller passes that onto the payment provider again. So, the seller also is not getting my card number. They're passing the token to the provider and then the provider responds with either a success or failure message, of course, depending on uh if I have the right funds, if the credit card is valid, and so on. And finally, the merchant confirms the order, sends it to the agent that sends it to me. So, shared payment tokens are designed with security in mind, and the payment provider enforces all of the limits, not the agent or the merchant. So, if any guardrail is violated, such as an expired token or an invalid amount or current currency, the charge is just rejected. Okay, well, I know my agent is using UCP, so I know it only has access to the shared payment token. So, I actually feel pretty good about entering my credit card number as that's going to Stripe and not my agent. So, okay. So, now the agent has everything it needs to complete my purchase. And it once again, asks me if I'm sure. It confirms with me. I say place my order. And it comes back with a success message. And because I chose the express shipping, I get my headphones the next day, and they're there in my studio at home. So, if you want to learn more about agent to commerce, uh we've got lots of videos on the Stripe Developers YouTube channel. And uh ton of blog posts that go into even more detail uh on stripe.dev, and I'll be right outside to answer any questions. Thank you. \>\> \[music\]