# Security Headers Analyzer — MCP tool `findutils:security_headers_analyzer`

Grade a set of HTTP response headers for security: returns a 0-100 score, a letter grade (A+ to F), a pass/fail/warning summary, and a per-header finding with a recommendation for CSP, HSTS, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, and the Cross-Origin-* headers. Pass the headers you already have; this tool does not fetch the URL.

- Category: network
- MCP server: https://mcp.findutils.com/ (Streamable HTTP, no API keys, 120 req/min per IP)
- REST endpoint: POST https://api.findutils.com/api/tools/security-headers-analyzer/execute (no API keys, 60 req/min per IP)
- Reference page: https://findutils.com/mcp/security-headers-analyzer/
- Same tool on the other surface: https://findutils.com/api/security-headers-analyzer/

## Connect

```bash
claude mcp add findutils --transport http https://mcp.findutils.com/
```

Claude Desktop (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "findutils": {
      "url": "https://mcp.findutils.com/"
    }
  }
}
```

## Call the tool (verified example)

```bash
curl -X POST https://mcp.findutils.com/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "security_headers_analyzer",
      "arguments": {
        "headers": {
          "content-security-policy": "default-src '\''self'\''",
          "strict-transport-security": "max-age=31536000",
          "x-content-type-options": "nosniff",
          "x-frame-options": "DENY"
        },
        "url": "https://example.com"
      }
    }
  }'
```

## Input schema

| Argument | Type | Required | Description |
|---|---|---|---|
| `headers` | object | yes | Response headers as an object of header name → value (case-insensitive), e.g. {"content-security-policy": "default-src 'self'"}. A raw "Name: value" block string (one header per line, as copied from curl -I) is also accepted. |
| `url` | string | no | Optional URL the headers came from. Echoed in the result only. |

Example arguments (verified):

```json
{
  "headers": {
    "content-security-policy": "default-src 'self'",
    "strict-transport-security": "max-age=31536000",
    "x-content-type-options": "nosniff",
    "x-frame-options": "DENY"
  },
  "url": "https://example.com"
}
```

## Also a REST endpoint

```bash
curl -X POST https://api.findutils.com/api/tools/security-headers-analyzer/execute \
  -H "Content-Type: application/json" \
  -d '{
    "headers": {
      "content-security-policy": "default-src '\''self'\''",
      "strict-transport-security": "max-age=31536000",
      "x-content-type-options": "nosniff",
      "x-frame-options": "DENY"
    },
    "url": "https://example.com"
  }'

# Parameter schema
curl https://api.findutils.com/api/tools/security-headers-analyzer
```

Full REST reference: https://findutils.com/api/security-headers-analyzer/ · OpenAPI 3.1 spec: https://findutils.com/api/openapi.json

---
Full catalog: POST https://mcp.findutils.com/ with method `tools/list` · https://findutils.com/mcp/ · https://findutils.com/llms.txt
