On a 429 Too Many Requests response, read the Retry-After response header, which contains the number of seconds to wait before retrying
Implement an exponential back-off loop that respects the Retry-After value as a floor; do not retry earlier than the specified interval
Spread requests across multiple service principal / app user identities if a single identity is hitting limits; each user account has independent limits evaluated in a 5-minute sliding window
Tune your request rate proactively: start at a conservative rate, ramp up gradually, and treat the first 429 as a signal to find the ceiling rather than an error to eliminate
Log the 429 rate per identity and endpoint to identify which tables or operations are hitting limits; optimise queries with $select to reduce execution time per request
Known gotchas
The Dataverse service-protection limit evaluates three concurrent factors: request count, execution time, and concurrent connections — you can hit the limit on execution time even if your request count is low, especially with expensive queries
If you continue sending requests after receiving 429 responses, the Retry-After interval increases progressively; backing off immediately minimises total wait time
Dynamics 365 Finance and Operations (F&O) has a separate service-protection API limit mechanism from Dataverse; the two environments return 429s with different semantics and must be handled independently
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp