Documentation

Probe is a continuous compliance monitoring tool for AI agent APIs. It runs 22 automated checks and scores your API 0–100.

Quick start

No account needed. Paste any https:// URL on the homepage and click Run free audit.

The 22 checks

Every audit runs these checks against your API:

CheckWhat it testsMax score
SSL / TLSValid HTTPS certificate10
x402 discovery/.well-known/x402.json with valid accepts/facilitator10
Agent identity/agent.json per A2A protocol10
llms.txtMachine-readable LLM instructions file5
security.txt/.well-known/security.txt contact info5
CORSAccess-Control-Allow-Origin headers for agent access5
Security headersCritical: X-Content-Type-Options, HSTS, CSP. Bonus: X-Frame-Options, Referrer-Policy10
Response timeAverage latency across 3 requests (<500ms = pass)10
MCP serverModel Context Protocol endpoint discovery5
API endpointsScans common paths (/v1/, /api/, /health, etc.)10
Error handlingProper 404 responses for unknown paths5
x402 compliance402 Payment Required responses on protected endpoints5
Rate limitingX-RateLimit headers present5
Documentation/docs or /api-docs endpoint exists5
robots.txt AI crawlersAI crawler directives (GPTBot, ClaudeBot, Google-Extended, etc.)10
AI plugin manifest/.well-known/ai-plugin.json for ChatGPT/LLM integration5
OpenAPI specMachine-readable OpenAPI/Swagger specification with paths, auth, servers10
Privacy / GDPRPrivacy policy page or GDPR data deletion endpoint10
Status / HealthHealth check or status page for uptime monitoring5
EU AI Act disclosureModel card, AI disclosure, or risk classification endpoint10
Travel Rule (FATF)VASP disclosure, TRISA/TRP/OpenVASP endpoint, threshold declaration10
A2A Protocol (Google)A2A-compliant Agent Card with skills, capabilities, auth, streaming10

Scoring & grades

GradeScore rangeMeaning
A+95–100Fully compliant, production-ready
A85–94Minor issues only
B70–84Some improvements needed
C50–69Significant gaps
D / F0–49Major compliance failures

Probe Score Badge

Add a live badge to your README showing your latest Probe score:

