The three lane refusals
A connected agent’s tools come from a small, named set. A call outside that set is refused for one of three distinct reasons — the reason matters, because “hand the person this sign-up link” and “ask the account holder to open the app” are different instructions.Unknown tool name
Unknown tool name
The name called doesn’t match anything this server serves, on any connection. Most often a typo.What to do: check the name against
tools/list, which returns everything this connection can
actually call. Don’t guess a corrected name and retry blind.Held for the account holder's own surfaces
Held for the account holder's own surfaces
The tool exists and the account holder can use it, but not from a connected agent — it’s held for
the Sumvin app or the CLI. No scope or credential makes it appear here.What to do: don’t retry with different arguments. Tell the account holder to do this themselves,
in the app or the CLI. Call
tools/list to see what this connection does serve instead.No Sumvin account yet
No Sumvin account yet
The tool needs an account, and the person being helped doesn’t have one. Someone with no account
is listed the same tools as everyone else, so this is the refusal any of them returns.What to do: the refusal carries a sign-up link — hand it to the person to open in their
browser. Once they’ve signed up they can come back to the same conversation and carry on; the
page they finish on also gives them a prompt to start a new conversation, if they’d rather.
Don’t retry tools until they say they’ve signed up. If the refusal carries no link, it points
them at the Sumvin website instead.
Verify first
A few tools need more than an account — they need a wallet set up, or the account holder’s identity verified, before they’ll do anything.mandate_request is
the clearest example: it checks these before asking the account holder to sign anything, so an
unfinished setup never wastes their time on a request that couldn’t be granted.
No wallet yet
No wallet yet
A Stamped Mandate is granted against a wallet, and this account doesn’t have one.What to do: tell the account holder to finish setting up their account, then ask again. Check
onboarding_status for where they’ve got to.Identity verification not started
Identity verification not started
Spending authority needs the account holder’s identity to be verified, and verification hasn’t
started.What to do: call
kyc_start to get the link, and ask
them to complete it. Then try again.Identity verification not finished
Identity verification not finished
Verification is underway but hasn’t completed yet. Nothing has gone wrong.What to do: check back with
onboarding_status once
the account holder says they’re done, then ask again.