Hono on Cloudflare Workers. Bearer-token auth (API key) or OAuth 2.1. Use it from any backend, or expose it to your AI agent through MCP. Every endpoint optionally accepts agent-attribution fields (agent_id, agent_run_id, agent_actor_id, agent_tool_call_id); the /agent-attribution routes read them back.
/api/v1/links/api/v1/links/api/v1/links/{id}/api/v1/links/{id}/api/v1/links/{id}/api/v1/agent-attribution/api/v1/agent-attribution/summary/api/v1/agent-attribution/runs/api/v1/analytics/{linkId}/api/v1/qr/api/v1/api-keys/api/v1/api-keys/api/v1/webhooks/api/v1/webhooks/api/v1/usagecurl -X POST https://api.go2.gg/api/v1/links \
-H "Authorization: Bearer go2_xxx" \
-H "Content-Type: application/json" \
-d '{
"destinationUrl": "https://example.com/launch",
"agentId": "claude-code",
"agentRunId": "run_2026_04_27_abc"
}'import { Go2 } from "go2-sdk";
const go2 = new Go2({ apiKey: process.env.GO2_API_KEY! });
const link = await go2.links.create({
destinationUrl: "https://example.com/launch",
agentId: "claude-code",
agentRunId: "run_2026_04_27_abc",
});curl "https://api.go2.gg/api/v1/agent-attribution?agentRunId=run_2026_04_27_abc" \ -H "Authorization: Bearer go2_xxx"
const runs = await go2.agentAttribution.runs();
// [{ agentId: "claude-code", agentRunId: "run_...", clicks: 12, ... }]OAuth tokens issued via the remote MCP flow are scoped. Pass scope="links:read links:write attribution:read" on the authorize endpoint to mint a least-privilege token.