Alex Rattray

772 posts

Alex Rattray banner
Alex Rattray

Alex Rattray

@RattrayAlex

Founder @StainlessAPI, previously developer platform & products @Stripe

Brooklyn, NY Katılım Kasım 2011
1.1K Takip Edilen1.4K Takipçiler
Alex Rattray
Alex Rattray@RattrayAlex·
@__mailman__ @ilyasu Insofar as the ergonomics are meaningful to coding agents (which is actually most ways they matter to devs!), yes, even more so!
English
0
0
2
31
Ilya Sukhar
Ilya Sukhar@ilyasu·
Does API design still matter? Can new dev/infra products still win primarily on ergonomics? Unclear now.
English
10
0
20
4K
Patrick McKenzie
Patrick McKenzie@patio11·
The future of API integrations is, very plausibly, two engineering teams that never talk to each other being de facto orchestrated by a much higher bandwidth agent-to-agent conversation happening between their firms.
English
2
4
75
9.1K
Patrick McKenzie
Patrick McKenzie@patio11·
I think you are *crazy* as an API company if you do not a) thoroughly test onboarding for the major tools (repeatedly, since they can degrade via you for no reason at any point upgrade or any time and b) you should probably have a team focused on a non-human customer.
Peter Cooper@cooperx86

Just seen my first example of a company providing a prompt for Claude Code to start using their API rather than a traditional code sample. I bet we’ll see this a lot more in 2026.

English
10
15
400
70K
tobi lutke
tobi lutke@tobi·
Well the consequence of this tweet was that I had a perfectly pleasant meeting with the Slack CEO in Toronto. But they never actually fixed the css 🤷‍♂️
tobi lutke@tobi

Anyone from the slack frontend team following me? Could you improve selecting a chat and copying via some liberal application of style="user-select: none;" please? Something like this in the screenshot leads to: ```today 9:32 AM Max :palm_tree: One of my favorite prompts for coding (saw it on X somewhere): .... (edited) 2 replies Last reply today at 10:37 AMView thread 10:10 AM Carl joined #test. ``` It's too messy to use without post processing. It would be lovely if it would just lead irc style: ```best 2025-04-25: [ 9:32am] Max: One of my favorite prompts for coding (saw it on X somewhere): .... (2 replies) [10:10am] Carl joined #test ``` skip emoji status, (edited) status, clearly formatted timestamps, day change written in full. For extra points, it would be amazing if Command-Shift-C could also include all the replies, that would be brilliant.

English
54
6
1.1K
220K
Dan Shipper 📧
Dan Shipper 📧@danshipper·
soft wear for hard thinkers (coming next week)
Dan Shipper 📧 tweet mediaDan Shipper 📧 tweet media
English
8
0
49
7K
Alex Rattray
Alex Rattray@RattrayAlex·
@KentonVarda Are they more easily overwhelmed? Or does it just commonly take humans many hours to wrap their heads around a complex API, which isn't as visible or quantifiable a problem?
English
0
0
0
23
Kenton Varda
Kenton Varda@KentonVarda·
A second benefit of MCP -- which code mode perhaps negates somewhat -- is that it forced people to design simpler API surfaces that an agent could understand and work with. Many APIs are just ridiculously complicated, and agents are more easily overwhelmed than humans.
English
3
1
25
4.3K
Kenton Varda
Kenton Varda@KentonVarda·
The big advantage of MCP over OpenAPI is that it is very clear about auth. OpenAPI supports too many different auth mechanisms, and the schema doesn't necessarily have enough information for a robot to be able to complete the auth flow. x.com/stevekrouse/st…
Steve Krouse@stevekrouse

