Verify the Code and Unlock Calling Capacity
verifyAnchorCodeSubmit the code the human read to you from their text message. On success the number is permanently recorded as this workspace's accountable human, and the workspace receives its free calling capacity, so it can now run createMapping, runMissionTest and runComplianceTest.
USE WHEN:
- You called requestAnchorCode and the person has told you the code
ARGUMENTS:
- phoneNumber: the SAME number you passed to requestAnchorCode, in the same E.164 format
- code: the digits from the text message, exactly as the person read them
RESPONSE ON SUCCESS (200):
- anchored: true. The human is verified.
- freeGrantOutcome tells you about capacity:
- granted: free capacity was added. You can start work. Call getWorkspaceUsage to see how much.
- already-granted: this workspace already had it. Nothing is wrong.
- not-owed: this number has already used its one free allocation, on this or another workspace. The human is verified, but capacity has to be bought. Call getClaimLink so the person can pay.
- unavailable: the code was RIGHT and the human is verified, but the capacity grant could not be completed just now. Nothing is lost and nothing is double-spent. Wait a minute and call verifyAnchorCode again with the same arguments. If that retry is refused with reason bad_code, the code has expired, NOT been misread: do not ask the person to check it. Call requestAnchorCode for a fresh code and verify again; the grant is retried on that verification.
- refused: the grant was declined. Tell the person and call getClaimLink.
WHEN IT IS REFUSED:
- reason bad_code (400): the code did not match, or has expired. Codes expire after a few minutes. If the person only just read it, ask them to check it and try once more; otherwise call requestAnchorCode for a fresh one. If you are retrying after an unavailable outcome, treat bad_code as expired.
- reason already_anchored (409), or anchor_limit_reached (403): see requestAnchorCode
- reason not_held (409): the number you passed as replaces is not one of this workspace's verified humans. Do not guess at it.
- reason replaces_unparseable (400): the replaces number is not a number we can read. Ask the person to give it in full international format.
- reason survivor_is_target (400): replaces named the SAME number being verified, which would leave the workspace with nobody accountable.
- A 5xx means the verification provider had a problem, never that the code was wrong. Try again shortly.
RELATED TOOLS:
- getWorkspaceUsage: see the capacity you now have
- getClaimLink: let the human take ownership and buy more
- createMapping, runMissionTest, runComplianceTest: the work itselfTool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"phoneNumber": "<phoneNumber>",
"code": "<code>"
},
"name": "verifyAnchorCode"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The one-time code from the text message, as digits. | |
| replaces | No | Optional, in E.164 format. Use ONLY when this person is taking over from someone whose number is already the verified human for this workspace — a colleague who has left, say. The new number is anchored and the old one freed in one step, so the workspace is never left without an accountable person. Omit it to ADD a verified human alongside the existing ones, which is what you usually want. | |
| phoneNumber | Yes | The same number the code was sent to, in E.164 format. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| anchored | Yes | ||
| freeGranted | Yes | Capacity was added to the workspace by THIS call. | |
| freeGrantOwed | Yes | True when this anchor entitled the workspace to its free grant at the moment of anchoring, i.e. the grant was asked for on this call. False when the number had already spent its one allocation. | |
| freeGrantError | No | Present only for `refused` (auth's reason, e.g. `not-an-agent-workspace`) and `unavailable` (the literal `unavailable`). | |
| freeGrantOutcome | Yes | `granted`: capacity added now. `already-granted`: the workspace already held it from an earlier call; nothing is wrong. `not-owed`: this number spent its one allocation before, on this workspace or another. `refused`: auth declined (see `freeGrantError`). `unavailable`: auth could not be reached or answered in time; the anchor stands, retry the grant by verifying again. |