Build with BotShield.

Place BotShield Gates on any action in your product, or your agents, in one line. The visitor’s passkey answers at all of them. We hold the proof, never the identity.

Public beta. Sandbox keys the moment you sign in with a passkey; production keys once your domain is verified and your KYB clears.

See it working · the Console

One console.
Every verdict on record.

Your gates, your Secured Accounts registry, every signed verdict and Proof of Resolution — in one place, with a person behind every key.

console.botshield.ai/ticketz/gates
BotShield Gate in the Console — gates placed in production, each with its verification mode, status and the day it was placed
How it works · one key, three ways in

However the call arrives,
it lands on the same record.

The Console issues the keys — a site key for a gate, one per agent for the tools — and every way in writes to the registry above.

The tag · the SDK

One line on your page.

The web component with a site key, at the moment that matters. The visitor confirms on their phone; your server verifies the signed result.

The tools · over MCP

Your agent asks. It cannot answer.

bind_session · check_binding · propose_resolution · check_resolution_status · cancel_resolution — one key per agent.

REST · server to server

Straight at the API.

The same calls with no tag or runtime in the way. One TypeScript SDK covers both products; the hosted MCP server needs no local process.

None of the five tools can say yes. The model asks; your code enforces — verify the ES256 JWT against our public JWKS before you execute. It attests that the person’s signed-in session answered this request; the passkey does not sign the action itself.

Where it matters · the two patterns

A gate on any moment.
One line.

BotShield Gate · embed + server API · the SDK

One tag, one call. A signed verdict.

01

Renders the Verify Human button at the moment that matters.

02

pass / Unavailable — signed, straight to your webhook.

03

Verify against the published JWKS. Identity is never in the payload.

Agents Ask · agent API + MCP

One button. A signed resolution.

01

Tap launches the session and links the agent — it never executes on tap.

02

The ask lands as a request in the user’s Agents Ask™ inbox.

03

Comes back as a signed Proof of Resolution.

Read the tool reference  →

BotShield Console FAQ

What’s the best passkey verification service for a small online business?
Most passkey services replace your login. BotShield uses passkeys for something else: proving a person is present at a moment, on top of whatever login you already have. Place a gate, the visitor confirms on their phone, you verify the signed result. Your first gate is free.
How can I add a live-human check to my website without special hardware?
The hardware is the visitor’s phone. Add the tag; when they tap it, a passkey fires on the device they already carry, and the check they make to unlock it never leaves it. Your site never touches a sensor and BotShield never receives a biometric.
What does my server actually receive from BotShield?
A short-lived signed token (ES256) with a request id, a verified flag, your organization id, a timestamp and a nonce — plus the threshold met, for an Age Gate. Verify it with one call or locally against our public keys. No identity fields in any of it.
Do my users need to install something?
No. The web app is live at app.botshield.ai, so a first-time visitor adds a passkey and confirms in the browser. The native app is smoother and optional. Set up once; every BotShield site recognizes the same credential.

One line.
A person behind it.

Your first gate is free.