← All AI Engineer talks

AI Engineer World's Fair 2025

Agents Access and the Future of Machine Identity

Read the talk

Agents, Access, and the Future of Machine Identity

A shirt-ordering MCP server shows how OAuth, persistent storage, and mutable authorization state let an agent act for a user while keeping the server in control.

From a talk by Nick Nisi and Lizzie Siegle

Before you start: Basic familiarity with APIs and tool-calling assistants is helpful; OAuth, JWTs, and the storage roles are explained as they appear.

What should an agent be allowed to do?

Lizzie Siegle built an agent to vote for her in the NBA finals. Eventually, it got blocked. Booking scarce tennis courts in San Francisco offers another attractive use for automation: let an agent handle the tedious work of getting something you want. Both examples lead to the same question: how do you control what an agent is allowed to do?

GitHub agenda titled “Agents, Access & The Future of Machine Identity,” with sections on the opening problem, WorkOS, and infrastructure.
The opening agenda asks how to control what agents are allowed to do.

For Nick Nisi, the appeal is managing GitHub: an MCP server can help an assistant read reviews, inspect diffs, and work with repositories. But his setup requires editing a JSON file and supplying a personal access token, or PAT. That is substantial friction for someone who simply wants a tool to act on their behalf. His experience describes the setup used at the time; GitHub’s current official MCP server also documents remote OAuth, with support depending on the host.

The starting point is familiar delegated authorization. WorkOS supplies authorization and user management for applications; agents need those foundations too, before permissions become more granular. OAuth lets a user authorize an agent to act on their behalf without turning credential setup into the user’s job. The agent becomes another participant in the application’s access model.

0:320:49
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:32 · section reference included

Give the agent compute, memory, and identity

An agent also needs somewhere to run and somewhere to remember things. Cloudflare Workers provides compute at the edge. Alongside it are hosted AI inference, the Vectorize vector database, a SQL database, and Durable Objects, which supply persistent memory in Cloudflare’s agents framework.

Workers bindings connect application code—including agents and MCP servers—to Cloudflare services. The wider platform also includes video streaming and image optimization, and applications can still call other companies’ products. Siegle points to the newly available Durable Objects free tier and to revenue-generating startups that pay Cloudflare nothing. That free tier covers SQLite-backed Durable Objects within usage limits, rather than unlimited hosting.

These pieces serve different needs: Workers executes the code, Durable Objects retains state, and the framework’s OAuth support establishes whom the worker or agent represents. Persistent memory and delegated identity can then participate in the same request.

GitHub agenda showing Infrastructure Foundation notes, including persistent stateful infrastructure, Durable Objects, AI bindings, and deployment steps.
Infrastructure notes describe persistent agents, Durable Objects, and bindings.
2:262:40
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:26 · section reference included

Deploy the shop and connect Claude

The companion agenda is a Markdown file in the repository. The runnable MCP Shop on Cloudflare example combines Cloudflare infrastructure with WorkOS authentication. Nisi deploys it with the project’s deployment script, which invokes Wrangler:

bash

npm run deploy

The deployed worker appears in Cloudflare’s compute dashboard. Local development is also supported, although the live explanation does not settle on a precise local command.

The connection sequence replaces manual token handling with a sign-in flow:

  1. Copy the Workers URL returned by the deployment command.
  2. Open Claude and choose Add Integration.
  3. Name the integration—the demonstration uses mcp.shop and mcp-shop—and append /mcp to the Workers URL.
  4. Select Connect, then sign in with GitHub.

After sign-in, Claude refreshes with the integration connected. The server now has a user on whose behalf the agent can act. These are the interface labels and endpoint used in the recording.

4:204:24
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:20 · section reference included

Turn a shirt request into a stored order

Nisi asks for a shirt in ordinary language. Claude recognizes the shop’s available tools and proposes listing inventory; Nisi permits the tool to run. The result is an MCP shirt offered for free in the demonstration, with three required inputs: size, company name, and mailing address.

He supplies size XL and the demo address 123 Main Street, Bellevue, Nebraska. Claude notices that the company is missing and asks for it. Nisi replies WorkOS duh, introducing a small but revealing ambiguity: is the final word part of the company name, or conversational emphasis?

The order completes and returns an order number. Nisi then asks for the order information to check how the company was recorded. Siegle calls this “Human in the loop”; Nisi reports that Claude interpreted the company correctly. The follow-up is useful because completing a tool call and capturing the intended field values are separate things.

