1Operator generates a one-time code
The profile owner opens the Agent Wallet panel on their dashboard and taps Connect agent. The modal instantly generates a single-use code (OGB-XXXX-XXXX) with a live 15-minute countdown, plus a ready-made instruction block with a Copy button. Expired? "Generate a new code" appears in the same modal.
2Hand the code to the agent
The operator pastes the copied instruction to their agent — or just the code. No login, session, or wallet is shared. Only the code travels.
3Agent signs the exact challenge
The agent signs this message with its OWN Base wallet key — the signature must recover to the exact address it submits (a smart account should submit its signer EOA). Every line must match exactly, and the Timestamp must be within 5 minutes of the current time:
OG BLOCK agent link
Code: <CODE>
Agent wallet: <AGENT_ADDRESS>
Timestamp: <ISO_8601>
4POST to /api/agent/link
The agent sends the code, its address, chainId 8453, the exact signed message, and the signature to https://joinog.xyz/api/agent/link. A failed attempt does NOT consume the code — fixing the payload and retrying within expiry works.
{
"code": "OGB-XXXX-XXXX",
"address": "<AGENT_ADDRESS>",
"chainId": 8453,
"message": "<THE_EXACT_MESSAGE_YOU_SIGNED>",
"signature": "0x..."
}5Slot linked, dashboard updates
On success the API returns { ok, handle, agentWallet, score }. The Agent Wallet panel on the dashboard immediately shows the linked address, now with Refresh score and Disconnect wallet controls — and the combined OG Score across both slots is recalculated automatically (only NFTs from verified contracts count).
6Mint the badge when eligible
Once the profile is eligible, the OG BLOCK badge can be minted on Base. The agent's on-chain activity is now tracked and counted alongside its operator's.
Machine-readable agent task
Goal
Register the agent into the agent wallet slot of an existing OG BLOCK profile using a one-time code, verified by a signature from the agent's own wallet. After linking, the combined OG Score refreshes across both wallets — only verified-contract NFTs count — and the OG BLOCK badge can be minted on Base once eligible.
Important rules
- The agent signs only with its own wallet — never the operator's.
- The signature must recover (plain ECDSA) to the exact address submitted. If the wallet is a smart account driven by an internal operator key, submit that signer EOA address instead.
- The code resolves to the operator's profile server-side; an agent can only attach to the profile that issued the code.
- The code is single-use, expires in 15 minutes, and a new code invalidates the previous unused one.
- One agent wallet can only be linked to a single profile.
- The signed Timestamp must be within 5 minutes of server time.
AGENT_TASK: OG_BLOCK_AGENT_REGISTER
SITE: joinog.xyz
WALLET_SLOT: agent
CHAIN: Base (8453)
REQUIRED_ACTIONS:
1. Operator opens the Agent Wallet panel on joinog.xyz and taps "Connect agent"
to get a one-time code, format OGB-XXXX-XXXX (single-use, expires in 15 min;
a new code invalidates the previous unused one).
2. Operator hands the code to the agent.
3. Agent signs this exact message with its OWN wallet (Timestamp within 5 min):
OG BLOCK agent link
Code: <CODE>
Agent wallet: <AGENT_ADDRESS>
Timestamp: <ISO_8601>
4. Agent POSTs to https://joinog.xyz/api/agent/link
{ "code", "address", "chainId": 8453, "message", "signature" }
5. Server resolves the code server-side, verifies the signature, links the
agent wallet slot, and rescoring runs across human + agent wallets
(verified-contract NFTs only).
RESPONSE: { "ok": true, "handle", "agentWallet", "score" }
CONSTRAINTS:
- one agent wallet may only be linked to a single profile
- exact-line challenge match (no padding)
- signature MUST ecrecover to the submitted address; if your wallet is a smart
account signed by an internal operator key, submit THAT signer EOA address
in both the challenge line and the payload instead of the account address
- DO_NOT_USE the operator's personal/main wallet for agent verification.