Building APIs for Developers and AI Agents

AI transcript
0:00:02 So I love to say that APIs are the dendrites of the internet.
0:00:08 So if you think about the brain being a collection of neurons that by firing together, you know, think.
0:00:17 You can think of the internet as a collection of servers or programs running on servers that by interacting with each other, think or do.
0:00:23 And that connection, the synapse, that’s almost tautologically almost always an API of some kind.
0:00:40 Realize that every company is becoming an API company and every API company needs an API platform with SDKs and docs and API versioning and just, you know, a million different things that amazing team that I worked on at Stripe all collaborated on.
0:00:47 People want to be able to focus on their core capabilities, be thoughtful in exposing the interfaces to users and not have to worry about the low level details.
0:00:57 If you’ve been building with APIs, you know they’re the connective tissue of modern software, powering everything from payments to cloud services.
0:01:01 But as APIs multiply, so do the challenges developers experience.
0:01:05 SDK quality, documentation, versioning, and now a new frontier.
0:01:08 Interfaces not just for humans, but for AI agents.
0:01:21 In this episode, Stainless founder Alex Rattrade joins A16Z partner Jennifer Lee to share how his time at Stripe shaped Stainless’ mission to bring world-class developer platforms, SDKs, docs, and more to every API company.
0:01:35 They discuss why SDK is often the API for developers, how MCP Model Context Protocol reframes APIs as interfaces for large language models, and the new design challenges of treating AI agents as first-class users.
0:01:43 It’s a conversation about the future of APIs, agent experience, and what it means to build developer platforms that are robust, idiomatic, and built to scale.
0:01:45 Let’s get into it.
0:01:51 So I started working on API tooling when I was at Stripe.
0:02:01 I had been working on other teams, and I just saw how important the API platform was, and so I moved over to that team and built out a redesign of the Stripe API docs, which was an incredible experience.
0:02:05 And through that, saw how important the SDKs were, even internally at Stripe.
0:02:10 People, I think, didn’t quite see that to the developers who use the Stripe API every day.
0:02:13 The SDK is the API, and those were kind of falling behind.
0:02:22 So I built a code generation system there that can take the Stripe open API spec and turn it into a great Python library and a great TypeScript library and so on.
0:02:23 And that was really fun to build.
0:02:29 You know, the computer scientist in me just had a phenomenal time building sort of the compiler aspects of that and the library design nitty gritties.
0:02:37 And so after I left Stripe, people kind of kept asking, hey, you know, how do I get good SDKs or how do I build a great developer experience for my API?
0:02:44 And it was very painful for me, actually, because, you know, you’re saying, hey, that’s a great question.
0:02:46 You really need SDKs.
0:02:49 It’s a core baseline part of the developer experience at this point.
0:02:52 Everybody interacting with your API is going to expect a well-typed SDK in their language.
0:02:56 Unfortunately, the bad answer to that great question is that there’s no way to do it.
0:03:02 You know, the open API generator that’s open source at the time, certainly it was pretty far from the Stripe quality bar.
0:03:06 In terms of the output it would generate, a lot of great work has gone into that, but it’s a very hard problem.
0:03:16 The maintenance burden, the headaches involved in trying to set this up is just too much for almost any company other than, you know, something like a Stripe at 2,000 people, which was when I worked on that.
0:03:22 And so it’s very dissatisfying as an engineer to tell people a bad answer, like you need this thing and also you can’t have it.
0:03:26 And so eventually I started saying, hey, would you pay real money for this if I built it for you?
0:03:28 People both said, hey, yes, I would.
0:03:32 And also, can you help us with everything else around our API?
0:03:49 And realize that every company is becoming an API company and every API company needs an API platform with SDKs and docs and API versioning and just, you know, a million different things that amazing team that I worked on at Stripe all collaborated on.
0:03:54 And so, you know, can we bring that Stripe developer platform in a box and bring it to every company?
0:03:59 And so that’s sort of the way that I came to start Stainless API as a company.
0:04:04 That prediction you had or that statement you had for 2022 definitely turned out to be true today.
0:04:08 Every company is an API company and we’re going to dive into MCPs too.
0:04:14 Can you explain sort of how did you approach the sort of SDK generation aspect of the product?
0:04:25 And Stripe experience, of course, is very critical to building this product is till today is still one of the north stars of what developers look to as great developer experiences and great SDKs.
0:04:31 Yeah, we had a lot of experience with this at Stripe and, you know, saw a lot of the good and a lot of the bad and a lot of the ugly.
0:04:42 There’s so many details to get right, whether it’s making a client library that’s really robust and when things get weird on the internet, your SDK is not the thing that’s blowing up or causing problems.
0:04:48 It can handle scale, it can handle great error messages and can work well with telemetry and all this stuff.
0:04:51 In addition to being robust, an SDK also needs to be really polished.
0:04:56 And that means if you’re building something for a Python developer that it’s idiomatic to them, it’s familiar.
0:05:05 If they hover over on a thing, there is documentation that pops up in their editor telling them about that thing, whether it’s coming from the REST API or from the core of the library.
0:05:09 And crafting that is really quite a journey, you know, and it’s something that I just personally love.
0:05:17 Years ago, I created a small programming language and it was all about kind of polishing those nitty gritties and finding the best way to do every little detail.
0:05:19 And so that’s one of the things that I most enjoy at Stainless.
0:05:23 There’s an interesting thing here where, you know, we’re going to be talking about MCP.
0:05:30 And crafting, I think the Python library that we do is a great example of this because Python was the first programming language that I learned.
0:05:31 No offense, Visual Basic.
0:05:37 It had evolved a lot since I had last used it when I was sitting down to create our Python generator.
0:05:40 There’s types in Python and there’s multiple type systems.
0:05:43 There’s async, there’s, you know, pattern matching.
0:05:44 It’s really incredible to see.
0:05:47 And what’s idiomatic through all of this world?
0:05:48 And that’s a moving target.
0:06:00 I think the industry spent years basically figuring out how to make an enigmatic Python library and figuring out what it looks like for a Python library to be intuitive and legible to a Pythonista.
0:06:01 And that’s continued to evolve.
0:06:04 And I think that we’ve moved the industry forward a little bit.
0:06:05 And I’m proud of the work that we’ve done there.
0:06:23 When you come to MCP, which is this kind of new frontier where instead of exposing your API to a Python developer writing Python software, one of the things that you can do with MCP is expose your API to an LLM agent using an MCP client.
0:06:26 In that world, what’s intuitive to an LLM?
0:06:35 What is usable and ergonomic and idiomatic to a large language model, to an AI, and interacting with a large API?
0:06:38 And the world is starting from scratch there almost.
0:06:42 So there’s a lot of interesting work to do and develop and figure out.
0:06:45 So for us, it’s kind of this really fun exploratory research problem.
0:06:47 Maybe zoom out a little bit.
0:06:50 You called APIs being the dendrite of the internet.
0:06:58 Now that MCPs are everywhere, like, you know, occupying a lot of the brain bandwidth for developer tooling companies like ThinList.
0:06:59 What do you call MCPs?
0:07:02 And how did that have impacted your business?
0:07:03 How do you think about the landscape?
0:07:06 Yeah, so I love to say that APIs are the dendrites of the internet.
0:07:12 So if you think about the brain being a collection of neurons that by firing together, you know, think.
0:07:21 You can think of the internet as a collection of servers or programs running on servers that by interacting with each other, sort of think or do.
0:07:28 And that connection, the synapse, that’s almost tautologically, almost always an API of some kind.
0:07:33 So it’s a really critical part of the internet software ecosystem.
0:07:43 And seeing that kind of like CPU brain, you know, extend into the GPU brain is a really exciting moment, I think.
0:07:45 And you need the right interface.
0:07:48 So MCP kind of is that interface.
0:07:51 I don’t know if I have a biological metaphor off the top of my head for that.
0:07:55 I kind of want to compare it to eyes or ears or a new sense.
0:08:02 When a software system is communicating internally, okay, cool, but it’s all in your head in some sense.
0:08:03 It’s all in the cloud.
0:08:04 It’s not doing anything in the real world.
0:08:14 And how does, you know, all the software that the technology industry has been building for the last, you know, 30 and beyond years, how does that kind of become real in the real world and do something meaningful?
0:08:21 And one of the longstanding ways of doing that is sort of, I’m going to call it through the eyes, in the form of user interfaces.
0:08:25 So you’ll have someone log into a web application.
0:08:26 You know, I used to work at Stripe.
0:08:28 And so I use this example a lot.
0:08:38 Someone at a small business might log into their Stripe dashboard, refund a customer, create a new payment, add a customer to the system, anything like that.
0:08:40 In the days before APIs, everything was this way.
0:08:43 You know, then we saw that we needed to automate things.
0:08:46 You know, maybe instead of eyes, I don’t know, now we’re going with fingers, right?
0:08:56 And there’s some part of your, you know, where there’s a communication between your mind and the neurons and something tactical in the real world where all of a sudden these computers can do things in an automated fashion.
0:09:07 I don’t know if you would call MCP and AI, like, they’re the new ears or something like that, but it’s a new sense or it’s a new way of interacting, getting information from the world and also putting something out.
0:09:09 You’re sort of like growing this new limb.
0:09:15 I definitely imagine a hand raising up in the air of, like, here, you can use me and, like, I can do these things.
0:09:25 So definitely, you know, having more of the touch points and surface areas for AI to explore and also to leverage a lot of the existing, you know, capabilities from software.
0:09:27 So I like that analogy a lot.
0:09:35 And just maybe going down that train of thought, you have been developing for tools for developers and as a developer for a long time.
0:09:49 But now we have this, like, new persona that’s large language models and AI, and they are part of the design aspect of how to serve large language models as a user and building sort of tools, thinking about this new persona.
0:10:02 What are the changes and challenges in just, like, the thinking of designing tools when taking in this sort of new interface and new requirements that has impacted how, you know, you’ve been building and building the products?
0:10:15 Yeah. So if you think about a Python library being the interface between an API and a Python program or Python developer, I would think about MCP as being the interface between an API and an LLM.
0:10:18 And so to us, it’s all SDKs, right?
0:10:21 Now, again, you can do other things with MCP, and these other things are important.
0:10:24 Documentation is a really big example, and I’d love to talk about that, too.
0:10:34 But in terms of sort of these, like, core operational, you know, let me go refund a customer in Stripe dashboard or let me go find out when this last transaction occurred or anything like that.
0:10:39 You know, as you say, there’s a lot of difficulties and new challenges and problems in making this work.
0:10:45 And a Python developer might really want to make sure that async works without too much rigmarole.
0:10:56 Or a Java developer might want to see that the classes that they’re interacting with are type safe, but at the same time may not want them to sort of blow up at runtime if something is unexpectedly null.
0:10:57 And that’s a really hard problem, right?
0:11:05 You know, yesterday I was chatting with someone who was on the Java team back in the day and helped design some Java languages, and I was telling him about this.
0:11:07 He was like, yeah, that’s an unsolvable problem, right?
0:11:12 And, you know, that’s something that maybe solved as the wrong answer, but that we’ve tackled at Stainless and I’m proud of.
0:11:14 There’s really difficult challenges for LMs.
0:11:19 And so some of those challenges that you’re asking about, a lot of it comes down to the context size.
0:11:31 And so if right now with MCP, that the naive way, the typical way of taking an API, usually described with an open API spec, and presenting that to an NLM through MCP,
0:11:38 is you basically take the JSON schema for every single endpoint, every single operation in your API.
0:11:47 You turn that over into a tool in your MCP server and say, if you want to create a charge in Stripe, you know, you use this create charge tool.
0:11:51 And inside of that tool, here’s every request parameter.
0:11:54 So here’s how you specify the amount of the charge.
0:11:59 Here’s how you specify the description, the currency, so on and so forth.
0:12:06 And that’s going to have the same descriptions and documentation that you would see in Stripe API docs.
0:12:07 It’s all going to be there in the tool description.
0:12:09 You can get accuracy there.
0:12:14 But if you want to describe every single endpoint in the Stripe API, with every single parameter fully documented,
0:12:17 congratulations, you’ve just used up your entire context window.
0:12:19 And that basically just doesn’t work.
0:12:24 Even if you don’t use up the whole thing, LLMs tend to kind of get overwhelmed.
0:12:29 MCP clients tend to kind of get overwhelmed at seeing too many tools in use or available.
0:12:32 And all these request parameters, like, you may not need them.
0:12:37 You know, maybe you’re only trying to, maybe you only need three parameters from this endpoint, not all 50.
0:12:43 Or maybe you only need one or two endpoints from this API, not all 500 or 50 or what have you.
0:12:46 So that’s a really difficult challenge to figure out how to gradually unveil.
0:12:48 What are the tools available?
0:12:50 What are the parameters available?
0:12:53 What are the descriptions of those parameters?
0:12:58 And you want to be able to do that without too much back and forth, because every turn takes time.
0:12:59 And takes tokens too.
0:13:00 Yeah, exactly.
0:13:01 Yeah.
0:13:07 So do we have a solution for the context window challenge as well as the limited tool calls?
0:13:08 Is there a solution yet?
0:13:11 There’s several things that we do to help with this today as Samus.
0:13:13 And there’s several things that we’re doing soon.
0:13:19 But the most simple thing that we do today is we can generate all of the tools in your API.
0:13:29 And when someone wants to spin up this server, they can use command line flags in the CLI or query parameters in the remote URL to basically say,
0:13:32 hey, I only want to interact with these resources.
0:13:41 So I only give me the, you know, payment intense part of the Stripe API or only give me the customers part of the Stripe API, or I only want reads or I only want writes.
0:13:43 And that limits things down a lot.
0:13:46 And the end user can decide what they want to do.
0:13:49 The API provider can decide what they want to do.
0:13:53 And that nipping and tucking is really useful at sort of a first approximation.
0:13:55 That can be a little bit clunky.
0:13:59 And so maybe you don’t know in advance what the limits you want to do are.
0:14:08 And so a more dynamic approach that we also provide is the ability to say, hey, give me this in dynamic mode.
0:14:13 And instead of say, you know, 50 or 500 different tools, we only expose three.
0:14:14 Right.
0:14:18 So, you know, it scales O of one, not O of N.
0:14:24 And you have a tool to get the list of endpoints available, the list of operations available.
0:14:29 You have a tool to describe a single endpoint and get all those request parameters.
0:14:31 And you have a tool to execute an endpoint.
0:14:35 And so you’ve gone and made these tool definitions totally dynamic.
0:14:37 Now, there’s some tradeoffs there.
0:14:41 It takes three turns to do one operation here instead of just one.
0:14:45 And so at runtime, that’s a little bit slower, but it saves context window.
0:14:53 And if you end up not interacting with, you know, again, say the Stripe API, then you don’t burn any of your, you know, hardly any of your context at all, which is terrific.
0:14:55 So that’s another thing that we offer today.
0:14:58 A third thing that we do currently, I think, is really fun and interesting.
0:15:00 This is something that we shipped recently.
0:15:07 It actually solves a slightly different problem, which is, okay, let’s say you make your API request and you say, hey, Stripe, you know, tell me about this.
0:15:09 It’s about the customer, Jennifer, right?
0:15:12 And it’ll make a retrieve request to the customer endpoint.
0:15:14 It’ll find Jennifer or actually a list request.
0:15:17 It’ll come back with a bunch of data, right?
0:15:19 Now, especially if it’s a list request.
0:15:21 So maybe you make a request to Stripe API.
0:15:22 It tries to find the right Jennifer.
0:15:24 There’s a lot of Jennifers in there.
0:15:25 So it’s going to have to sort it through.
0:15:30 And the size of the API responses here can be very large.
0:15:41 In fact, especially for like a list request like this, they’ll typically be so large that your MCP client, like, you know, cursor or cloud code or anything like this will just refuse to look at it at all.
0:15:42 You know, it does.
0:15:44 You just literally can’t interact with it.
0:15:47 Even if it can, it’s just too much data to sort through everything.
0:15:53 What we’ve done is we’ve added sort of this JQ filter to all of these requests.
0:15:55 And so JQ stands for JSON query.
0:16:05 And it’s a commonly used CLI for saying, hey, out of this large JSON object, give me only these properties and filtering down the data that you’re getting.
0:16:09 So sort of like the select clause in SQL for those who are familiar with that.
0:16:10 LLMs are great at JQ.
0:16:19 So just giving them that tool has enabled them to say out of this large API request, I only need Jennifer’s like name and email and description.
0:16:21 And I don’t need to know all these other details.
0:16:28 And that keeps the, again, the impact on the context window light and it keeps things really focused.
0:16:29 That’s incredible.
0:16:30 That sounds really useful.
0:16:40 It reminds me of another question of there’s a misconception or a misconception notion that now you have MCPs and that’s how LLMs are accessing and interacting with APIs.
0:16:44 The quality or interface of APIs or SDKs are not that important anymore.
0:16:46 But I think that’s like the polar opposite.
0:16:49 It’s exactly because there’s more usage.
0:16:54 You need strongly typed, very polished SDKs as well.
0:16:56 Do you mind elaborating on that?
0:16:57 Yeah, absolutely.
0:17:04 You know, so I was chatting about this morning, actually, with someone who leads developer relations at a large financial technology company.
0:17:17 She was talking about this problem where today, if you ask a coding agent to integrate with this company’s REST API, the first thing the coding agent is going to do is install this company’s SDK.
0:17:28 That sounds great, but what she’s seen is that it’s going to install a version from 10 months ago, an old version, and then it’s going to hallucinate the whole interface, right?
0:17:33 And I think a lot of people have had this experience where they say, hey, ChatGPT, can you help me integrate with ChatGPT?
0:17:37 And it gets the version of the SDK a little bit wrong, right?
0:17:54 And so something that we need to see with MCP, and this is sort of, you know, something I alluded to earlier, where the other big use case for MCP, rather than interacting with an API, is writing code and helping a coding agent basically access documentation.
0:18:06 And so something I’m really excited for us to ship very shortly is the ability to get comprehensive reference documentation for the API of your library into the hands of an LLM.
0:18:23 So that, you know, when people integrating with this financial technology company say, you know, hey, make me an integration, it’ll know the right version, and it’ll have access to the full API of that version’s SDK, and it won’t make mistakes.
0:18:26 So that’s one of the things that I’m really excited about all this kind of coming full circle.
0:18:34 And I’ll note, you know, again, there’s still a reason that the, it sounds bad that the, that the agent, the coding agent kind of got the SDK usage wrong in the first place.
0:18:39 But it’s important to note that the agent preferred to use the SDK.
0:18:43 It didn’t want to just make a fetch request, given the option.
0:18:46 And the reason is that with the SDK, you have type checking.
0:18:52 So if you have an LLM that’s kind of like trying to one shot a whole big crazy API request,
0:19:01 that’s not so easy to do with 100% accuracy, you really want those red squiggly lines saying, hey, this property has a typo.
0:19:07 Or, hey, you’re assuming that this string is always going to be a string, and it’s never going to be null in the response.
0:19:12 You know, a human reviewer is just not going to catch a mistake like that for an untyped interface.
0:19:24 They need to see their type checker kind of giving the quick thumbs up that the LLM is in the right direction so that they can basically quickly review the business logic that was produced by the coding agent.
0:19:29 You know, I think a lot of people are seeing this, that the more declarative and clean and dry the code that you’re writing,
0:19:39 the more type safe the code that you’re writing is, the more you can trust LLMs to do the coding part of your job for you and think about the higher level stuff and keep an appropriate eye on things.
0:19:45 Totally. So it’s not just about keeping the accuracy of the LLM outputs.
0:19:51 I mean, it certainly helps with that when you have a more constrained exploration space, but also just debuggability.
0:19:57 Like, it’s so much better when you have strongly typed SDKs and very, I would call it, like, you have the tools,
0:20:01 but you also have the reference docs and menus in place with the docs aspect of it.
0:20:07 Like, it’s going to be a more holistic experience given to the AI agent to really perform the task.
0:20:15 Exactly. Your coding agent is going to be able to try something out, you know, press save, see if there’s a type error, and iterate by itself automatically.
0:20:19 Rather than trying to make an API request, you know, it’ll need an API key for that.
0:20:21 It might be a destructive API request.
0:20:29 Having an LLM test in production is, you know, with a foreign API, with a foreign system, that is not what you want to be doing, right?
0:20:35 And so, you know, for any company that ships an API that they want their users to be using in production,
0:20:39 whether it’s a big business user, you know, an enterprise doing a key integration,
0:20:48 or whether it’s a developer trying to move quickly, in either case, it’s really critical to make it easy for people to move fast at that integration
0:20:53 so that it can happen before some other project comes in, and for them to do that with confidence.
0:21:01 I would love to just think about maybe the role of API developers in five to 10 years.
0:21:06 You have been a developer, also developed really well-known APIs, SDKs as well.
0:21:12 If you imagine the future where the agents are going to be as common as human developers,
0:21:17 and we’re going to have this agent experience instead of just dev experience,
0:21:21 what do you think that experience is going to be looking like down the road?
0:21:27 Today, we’re still continuing designing for both of these two personas or users.
0:21:30 I still call it like LLM a user.
0:21:33 What do you think it’ll look like in that time horizon?
0:21:36 I mean, I think it’s a really interesting and exciting question.
0:21:46 What I was saying a minute ago, you know, where an LLM, you know, coding agent writing your code means you want your code to be more declarative and more dry.
0:21:51 You know, you’ve always wanted that, but it becomes more important to be able to quickly and accurately review code.
0:22:01 And so for people building APIs, you want a way to write your backend code that is going to be not like spaghetti.
0:22:06 And that’s how a lot of people, unfortunately, have to write the REST APIs today.
0:22:13 And furthermore, you’re going to want more clear and prescriptive standards around what API design should look like
0:22:20 so that the LLM can follow a set of rules that the company has put forward around how they want to do their API design.
0:22:32 And again, the LLM can follow the slot into maybe the API framework that the company is using and just focus on, okay, let’s declare the endpoint, let’s declare the parameters, let’s write the business logic.
0:22:34 So a human can quickly review that.
0:22:37 I’m imagining really high taste developers.
0:22:46 You’re kind of crafting the endpoints that are designing both the APIs themselves to, you know, the documentation with it and SDKs in a very detail-oriented way.
0:22:55 But now we have a lot of, let’s say, code gen tools, and we have even more advanced frameworks and also much higher level tooling that you can define the specs.
0:23:04 Maybe I wouldn’t call it natural language, but just more of like a spec out way, but not having to worry too much of the, like, polishing on the details.
0:23:15 So that’s exactly, you know, what I feel like Sunilis’ work is doing is to maybe elevate the developers to think about more of the higher level tasks because of what you want the functions to be.
0:23:26 And we want the users to interface with instead of like caring about the errors and the details and pagination or like debuggability, observability, these type of nuances.
0:23:35 The most painful and difficult part around building APIs, there’s many painful and difficult parts, unfortunately, today for people who are shipping APIs to their customers and their users and their partners, which is unfortunate.
0:23:46 But one of the worst is sort of the design part, you know, and dealing with all the bike sheds and thinking, you know, you just want to be able to say, we need an API that does this thing, right?
0:23:56 That manages this kind of resource, you know, the humans should be thinking about, as you say, the high levels of what the business needs and letting the robots do all the less exciting stuff.
0:24:01 Now, you want AI to be writing your maybe business logic.
0:24:08 You don’t really want it to be writing your platform code, those core things that sort of operate as all the glue between everything else.
0:24:23 For that, you want a good platform, so you want a good framework, you want good libraries, and that’s something that Stainless is looking to bring to everything around the API so that the humans can say the high level stuff, the LLMs can build that media layer, and that Stainless can take care of the low level infrastructure.
0:24:31 The last question I want to ask is, you work with some of the most cutting-edge logos and customers, like OpenAI, Anthropic, Cloudflare.
0:24:44 Without disclosing any confidentials, is there any learnings that’s worth sharing with the audience on these collaborations of how they’re thinking about their SDK design, their API platforms, and what they want to offer to developers?
0:24:51 Yeah, I mean, I think there’s so many lessons that every API team learns again and again.
0:24:58 Everyone in this space sees how important it is to be thoughtful, how important it is to, you know, consider the user.
0:25:09 The exact way you consider that is changing a little bit, you know, just like it did when people moved from writing JavaScript to writing TypeScript, or when people went from having slow connections to fast connections on the internet.
0:25:12 The fundamentals, I think, are still fairly universal.
0:25:31 It’s exciting to see people really think deeply about how to expose their capabilities, whether those capabilities are a large language model that can do all sorts of, you know, text and audio, or whether that’s the ability to spin up new servers in the cloud instantly, or whether that’s the ability to move money around the world.
0:25:39 People want to be able to focus on their core capabilities, be thoughtful in exposing the interfaces to users, and not have to worry about the low-level details.
0:25:55 As APIs evolve into core infrastructure for both developers and AI agents, the quality of SDKs, docs, and interfaces will only grow in importance.
0:26:01 If you enjoyed this conversation, please rate and review the podcast on your platform of choice and share it with your network.
0:26:02 Stay tuned.
0:26:06 We’ve got more great discussions on the future of software, infrastructure, and AI coming soon.
0:26:18 As a reminder, please note that the content here is for informational purposes only.
0:26:24 It should not be taken as legal, business, tax, or investment advice, or be used to evaluate any investment or security.
0:26:29 It is not directed at any investors or potential investors at any A16Z fund.
0:26:34 For more details, please see a16z.com slash disclosures.

