Axcess
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/mcpClaude 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 |
| Free | Live |
| $0.05 USDC | Live |
| $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 deployYour 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 startLocal dev on testnet (no real payments):
PAYMENT_ADDRESS=0x... X402_NETWORK=eip155:84532 npm run dev
EVM_PRIVATE_KEY=0x... npm run test:paidSee .env.example for all configuration options.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sicxz/axcess-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server