Comprehensive audit of ALL API routes across frontend, admin, and mcp-server. Use when asked to audit APIs, review endpoints, or assess API security — covering auth middleware, input validation, rate limiting, error handling, CORS, and data exposure.
Scanned 6/1/2026
Install to Claude Code
npx -y skills add lroy-stack/ai-pod-store --skill audit-api --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Audit Api?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lroy-stack-audit-api)More formats (shields.io, HTML) on the badges page.
---
name: Audit API
description: >
Comprehensive audit of ALL API routes across frontend, admin, and mcp-server. Use when asked
to audit APIs, review endpoints, or assess API security — covering auth middleware, input
validation, rate limiting, error handling, CORS, and data exposure.
---
# Audit API
Systematic audit of every API route in the system: frontend (`/api/`), admin (`/panel/api/`), mcp-server (`/api/`), and PodClaw bridge (`/bridge/`).
## Prerequisites
- Read `frontend/src/app/api/` — all frontend API routes
- Read `admin/src/app/api/` — all admin API routes
- Read `mcp-server/src/` — MCP server routes if they exist
- Read `podclaw/bridge/api.py` — PodClaw FastAPI bridge
## Workflow
### Phase 1: Endpoint Inventory
1. **Catalog all endpoints**:
- List every API route with HTTP method, path, auth requirement
- Classify: public, authenticated, admin-only, service-internal
- Format as table for easy review
2. **Auth middleware coverage**:
- For each endpoint, identify which auth middleware is applied
- Frontend: `withAuth()`, Supabase auth header validation
- Admin: `withAuth()`, `withPermission()`, iron-session
- PodClaw: token-based auth
- List any endpoint WITHOUT auth → CRITICAL if it mutates data
### Phase 2: Input Validation
3. **Schema validation**:
- Does every POST/PATCH/PUT endpoint validate input with Zod or equivalent?
- List endpoints with unvalidated input → FAIL
- Check for overly permissive schemas (e.g., `z.any()`, `z.unknown()`)
4. **Injection vectors**:
- Search for string interpolation in SQL queries → CRITICAL
- Search for `dangerouslySetInnerHTML` with user input → CRITICAL
- Check for command injection in any shell exec calls
- Check for path traversal in file-serving endpoints
5. **Mass assignment**:
- Can users update fields they shouldn't? (e.g., `role`, `is_admin`, `status`)
- Are update schemas restrictive (allowlist) vs permissive (blocklist)?
- Check for `.update(req.body)` patterns without filtering
### Phase 3: Response Security
6. **Data exposure**:
- Do responses include sensitive fields? (passwords, tokens, internal IDs)
- Are error responses sanitized? (no stack traces, no DB schema leaks)
- Check for verbose error messages in production mode
7. **CORS configuration**:
- What origins are allowed?
- Are credentials allowed cross-origin?
- Is CORS too permissive? (e.g., `*` origin with credentials)
8. **Response headers**:
- Is `Cache-Control: no-store` set on sensitive endpoints?
- Are security headers present? (X-Content-Type-Options, X-Frame-Options)
- Is HSTS configured?
### Phase 4: Rate Limiting & Abuse Prevention
9. **Rate limiting**:
- Which endpoints have rate limiting?
- Auth endpoints (login, register, password reset) — MUST have rate limiting
- Data export endpoints — should have rate limiting
- List unprotected endpoints → WARN
10. **Abuse vectors**:
- Can unauthenticated users trigger expensive operations? (AI calls, email sends)
- Are file upload endpoints size-limited?
- Is there pagination enforcement on list endpoints?
### Phase 5: Inter-Service Communication
11. **Service-to-service auth**:
- How do frontend → PodClaw bridge calls authenticate?
- How do cron jobs authenticate to API routes?
- Are internal service tokens rotated?
12. **Webhook security**:
- Are incoming webhooks (Stripe, Printful) validated? (signatures, source IP)
- Do webhooks use idempotency keys?
- Are webhook endpoints protected from replay attacks?
13. **MCP server**:
- What tools does the MCP server expose?
- Is there auth on MCP tool invocations?
- Can MCP tools access data they shouldn't?
## Output Format
Generate `AUDIT_API_[DATE].md` at workspace root with:
```markdown
# API Audit — [DATE]
## Endpoint Inventory
| Service | Method | Path | Auth | Validation | Rate Limit | Status |
|---|---|---|---|---|---|---|
## Summary
- Total endpoints: X
- PASS: X | WARN: X | FAIL: X | CRITICAL: X
## Critical Findings
[Unprotected endpoints, injection vectors, auth bypasses]
## Recommendations
[Priority-ordered fixes]
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!