Axcess
Paid MCP server that evaluates typography accessibility beyond what axe and Lighthouse catch. $0.05 USDC per evaluation via x402 on Base mainnet.
README
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
| Tool | Price | Status |
|---|---|---|
list_capabilities |
Free | Live |
evaluate_typography |
$0.05 USDC | Live |
evaluate_accessibility |
$0.10 USDC | Coming 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.