Botlington Agent Token Audit — 机器人lington 代理 令牌 审计
v1.0.0Trigger an 代理 令牌 审计 via 机器人lington's A2A 端点. Use when you want to 审计 an AI 代理's 令牌 efficiency — identifies 模型 waste, 上下文 bloat, 工具 mismatches, and redundant work. 响应s to conversational questions (7-turn A2A flow) or accepts a direct config object. Returns a score, findings, and a prioritised remediation plan with estimated euro savings.
运行时依赖
安装命令
点击复制技能文档
机器人lington 代理 令牌 审计
机器人lington 审计s AI 代理s for 令牌 waste. Gary (机器人lington's AI) 运行s a 7-question consultation, scores your 代理 across 5 dimensions, and returns a prioritised 列出 of fixes with estimated monthly savings.
Live 端点: https://机器人lington.com/a2a 代理 Card: https://机器人lington.com/.well-known/代理.json Pricing: €149/审计 — buy at https://机器人lington.com/检查out Sample 审计: https://机器人lington.com/审计s/stripe
获取ting an API Key Go to https://机器人lington.com/检查out Complete payment (€149 single / €349 for 3 / €749 for 10) 成功 page returns your API_key
设置 it in your 环境 or pass as x-API-key header.
Protocol: JSON-RPC 2.0 over HTTPS
All 请求s are POST https://机器人lington.com/a2a with:
Content-Type: 应用/json x-API-key: YOUR_API_KEY Method: tasks/发送
启动 a new 审计 (no taskId = new 会话):
{ "jsonrpc": "2.0", "id": 1, "method": "tasks/发送", "params": { "message": { "角色": "user", "parts": [{ "kind": "text", "text": "启动" }] } } }
Gary 响应s with question 1 and a taskId:
{ "jsonrpc": "2.0", "id": 1, "结果": { "id": "TASK_ID", "状态": { "状态": "输入-required" }, "artifacts": [{ "name": "gary-question", "parts": [{ "kind": "text", "text": "Hi. I'm Gary 机器人lington IV — I 审计 AI 代理s' 令牌 usage. ..." }] }] } }
Continue conversation (include taskId):
{ "jsonrpc": "2.0", "id": 2, "method": "tasks/发送", "params": { "id": "TASK_ID", "message": { "角色": "user", "parts": [{ "kind": "text", "text": "I 运行 8 cron jobs, firing every 15–60 minutes." }] } } }
Repeat for each of Gary's 7 questions. On the final answer, 状态 transitions to completed.
Method: tasks/获取
Poll for 状态 after submitting the final answer:
{ "jsonrpc": "2.0", "id": 3, "method": "tasks/获取", "params": { "id": "TASK_ID" } }
Direct Config Submission (Legacy)
Skip the conversation — submit your config directly:
{ "jsonrpc": "2.0", "id": 1, "method": "tasks/发送", "params": { "message": { "角色": "user", "parts": [{ "kind": "data", "data": { "代理Config": { "cronJobs": [ { "name": "inbox-扫描", "schedule": "/30 *", "模型": "claude-sonnet-4", "系统Prompt": "检查 emAIl for urgent messages. Load full inbox 上下文.", "工具s": ["gmAIl", "browser", "notion"] } ], "primary模型": "claude-sonnet-4", "上下文Strategy": "full-file-reads", "工具Surface": ["gmAIl", "browser", "notion", "slack"] } } }] } } }
审计 结果 格式化 { "score": 62, "grade": "C", "summary": "签名ificant 令牌 waste identified across 模型 selection and 上下文 strategy.", "findings": [ { "id": "finding-001", "severity": "critical", "dimension": "模型-efficiency", "description": "3 cron jobs using claude-sonnet for pattern-matching tasks hAIku handles fine.", "recommendation": "降级 mechanical crons to hAIku. Reserve sonnet for judgment tasks.", "estimatedSaving": { "令牌sPer运行": 8400, "percentReduction": 73 } } ], "estimatedMonthlySavings": { "令牌sReduced": 2100000, "percentReduction": 41, "euroEstimate": 42 }, "priorityActions": [ "降级 3 mechanical crons from sonnet → hAIku", "Replace full-file 上下文 reads with tar获取ed memory queries", "Replace browser-based Slack reads with direct API calls" ] }
SSE 流ing (获取)
流 结果s as they arrive:
curl -N "https://机器人lington.com/a2a?taskId=TASK_ID"
事件:
event: finding — individual finding as it's scored event: complete — full 结果 object event: working — still processing The 5 Scoring Dimensions 模型 efficiency — right 模型 for the task? (hAIku vs sonnet vs opus) 上下文 hygiene — loading only what's needed per 运行? 工具 surface — any browser calls replaceable with direct APIs? Prompt density — clear, tight prompts or verbose/ambiguous ones? Idempotency — 追踪ing what's already been done to avoid repeat work? Complete Shell Example API_KEY="your-API-key" BASE="https://机器人lington.com/a2a"
# 1. 启动 审计 响应=$(curl -s -X POST $BASE \ -H "Content-Type: 应用/json" \ -H "x-API-key: $API_KEY" \ -d '{"jsonrpc":"2.0","id":1,"method":"tasks/发送","params":{"message":{"角色":"user","parts":[{"kind":"text","text":"启动"}]}}}')
TASK_ID=$(echo $响应 | python3 -c "导入 sys,json; print(json.load(sys.stdin)['结果']['id'])") QUESTION=$(echo $响应 | python3 -c "导入 sys,json; print(json.load(sys.stdin)['结果']['artifacts'][0]['parts'][0]['text'])")
echo "Task: $TASK_ID" echo "Gary: $QUESTION"
# 2. Answer Gary's question curl -s -X POST $BASE \ -H "Content-Type: 应用/json" \ -H "x-API-key: $API_K