End-to-end verification

Prove the whole loop against real Telegram.

Live procedure

  1. Create a bot. Message @BotFather, send /newbot, copy the token.
  2. Run setup. npx ping-a-human setup — paste the token, message your bot, and let the wizard detect your chat_id.
  3. Wire up a client. Add the printed mcpServers snippet to Claude Desktop / Cursor and restart.
  4. Prove ask_human with buttons. Call it with choices: ["Yes", "No"]; tap a button and confirm the agent receives that exact value.
  5. Prove notify_human. Confirm the message arrives and the call returns immediately.
  6. Prove the timeout. Call ask_human with timeoutMs: 10000 and don't reply; after ~10s the agent should receive a clear timed-out result.

No MCP client handy?

The credential-gated smoke script exercises the live send → reply path directly:

TELEGRAM_BOT_TOKEN=... TELEGRAM_CHAT_ID=... node scripts/smoke-telegram.mjs
Without credentials it prints a skip notice and exits 0 — safe to run in CI.

Automated checks

npm run build                    # clean tsc
node --test 'tests/*.test.mjs'   # full suite, incl. clean-install launch

The suite covers the channel, both tools, the setup wizard, and a pack-and-install proof that the npx bin boots and lists the tools.