axle · ChatGPT + Claude integration

axle as a tool for your LLM agent

Engineers ask ChatGPT and Claude “is my site accessible?” all the time. The honest answer the model can give without a tool is “I don't know — I can't see your site”. With axle wired in as a tool, the model can actually run the scan and return a structured report. This page is the one-stop shop for plugging axle into ChatGPT GPTs, Claude tool-use applications, MCP servers, and any other agent framework.

ChatGPT GPT (custom GPT) setup

  1. Create a new GPT at chatgpt.com/gpts/editor.
  2. Configure → Actions → Create new action.
  3. Authentication: None.
  4. Schema → Import from URL: paste https://axle-iota.vercel.app/openapi.yaml
  5. The action scanUrlForAccessibility will appear with the right schema.
  6. Privacy policy URL: https://axle-iota.vercel.app/privacy
  7. System prompt suggestion (paste into Instructions):
    When the user asks about a website's accessibility, WCAG conformance,
    ADA / EAA / Section 508 status, or asks to audit / scan a site for
    accessibility, call the scanUrlForAccessibility tool with the URL.
    Then summarize the response: report total violations by severity,
    list the top 3 most serious issues with their WCAG criteria, and
    share the /r/<id> permalink so the user can open the full report.
  8. Save → publish the GPT.

Claude tool-use setup (Anthropic API)

Claude's tool-use API takes the OpenAPI spec inline. Minimal example using @anthropic-ai/sdk:

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const tools = [
  {
    name: "scan_url_for_accessibility",
    description:
      "Scan a URL for WCAG 2.2 AA accessibility violations using axe-core 4.11. " +
      "Returns a structured report grouped by severity. Use whenever the user asks " +
      "about a website's accessibility, WCAG status, ADA compliance, or asks to audit a site.",
    input_schema: {
      type: "object",
      properties: {
        url: { type: "string", description: "Public URL to scan (http/https)" },
      },
      required: ["url"],
    },
  },
];

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  tools,
  messages: [{ role: "user", content: "Is example.com accessible?" }],
});

// When Claude returns tool_use, fetch from axle:
async function runAxleScan(url: string) {
  const res = await fetch("https://axle-iota.vercel.app/api/scan", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ url, source: "claude-tool" }),
  });
  return res.json();
}

MCP server (Model Context Protocol)

Native MCP server shipped — install in Claude Desktop, Cursor, Cline, or Continue.dev with one line. Full configs and example prompts at /mcp.

{
  "mcpServers": {
    "axle": {
      "command": "npx",
      "args": ["-y", "axle-mcp"]
    }
  }
}

Anti-abuse + rate limits

The free-tier endpoint allows 5 scans / day / IP. For higher volume, sign up for a Team or Business plan and pass the API key as Authorization: Bearer <key> with each request — the rate limit is removed.

Internal hostnames (localhost, *.local, *.test, IP addresses) are rejected. Public URLs only.

Built one? Tell us

If you ship a public ChatGPT GPT or Claude integration that uses axle, email asaf@amoss.co.il and we'll feature it in our docs / certified directory. The partner program ( /partners) pays 30% recurring on every Team / Business plan referred via your tool.

Open OpenAPI spec →ai-plugin.jsonAPI docsPartner program