*gets up on soap box* With the announcement of this new "code mode" from Anthropic and Cloudflare, I've gotta rant about LLMs, MCP, and tool-calling for a second Let's all remember where this started LLMs were bad at writing JSON So OpenAI asked us to write good JSON schemas & OpenAPI specs But LLMs sucked at tool calling, so it didn't matter. OpenAPI specs were too long, so everyone wrote custom subsets Then LLMs got good at tool calling (yay!) but everyone had to integrate differently with every LLM Then MCP comes along and promises a write-once-integrate everywhere story. It's OpenAPI all over again. MCP is just a OpenAPI with slightly different formatting, and no real justification for doing the same work we did to make OpenAPI specs and but different MCP itself goes through a lot of iteration. Every company ships MCP servers. Hype is through the roof. Yet use of MCP use is super niche But now we hear MCP has problems. It uses way too many tokens. It's not composable. So now Cloudflare and Anthropic tell us it's better to use "code mode", where we have the model write code directly Now this next part sounds like a joke, but it's not. They generate a TypeScript SDK based on the MCP server, and then ask the LLM to write code using that SDK Are you kidding me? After all this, we want the LLM to use the SAME EXACT INTERFACE that human programmers use? I already had a good SDK at the beginning of all this, automatically generated from my OpenAPI spec (shout-out @StainlessAPI) Why did we do all this tool calling nonsense? Can LLMs effectively write JSON and use SDKs now? The central thesis of my rant is that OpenAI and Anthropic are platforms and they run "app stores" but they don't take this responsibility and opportunity seriously. And it's been this way for years. The quality bar is so much lower than the rest of the stuff they ship. They need to invest like Apple does in Swift and XCode. They think they're an API company like Stripe, but their a platform company like an OS. I, as a developer, don't want to build a custom chatgpt clone for my domain. I want to ship chatgpt and claude apps so folks can access my service from the AI they already use Thanks for coming to my TED talk

English
13
16
246
69.8K
Alex Rattray retweetledi
Augusto Marietti | API Godfather
As @RattrayAlex taught me from his Stripe days: for most people is not about POST /v1/charges but stripe.charges.create(). That's how folks experience APIs.
English
0
1
2
584
Alex Rattray
Alex Rattray@RattrayAlex·
Thanks for having me on the podcast, @danshipper! Can't wait for the next one!
Dan Shipper 📧@danshipper

If your MCP server has dozens of tools, it’s probably built wrong. You need tools that are specific and clear for each use case—but you also can’t have too many. This creates an almost impossible tradeoff that most companies don’t know how to solve. That’s why I interviewed my friend Alex Rattray (@RattrayAlex), the founder and CEO of @StainlessAPI. Stainless builds APIs, SDKs, and MCP servers for companies like @OpenAI and @AnthropicAI. Alex has spent years mastering how to make software talk to software, and he came on the show to share what he knows. I had him on @every’s AI & I to talk about MCP and the future of the AI-native internet. We get into: • Design MCP servers to be lean and precise. Alex’s best practices for building reliable MCP servers start with keeping the toolset small, giving each tool a precise name and description, and minimizing the inputs and outputs the model has to handle. At Stainless, they also often add a JSON filter on top to strip out unnecessary data. • Make complex APIs manageable with dynamic mode. To solve the problem of how an AI figures out which tool to use in larger APIs, Stainless switches to “dynamic mode,” where the model gets only three tools: List the endpoints, pick one and learn about it, and then execute it. • MCP servers as business copilots. At Stainless, Alex uses MCP servers to connect tools like @NotionHQ and @HubSpot, so he can ask questions like, “Which customers signed up last week?” The system queries multiple databases and returns a summary that would’ve otherwise taken multiple logins and searches. • Create a “brain” for your company with Claude Code. Alex built a shared company brain at Stainless by keeping Claude Code running on his system and asking it to save useful inputs—like customer feedback and SQL queries—into GitHub. Over time, this creates a curated archive his team can query easily. • The future of MCP is code execution. Instead of giving models hundreds of tools, Alex believes the most powerful setup will be a simple code execution tool and a doc search tool. The AI writes code against an API’s SDK, runs it on a server, and checks the docs when it gets stuck. This is a must-watch for anyone who wants to understand MCP—and learn how to use them as a competitive edge. Watch below! Timestamps: Introduction: 00:01:14 Why Alex likes running barefoot: 00:02:54 APIs and MCP, the connectors of the new internet: 00:05:09 Why MCP servers are hard to get right: 00:10:53 Design principles for reliable MCP servers: 00:20:07 Scaling MCP servers for large APIs: 00:23:50 Using MCP for business ops at Stainless: 00:25:14 Building a company brain with Claude Code: 00:28:12 Where MCP goes from here: 00:33:59 Alex’s take on the security model for MCP: 00:41:10

