Arch Tools MCP
Provides 63 production-ready tools for AI agents, including AI generation, search, communication, and utilities. It supports autonomous payments via USDC on Base using the x402 protocol or traditional Stripe credits, allowing agents to execute tasks like text summarization, web search, and email sending with a single API key.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://archtools.dev/mcpWhat its tools do
63 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (63)
ai-generateai-oraclebarcode-generatebrowser-taskcheck-domainconvert-formatcrypto-fear-greedcrypto-market-capcrypto-newscrypto-ohlcvcrypto-pricecrypto-sentimentcurrency-convertdesign-creatediff-textdomain-checkemail-findemail-sendemail-verifyextract-entitiesextract-metadataextract-pageextract-pdffact-checkgenerate-hashgenerate-imagegenerate-uuidhtml-to-markdownimage-generateimage-remove-bgip-lookupjsonpath-querylanguage-detectnews-searchocr-extractphone-validatepii-detectqr-codereadability-scoreregex-generateresearch-reportrss-parsescreenshot-capturesearch-websemantic-searchsend-emailsentiment-analysissession-createsession-messagesummarizetext-to-speechtimezone-converttoken-lookuptranscribe-audiotransform-texturl-shortenvalidate-datavideo-generatewebhook-sendweb-scrapeweb-searchwhois-lookupworkflow-agent
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Warning Advertises resources/list but does not implement it
- Warning Advertises resources/templates/list but does not implement it
- Warning Advertises prompts/list but does not implement it
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Generate text using Claude AI models
- Search the web and return structured results
- Send transactional emails via Resend
- Analyze text sentiment and detect entities
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- arch-tools 2.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 63 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"listChanged": false
}
}Tools
63 advertised
ai-generate
AI-powered text generation using Claude (requires ANTHROPIC_API_KEY)
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"model": {
"enum": [
"claude-sonnet-4-6",
"claude-opus-4-6",
"claude-haiku-4-5-20251001"
],
"type": "string",
"default": "claude-sonnet-4-6",
"description": "Explicit model; overrides mode. Accepts aliases claude, gpt/gpt4/gpt-4, gemini, grok (case-insensitive) or an exact id: claude-sonnet-4-6, claude-opus-4-6, claude-haiku-4-5-20251001, gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo, gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-lite, grok-4.3, grok-4.20-0309-non-reasoning (retired gemini-1.5/2.0 and grok-2/3 names are remapped). Unknown models return 400. If omitted, mode decides (default smart = claude-sonnet-4-6)."
},
"prompt": {
"type": "string",
"maxLength": 10000,
"description": "Generation prompt"
},
"system": {
"type": "string",
"maxLength": 2000,
"description": "Optional system prompt"
},
"max_tokens": {
"type": "integer",
"default": 1000,
"maximum": 4096,
"minimum": 100,
"description": "Maximum output tokens (default 1000, served value capped at 4096). Credit cost is 20 plus 20 per 1,000 requested tokens above 1,000."
}
}
}ai-oracle
AI reasoning engine with standard and deep analysis modes
{
"type": "object",
"required": [
"question"
],
"properties": {
"context": {
"type": "string",
"description": "Optional background text for the analysis; only the first 8,000 characters are used."
},
"question": {
"type": "string",
"maxLength": 10000,
"description": "The question or problem to analyze, up to 10,000 characters."
},
"reasoning_depth": {
"enum": [
"standard",
"deep"
],
"type": "string",
"default": "standard",
"description": "standard (Sonnet, 2,048 tokens) or deep (Opus, 4,096 tokens, costs about 2x credits); any other value returns 400. x402-paid calls without a BYOK key are served at standard."
}
}
}barcode-generate
Generate Code128 barcodes as SVG
{
"type": "object",
"required": [
"value"
],
"properties": {
"value": {
"type": "string",
"description": "Value to encode"
},
"width": {
"type": "integer",
"default": 300,
"maximum": 800,
"minimum": 80,
"description": "Output width in pixels (default 250, 50-2000); the barcode is scaled to fit."
},
"format": {
"enum": [
"code128",
"code39",
"ean13",
"upca"
],
"type": "string",
"default": "code128",
"description": "Alias for type: code128 (default, up to 80 characters) or qr (a real QR code, up to 1,000 characters). Other values return 400."
},
"height": {
"type": "integer",
"default": 80,
"maximum": 300,
"minimum": 30,
"description": "Output height in pixels for code128 (default 100, 30-1000); a QR code is always square."
}
}
}browser-task
Fetch a public page and extract its text or HTML, optionally by CSS selector (static HTML only: no JavaScript, clicking or typing)
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public page URL to fetch"
},
"action": {
"enum": [
"extract",
"html"
],
"type": "string",
"default": "extract",
"description": "extract = visible text, html = inner HTML of the selected element"
},
"selector": {
"type": "string",
"description": "Optional CSS selector (defaults to the page body)"
}
}
}check-domain
Check if a domain is available or registered via RDAP. No API key needed.
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain name to look up via RDAP, e.g. example.com; a leading http(s):// and any path are stripped."
}
}
}convert-format
Convert data between JSON, YAML, CSV, and XML formats
{
"type": "object",
"required": [
"from",
"to",
"data"
],
"properties": {
"to": {
"enum": [
"json",
"yaml",
"csv",
"xml"
],
"type": "string",
"description": "Target format: json, yaml, csv or xml when from is a structured format; base64 or hex when from is text; text (or string) or hex when from is base64. Unsupported targets return 400."
},
"data": {
"description": "Data to convert (string or object)"
},
"from": {
"enum": [
"json",
"yaml",
"csv",
"xml"
],
"type": "string",
"description": "Format of the input: json, yaml, csv, xml, text (or string), or base64. Unsupported formats return 400."
}
}
}crypto-fear-greed
Crypto Fear & Greed Index with historical data
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 7,
"maximum": 30,
"minimum": 1,
"description": "Number of daily Fear & Greed index entries to return, newest first (default 7, clamped to 1-30)."
}
}
}crypto-market-cap
Top N cryptocurrencies by market cap with price, volume, and 24h change
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of top coins by market cap to return (default 10, clamped to 1-100)."
},
"currency": {
"type": "string",
"default": "usd",
"description": "Fiat or crypto currency code for prices, e.g. usd or eur (lowercased; default usd)."
}
}
}crypto-news
Latest crypto news headlines. Filter by token symbol
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "Maximum number of articles (default 10, clamped to 1-20)."
},
"symbol": {
"type": "string",
"description": "Optional coin to filter headlines by, as a ticker or name, e.g. BTC or bitcoin; alias: coin. Omit for general crypto news."
}
}
}crypto-ohlcv
OHLCV candlestick data for any crypto over 1-90 days
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"days": {
"type": "integer",
"default": 7,
"description": "How many days of OHLC candles to return, passed to CoinGecko as-is (CoinGecko accepts 1, 7, 14, 30, 90, 180, 365); default 7."
},
"symbol": {
"type": "string",
"description": "Coin as a CoinGecko id or common ticker, e.g. bitcoin or BTC (tickers like BTC/ETH/SOL are mapped to ids); alias: coin."
},
"currency": {
"type": "string",
"default": "usd",
"description": "Quote currency in lowercase, e.g. usd (default usd)."
}
}
}crypto-price
Real-time price, 24h change, market cap, and volume for any cryptocurrency
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"description": "Coin as a CoinGecko id or common ticker, e.g. bitcoin or BTC (tickers like BTC/ETH/SOL are mapped to ids); alias: coin."
},
"currency": {
"type": "string",
"default": "usd",
"description": "Quote currency in lowercase, e.g. usd or eur (default usd); the server does not lowercase it, so always send lowercase."
}
}
}crypto-sentiment
Community sentiment, social stats, and price momentum for any cryptocurrency
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"description": "Full CoinGecko coin id, e.g. bitcoin or ethereum (lowercased). Tickers like BTC are NOT mapped and return 404."
}
}
}currency-convert
Convert between currencies using real-time exchange rates (170+ currencies)
{
"type": "object",
"required": [
"amount",
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 3,
"description": "Target currency code (e.g. EUR)"
},
"from": {
"type": "string",
"maxLength": 3,
"description": "Source currency code (e.g. USD)"
},
"amount": {
"type": "number",
"description": "Amount to convert"
}
}
}design-create
Generate designs and images via DALL-E 3
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"n": {
"type": "integer",
"default": 1,
"maximum": 1,
"description": "Number of images; always capped at 1."
},
"size": {
"enum": [
"1024x1024",
"1792x1024",
"1024x1792"
],
"type": "string",
"default": "1024x1024",
"description": "Image size in pixels; other values fall back to 1024x1024 (x402-paid calls are always 1024x1024)."
},
"prompt": {
"type": "string",
"description": "Description of the image to generate with gpt-image-1, e.g. 'a watercolor fox in a forest'; screened by content moderation."
},
"quality": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"default": "medium",
"description": "Image quality: low, medium or high (aliases: standard/vivid/natural = medium, hd = high); any other value becomes medium. High quality costs more credits; x402-paid calls are capped at medium."
}
}
}diff-text
Compare two text strings and return differences in unified, word, char, or JSON format
{
"type": "object",
"required": [
"original",
"modified"
],
"properties": {
"mode": {
"enum": [
"words",
"chars",
"lines",
"unified"
],
"type": "string",
"default": "words",
"description": "Diff granularity: words (default), chars, or lines (unified is the same as lines)."
},
"modified": {
"type": "string",
"description": "Modified text"
},
"original": {
"type": "string",
"description": "Original text"
}
}
}domain-check
Check domain availability via RDAP
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain name to check for registration via RDAP, e.g. example.com; lowercased, and a leading http(s):// and any path are stripped."
}
}
}email-find
Find email addresses for a person at a company domain
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Company domain to search with Hunter.io, e.g. stripe.com."
},
"last_name": {
"type": "string",
"description": "Person's last name; with first_name, switches to a single-person email lookup. Ignored unless first_name is also given."
},
"first_name": {
"type": "string",
"description": "Person's first name; with last_name, switches to a single-person email lookup. Ignored unless last_name is also given."
}
}
}email-send
Send transactional emails via Resend
{
"type": "object",
"required": [
"to",
"subject"
],
"properties": {
"to": {
"type": "string",
"description": "One recipient email address, e.g. alice@example.com; must contain @ and may not contain commas or newlines (single recipient only)."
},
"body": {
"type": "string",
"description": "Plain-text body (up to 10,000 chars used). Either body or html is required."
},
"from": {
"type": "string",
"description": "Custom sender address; only honored when the server has ALLOW_CUSTOM_EMAIL_FROM=true, otherwise the default Arch Tools sender is used."
},
"html": {
"type": "string",
"description": "HTML body (up to 20,000 chars used; script tags and inline on* handlers are stripped). Either body or html is required."
},
"subject": {
"type": "string",
"maxLength": 200,
"description": "Email subject line, 200 characters or fewer."
}
}
}email-verify
Deep email validation: syntax, MX record check, disposable domain detection
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "Email address to verify"
}
}
}extract-entities
Named entity recognition: people, organizations, locations, dates, money, and more
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 50000,
"description": "Text to extract entities from"
},
"types": {
"type": "array",
"items": {
"enum": [
"person",
"organization",
"location",
"date",
"money",
"percentage",
"email",
"url",
"phone",
"product"
],
"type": "string"
},
"description": "Entity types to extract (default: all)"
}
}
}extract-metadata
Extract metadata from text or URLs (word count, OG tags, headers, etc.)
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "URL to fetch and extract metadata from"
},
"text": {
"type": "string",
"description": "Text to analyze"
}
}
}extract-page
Fetch a webpage and return clean text, metadata, and links
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL to extract"
}
}
}extract-pdf
Extract text and tables from a PDF (requires PDF_EXTRACTOR_URL)
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public PDF URL"
}
}
}fact-check
Verify the accuracy of a claim. Returns verdict (TRUE/FALSE/MIXED/UNVERIFIED/MISLEADING), confidence score, summary, and supporting/contradicting evidence with sources.
{
"type": "object",
"required": [
"claim"
],
"properties": {
"claim": {
"type": "string",
"description": "The statement to fact-check, e.g. 'The Great Wall of China is visible from space'; may also be sent as a ?claim= query parameter."
}
}
}generate-hash
Generate cryptographic hashes (sha256, sha512, md5, sha1)
{
"type": "object",
"required": [
"input"
],
"properties": {
"input": {
"type": "string",
"description": "String to hash"
},
"algorithm": {
"enum": [
"sha256",
"sha512",
"md5",
"sha1"
],
"type": "string",
"default": "sha256",
"description": "Hash algorithm: sha256 (default), sha512, sha384, sha1 or md5; other values return 400."
}
}
}generate-image
Generate images from text prompts via DALL-E 3 (1024×1024, 1792×1024, 1024×1792).
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"size": {
"enum": [
"1024x1024",
"1792x1024",
"1024x1792"
],
"type": "string",
"default": "1024x1024",
"description": "Image size in pixels; other values fall back to 1024x1024 (x402-paid calls are always 1024x1024)."
},
"prompt": {
"type": "string",
"description": "Description of the image to generate with gpt-image-1; screened by content moderation."
},
"quality": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"default": "medium",
"description": "Image quality: low, medium or high (aliases: standard/vivid/natural = medium, hd = high); any other value becomes medium. High quality costs more credits; x402-paid calls are capped at medium."
}
}
}generate-uuid
Generate UUIDs (v1/v4), secure random tokens, and API-key-format strings
{
"type": "object",
"properties": {
"type": {
"enum": [
"v1",
"v4"
],
"type": "string",
"default": "v4",
"description": "Alias for version: v1 for a timestamp-based UUID; any other value (default v4) gives a random v4 UUID (or the api_key/token value selected by format)."
},
"count": {
"type": "integer",
"default": 1,
"maximum": 100,
"minimum": 1,
"description": "How many values to generate (default 1, clamped to 1-100)."
},
"prefix": {
"type": "string",
"maxLength": 50,
"description": "Optional prefix for each UUID"
}
}
}html-to-markdown
Convert HTML or any URL to clean Markdown
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "URL to fetch and convert"
},
"html": {
"type": "string",
"description": "HTML string to convert"
}
}
}image-generate
Generate SVG images from text prompts via Claude
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"width": {
"enum": [
1024,
1792
],
"type": "integer",
"default": 1024,
"description": "SVG width in pixels written into the model prompt and viewBox (default 400; not validated)."
},
"height": {
"enum": [
1024,
1792
],
"type": "integer",
"default": 1024,
"description": "SVG height in pixels written into the model prompt and viewBox (default 300; not validated)."
},
"prompt": {
"type": "string",
"maxLength": 4000,
"description": "Image description / prompt"
}
}
}image-remove-bg
Remove background from any image
{
"type": "object",
"required": [],
"properties": {
"size": {
"enum": [
"auto",
"preview",
"hd",
"full"
],
"type": "string",
"default": "auto",
"description": "Output resolution for remove.bg: auto, preview, full, or hd (hd is sent as full); other values return 400."
},
"image_url": {
"type": "string",
"description": "Public http(s) URL of the image (downloaded by the server, max about 22 MB). Either image_url or image_base64 is required."
},
"image_base64": {
"type": "string",
"description": "Base64-encoded image bytes; used instead of image_url when both are given. Either image_url or image_base64 is required."
}
}
}ip-lookup
Geolocate any IP address — country, city, timezone, ISP, VPN/proxy detection
{
"type": "object",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"description": "IPv4 or IPv6 address to look up"
}
}
}jsonpath-query
Run JSONPath expressions against any JSON payload
{
"type": "object",
"required": [
"json",
"path"
],
"properties": {
"json": {
"description": "JSON object or string to query"
},
"path": {
"type": "string",
"description": "JSONPath expression starting with $"
}
}
}language-detect
Detect the language of any text with confidence score and script identification
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Text to detect language of"
}
}
}news-search
Search for recent news articles on any topic. Returns title, URL, description, source, and publication date from Brave News, Tavily, or Serper.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"description": "Maximum number of articles (default 5, capped at 10); may also be sent as ?limit=."
},
"query": {
"type": "string",
"description": "News search query, e.g. 'OpenAI funding'; may also be sent as a ?query= query parameter."
}
}
}ocr-extract
Extract text from images or screenshots using AI vision (base64 or URL input)
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"maxLength": 500,
"description": "Optional custom extraction instruction"
},
"image_url": {
"type": "string",
"description": "Public URL of the image"
},
"media_type": {
"enum": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp"
],
"type": "string",
"default": "image/jpeg",
"description": "MIME type of image_base64: image/jpeg (default), image/png, image/gif or image/webp; other values fall back to image/jpeg. Not used when the image is downloaded from image_url (the download's Content-Type is used)."
},
"image_base64": {
"type": "string",
"description": "Base64-encoded image data"
}
}
}phone-validate
Parse and validate phone numbers in any format — E.164, carrier type, country
{
"type": "object",
"required": [
"phone"
],
"properties": {
"phone": {
"type": "string",
"description": "Phone number in any format"
},
"country_code": {
"type": "string",
"maxLength": 2,
"description": "ISO 3166-1 alpha-2 country code hint (e.g. US)"
}
}
}pii-detect
Detect and optionally redact PII: names, emails, SSNs, credit cards, API keys, and more
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 50000,
"description": "Text to scan for PII"
},
"redact": {
"type": "boolean",
"default": false,
"description": "Return text with PII replaced"
},
"replacement": {
"type": "string",
"default": "[REDACTED]",
"description": "Replacement string when redact is true"
}
}
}qr-code
Generate QR codes from text or URLs (PNG data URL or SVG)
{
"type": "object",
"required": [
"text"
],
"properties": {
"size": {
"type": "integer",
"default": 256,
"maximum": 1024,
"minimum": 64,
"description": "Image size in pixels (default 256, clamped to 64-1024)."
},
"text": {
"type": "string",
"maxLength": 4000,
"description": "Text or URL to encode"
},
"format": {
"enum": [
"dataurl",
"svg"
],
"type": "string",
"default": "dataurl",
"description": "Output format: png (default, returned as a data URL) or svg (SVG markup); any other value returns png."
},
"error_correction": {
"enum": [
"L",
"M",
"Q",
"H"
],
"type": "string",
"default": "M",
"description": "QR error-correction level: L, M (default), Q or H."
}
}
}readability-score
Compute Flesch-Kincaid readability, grade level, word count, and read time
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Text to analyze"
}
}
}regex-generate
Generate regular expressions from plain English with explanations and test results
{
"type": "object",
"required": [
"description"
],
"properties": {
"flags": {
"type": "string",
"maxLength": 10,
"description": "Regex flags (e.g. 'gi')"
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Plain English description of what the regex should match"
},
"test_strings": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Optional strings to test against"
}
}
}research-report
Generate a structured AI research report on any topic. Searches multiple sources and synthesizes findings into executive summary, key findings, and conclusion with citations.
{
"type": "object",
"required": [
"query"
],
"properties": {
"depth": {
"enum": [
"standard",
"deep"
],
"type": "string",
"default": "standard",
"description": "standard (5 sources, concise report) or deep (10 sources, advanced search, longer report); any value other than deep behaves as standard."
},
"query": {
"type": "string",
"description": "Research topic or question, e.g. 'state of solid-state batteries'; alias: topic (also accepted as ?query= or ?topic= query parameters)."
}
}
}rss-parse
Fetch and parse RSS or Atom feeds into clean structured JSON
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL of the RSS or Atom feed"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Maximum number of feed items to return (default 20; no upper cap)."
}
}
}screenshot-capture
Get a page's title, description, Open Graph image and a text preview (metadata only; no rendered screenshot)
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public page URL"
}
}
}search-web
Search the web and return structured results (Tavily/Serper or DuckDuckGo fallback)
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Number of results to return (default 5, clamped to 1-10); num_results is accepted as an alias."
},
"query": {
"type": "string",
"description": "Search query"
}
}
}semantic-search
AI-powered semantic search across web content
{
"type": "object",
"required": [
"query"
],
"properties": {
"type": {
"enum": [
"neural",
"keyword"
],
"type": "string",
"default": "neural",
"description": "Exa search mode: neural (default) or keyword; other values return 400. Ignored when documents is provided."
},
"query": {
"type": "string",
"description": "Natural-language search query, e.g. 'startups building AI agents for accounting'."
},
"documents": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of your own text documents to rank against the query locally by keyword overlap instead of searching the web with Exa."
},
"num_results": {
"type": "integer",
"default": 5,
"maximum": 20,
"minimum": 1,
"description": "Number of results (default 5, clamped to 1-20); alias: limit, which takes precedence if both are sent."
}
}
}send-email
Send transactional emails via Resend — plain text or HTML.
{
"type": "object",
"required": [
"to",
"subject"
],
"properties": {
"to": {
"type": "string",
"description": "One recipient email address, e.g. alice@example.com; must contain @ and may not contain commas or newlines (single recipient only)."
},
"body": {
"type": "string",
"description": "Plain-text body (up to 10,000 chars used). Either body or html is required."
},
"from": {
"type": "string",
"description": "Custom sender address; only honored when the server has ALLOW_CUSTOM_EMAIL_FROM=true, otherwise the default Arch Tools sender is used."
},
"html": {
"type": "string",
"description": "HTML body (up to 20,000 chars used; script tags and inline on* handlers are stripped). Either body or html is required."
},
"subject": {
"type": "string",
"maxLength": 200,
"description": "Email subject line, 200 characters or fewer."
}
}
}sentiment-analysis
Analyze text sentiment: positive/negative/neutral with score and emotion detection
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 50000,
"description": "Text to analyze"
}
}
}session-create
Create a persistent AI conversation session
{
"type": "object",
"required": [
"namespace"
],
"properties": {
"model": {
"enum": [
"claude",
"gpt",
"gpt4",
"gpt-4",
"claude-sonnet-4-6",
"claude-opus-4-6",
"claude-haiku-4-5-20251001",
"gpt-4o",
"gpt-4o-mini"
],
"type": "string",
"default": "claude-sonnet-4-6",
"description": "Model for the session: alias claude, gpt, gpt4 or gpt-4 (case-insensitive), or an exact id; other values return 400. Default claude-sonnet-4-6. x402-paid sessions are pinned to claude-sonnet-4-6 for premium models."
},
"namespace": {
"type": "string",
"description": "Required label grouping this conversation session, e.g. 'support-bot' (truncated to 100 chars)."
},
"system_prompt": {
"type": "string",
"description": "Optional system prompt for every turn in the session (truncated to 4,000 chars); alias: system."
}
}
}session-message
Send a message in an existing AI session
{
"type": "object",
"required": [
"session_id",
"message"
],
"properties": {
"message": {
"type": "string",
"maxLength": 10000,
"description": "The user message to send in the session, up to 10,000 characters."
},
"session_id": {
"type": "string",
"description": "Session id returned by session-create, e.g. sess_3f2a...; must belong to the same caller."
}
}
}summarize
Summarize text in multiple styles: paragraph, bullets, tldr, headline, executive
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 100000,
"description": "Text to summarize"
},
"style": {
"enum": [
"paragraph",
"bullets",
"tldr",
"headline",
"executive"
],
"type": "string",
"default": "paragraph",
"description": "Summary style: paragraph (default), bullets, tldr, headline or executive; unknown values fall back to paragraph."
}
}
}text-to-speech
Convert text to natural-sounding audio via ElevenLabs. Returns base64-encoded MP3.
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000,
"description": "Text to speak, up to 5,000 characters (credit cost grows with length)."
},
"model_id": {
"type": "string",
"default": "eleven_turbo_v2_5",
"description": "ElevenLabs model id (default eleven_turbo_v2_5)."
},
"voice_id": {
"type": "string",
"default": "EXAVITQu4vr4xnSDxMaL",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "ElevenLabs voice id, letters/digits/_/- only (default EXAVITQu4vr4xnSDxMaL)."
},
"stability": {
"type": "number",
"default": 0.5,
"description": "ElevenLabs voice stability from 0 to 1 (default 0.5; not range-checked by the server)."
},
"similarity_boost": {
"type": "number",
"default": 0.75,
"description": "ElevenLabs voice similarity boost from 0 to 1 (default 0.75; not range-checked by the server)."
}
}
}timezone-convert
Convert a datetime between any two IANA timezones
{
"type": "object",
"required": [
"to_tz"
],
"properties": {
"to_tz": {
"type": "string",
"description": "Target IANA timezone (e.g. Asia/Tokyo)"
},
"from_tz": {
"type": "string",
"description": "Source IANA timezone (e.g. America/New_York). Defaults to UTC."
},
"datetime": {
"type": "string",
"description": "Datetime string to convert (ISO 8601). Defaults to now."
}
}
}token-lookup
Search for any token by name or ticker, returns CoinGecko IDs
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Token name or ticker to search on CoinGecko, e.g. solana or SOL; aliases: text, symbol. Use the returned id with other crypto tools."
}
}
}transcribe-audio
Transcribe audio files to text via OpenAI Whisper. Supports 100+ languages.
{
"type": "object",
"required": [
"audio_url"
],
"properties": {
"prompt": {
"type": "string",
"description": "Optional context hint passed to Whisper, e.g. names or jargon to spell correctly."
},
"language": {
"type": "string",
"description": "Optional ISO-639-1 language code of the audio, e.g. en; auto-detected by Whisper if omitted."
},
"audio_url": {
"type": "string",
"description": "Public http(s) URL of the audio file (mp3, wav, ogg, webm, mp4/m4a), fetched within 60 s and limited to 25 MB by default."
}
}
}transform-text
Transform text: uppercase, lowercase, trim, reverse, slug, title, camel, snake, base64
{
"type": "object",
"required": [
"text"
],
"properties": {
"mode": {
"enum": [
"uppercase",
"lowercase",
"trim",
"reverse",
"slug",
"title",
"camel",
"snake",
"base64_encode",
"base64_decode"
],
"type": "string",
"default": "uppercase",
"description": "Transformation: uppercase (default), lowercase, titlecase, slug, camel, pascal, snake, kebab, base64_encode, base64_decode, reverse, trim or word_count. Also accepts upper, lower, title, camelCase, snakeCase, kebabCase, pascalCase, and the field name operation. Other values return 400."
},
"text": {
"type": "string",
"description": "Text to transform"
}
}
}url-shorten
Shorten any URL via TinyURL
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL to shorten"
}
}
}validate-data
Validate JSON data against a JSON Schema
{
"type": "object",
"required": [
"schema",
"data"
],
"properties": {
"data": {
"description": "Data to validate"
},
"schema": {
"type": "object",
"description": "JSON Schema to validate against"
}
}
}video-generate
Generate short video clips from text prompts
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"prompt": {
"type": "string",
"description": "Text description of the video to generate with Runway; screened by content moderation."
},
"duration": {
"enum": [
5,
10
],
"type": "integer",
"default": 5,
"description": "Video length in seconds: 5 or 10 only, sent as a JSON number (a string like \"5\" returns 400). Default 5."
},
"aspect_ratio": {
"enum": [
"16:9",
"9:16",
"1280:720",
"720:1280",
"1280:768",
"768:1280"
],
"type": "string",
"default": "16:9",
"description": "16:9 (landscape, default) or 9:16 (portrait); 1280:720, 720:1280, 1280:768 and 768:1280 are also accepted. Other values return 400."
}
}
}webhook-send
POST a JSON payload to any webhook URL
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Webhook endpoint URL"
},
"body": {
"description": "JSON payload to send"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string",
"default": "POST",
"description": "HTTP method for the webhook call: POST (default), PUT or PATCH (case-insensitive); any other value is sent as POST."
},
"headers": {
"type": "object",
"description": "Optional extra headers (safe headers only)"
}
}
}web-scrape
Scrape and extract content from websites with optional CSS selector
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL to scrape"
},
"selector": {
"type": "string",
"description": "Optional CSS selector to extract specific content"
}
}
}web-search
Real-time web search with AI-synthesized answer (requires TAVILY_API_KEY)
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 500,
"description": "Search query"
},
"include_answer": {
"type": "boolean",
"default": true,
"description": "Include AI-synthesized answer"
}
}
}whois-lookup
Look up domain registration info: registrar, created/expires dates, nameservers, status
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain name to look up (e.g. google.com)"
}
}
}workflow-agent
Multi-step autonomous AI agent pipeline
{
"type": "object",
"required": [
"goal"
],
"properties": {
"goal": {
"type": "string",
"description": "The goal to work through step by step, e.g. 'plan a product launch email campaign'; aliases: task, objective."
},
"steps": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "Number of steps the model should plan (default 3, clamped to 1-10); alias: max_steps."
},
"context": {
"type": "string",
"description": "Optional background information to include with the goal."
}
}
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1007 ms
- 95th percentile latency
- 1007 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1007 ms · metadata changed · 63 tool(s); warnings: Advertises resources/list but does not implement it; Advertises resources/templates/list but does not implement it; Advertises prompts/list but does not implement it
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http arch-tools-mcp https://archtools.dev/mcpCodex
codex mcp add arch-tools-mcp --url https://archtools.dev/mcpCursor
{
"mcpServers": {
"arch-tools-mcp": {
"url": "https://archtools.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"arch-tools-mcp": {
"type": "streamableHttp",
"url": "https://archtools.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"arch-tools-mcp": {
"type": "http",
"url": "https://archtools.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http arch-tools-mcp https://archtools.dev/mcpClaude Desktop
https://archtools.dev/mcpWindsurf
{
"mcpServers": {
"arch-tools-mcp": {
"serverUrl": "https://archtools.dev/mcp"
}
}
}Let your agent find its tools
Find servers like Arch Tools MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.