Probably
Docs
Guides

Idempotency

Request keys make Probably's write tools safe to retry: the same key answers with the first result.

Networks fail mid-call, and agents retry. Probably's write tools take a request key so that a retry answers with what the first call did instead of doing it twice.

Request keys

Tools whose repeat would do something twice take a requestKey: create_space, save_persona, save_product, prepare_audience_research, save_segments, plan_campaign, prepare_campaign_batch, prepare_campaign_openings, import_ad_results, plan_next_batch, stop_video, share_video, send_message, prepare_video, research, brainstorm, write_script, review, generate_clip, voice, and storyboard. The HTTP API reference lists it among each one's fields.

  • Use a new key for each thing you mean to do, such as a UUID, 8 to 64 characters of letters, digits and ., _, : or -.
  • Send the same key again, and the tool answers with the first call's result, even when the first call's answer never reached you.
  • The same key with other input, or for another tool, is refused as invalid, so a bug that reuses keys can't silently return the wrong thing.
  • Keys belong to the connection that sent them.

Repeat-safe by nature

Some tools are safe to repeat without a key, because doing them again changes nothing more: approving a delivery, discarding a change, and confirm_spend, which starts its work once however often it is called. The MCP tool reference marks these with the idempotent hint.

revoke_share isn't: a revoked link reads as missing, so a repeat answers not-found. Treat that as done.

What to retry

  • Retry a network failure, a timeout, a failed (500) or an unavailable (503), with the same request key, after a backoff.
  • Wait, then retry a rate-limited (429), after retryAfterSeconds.
  • Don't retry unchanged any other refusal: fix the input, read the current state, or ask the person. Errors says what each one means.

Messages to Looky (send_message) are the one exception: the message is sent before its key's answer is recorded, so a retry racing the first call, or one after a failure between the two, can send it twice. A message spends nothing; check the video's messages before sending again.