# cpyany > Copy any site or element, then verify the result. Your coding agent ships a > change, cpyany tests it, and structured results — pinned comments, per-step > proof of work, screenshots — flow back into the agent's context. cpyany is built for coding agents. After you build or change a UI you are blind to the result: you can't *see* the rendered page, *feel* whether an animation is smooth, *use* a real device, or *reach* real third-party side-effects (OAuth round-trips, payment emails, real-network latency). File those with `cpyany_test` over MCP and poll for results. ## The loop 1. Call `cpyany_test` with a `url`, structured `steps`, and optional `verdict_options`. Returns `status='pending'` immediately. IMPORTANT: the `url` must be publicly reachable — if your dev server is on localhost, tunnel it (ngrok, cloudflared) or deploy a preview first. 2. cpyany tests the build against your checklist and pins comments to the exact components it means (no script to add to your build). 3. Keep working on your next task while the verification runs — then collect results: `cpyany_test_results(ping_id)` at natural checkpoints, or `cpyany_wait(ping_id)` to block server-side until news (free), or `npx cpyany wait ` as a background shell task that exits when results land (interactive sessions only — in a one-shot run never end your run while results are pending; a backgrounded waiter dies with you, so run the waiter in the foreground or loop `cpyany_wait`). Results: verdicts, notes, component-level comments (element + CSS selector), screenshot URLs, and a per-step truth report. 5. Do not stop after one result unless the verification returns an approval verdict (e.g. Pass / Approved / Good to go) with no unresolved comments. If it returns issues, requested changes, unresolved comments, Fail/Blocked, or any non-approval verdict, fix the code, redeploy or tunnel the updated build, file another `cpyany_test`, and repeat until it approves or the user tells you to stop. ## Verifiable steps (proof the work happened) You wrote the code, so you know what "done" looks like. Attach a `check` rule to every step you can: - `{type:"url", pattern:"/pricing"}` — confirms it actually navigated there - `{type:"click", selector:".checkout button"}` — confirms it actually clicked it - `{type:"fill", selector:"input[type=email]"}` — confirms it actually typed - `{type:"comment"}` — confirms at least one comment was pinned cpyany observes the page and auto-verifies them; `cpyany_test_results` reports each step as ✓ auto (machine-verified), ✓ manual, or ✗ not done. For qualitative steps add `options` (2–4 labels, e.g. ["Smooth","Janky"]): the answer is returned inline in steps_result[].answer. ## Also: quick subjective gut-checks `cpyany_poll` is the lighter sibling for taste questions that need no build — "which logo color looks more professional?", "rate this onboarding copy". Blocks up to ~300s synchronously (ping stays open 24h by default); poll `cpyany_poll_results` for late arrivals. ## Key capabilities - **MCP server** at `https://pingfusi.com/api/mcp` (streamable HTTP, bearer auth). Tools: `cpyany_test`, `cpyany_test_results`, `cpyany_poll`, `cpyany_poll_results`. - **Real-device verification**: cpyany tests on a real device with real rendering. - **Per-response pricing**: $0.05 per result received; no charge if no one answers. 5 free credits on signup; Stripe top-ups, $5 minimum. - **Idempotency**: pass `idempotency_key` to make retries safe. - **Setup in one command**: `npx cpyany setup` (writes MCP config + agent rules for Claude Code, Claude Desktop, Cursor). ## Authentication `Authorization: Bearer ph_` Get a token at https://pingfusi.com/dashboard after signing up, or run `npx cpyany setup`. ## Key pages - [Landing](https://pingfusi.com) - [Sign up](https://pingfusi.com/sign-up) - [Dashboard (token + balance + deposits)](https://pingfusi.com/dashboard) - [Answer feed](https://pingfusi.com/answer) - [AI plugin manifest](https://pingfusi.com/.well-known/ai-plugin.json) - [Detailed LLM reference](https://pingfusi.com/llms-full.txt) ## Contact - Website: https://pingfusi.com - Support: alex@pinghumans.com