Stainless founder Alex Rattray joins a16z partner Jennifer Li to talk about the future of APIs, SDKs, and the rise of MCP (Model Context Protocol). Drawing on his experience at Stripe—where he helped redesign API docs and built code-generation systems—Alex explains why the SDK is the API for most developers, and why high-quality, idiomatic libraries are essential not just for humans, but now for AI agents as well.

They dive into:

  • The evolution of SDK generation and lessons from building at scale inside Stripe.
  • Why MCP reframes APIs as interfaces for large language models.
  • The challenges of designing tools and docs for both developers and AI agents.
  • How context limits, dynamic tool generation, and documentation shape agent usability.
  • The future of developer platforms in an era where “every company is an API company.”

Timecodes: 

0:00 – Introduction: APIs as the Dendrites of the Internet

1:49 – Building API Platforms: Lessons from Stripe

3:03 – SDKs: The Developer’s Interface

6:16 – The MCP Model: APIs for AI Agents

9:23 – Designing for LLMs and AI Users

13:08 – Solving Context Window Challenges

16:57 – The Importance of Strongly Typed SDKs

21:07 – The Future of API and Agent Experience

24:45 – Lessons from Leading API Companies

26:14 – Outro and Disclaimers

Resources: 

Find Alex on X: https://x.com/rattrayalex

Find Jennifer on X: https://x.com/JenniferHli

Stay Updated: 

Let us know what you think: https://ratethispodcast.com/a16z

Find a16z on Twitter: https://twitter.com/a16z

Find a16z on LinkedIn: https://www.linkedin.com/company/a16z

Subscribe on your favorite podcast app: https://a16z.simplecast.com/

Follow our host: https://x.com/eriktorenberg

Please note that the content here is for informational purposes only; should NOT be taken as legal, business, tax, or investment advice or be used to evaluate any investment or security; and is not directed at any investors or potential investors in any a16z fund. a16z and its affiliates may maintain investments in the companies discussed. For more details please see a16z.com/disclosures.

a16z Podcasta16z Podcast
SaveSavedRemoved 0
Register New Account