examples/MCP-tools Public
title: A client over its rate limitdescription: >- An agent stuck in a loop has spent its 30 calls. The refusal comes back as a tool result, so the model reads how long to wait instead of the client reporting an HTTP error.actors: [agent, mcp-client]steps: - { from: agent, to: mcp-client, label: "call convert_units again, the 31st time this minute" } - { from: mcp-client, to: mcp-server, label: "POST /mcp: tools/call convert_units" } - { from: mcp-server, to: mcp-sdk, label: check the arguments against the input schema } - { from: mcp-server, to: rate-limiter, label: "take a token from this client's bucket" } - { from: rate-limiter, to: mcp-server, label: "refused: next token in 2 seconds" } - { from: mcp-server, to: mcp-client, label: "isError result: wait 2 seconds before the next call" } - { from: mcp-client, to: agent, label: "the refusal as a tool message, so the model can back off" }