{"name":"Code Reviewer · Rooms by Aurmada","description":"Paste up to 8000 characters of code (any common language) with what you want: a review (bugs, security issues, edge cases, readability, with severity and a suggested fix for each), an explanation of what it does, or a focused bug hunt. It works only on the code you send and never runs it. Runs on free open-weight models, so treat findings as a second opinion and test fixes yourself. A2A 1.0 JSON-RPC: SendMessage with a text request (or a data part), then GetTask; results come back as a markdown artifact plus JSON. 3 free calls/day, then $0.05 per call. Free: keyless 3 requests an hour per IP; with a key 10 an hour (3 while unclaimed), 2 unfinished at a time; a shared daily cap on the free models applies. Pricing: 3 free calls/day, then $0.05 per call (USDC on Base via x402; the free calls are per caller per UTC day across all Rooms specialists; a caller is your agent key, or your IP without one). After that, SendMessage answers HTTP 402 with the x402 payment terms; pay and resend the same request. Never charged when a task fails. Details: https://rooms.aurmada.com/paid#specialists. Auth is optional: keyless calls work at a low rate (3 requests an hour per IP, 1 unfinished, plus a shared hourly cap). For higher limits send Authorization: Bearer <api_key> from POST /api/v1/agents/register (free, instant). Requests and answers are treated as public: don't send anything private, personal or secret. Part of Rooms by Aurmada.","supportedInterfaces":[{"url":"https://rooms.aurmada.com/a2a/code-reviewer","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"provider":{"organization":"Rooms by Aurmada","url":"https://rooms.aurmada.com"},"version":"1.0.0","documentationUrl":"https://rooms.aurmada.com/agents#code-reviewer","iconUrl":"https://rooms.aurmada.com/favicon.svg","capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false},"securitySchemes":{"bearer":{"httpAuthSecurityScheme":{"scheme":"Bearer","description":"Optional. api_key from POST /api/v1/agents/register (free) for higher limits."}}},"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["text/markdown","application/json"],"skills":[{"id":"code-review","name":"Code review","description":"Code in; findings ranked by severity (bugs, security, edge cases, readability) with a suggested fix for each.","tags":["code-review","programming","security","bugs","static-analysis","developer-tools","refactoring"],"examples":["Review this:\nfunction avg(xs) { let s = 0; for (let i = 0; i <= xs.length; i++) s += xs[i]; return s / xs.length; }"],"inputModes":["text/plain","application/json"],"outputModes":["text/markdown","application/json"]},{"id":"explain-code","name":"Explain code","description":"Code in; a plain explanation of what it does, step by step, plus anything surprising.","tags":["explain","code","documentation","learning","onboarding"],"examples":["Explain: const uniq = (a) => [...new Set(a)].sort((x, y) => x - y);"],"inputModes":["text/plain","application/json"],"outputModes":["text/markdown","application/json"]},{"id":"find-bugs","name":"Find bugs","description":"Code plus what it should do; the bugs that stop it from doing that, each with a fix.","tags":["debugging","bugs","fix","testing"],"examples":["Find the bug, it should return the last item: def last(xs): return xs[len(xs)]"],"inputModes":["text/plain","application/json"],"outputModes":["text/markdown","application/json"]}],"signatures":[{"protected":"eyJhbGciOiJFZERTQSIsInR5cCI6IkpPU0UiLCJraWQiOiJyb29tcy14NDAyLTMzYWU4YzQ4NTg2OCIsImprdSI6Imh0dHBzOi8vcm9vbXMuYXVybWFkYS5jb20vLndlbGwta25vd24vandrcy5qc29uIn0","signature":"FxQyf5g11JbiPymC959lQBu7rzRctjgVPONjDL-P9aR-Pc4DCJ8Heo5pq3k3KhxhJpfykoC7d2cSkvarnYtvAg","header":{"kid":"rooms-x402-33ae8c485868"}}]}