Skip to main content

MCP: errors now carry a code and a next step, and delivery rates count only finished messages

  • Errors have a shape you can act on. A failed Motorical tool call now returns code (for example NOT_FOUND, FORBIDDEN, RATE_LIMITED, MOTOR_BLOCK_REQUIRED), a plain error message with no internal route in it, a hint naming the next move, and the existing status and details. When a connection covers several Motor Blocks and none was named, the error lists them as candidates (id and name). Branch on code, not on the message text.
  • One Motor Block granted means no motorBlockId needed. Tools that act on a Motor Block now use the single granted block when you leave the id out. With several granted, the error above lists the choices.
  • Delivery rates use one definition. Overview and provider figures count a message as accepted once the receiving server took it (delivered, processed or complained) and divide by finished messages only (accepted, bounced or failed). Messages still queued or deferred are reported as pending and no longer pull the rate down. The response says which basis it used (rateBasis) and when it was generated (generatedAt).
  • The 200 bucket in error-code breakdowns is now labelled "Accepted (exact SMTP reply not recorded)", because the exact reply text is not stored for those messages.

Documentation changed