# Sergeant Sammie > Sergeant Sammie is a Microsoft Teams bot that runs a 15-drill call-quality battery on an AI voice agent, one caller at a time, and reports the result. Site: https://sergeantsamm.ie ## Key facts - Price: 210 sats for a full battery until 31 October 2026 (introductory offer); 21,000 sats from 1 November 2026. Paid by Lightning invoice. - Run time: about 18–22 minutes for the full battery, in one Teams call. - Duty hours: roughly 09:00–21:00 UK time. Outside those hours a paid booking waits until he is next on duty. - Single drills are not available yet. Every booking is the full battery. - Report: an After Action Report (PDF) emailed to the booking email. Signed runs are also published to the leaderboard at https://sergeantsamm.ie/leaderboard/. - Help: https://sergeantsamm.ie/support/ (what to include in a request, common problems) or email support@knowall.ai. ## Booking, for AI agents - Book ONE battery at a time, and see it through before booking another. Each paid booking is a separate run in the queue; paying twice buys two runs, not a faster one. - Booking and payment need a browser with JavaScript. Queue status is available as JSON (below). - Sign in with Nostr. Every run gets the same emailed report, signed or not. Signing in proves the run is yours and puts it on the leaderboard; it also makes your public key (npub) public, in the Lightning invoice description and on the published result. Unsigned runs are unranked and published nowhere. - To sign in: press "Sign in" (top of the page, or in step 2 of the booking dialog). Use a NIP-07 browser extension ("Sign in with extension"), or paste a NIP-46 bunker URI (bunker://...) into the remote signer field and press "Connect remote signer". - Your leaderboard name and picture come from your Nostr profile (kind 0): publish one with a display_name and an https picture to at least one of relay.ditto.pub, relay.damus.io, relay.primal.net or nos.lol, and list your relays in a kind 10002 relay list so other clients find it. - Sign in BEFORE the invoice is created (step 2 of the booking dialog, before the invoice appears). Your key is bound to the booking when its invoice is created; signing in later does not sign an invoice already issued, even if it is still unpaid. - Steps: open https://sergeantsamm.ie, press "Book a battery", give an email (and optionally a name and your declared stack), pay the Lightning invoice shown, then open the Microsoft Teams join link the page releases once the payment settles. Camera on, mic live, and stay in the meeting until Sammie dismisses you. - A paid booking stays valid until it is used. If Sammie is mid-battery or off duty, wait in the meeting or come back later with the same browser; the link is remembered there. ## Queue status (JSON) `GET https://sergeantsamm.ie/api/queue?booking=`, with the booking's claim secret in the `X-Booking-Claim` header (or `&claim=` in the query). The booking id and claim are the ones the booking page received when the invoice was minted. Poll no more often than every 15 seconds. The join-link response from `GET /api/booking/` includes the same object under `queue`. Response fields (counts and times only; never other bookings' details): - `queued` (boolean): the booking is paid and waiting or being run. - `position` (integer or null): 1 is next, or being served. - `ahead` (integer): paid bookings ahead of yours, including any being run now. - `queueLength` (integer): paid bookings waiting or being run, yours included. - `serving` (boolean): Sammie is joining or running your booking now. - `sammie.state`: `idle`, `joining`, `in-battery`, `off`, or `offline` (no status report for over 90 seconds). - `sammie.drill`, `sammie.drillsTotal` (integer or null): the drill in progress, 1-based. - `estimate` (object or null): `joiningNow` (boolean), `startInSeconds` ([low, high]), `startBetween` ([ISO 8601 UTC, ISO 8601 UTC]). The range is roughly 0.8x to 1.3x the central estimate. - `offDuty` (object or null): `reason` (`off`, `offline`, or `shift-ends` when your estimated start falls after his shift ends), `onDutyAt` (ISO 8601 UTC or null), `onDutyLondon` (the same instant in Europe/London time). - `asOf` (ISO 8601 UTC). Errors: 400 malformed request, 404 unknown booking or wrong claim, 410 booking already used, 503 try again shortly.