EVM and passkey owners don’t need a NEAR wallet or any NEAR tokens. They keep signing with the wallet or passkey they already use.
New agents currently take NEAR or passkey owners. EVM owners are gated: unless the deployment has turned them on,
agent_create with an EVM owner is refused with owner_type_unsupported (400). Check supported_owner_types in GET /v1/network before you offer EVM sign-up. Existing EVM-owned agents are not affected and keep working.The owner account is a different thing from the agent’s wallet. The agent has its own wallet and its own NEAR Intents account, which holds its funds. The owner account only controls the agent’s rules.
GET /v1/agents/{agent_id} returns both: owner_account and wallet.What to pass as the owner
You always pass the owner’s public key, never just an address. For a NEAR owner, that’s one of their account’s keys. An EVM address or a0s account on its own doesn’t prove which key controls it, so the API doesn’t accept one as an owner.
- NEAR
- EVM
- Passkey
public_keymust be aned25519full-access key on that account. A key that is missing from the account or is a function-call key is refused withowner_key_not_full_access(403).- Owner requests are signed with this same key. A signature from a different key on the same account is refused:
signer_mismatch(409) for a signed message,policy_delegate_owner_mismatch(403) for a delegate action. See Errors.
EVM and passkey owners: 0s accounts
For EVM and passkey owners, the API derives a NEAR account from the owner’s public key. These accounts start with 0s, followed by 40 hex characters.
1
The account is computed from the public key
The account is a small wallet contract on NEAR with a deterministic address (NEP-616). The address is a hash of the wallet code plus the owner’s public key, so anyone can compute it, and the same key always gives the same account.
2
The API creates it on the first signature
When the owner signs
agent_create, the API checks the signature, then creates the account on NEAR in the same sponsored transaction that installs the policy, if it doesn’t exist yet. The API pays the gas and storage. See Gas.3
Only the owner's key can use it
The account accepts only requests signed by the owner’s key: EIP-712 signatures for EVM, WebAuthn signatures for passkeys. Neither you nor the Agent API can sign for it. See Signing Standards.
If the account already exists
The same key always maps to the same0s account, so the account may already be on NEAR, for example because the owner already uses this wallet for another agent. In that case, the API checks that the account runs the expected wallet code and uses it as it is. It doesn’t create it again.
If an account exists at that address with different code, agent_create fails with wallet_code_mismatch.
Find the owner account
GET /v1/agents/{agent_id} returns the owner account in owner_account. It’s null until the agent is ACTIVE:
owner_account.account_id is the owner’s own account.
Keys can’t change
The owner account is fixed when the agent is created:- For EVM and passkey owners, a different key means a different
0saccount. If the owner switches wallets or loses their passkey, the agent stays controlled by the old key. - For NEAR owners, the agent stays tied to the account and key given at creation.