Steven Mays Lead AI Engineer

I build AI agents and the backends they run on.

I’ve spent 15+ years building production software. You can run each project below, starting with a question to my MCP server.

Try my production MCP server

api.mays.co/mcp

Assistants like Claude and ChatGPT use MCP to call tools on other servers. This is one question your assistant can ask mine. Connect your assistant.

How often does a Withdrawal rate 4.0% withdrawal rate last for Years 30 years at Stocks 60% stocks?

Computed when this site was built

92.71%

of 100,000 simulated retirements lasted 30 years. 7.29% ran out of money, half of them by year 26.

Timed from your browser

Show the request and response

Request from your browser

> POST https://api.mays.co/mcp
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "simulate_retirement", "arguments": { "withdrawal_rate_percent": 4, "years": 30, "stock_share_percent": 60 }, "_meta": { … } }}

Response, computed at build

"structuredContent": {  "success_rate_percent": 92.71,  "paths": 100000,  "failed_paths": 7286,  "median_failure_year": 26,  …}

Ran out of money, by year

Failures start in year 14 and reach 7.29% by year 30

Selected projects

Each one shows its result before you click.

Exactly Once: a checkout that never charges twice

One $80 order runs through 10,000 failure scenarios. Blind retries get 2,932 of them wrong, and safe retries get 0.

The safe version uses idempotency keys, a progress log, compensation, and a dead-letter queue.

Run the lab

Same checkout, same failures

Rust engine, run at build

Retries blindly sends at least once 2,932 of 10,000 wrong
Retries safely exactly-once effect 0 of 10,000 wrong
  • 51 waiting for a person
  • 3 refunded or cancelled

Each grid holds the same 10,000 checkouts, one square each. A red square failed one of the lab’s checks, such as charging the card twice. A grey square passed.

Fault rates, the lab’s defaults

503, nothing commits
5%
key store loses a key
0%
timeout after commit
4%
duplicate delivery
2%
lost before commit
0%
crash after commit
2%

Ask Warren Buffett: answers drawn from his letters, with sources

Ask a question and get an answer drawn from 25 Berkshire Hathaway shareholder letters, 1998–2023, with the passages it used.

Retrieval runs over 673 embedded passages, and every answer shows its sources.

Ask a question

A recorded answer

Recorded 2026-10-31

“What does Warren think about complex financial products?”

Each bar is one shareholder letter, sized by its passages: 673 from 25 letters. A dot is a passage this answer used, from the 2002 (2 passages), 2003, 2005, 2008 letters.
retrieval
681 ms
answer
11,382 ms
model
claude-opus-5-5

Retirement Simulator: 100,000 retirements in your browser

Change a withdrawal rate and 100,000 simulated retirements rerun in your browser.

The engine is Rust compiled to WebAssembly. The same engine answers the MCP server’s question above.

Run the simulator

Percent that ran out of money, by withdrawal rate

Rust engine, run at build

Percent of 100,000 simulated retirements that ran out of money within 30 years, with 60% in stocks. The 4% bar is the question the MCP panel opens on.

Rust compiled to WebAssembly

See all projects

How I build

I ship production AI agents with state machines, retries, and cost controls.

My event-driven pipelines absorb failures at thousands of events per second, and my serverless migrations cut infrastructure cost by 50%.

Watch retries meet 10,000 failure scenarios in the Exactly Once lab

I build MCP servers. One is public on this site.

Writing

Get the next post by email

I write about building AI agents and the backends they run on. One email per post.

Every email has a one-click unsubscribe link. Or follow by RSS.

Hiring for AI agents or the backends they run on? Tell me about the role.

Contact me