The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Agent Watch listing page.
Continuous liveness, latency, schema-drift, auth-posture, and price-integrity monitoring for MCP endpoints and paid agent services (x402/MPP).
We ran a full liveness census of the official MCP registry: 7,454 endpoints probed, 65.6% dead. Live census data →
Probe any MCP endpoint from your browser: status page → probe widget
Or curl:
Add to your MCP client config (Claude Desktop, Cursor, any streamable-http client):
Tools: aw_health, aw_check_endpoint, aw_census, aw_list_monitored,
aw_alerts, aw_watch (watchlists with plan quotas).
Agent-facing API reference: llms.txt
| Tier | Endpoints | Price |
|---|---|---|
| Free | 5 | $0 |
| Builder | 50 + history + alerts | $19/mo |
| Team | 500 + full API | $99/mo |
Pay → onboarding email → POST /v1/watch with your endpoints → 6-hourly probe
cron → alerts when one goes down or its tool schema drifts.
probes/probe_engine.py): real MCP initialize handshake →
tools/list, p50/p95 latency, tool-schema hash (drift detection), RFC 9728
auth-metadata check. Fallback HTTP-402 probe for paid non-MCP services.api_server.py, FastAPI): /health, /v1/probe, /v1/census,
/v1/endpoints, /v1/alerts, /v1/watch, /v1/cron/probe, /stripe/webhook,
hosted streamable-http MCP at /mcp/.census_seed.py): the full registry census ships as code —
fresh containers boot with 7,454 endpoints of liveness data, no network needed.grantwatch/): OAuth scope-drift monitoring for Google
Workspace tenants (findings only, never graded; authority-gated).compute_trust_score() turns probe history into a 0–100 / A–F score:
uptime (40), schema stability (15), auth posture (10), price stability (10).
Honest states: alive / dead / unknown (auth-gated — server answered, liveness
unprovable without credentials). No fake GREEN states.
Status: Two capabilities, two different maturity levels (see below).
Frame card: frame-card.md (original MCP-monitoring scope). Grantwatch's own
design/plan live in the parent AI-Workbench repo:
docs/superpowers/specs/2026-09-05-grantwatch-oauth-scope-monitoring-design.md
and docs/superpowers/plans/2026-09-05-grantwatch-oauth-scope-monitoring.md.
Sibling project: ~/AI-Workbench/projects/perimeter-watch/ — Agent Watch reuses
Perimeter Watch's live Stripe account (GASPERMIT acct) rather than standing up new billing.
Agent Watch monitors the agent economy from two directions:
Both are sold to the same buyer profile (SMB/MSP), reuse the same infrastructure pattern (probe/ingest → baseline → drift diff → alert), and are packaged under one product, not two.
Status: deployed and registry-listed. No paid tier wired yet.
| Piece | Status | Evidence |
|---|---|---|
probe_engine.py — MCP handshake + latency + schema-hash + price-integrity + auth-metadata probe | LIVE | compute_trust_score() produces a 0-100/A-F trust score for a monitored endpoint |
| REST API on Railway | LIVE | https://agent-watch-api-production.up.railway.app — /health, /v1/probe, /v1/endpoints, /v1/alerts, /stats |
CLI (repo/cli/agent-watch.py) | BUILT | add/status/list/alert/history/scan |
MCP server (repo/mcp/aw_mcp_server.py) | BUILT, registry-listed | server.json — io.github.entradox/agent-watch, streamable-http remote |
llms.txt (agent-facing API reference) | LIVE | repo/llms.txt |
| Public status page | LIVE | /status, status.html |
| Stripe billing | LIVE | Builder $19/mo + Team $99/mo payment links, HMAC-verified webhook fulfillment, onboarding email, plan-enforced watchlists (/v1/watch) |
Resolved: the original frame card's metered billing went live 2026-09-07 (Builder/Team tiers, webhook fulfillment, onboarding email). Capability 1 is a shipped, monetized, registry-listed product.
Status: engine complete on feature/grantwatch, Turing-approved (27/27 tests
passing), not yet merged, not yet customer-facing.
| Piece | Status |
|---|---|
Tenant authorization gate (grantwatch/gate.py) | DONE — mirrors Perimeter Watch's domains_authorized.txt pattern |
Scope-diff engine (grantwatch/scope_diff.py) | DONE — findings only, no score/grade by design |
Google Workspace connector (grantwatch/connectors/google_workspace.py) | DONE, mocked-tested only — real use requires Google OAuth restricted-scope verification (see below) |
Microsoft 365 connector (grantwatch/connectors/microsoft365.py) | DONE, built standalone, not wired into the audit flow — launch scope is Google Workspace only |
Coverage disclosure (grantwatch/coverage.py) | DONE — a monitoring gap is always stated, never hidden; no "cleared"/GREEN state anywhere in this codebase |
Free "Shadow Agent Audit" lead magnet (grantwatch/shadow_audit.py) | DONE |
REST API wiring (/v1/grantwatch/audit on the existing api_server.py) | DONE |
Per-tenant credential pointer storage (grantwatch/credential_store.py) | DONE — stores a path pointer, never the raw secret |
Binding kill-criteria check (grantwatch/kill_criteria.py) | DONE — K1: <5 free-audit-to-paid conversions by day 45; K2: <$200 MRR by day 90 |
| Stripe billing (3 tiers: Starter $49, Growth $149, MSP $399/mo) | NOT DONE — manual Stripe CLI step, requires the operator |
| Real-tenant end-to-end verification | NOT DONE — requires a real Google Workspace admin + service account setup |
tenants_authorized.txt) is the enforcement point.Logged to ~/.claude/team/gate-log.csv as decision=hold (approved-with-conditions).
None of these block further engineering — they block Task 11 (first real tenant scan):
admin.reports.audit.readonly is a Google Restricted Scope; using it against
any tenant beyond an internal dev/test account requires this. Weeks-long,
real cost. This is the longest-lead item and the most likely to affect launch
timing — start it independent of any code work.actor_email encrypted at
rest/in transit, excluded from logs/observability tools, excluded from any
public "anonymized findings" marketing content.