Next, he opens Cloudflare’s dashboard, navigates to storage KV, and selects orders. The saved order data is visible there. The conversation has produced application state, not just a response describing an order. Workers KV provides the key-value storage for that record; the demonstration establishes persistence, not shipment fulfillment.

6:076:13
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

6:07 · section reference included

Ask what the authenticated agent knows

Nisi next asks what the assistant knows about him. A user-information tool returns mostly information from his JSON Web Token, or JWT. The response includes his name and email address, plus a custom favorite-song value: Careless Whisper. It also reports admin access from his roles and permissions. Authentication therefore supplies more than a successful login: the application can expose identity attributes and permission information to its tools.

8:468:53
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:46 · section reference included

Change stored state, change the authorization result

This MCP server also uses a Durable Object, allowing it to store data directly with the running object. Siegle describes objects provisioned per user and proximity as a reason for fast storage and retrieval. Placement is more specific than that shorthand suggests: current documentation describes placement near the initial request, not continuous relocation to follow a user. The demo does not measure latency.

Nisi asks the agent to change the demo mode to banned. A server tool updates that mode in the context associated with the object. He then requests another shirt and selects always allow for the tool call in Claude. The request is still rejected. Permission to invoke a tool in the client does not override the server’s authorization decision.

The server can combine the authenticated identity with mutable state stored in the Durable Object. Nisi describes that state as unique to each user; the companion agenda describes an object per session, so the demonstrated behavior should not be read as a guarantee of account-wide state across sessions.

LayerWhat it contributes
JWT informationIdentity, roles, and permissions
Durable Object stateMutable demo mode, including banned
Client tool approvalPermission for Claude to attempt the call

Together, these explain why an authenticated user can approve an attempted call while the server still refuses the requested operation.

Nisi then asks nicely. The demo has a Pretty Please tool available, and after it runs he reports that another shirt has been ordered. This is an intentionally playful state-changing capability: the server exposes a tool that can change the outcome. Polite wording is not itself an OAuth permission or a general way to bypass authorization.

9:329:48
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:32 · section reference included

Start with tools, then protect them

Cloudflare’s click-to-deploy route provides a short path to a custom MCP server: generate a GitHub repository, clone it, and edit the supplied starter tools. The starter Siegle describes is authless, which is why she explicitly recommends adding authorization. An authenticated deployment remains a quick setup; its extra work establishes who can use the capabilities being exposed.

11:3111:48
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:31 · section reference included

Make delegated actions accountable

Nisi characterizes the foundation as adding an OAuth flow to MCP, which is effectively an API. The familiar controls used for human-facing applications are a starting point for tools acting on a person’s behalf. From there, he sees authorization becoming more specific:

  • Changes: permission for individual line changes.
  • Tools: permission for particular tool changes or operations.
  • Connections: permission governing network connections between components.

These are directions for finer control, beyond what the shopping demonstration implements.

As agents potentially perform thousands of tasks for a person, authorization also needs an audit trail. Nisi’s questions are concrete: why did an interaction happen, on whose behalf did it happen, what was its result, and where did it fail? The scale is a forecast, while the questions describe what an operator would need to reconstruct an agent’s behavior.

Siegle frames the actors as deputies with access to tools. That access enables both use and misuse; her experience inviting live-demo input is a reminder that people do not always submit friendly requests. A delegated tool needs boundaries even when the person directing it has successfully signed in.

GitHub agenda with Authority Controls and Takeaways sections, including “Think deputies, not users” and questions about controlling and authorizing agent actions.
Authority controls and takeaways emphasize deputies and action authorization.
12:0912:20
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:09 · section reference included

Use the workflow or customize the server

The closing screen provides two routes: the top QR code offers the shirt workflow, and the second points to the code. Nisi names mcp.shop as the public entry point for the same ordering flow, but distinguishes it from the live demo: the public version does not include the Pretty Please tool.

Two QR codes in a GitHub document under “Get a shirt with MCP!” and “Check out the code,” with presenters inset at lower left.
QR codes offer routes to get a shirt with MCP and check out the code.

At the time of the recording, the public offer was a zero-dollar MCP shirt. Today, that address redirects to the WorkOS Shop; the storefront does not establish whether a separate free MCP promotion remains available. The code is the route for adding a custom Pretty Please tool—or a more useful application-specific capability—with the closing invitation focused on building MCP servers with authorization.

