Send a code by SMS
send_messageSend one transactional SMS to a Georgian mobile number. The text comes from a built-in template; there is no free text.
With a test key (sk_test_) nothing is really sent: a simulator answers. These recipients simulate outcomes: +995500000001 rejected (status failed); +995500000002 provider unreachable (error provider_unavailable: nothing was sent, retry with the same idempotency_key); +995500000003 ambiguous (status unknown); +995500000004 accepted, then undeliverable. Any other valid number is accepted, then delivered, within about 30 seconds. With a live key it sends a real SMS and spends one credit per segment.
Read message.status in the result. submitted: the provider accepted it, which is not yet delivery to the phone. failed: refused; message.error says why. unknown: it may or may not have been sent, so do not send it again automatically. replayed: true: this idempotency_key and request were already processed, and no second SMS was sent. Call get_message to learn the final outcome.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient in E.164 format: `+9955` followed by eight digits. No other country or format is accepted, and numbers are never normalized on your behalf. | |
| locale | No | Language of the message: `ka` (Georgian, the default) or `en`. | ka |
| api_key | No | An sk_test_ key, for example from create_test_key. Leave it out to use the key in this MCP server's Authorization header. A live key (sk_live_) is refused here: tool arguments are kept in the conversation, so a live key belongs in the header. | |
| template | Yes | Which message to send. Message text is never free-form: every message is rendered from one of these templates. - `verification_code` (`code`): Your verification code is {code}. Do not share it with anyone. - `login_code` (`code`): Your sign-in code is {code}. If you did not request it, ignore this message. - `password_reset_code` (`code`, `minutes`): Your password reset code is {code}. It expires in {minutes} minutes. | |
| variables | Yes | Values for the template's placeholders, all as JSON strings. A `code` is 4 to 8 digits; `minutes` is 1 to 999. Values that look like a link, a web address, or a phone number are refused. | |
| idempotency_key | Yes | A new unique value (a UUID) for each logical message. Reuse it only to retry the identical request: the retry then returns the original message instead of sending a second SMS. |