MCP server for ApexApi — call 120+ AI models and live web context (scrape/crawl/extract) from any MCP client with one ak- API key
ApexApi MCP demonstrates solid tool design with complete schemas, clear descriptions, and proper parameter typing. All 9 tools have explicit Zod schemas with descriptions. Tool names follow verb_noun convention (chat, list_models, scrape_page, crawl_site, extract_structured, check_job, generate_image, generate_speech, get_balance). Descriptions are substantive (100-250 chars typical), explaining WHAT the tool does and WHEN to use it. Parameters are typed with enums where appropriate (format, scraper, kind, type). However, output schemas are not formally documented, responses are returned as truncated JSON strings rather than structured objects with declared fields. Error handling is minimal: no recovery guidance, no categorization of retryable vs fatal errors, no actionable error messages. Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. No pagination support documented for list_models despite potentially large result sets.
Send a prompt to any of the 120+ models on ApexApi (OpenAI, Anthropic, Google, DeepSeek, Qwen, Mistral…). Use list_models to discover model slugs. Billed per token from the credit balance.
Poll a crawl_site or extract_structured job by id.
Crawl same-domain pages from a seed URL into markdown. Waits up to 60s; if still running, returns a job id for check_job. Billed $0.005 per page, capped by limit. Full page set is at result_url.
Ready-made structured JSON from Amazon, Walmart, Crunchbase, G2, Google Maps, or Zillow product/company/listing URLs. Billed $0.01 per record; failures free. Scrapers: amazon-product, walmart-product, crunchbase-company, g2-product, google-maps-business, zillow-property.
Generate an image from a text prompt. Returns a URL. Use list_models with type=image for available models and prices.
Output schemas not formally documented. Tools return truncated JSON strings (e.g., scrape_page returns {content, tier, cost} as JSON string) rather than structured objects with declared field types. LLMs cannot plan downstream calls or extract fields reliably without knowing response structure.
No error handling guidance. Tools return raw API responses or truncated JSON on failure with no recovery hints. E.g., if scrape_page fails, the LLM gets no guidance on whether to retry, adjust parameters, or try a different tool.
Missing tool annotations. All 9 tools are read-only (no state modification), but none declare readOnlyHint=true. This prevents clients from optimizing caching, retry logic, and safety checks.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Text-to-speech via ElevenLabs. Returns an MP3 URL. Billed per 1,000 characters.
Current prepaid credit balance in USD. Balance is the only usage limit on ApexApi.
Live catalog of all ApexApi models with type, context window, and USD pricing (per 1M tokens for chat). Filter by type to keep the list short.
Fetch any URL as clean, LLM-ready markdown (or html/text). Anti-bot handling is automatic. Billed per successful page ($0.002 standard, $0.008 stealth); failures are free.
list_models lacks pagination. No limit or offset parameters documented. If ApexApi catalog grows to 200+ models, returning all at once wastes tokens and risks context window exhaustion. Baseline: paginated tools should accept limit (default 20-50) and return total_count or next_cursor.
check_job description is vague. Does not explain what 'running' vs 'processing' status means, when to retry, or what fields the response contains. LLMs cannot reason about job polling without this context.