[![Probe Score](https://getprobe.xyz/api/badge/YOUR-DOMAIN)](https://getprobe.xyz/report/YOUR-REPORT-ID)

The badge updates automatically after each audit.

API endpoints

POST /api/audit

Run a full audit on a URL.

curl -X POST https://getprobe.xyz/api/audit \
  -H "Content-Type: application/json" \
  -d '{"url": "https://your-api.xyz"}'

Example response:

{
  "id": "probe_abc123",
  "url": "https://your-api.xyz",
  "score": 85,
  "grade": "A",
  "label": "Listing-ready · 2 non-critical fixes remaining",
  "timestamp": "2026-03-27T14:30:00Z",
  "engine": { "version": "probe@1.1.0", "checkSet": "default-14@2026-03-27" },
  "summary": { "pass": 11, "warn": 1, "fail": 2 },
  "checks": [
    { "id": "ssl", "name": "SSL / TLS", "status": "pass", "value": "Valid HTTPS", "score": 10, "maxScore": 10 },
    { "id": "x402", "name": "x402 discovery", "status": "pass", "value": "/.well-known/x402.json found", "score": 10, "maxScore": 10 },
    { "id": "sec_headers", "name": "Security headers", "status": "pass", "value": "4/5 — critical headers OK", "score": 8, "maxScore": 10 },
    { "id": "cors", "name": "CORS headers", "status": "pass", "value": "origin: * (open)", "score": 5, "maxScore": 5 },
    { "id": "mcp", "name": "MCP server", "status": "fail", "value": "Not found", "score": 0, "maxScore": 5 },
    { "id": "rate_limit", "name": "Rate limiting", "status": "warn", "value": "No rate-limit headers", "score": 3, "maxScore": 5 }
  ],
  "findings": [
    {
      "severity": "critical", "title": "MCP server failed", "description": "Not found",
      "check_id": "mcp",
      "fix": { "title": "Expose MCP endpoint", "steps": ["Implement MCP server at /mcp..."], "code": "// ...", "docs": "https://modelcontextprotocol.io" }
    },
    {
      "severity": "warning", "title": "Rate limiting needs attention", "description": "No rate-limit headers",
      "check_id": "rate_limit",
      "fix": { "title": "Add rate limiting", "steps": ["Set rate limits per IP..."], "code": "// ...", "docs": "https://www.npmjs.com/package/express-rate-limit" }
    }
  ]
}

GET /api/report/:id

Retrieve a saved audit report by its ID. Returns the same format as the audit response above.

GET /api/badge/:domain

Returns an SVG badge with the latest score for a domain. Use in your README:

<img src="https://getprobe.xyz/api/badge/your-api.xyz" alt="Probe Score" />

GET /api/leaderboard

Returns the top 20 audited APIs sorted by score.

[
  { "domain": "api.example.com", "score": 92, "grade": "A", "reportId": "probe_abc123", "auditedAt": "2026-03-27T14:30:00Z" },
  ...
]

Engine versioning

Every audit response includes engine metadata for traceability:

"engine": {
  "version": "probe@1.1.0",
  "checkSet": "default-14@2026-03-27"
}

Each check also includes maxScore so you can see exactly how points are distributed (e.g. "score": 8, "maxScore": 10).

CI/CD integration

Fail your build if your API drops below a compliance threshold. Here's a GitHub Actions example:

# .github/workflows/probe-check.yml
name: Probe Compliance Check
on: [push, pull_request]

jobs:
  compliance:
    runs-on: ubuntu-latest
    steps:
      - name: Run Probe audit
        run: |
          REPORT=$(curl -s -X POST https://getprobe.xyz/api/audit \
            -H "Content-Type: application/json" \
            -d '{"url": "${{ vars.API_URL }}"}')

          SCORE=$(echo "$REPORT" | jq -r '.score')
          GRADE=$(echo "$REPORT" | jq -r '.grade')
          FAILURES=$(echo "$REPORT" | jq -r '.summary.fail')

          echo "Probe score: $SCORE ($GRADE)"
          echo "Critical failures: $FAILURES"

          if [ "$FAILURES" -gt 0 ]; then
            echo "::error::Probe found $FAILURES critical failures"
            echo "$REPORT" | jq '.findings[] | select(.severity=="critical")'
            exit 1
          fi

          if [ "$SCORE" -lt 70 ]; then
            echo "::error::Probe score $SCORE is below threshold (70)"
            exit 1
          fi

          echo "✅ Probe compliance check passed ($GRADE)"

Set API_URL in your repository variables (Settings → Variables). Adjust the score threshold to match your compliance requirements.

The same pattern works for GitLab CI, CircleCI, or any CI system that can run curl + jq.

Rate limits

Free tier: max 10 audits per IP per day. Paid plans have higher limits. The API returns 429 Too Many Requests if you exceed the limit.

Private, internal, and metadata URLs (127.0.0.0/8, 10.0.0.0/8, 169.254.x.x, etc.) are blocked for security.

Monitoring plans

Free users get 1 audit/day via the UI (10/day via API). Paid plans add continuous monitoring with email alerts. See pricing.

Security & privacy

Probe only makes standard HTTP requests to publicly accessible endpoints. We never:

Audit metadata (scores, check results) is retained for your plan's history period (Free: 7 days, Starter: 30 days, Pro: 90 days, Team: 1 year) and then deleted. Infrastructure runs on Cloudflare (edge functions) and Supabase (PostgreSQL). Email alerts via Resend. All data encrypted in transit (TLS) and at rest.

For paying customers, we're happy to sign a basic DPA or security addendum. Contact us at hello@getprobe.xyz.

FAQ

What is AI agent API monitoring?

AI agent API monitoring is the practice of continuously checking your agent's API endpoints for compliance with emerging standards (x402, ERC-8004), security best practices (CORS, HSTS, CSP), and operational health (response times, error handling). As AI agents increasingly connect to payments, identity, and onchain services, monitoring ensures your endpoints stay compliant and secure.

How is Probe different from uptime monitoring?

Traditional uptime monitors check if your server responds with HTTP 200. Probe goes deeper: it validates x402 payment disclosures, ERC-8004 agent identity, security headers, llms.txt, MCP endpoints, rate limiting, and 8 more compliance-specific checks. It's purpose-built for the AI agent ecosystem.

What does Probe check for?

Probe runs 14 automated checks covering SSL/TLS, x402 discovery, agent identity, llms.txt, security.txt, CORS, security headers, response time, MCP server, API endpoints, error handling, x402 payment compliance, rate limiting, and documentation.

Is Probe free?

Yes. Free users get 1 audit per day with all 22 checks and an instant report. No account or credit card needed. Paid plans add continuous monitoring (every 1–12 hours), email alerts, and history.

Does Probe store my API data?

No. Probe only makes read-only GET/HEAD requests to your public endpoints. We never store request bodies, response payloads, or API keys. Only audit metadata (score, check results, timestamps) is persisted.

What is an x402 check?

x402 is an emerging standard for AI agent trust and payment disclosure. Probe auto-discovers your /.well-known/x402.json file and validates that it contains correct accepts, facilitator, and pricing metadata.

Can I use Probe with any API?

Yes. Probe works with any publicly accessible HTTPS endpoint. It's optimized for AI agent APIs but can audit any REST API for security headers, CORS, response times, and documentation.

Contact

hello@getprobe.xyz · @getprobe on X