AgentMob / Docs
How AgentMob works
You claim one real carrier number and get one API key for it. You paste one prompt into your personal agent. From then on, when you ask your agent to text or call someone, it does it from that number. This page is the whole of it, plus what to do when it does not work.
What your agent gets
One number, one key, and two things it can do with them. Both are plain HTTP requests to the Gather API, so any agent that can call a web API with a custom header can do this. That is the only requirement.
- Send a text. POST https://api.rockstar-automations.com/v1/messages with the recipient and the message. One plain text segment, up to 160 characters. It can also read replies with GET https://api.rockstar-automations.com/v1/messages/inbound.
- Place a call. POST https://getagent.mobile/api/agent/calls with a goal, the facts the caller needs, and what to say to voicemail. A voice assistant makes the call from your number and reports back a summary and transcript. Your agent does not speak on the call itself.
The key goes in an Authorization: Bearer header on every request. The prompt below spells all of this out for the agent, so you do not have to.
The prompt, in full
This is the exact text the site fills in for you after you claim, with your number, line id and key in place of the placeholders. Read it before you claim if you want to know what you are handing your agent. There is nothing else.
You now have your own phone number you can use to send texts and place calls on my behalf, through the Gather API. Use it whenever I ask you to text or call someone.
Your number: +1 (your number)
Line ID: <your line id>
API base: https://api.rockstar-automations.com
Auth: send the header Authorization: Bearer <your API key> on every request.
NAME YOURSELF:
Start every Idempotency-Key with your own product name (the assistant I am talking to right now) in lowercase letters and digits only, then a dash, then a unique string. Example: poke-7f3a91c2. I use more than one agent with this number, and this is how I see which one did what.
TO SEND A TEXT:
POST https://api.rockstar-automations.com/v1/messages
Headers:
Authorization: Bearer <your API key>
Content-Type: application/json
Idempotency-Key: <your name>-<a unique string per send>
Body (JSON):
{ "lineId": "<your line id>", "to": "<recipient in E.164, e.g. +12025550123>", "body": "<message text>" }
Keep each message to a single 160-character GSM-7 segment: plain text, no emoji or unusual symbols. Success returns HTTP 202 with status "queued".
TO CHECK FOR REPLIES:
GET https://api.rockstar-automations.com/v1/messages/inbound?lineId=<your line id>&limit=20
Headers:
Authorization: Bearer <your API key>
Returns the newest texts sent to your number first. Each has an id, from, body and createdAt. Nothing notifies you when a reply arrives, so check whenever I ask about replies, and check again a little after you text someone who is likely to answer. To answer a reply, send a text as above and add "inReplyTo": "<the id of the text you are answering>" to the JSON body.
TO PLACE A CALL:
A voice assistant makes the call for you and reports back. You do not speak on the call yourself.
POST https://getagent.mobile/api/agent/calls
Headers:
Authorization: Bearer <your API key>
Content-Type: application/json
Body (JSON):
{ "to": "<recipient in E.164>", "goal": "<what the call should achieve, in one or two sentences>", "context": "<facts the caller may need: names, dates, party size, reference numbers>", "voicemail": "<one or two sentences to leave if nobody answers>", "agent": "<your name>" }
It returns an id. Then GET https://getagent.mobile/api/agent/calls/<id> with the same Authorization header every 20 seconds until "status" is "ended" or "failed". The result has a summary and a transcript, so tell me the outcome. The voice assistant cannot ask you anything during the call, so put every fact it needs in goal and context.
RULES:
- Only text or call people I explicitly ask you to, with the message and purpose I give you. If anything is ambiguous, confirm the number and content with me first.
- One recipient at a time unless I say otherwise. No bulk or marketing blasts.
- If anyone replies STOP, never message that number again.
- After each send, tell me the result (queued, or the exact error plus the X-Request-Id header).
First, confirm you can make these HTTP requests. Then ask me for a number to send a test text to, so we can confirm it works end to end.
Two details are deliberate. The prompt asks the agent to name itself in every request, so your usage page can show which agent did what when you use more than one with the same number. And it ends by asking for a test text to your own phone, which is how both of you learn it works.
Did it work?
Two signs, and you want both.
- A text arrives on your phone from your new number, saying the agent is wired. If you did not give the prompt a number to test with, the agent asks you for one first.
- Your number page says "Your agent is connected." We notice the first text from your number to your own phone, and once it is delivered the page says so. It can take a minute.
That is also our paste test. An agent only gets marked Works on the site after this happens for real, and Fails only when it could not. Everything else is Untested, which means nobody has tried yet, not that it is broken. You can report your result from your number page and it goes into the directory after we check it.
When it does not
The agent says it cannot make the request
Some agents cannot call arbitrary web APIs, or cannot set a custom header. If yours says so, the prompt cannot work with it, and no rewording will change that. Tell us from your number page so the directory marks it Fails, and use the number with an agent that can.
The agent asks for the key, or says it is unauthorized
Usually the key got cut off or altered when the prompt was pasted or forwarded. Open your number page, copy the prompt again with the copy button, and paste it whole. If you sent it by text message, the messaging app may have wrapped or truncated it; paste it into the agent directly instead. The "Message prompt to" buttons send a short private link rather than the prompt itself for this reason.
No test text arrived
Ask the agent what happened. It should tell you the result of each send: queued, or the exact error. A queued message that never arrives usually means the wrong recipient number, so check it has the country code, like +1 415 555 0123. If the agent says it sent nothing, it may be waiting for you to confirm the number, which the prompt tells it to do when anything is ambiguous.
Replies do not show up
Nothing notifies your agent when someone replies. The prompt tells it to check for replies when you ask, and again shortly after texting someone likely to answer. So ask. Every text and call, both directions, is on your activity page too.
The call did not go the way you wanted
The voice assistant only knows what your agent put in the goal and context. It cannot ask your agent anything mid-call. If it got a fact wrong or gave up early, the fix is a fuller brief: names, dates, reference numbers, and what to do if nobody answers. The transcript on your activity page shows what it had to work with.
Limits and pausing
Up to 30 texts and 10 calls in any rolling 24 hours. That is plenty for one person's agent. There is no counter inside the line itself, so a monitor tallies your number's traffic every few minutes. Your usage page shows the same tally.
A number that goes over, or is used against the rules, is paused right away and does not come back. A paused line rejects every request, and its key stops working. The reason is that these are real carrier lines: one abused number can get the whole batch flagged.
Your key
You only ever receive the key for your one line, and only after you sign in. Anyone who has it can send from your number, so it belongs to you and your agent and nobody else. If you pasted it somewhere public, tell us from your number page and we will revoke it. The rules ask you not to rotate the key or change the line's settings yourself, because a line that falls out of our monitoring is retired.
Questions this page does not answer go to the rules, the privacy page, or the address on it.