MCP Hub
Back to servers

Axcess

Paid MCP server that evaluates typography accessibility beyond what axe and Lighthouse catch. $0.05 USDC per evaluation via x402 on Base mainnet.

glama
Updated
Mar 27, 2026

Axcess — Typography Accessibility Evaluation via MCP

A paid MCP server that evaluates typography for accessibility issues beyond what automated scanners catch.

$0.05 USDC per evaluation · Base mainnet · x402 micropayments


What It Catches

Automated tools (axe, Lighthouse, WAVE) catch roughly 30% of WCAG failures and almost none of the design-judgment failures. Axcess evaluates:

  • Contrast ratio with font-weight context — thin fonts require higher ratios than bold fonts at the same size
  • Minimum font size for body text, captions, and labels
  • Line height adequacy (including for dyslexic users)
  • Line length (measure) comfort — too wide or too narrow
  • Extended all-caps and italic use
  • Letter spacing extremes
  • Text on gradient, image, or pattern backgrounds
  • Heading hierarchy and visual distinction between levels
  • Display type scaling and tracking
  • Bringhurst and Lupton design-craft rules beyond WCAG

Connect as an MCP Client

Claude.ai (web — Pro / Max / Team / Enterprise)

Settings → Integrations → Add MCP Server

https://axcess-mcp-server.fly.dev/mcp

Claude Desktop / Cursor (via mcp-remote)

Add to claude_desktop_config.json (or Cursor MCP settings):

{
  "mcpServers": {
    "axcess": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://axcess-mcp-server.fly.dev/mcp"
      ]
    }
  }
}

Programmatic (AI agents and scripts)

Use @x402/fetch to handle payment automatically:

import { wrapFetchWithPaymentFromConfig } from '@x402/fetch';
import { ExactEvmScheme } from '@x402/evm/exact/client';
import { privateKeyToAccount } from 'viem/accounts';

const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);
const fetchWithPayment = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: 'eip155:*', client: new ExactEvmScheme(account) }],
});

const response = await fetchWithPayment(
  'https://axcess-mcp-server.fly.dev/mcp',
  {
    method: 'POST',
    headers: {
      'content-type': 'application/json',
      'accept': 'application/json',
      'mcp-protocol-version': '2025-03-26',
    },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: 1,
      method: 'tools/call',
      params: {
        name: 'evaluate_typography',
        arguments: {
          screen_name: 'Hero Section',
          elements: [
            {
              element_type: 'heading',
              heading_level: 1,
              font_size: 48,
              font_weight: 300,
              line_height: 1.1,
              color_hex: '#888888',
              background_color_hex: '#ffffff',
            },
          ],
        },
      },
    }),
  }
);

See src/scripts/test_paid_tool.ts for a complete working example.


Pricing

ToolPriceStatus
list_capabilitiesFreeLive
evaluate_typography$0.05 USDCLive
evaluate_accessibility$0.10 USDCComing soon

Payment: USDC on Base mainnet (eip155:8453) via x402 protocol.


Tools

list_capabilities (free)

Returns available tools, pricing, and rubric categories. No payment required.

evaluate_typography ($0.05)

Evaluates 1–50 typography elements and returns a structured accessibility report.

Input:

{
  screen_name?: string;          // optional label for the report
  elements: Array<{
    element_id?: string;
    element_type: 'heading' | 'body' | 'caption' | 'label' | 'button' | 'display' | 'ui';
    heading_level?: 1 | 2 | 3 | 4 | 5 | 6;
    font_size: number;           // px
    font_weight: number;         // 100–900
    line_height: number;         // multiplier (e.g. 1.5, not px)
    letter_spacing?: number;     // em units
    text_transform?: 'none' | 'uppercase' | 'lowercase' | 'capitalize';
    font_style?: 'normal' | 'italic' | 'oblique';
    content_length?: number;     // character count
    color_hex: string;           // '#rrggbb'
    background_color_hex: string;
    background_type?: 'solid' | 'gradient' | 'image' | 'pattern' | 'video';
    context?: string;            // e.g. 'hero section', 'navigation'
  }>;
}

Output:

{
  screen_name?: string;
  evaluated_at: string;
  element_evaluations: Array<{
    element_id: string;
    element_type: string;
    issues: Array<{
      criterion_id: string;
      criterion: string;
      severity: 'critical' | 'major' | 'minor';
      wcag_reference: string;
      what_scanners_miss: string;
      finding: string;
      recommendation: string;
      passes_wcag_minimum: boolean;
      passes_design_judgment: boolean;
    }>;
    score: number;              // 0–100
    passes: string[];
  }>;
  summary: {
    overall_score: number;
    verdict: 'pass' | 'needs_work' | 'fail';
    total_issues: number;
    by_severity: { critical: number; major: number; minor: number };
  };
  top_issues: Issue[];
}

Deploy to Fly.io (free tier)

Requirements: flyctl, USDC wallet on Base, free CDP API key

fly auth login
fly launch --name axcess-mcp-server --no-deploy

# Set secrets (never committed to git)
fly secrets set PAYMENT_ADDRESS=0x...
fly secrets set X402_NETWORK=eip155:8453
fly secrets set CDP_API_KEY_ID=...
fly secrets set CDP_API_KEY_SECRET=...

fly deploy

Your app will be live at https://axcess-mcp-server.fly.dev.

Update the URL in smithery.yaml and the Connect section above before submitting to registries.

Self-Hosting Locally

Requirements: Node.js 18+

git clone <repo>
cd axcess-mcp-server
cp .env.example .env
# Edit .env with your PAYMENT_ADDRESS, CDP keys, and X402_NETWORK
npm install
npm run build
npm start

Local dev on testnet (no real payments):

PAYMENT_ADDRESS=0x... X402_NETWORK=eip155:84532 npm run dev
EVM_PRIVATE_KEY=0x... npm run test:paid

See .env.example for all configuration options.

Reviews

No reviews yet

Sign in to write a review