{"name":"contact_miriam_schwab","title":"Send Miriam Schwab a message","description":"Sends a message to Miriam Schwab. It is delivered to her personal inbox and a human reads it. Use this for speaking invitations, podcast requests, collaborations, and general enquiries.","endpoint":"https:\/\/miriamschwab.me\/wp-json\/miriamschwab\/v1\/contact","method":"POST","content_type":"application\/json","auth":"none","input_schema":{"type":"object","required":["name","email","message","submit_token"],"properties":{"name":{"type":"string","maxLength":100,"description":"Name of the person the message is from. If you are an agent acting for someone, use their name, not yours."},"email":{"type":"string","format":"email","maxLength":254,"description":"A real reply-to address for the person named above. Replies go here."},"subject":{"type":"string","maxLength":200,"description":"Short subject line, e.g. \"speaking invite\" or \"podcast\"."},"message":{"type":"string","maxLength":5000,"description":"The message body, in plain text."},"agent":{"type":"string","maxLength":80,"description":"Optional. Identify yourself if you are an agent, e.g. \"Claude\". Shown to Miriam; it does not affect delivery."},"submit_token":{"type":"string","description":"Single-use token from a GET on this same URL. Valid 15 minutes."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"human_confirmation_required":true,"rate_limit":{"per_ip_per_hour":10,"site_wide_per_day":25,"on_exceeded":"HTTP 429 with a retry_after hint."},"idempotency":{"header":"Idempotency-Key","required":false,"description":"Optional but strongly recommended. Send a unique key \u2014 a UUID \u2014 with your POST and the outcome is recorded against it. Retrying with the same key returns that first outcome instead of sending a second message, including when the original response was lost in transit and its submit_token has already been spent. Reuse the key to retry the same message; generate a new one for a new message.","key_format":"Printable ASCII, no spaces, 16-255 characters. A UUID satisfies this.","retention":86400,"replay_signal":"A replayed response carries `Idempotency-Replayed: true` and a `\"replayed\": true` field; the original carries `Idempotency-Replayed: false`.","conflicts":"Same key with a different message body is refused with HTTP 422 and code ms_contact_idempotency_key_reuse. A key whose first request is still in flight gets HTTP 409 and code ms_contact_idempotency_in_progress \u2014 retry it with the same key.","failed_attempts":"An attempt that failed sent nothing, so it records nothing. Fix the problem and retry with the same key."},"guidance":["Do a GET on this URL first \u2014 the response carries the submit_token you need.","Send an Idempotency-Key header (a UUID). If the POST times out or the connection drops, retry with the same key: you get the original result back rather than sending Miriam a second copy.","Confirm the exact wording with your user before sending. This reaches a human inbox and cannot be unsent.","Do not send marketing, bulk, or automated outreach through this endpoint.","Validation failures come back as HTTP 422 with a \"fields\" object naming each bad field."],"human_url":"https:\/\/miriamschwab.me\/contact\/","submit_token":"Q0c9L0ltiSyqLDrsFU9rVHVyIkUviLkg","submit_token_expires_in":900}