English
0
1
6
841
Alex Rattray
Alex Rattray@RattrayAlex·
It's been an honor and a hoot working with @zeke & team at @replicate on their new SDKs & MCP server. Zeke was co-creator of the original Swagger specification (now OpenAPI) and has been a tremendously thoughtful & creative design partner for the tooling we now build on top of it 🙏
Stainless@StainlessAPI

@replicate lets you run AI models with a cloud API, without having to understand machine learning or manage your own infra. Their first client libraries were hand-written, but became a maintenance burden as their HTTP API grew and evolved. The team wanted to transition to using an SDK generator, so they ran a thorough bake-off of Stainless against another provider. @zeke, Replicate’s founding designer and the co-creator of Swagger (now known as @OpenApiSpec), led the evaluation. Here are his words on what made Stainless stand out.

English
0
0
7
900
Jesse Ezell
Jesse Ezell@jezell·
Seems like OpenAI just broke the Responses API in their python lib drop today: await openai.responses.create(^^^^^^^^^^^^^^^^File "/usr/local/lib/python3.13/functools.py", line 1026, in __get__val = self.func(instance)File "/opt/venv/lib/python3.13/site-packages/openai/_client.py", line 572, in responsesfrom .resources.responses import AsyncResponsesFile "/opt/venv/lib/python3.13/site-packages/openai/resources/responses/__init__.py", line 3, in from .responses import (...<6 lines>...)File "/opt/venv/lib/python3.13/site-packages/openai/resources/responses/responses.py", line 40, in from ...lib.streaming.responses._responses import ResponseStreamManager, AsyncResponseStreamManagerFile "/opt/venv/lib/python3.13/site-packages/openai/lib/streaming/responses/__init__.py", line 1, in from ._events import (...<3 lines>...)File "/opt/venv/lib/python3.13/site-packages/openai/lib/streaming/responses/_events.py", line 8, in from ....types.responses import (...<52 lines>...)ImportError: cannot import name 'ResponseReasoningSummaryDoneEvent' from 'openai.types.responses' (/opt/venv/lib/python3.13/site-packages/openai/types/responses/__init__.py) @stevendcoffey
English
4
0
3
1.1K
Alex Rattray
Alex Rattray@RattrayAlex·
Lol the "bad ai" you're referring to was the algorithm "docs."++".com" -- a simple placeholder intended for the user to edit in the stainless config. We stopped setting that default quite a while ago, it now defaults to empty. We can tweak this setting for you if you like!
English
0
0
0
32
barney
barney@Southclaws·
@StainlessAPI not sure what's up with your codegen it seems to be using (bad) ai and it's just hallucinating domains that don't exist the docs are at storyden.org/docs where did it get a .com from and how do I tell it to stop trying to imagine things that don't exist?
barney tweet media
English
1
0
0
44
Jacob⚡️Bednarz
Jacob⚡️Bednarz@jacobbednarz·
after 6 years, today is my last day at @cloudflare. from building the edge control plane to maintaining the SDK ecosystem, it’s been a wild, rewarding experience. grateful for the amazing humans who came along for the ride.
English
13
1
187
13.3K
Alex Rattray
Alex Rattray@RattrayAlex·
@samgoodwin89 @mcongrove @StainlessAPI Yep! Before 3.0.0, the SDK supported only a tiny fraction of the Cloudflare API; after, it supported ~all >1000 endpoints. This accounts for most, if not all, of the size difference you see. We'll be shipping some bundle size reductions soon, as well as tree-shaking support!
English
0
0
2
58
sam
sam@samgoodwin89·
cloudflare-typescript keeps growing in bundle size with each major version.
sam tweet media
English
4
0
89
8.2K
Alex Rattray retweetledi
Stainless
Stainless@StainlessAPI·
You can now use Stainless to automatically generate MCP servers from your OpenAPI spec. It comes with built-in flags so your users can precisely control what gets exposed to the model: --tool --resource --operation --tag It's completely free and takes seconds to generate.
English
1
2
23
2.3K
Alex Rattray
Alex Rattray@RattrayAlex·
@alexatallah Might not be the tier you're looking for, but maybe The Next Web?
English
0
0
2
99
Alex Atallah
Alex Atallah@alexatallah·
Seems like even TechCrunch blocks LLMs. Are there any LLM-friendly news publications with good SEO? Not sure how to LLM-optimize a piece of news. X posts are only available in Grok.
Alex Atallah tweet media
English
3
0
9
2.3K