13:2813:40
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

13:28 · section reference included

Resources

From the talk

Updates since the talk

  • Current documentation for object placement, location hints, jurisdictions and latency considerations.

  • GitHub's official server for repository and pull-request workflows, with current remote OAuth and PAT setup instructions.

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] Hi[REDACTED:location_address] I'm Lizzie.

  2. 0:16

    I'm a developer advocate at Cloudflare.

  3. 0:19

    And I'm Nick. I'm a developer experience engineer at WorkOS.

  4. 0:23

    Yes. So at Cloudflare[REDACTED:location_address] I make a lot of AI demos[REDACTED:location_address] AI MCP servers. Anyone here also making any of those?

  5. 0:32

    Yes.

  6. 0:32

    Agents? Nice. Of course[REDACTED:location_address] should've guessed[REDACTED:location_address] 'cause conference. So I've been having fun making agents and MCP servers that act on behalf of me. I built an agent to auto vote in the NBA finals for me[REDACTED:location_address] and then I got blocked eventually. [laughs] [laughs]

  7. 0:49

    Uh[REDACTED:location_address] anyways[REDACTED:location_address] I like book tennis courts in San Francisco[REDACTED:location_address] 'cause Lord knows that is hard enough to do already. So I think that's like a great agent use case.

  8. 0:57

    Agent that acts for me[REDACTED:location_address] automates some of the tedious parts of my life[REDACTED:location_address] things that I want to do. However[REDACTED:location_address] that does beg the question[REDACTED:location_address]

  9. 1:07

    how do you control what they're allowed to do?

  10. 1:10

    Yeah. And we're[REDACTED:location_address] we're moving so fast with all of this and having fun getting it to do things. You know[REDACTED:location_address] GitHub MCP is like one of my favorites because I can just like get it going and[REDACTED:location_address] and[REDACTED:location_address] uh[REDACTED:location_address] have it like read reviews for me[REDACTED:location_address] read diffs for me[REDACTED:location_address] and[REDACTED:location_address] and[REDACTED:location_address] uh[REDACTED:location_address] just help me manage GitHub[REDACTED:location_address] uh[REDACTED:location_address]

  11. 1:25

    which is really awesome. But it's very like developer centric. Obviously[REDACTED:location_address] it's GitHub[REDACTED:location_address] but MCPs in general[REDACTED:location_address] like you have to go and edit this like JSON file and do that[REDACTED:location_address] and it's really tough to[REDACTED:location_address] to like...

  12. 1:35

    I have to give it a PAT[REDACTED:location_address] and[REDACTED:location_address] you know[REDACTED:location_address] that's[REDACTED:location_address] that's an advanced use case for non-developers. Uh[REDACTED:location_address] and so we really need a way to let these tools act on our behalf[REDACTED:location_address] uh[REDACTED:location_address] but in a more traditional way that's easy for[REDACTED:location_address] for end users to be able to set that up.

  13. 1:52

    And[REDACTED:location_address] um[REDACTED:location_address] so yeah[REDACTED:location_address] that-that's what we do at WorkOS. Uh[REDACTED:location_address] we[REDACTED:location_address] we do like authorization and user management[REDACTED:location_address] and like the[REDACTED:location_address] the main point of this talk is to really help[REDACTED:location_address] uh[REDACTED:location_address] drive the idea that we need like the same kind of credentials and[REDACTED:location_address] uh[REDACTED:location_address] authorization that we do with user-facing projects.

  14. 2:09

    We need the agents to do that as well as a start[REDACTED:location_address] and then we have a lot of places that we can go with this as we get more fine-grained.

  15. 2:16

    Um[REDACTED:location_address] but really the[REDACTED:location_address] the point is that OAuth really just isn't for humans anymore. It's for our agents acting on our behalf.

  16. 2:26

    And you know what else agents need? Memory[REDACTED:location_address] persistent storage.

  17. 2:31

    Anyone here use Cloudflare? You think you know what Cloudflare does?

  18. 2:37

    No.

  19. 2:37

    I'm here to tell you that you do not. [laughs] [laughs]

  20. 2:40

    Uh[REDACTED:location_address] [laughs] people are like[REDACTED:location_address] "Oh[REDACTED:location_address] you do security[REDACTED:location_address] CDN[REDACTED:location_address] DDoS protection[REDACTED:location_address] bot management." We do so much more. We have compute[REDACTED:location_address] Cloudflare Workers. We can host your code on the edge.

  21. 2:51

    Uh[REDACTED:location_address] we host AI models you can run inference on. Uh[REDACTED:location_address] Vectorize[REDACTED:location_address] we have a vector database[REDACTED:location_address] a SQL database[REDACTED:location_address] Durable Objects[REDACTED:location_address] which is what we use in our agents framework to maintain memory[REDACTED:location_address] very important.

  22. 3:05

    And video streaming[REDACTED:location_address] image optimization[REDACTED:location_address] so much more. If you use Cloudflare Workers[REDACTED:location_address] we have bindings[REDACTED:location_address] bindings that you interact from your web app[REDACTED:location_address] from your website[REDACTED:location_address] from your agent as well[REDACTED:location_address] because our agents and MCP servers are kind of similar i-in that you can use bindings to interact with other Cloudflare products.

  23. 3:26

    And also just like[REDACTED:location_address] [smacks lips] of course[REDACTED:location_address] you can use other companies' products as well. And of course[REDACTED:location_address] now we have a free tier. Durable Objects used to not be free. [smacks lips]

  24. 3:35

    Now you can use it. And I know startups who use Cloudflare who do not pay us[REDACTED:location_address] and they make money. [laughs] But I digress.

  25. 3:42

    But yeah[REDACTED:location_address] all of these pieces[REDACTED:location_address] they really help to[REDACTED:location_address] um[REDACTED:location_address] like they just fit naturally-

  26. 3:47

    Yeah

  27. 3:47

    ... into building these agents 'cause they'll deliver the code to where you're at[REDACTED:location_address] uh[REDACTED:location_address] and you can use the Durable Objects to store persistence on them. Uh[REDACTED:location_address] and you can also use things[REDACTED:location_address] uh[REDACTED:location_address] like[REDACTED:location_address] like authorization to[REDACTED:location_address] um[REDACTED:location_address] make sure...

  28. 3:59

    And there's a whole OAuth framework with-

  29. 4:01

    Mm-hmm

  30. 4:01

    ... uh[REDACTED:location_address] Cloudflare's[REDACTED:location_address] uh[REDACTED:location_address] agents framework that lets you set up that authorization so that you can easily[REDACTED:location_address] uh[REDACTED:location_address] know who the worker is or the[REDACTED:location_address] uh[REDACTED:location_address] agent is acting on behalf of.

  31. 4:12

    Mm-hmm.

  32. 4:16

    So-

  33. 4:17

    And this agenda will be made available at the end-

  34. 4:20

    Yeah

  35. 4:20

    ... in the GitHub repo. It's a Markdown file.

  36. 4:24

    So we[REDACTED:location_address] we did build[REDACTED:location_address] uh[REDACTED:location_address] an MCP server[REDACTED:location_address] uh[REDACTED:location_address] using Cloudflare and using WorkOS and[REDACTED:location_address] uh[REDACTED:location_address] it's[REDACTED:location_address] it's just a very basic one. You'll be able to check it out[REDACTED:location_address] and you can use it and run it today[REDACTED:location_address] uh[REDACTED:location_address] which is really awesome.

  37. 4:35

    Um[REDACTED:location_address] and we're[REDACTED:location_address] we're just gonna deploy it real quick. So I'll just do[REDACTED:location_address] um[REDACTED:location_address] npm run[REDACTED:location_address] uh[REDACTED:location_address] deploy[REDACTED:location_address] which will run Wrangler to deploy that. And as soon as it's out there[REDACTED:location_address] uh[REDACTED:location_address] we'll be able to see it in my[REDACTED:location_address] uh[REDACTED:location_address] in my compute here.

  38. 4:52

    Oops[REDACTED:location_address] it was just there.

  39. 4:53

    That's the Cloudflare dashboard[REDACTED:location_address] and it's also very easy to run locally as well

  40. 4:58

    with like npm run or Wrangler run[REDACTED:location_address] something similar.

  41. 5:02

    So a few seconds ago[REDACTED:location_address] uh[REDACTED:location_address] we've got it deployed. And going back to the terminal[REDACTED:location_address] it gave me a URL here. And so I can just copy my workers URL[REDACTED:location_address] and I'm gonna go over to my client[REDACTED:location_address] Claude[REDACTED:location_address] and I'm just gonna hit this button and say Add Integration.

  42. 5:19

    And it's gonna pop up. I'll make this big. Uh[REDACTED:location_address] and I can go Add Integration[REDACTED:location_address] and I'll just say I wanna add mcp.shop.

  43. 5:26

    Oh-ho-ho[REDACTED:location_address] what could it be? [laughs] Naming things is hard.

  44. 5:30

    I'm just tacking on slash MCP onto there[REDACTED:location_address] and now I've got mcp-shop[REDACTED:location_address] and I'm gonna connect. And so once I connect[REDACTED:location_address] uh[REDACTED:location_address] this is pulling up and allowing me to tell the agent[REDACTED:location_address] uh[REDACTED:location_address] who to act on behalf of[REDACTED:location_address] me in this case.

  45. 5:45

    Uh[REDACTED:location_address] so I'm gonna sign in with GitHub. It's going to

  46. 5:50

    do its thing[REDACTED:location_address] and then Cloudfl-- Or[REDACTED:location_address] uh[REDACTED:location_address] sorry[REDACTED:location_address] Claude is refreshed[REDACTED:location_address] and now it can act on behalf of me.

  47. 5:56

    And can we see the tools?

  48. 5:58

    Yeah.

  49. 5:59

    Yeah. So what should we ask?

  50. 6:07

    I guess let's order a shirt.

  51. 6:08

    Let's order a shirt. [laughs] I love shirts.

  52. 6:13

    Yo[REDACTED:location_address] I hear I can get a shirt. Get a shirt from you.

  53. 6:22

    Live demos in an LLM. [laughs]

  54. 6:25

    Wi-Fi[REDACTED:location_address] don't fail us. [laughs]

  55. 6:29

    So it's running[REDACTED:location_address] and it recognized that it has tools available now from mcp.shop[REDACTED:location_address] so it's going to list the inventory. We'll go ahead and let it run.

  56. 6:42

    Yeah[REDACTED:location_address] there's an MCP shirt. You can get it for free. Uh[REDACTED:location_address] and you can pick your size[REDACTED:location_address] and then all it needs is just your company name and your mailing address.

  57. 6:51

    And so I'll say gimme. Uh[REDACTED:location_address] I'll say XL and [REDACTED:location_address][REDACTED:location_address] uh[REDACTED:location_address] Bellevue[REDACTED:location_address] Nebraska. There's a Bellevue[REDACTED:location_address] Nebraska.

  58. 7:04

    Huh.

  59. 7:04

    Uh[REDACTED:location_address] and we'll do that. Oh[REDACTED:location_address] it needs my company name.

  60. 7:15

    That's so LinkedIn.

  61. 7:17

    WorkOS duh. Might be my company name is WorkOS duh now. [laughs] [laughs]

  62. 7:26

    So let that run. Oh[REDACTED:location_address] it's sure thinking about it. It's confirmed it.

  63. 7:41

    Done[REDACTED:location_address] and there's my order number. It's gonna be sent to that address[REDACTED:location_address] and I'm gonna say[REDACTED:location_address] ooh[REDACTED:location_address]

  64. 7:47

    what[REDACTED:location_address] uh[REDACTED:location_address] is the order info? So I can see what... Uh[REDACTED:location_address] is[REDACTED:location_address] is my name or my company name WorkOS duh?

  65. 7:57

    Kind of hope it is.

  66. 7:58

    Human in the loop. [laughs] Need to confirm.

  67. 8:02

    No[REDACTED:location_address] it got it.

  68. 8:03

    Ah.

  69. 8:03

    All right. That was totally me[REDACTED:location_address] not Claude. [laughs]

  70. 8:09

    Uh[REDACTED:location_address] so yeah. I was able to order a shirt[REDACTED:location_address] and you can as well[REDACTED:location_address] but that's just a piece of it. So when we ran this[REDACTED:location_address] um[REDACTED:location_address] it's going into...

  71. 8:19

    Close that. Uh[REDACTED:location_address] if we go into my Cloudflare platform here and go to storage KV[REDACTED:location_address] I've got an orders here.

  72. 8:28

    This is key value storage.

  73. 8:29

    Yep. And there is the data from the order. So now I've got that saved off. I can use that[REDACTED:location_address] uh[REDACTED:location_address] and it was all through that interface. So we really just[REDACTED:location_address] like[REDACTED:location_address] gave Claude the tools that it needed[REDACTED:location_address] and it was able to act on my behalf.

  74. 8:46

    And I can go back in and I can say[REDACTED:location_address] like[REDACTED:location_address] "Can you tell me what you

  75. 8:53

    know about me?" And this... [laughs] So[REDACTED:location_address] uh[REDACTED:location_address] we've got a get user info[REDACTED:location_address] and this is really just gonna give me[REDACTED:location_address] like[REDACTED:location_address] mostly the[REDACTED:location_address] the JWT information. What's on my[REDACTED:location_address] my JWT[REDACTED:location_address] uh[REDACTED:location_address] that Claude now knows about me.

  76. 9:11

    So it knows my name[REDACTED:location_address] it knows my email address. In my JWT[REDACTED:location_address] I have my favorite song in there[REDACTED:location_address] um-

  77. 9:16

    Careless Whisper

  78. 9:18

    ... uh[REDACTED:location_address] now I will give you a rendition. Uh [laughs] and so[REDACTED:location_address] um[REDACTED:location_address] from there it also knows that I have admin permissions. Uh[REDACTED:location_address] so I've shod admin access because that's in my roles and permissions.

  79. 9:32

    The[REDACTED:location_address] the other cool thing that you can do[REDACTED:location_address] uh[REDACTED:location_address] with[REDACTED:location_address] like[REDACTED:location_address] the Cloudflare piece of it[REDACTED:location_address] and because[REDACTED:location_address] like[REDACTED:location_address] your[REDACTED:location_address] your MCP server is a[REDACTED:location_address] um[REDACTED:location_address] durable object[REDACTED:location_address] you can also store data[REDACTED:location_address] like[REDACTED:location_address] directly on that that's[REDACTED:location_address] that's located on that.

  80. 9:46

    You wanna explain that?

  81. 9:48

    Durable Objects[REDACTED:location_address] tough name. If you search Twitter[REDACTED:location_address] people tweet about how they're like[REDACTED:location_address] "This is a bad name. Change the name." [laughs] But very fast storage. You can spin them up per user.

  82. 9:59

    Uh[REDACTED:location_address] they're close to the user as well for[REDACTED:location_address] like[REDACTED:location_address] faster retrieval and storage.

  83. 10:07

    And so what I did is I just asked it to change the demo mode to band[REDACTED:location_address] and that ran a tool[REDACTED:location_address] uh[REDACTED:location_address] in the MCP server itself

  84. 10:16

    that is[REDACTED:location_address] uh[REDACTED:location_address] just going in[REDACTED:location_address] and on the[REDACTED:location_address] uh[REDACTED:location_address] context that's associated with this worker object[REDACTED:location_address] it's just changing the mode to band. And so now I've got that[REDACTED:location_address] and now I can say[REDACTED:location_address] um[REDACTED:location_address] "I want another shirt[REDACTED:location_address] please."

  85. 10:33

    And it's gonna try and run it. I'll just always allow that now. [laughs]

  86. 10:41

    And it was able to check that[REDACTED:location_address] and it said[REDACTED:location_address] "Absolutely not. Go away." [laughs]

  87. 10:46

    Wave.

  88. 10:48

    Um[REDACTED:location_address] and so[REDACTED:location_address] like[REDACTED:location_address] we can mix what it knows about me with what it has stored about me on the durable object[REDACTED:location_address] and that's in- unique for every user of it.

  89. 10:58

    And then[REDACTED:location_address] uh[REDACTED:location_address] I can do things like[REDACTED:location_address] uh[REDACTED:location_address] change it again. So if I say pretty please[REDACTED:location_address] it might have a pretty please tool[REDACTED:location_address] uh[REDACTED:location_address] available. [laughs]

  90. 11:24

    Sure is thinking. Yay. Since I asked nicely[REDACTED:location_address] it's gonna let me. [laughs] And I just ordered another shirt.

  91. 11:31

    Prompt engineering. [laughs] If you want to build your own MCP servers on Cloudflare[REDACTED:location_address] you can click to deploy your own with no authorization[REDACTED:location_address] so it's authless. So probably don't do that[REDACTED:location_address] but it is very qui- quick to do so.

  92. 11:48

    You click click to deploy. It generates a GitHub repo for you. You Git clone that[REDACTED:location_address] and then you edit your own tools[REDACTED:location_address] and they give you some tools to begin with[REDACTED:location_address] so it's[REDACTED:location_address] like[REDACTED:location_address] very fast.

  93. 12:00

    But again[REDACTED:location_address] that is authless. Do do auth. And it's still quick to deploy as well with Auth[REDACTED:location_address] just like slightly less fast.

  94. 12:09

    Yeah. And the[REDACTED:location_address] the beauty of this is that we're bringing the[REDACTED:location_address] like[REDACTED:location_address] you know[REDACTED:location_address] pretty simple tools. Like[REDACTED:location_address] this is just an OAuth flow being added to an MCP[REDACTED:location_address] and MCP is effectively just an API.

  95. 12:20

    Uh[REDACTED:location_address] so we're just[REDACTED:location_address] like[REDACTED:location_address] you know[REDACTED:location_address] getting it caught up with the tools that we already have[REDACTED:location_address] uh[REDACTED:location_address] for humans[REDACTED:location_address] but it's important to get this[REDACTED:location_address] uh[REDACTED:location_address] ready to go for these tools to act on our behalf as well.

  96. 12:31

    And where we can see this going in the future is[REDACTED:location_address] like[REDACTED:location_address] much more fine-grained authorization[REDACTED:location_address] where it's maybe[REDACTED:location_address] like[REDACTED:location_address] authorizing[REDACTED:location_address] you know[REDACTED:location_address] per line changes or[REDACTED:location_address] or per tool changes or even[REDACTED:location_address] like[REDACTED:location_address] maybe[REDACTED:location_address] like[REDACTED:location_address] authorizing[REDACTED:location_address] like[REDACTED:location_address] the networks[REDACTED:location_address] uh[REDACTED:location_address] the connections between things[REDACTED:location_address] and just doing...

  97. 12:46

    A- as we see it growing to doing thousands of i- of tasks on our behalf[REDACTED:location_address] this Auth piece is gonna be very important[REDACTED:location_address] uh[REDACTED:location_address] and especially the audit trail as well[REDACTED:location_address] and we can get that with[REDACTED:location_address] with Auth tools too[REDACTED:location_address] just to make sure that[REDACTED:location_address] like[REDACTED:location_address] we can see why this interacted this way[REDACTED:location_address] on whose behalf was

  98. 13:04

    it on[REDACTED:location_address] and what was the end result? Where did it fail? Uh[REDACTED:location_address] where did it go wrong? Things like that.

  99. 13:09

    Think of your users not as users but as deputies. They have access to tools[REDACTED:location_address] and they can use and also misuse them as well. Sometimes I think I trust people.

  100. 13:19

    Like[REDACTED:location_address] I do a live demo[REDACTED:location_address] and I'm like[REDACTED:location_address] "Let's see user[REDACTED:location_address] um[REDACTED:location_address] input." [laughs] People sometimes do not nice inputs. Yeah.

  101. 13:28

    Yeah. So get out there and deputize your own tools. Um[REDACTED:location_address] we'll- we have this repo available. There is the code[REDACTED:location_address] uh[REDACTED:location_address] a QR code for this repo. Also[REDACTED:location_address] the top QR code is to get-

  102. 13:40

    Get your own shirt.

  103. 13:41

    A shirt.

  104. 13:41

    Sorry.

  105. 13:41

    Yeah. Uh[REDACTED:location_address] so or you can just go to mcp.shop[REDACTED:location_address] uh[REDACTED:location_address] which you will run the same workflow that I just ran. Uh[REDACTED:location_address] it doesn't have the Pretty Please tool in it[REDACTED:location_address] though[REDACTED:location_address] uh[REDACTED:location_address] unfortunately.

  106. 13:50

    It'll just[REDACTED:location_address] it'll just do it even if you're mean to it. Uh[REDACTED:location_address] but you can order a shirt for the low[REDACTED:location_address] low price of zero dollars. So go check it out and get an MCPT shirt.

  107. 14:00

    And if you wanna add your own Pretty Please tool[REDACTED:location_address] check out the code in the second QR code[REDACTED:location_address] and we can't wait to see what MCP servers you build with Auth.

  108. 14:08

    Thank you.

  109. 14:09

    Thank you. [audience applauds] [outro music]