Koskamo

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.

Arch Tools MCP logo, by DeesmoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Deesmo
You need:All tool endpoints require an API key: Authorization: Bearer YOUR_API_KEYGet a free key (100 credits — 25 instant, 75 on email verify) at https://archtools.dev/signupAI agents can pay per-call with USDC on Base via the x402 protocol. No API key, no signup, no human credit card needed.
MCP endpoint (Streamable HTTP)
https://archtools.dev/mcp
Vendor documentation

What its tools do

63 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

63 of 63 have a description · 0 of 63 declare behavior hints · 63 of 63 with parameters document them all

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

Community listingRegistry 2.0.1
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
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "listChanged": false
  }
}

Tools

63 advertised

ai-generate
Advertised by the server during the last successful anonymous check.

AI-powered text generation using Claude (requires ANTHROPIC_API_KEY)

ai-generate input schema
{
  "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
Advertised by the server during the last successful anonymous check.

AI reasoning engine with standard and deep analysis modes

ai-oracle input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Generate Code128 barcodes as SVG

barcode-generate input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Fetch a public page and extract its text or HTML, optionally by CSS selector (static HTML only: no JavaScript, clicking or typing)

browser-task input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Check if a domain is available or registered via RDAP. No API key needed.

check-domain input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Convert data between JSON, YAML, CSV, and XML formats

convert-format input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Crypto Fear & Greed Index with historical data

crypto-fear-greed input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Top N cryptocurrencies by market cap with price, volume, and 24h change

crypto-market-cap input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Latest crypto news headlines. Filter by token symbol

crypto-news input schema
{
  "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
Advertised by the server during the last successful anonymous check.

OHLCV candlestick data for any crypto over 1-90 days

crypto-ohlcv input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Real-time price, 24h change, market cap, and volume for any cryptocurrency

crypto-price input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Community sentiment, social stats, and price momentum for any cryptocurrency

crypto-sentiment input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Convert between currencies using real-time exchange rates (170+ currencies)

currency-convert input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Generate designs and images via DALL-E 3

design-create input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Compare two text strings and return differences in unified, word, char, or JSON format

diff-text input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Check domain availability via RDAP

domain-check input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Find email addresses for a person at a company domain

email-find input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Send transactional emails via Resend

email-send input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Deep email validation: syntax, MX record check, disposable domain detection

email-verify input schema
{
  "type": "object",
  "required": [
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "description": "Email address to verify"
    }
  }
}
extract-entities
Advertised by the server during the last successful anonymous check.

Named entity recognition: people, organizations, locations, dates, money, and more

extract-entities input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Extract metadata from text or URLs (word count, OG tags, headers, etc.)

extract-metadata input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "URL to fetch and extract metadata from"
    },
    "text": {
      "type": "string",
      "description": "Text to analyze"
    }
  }
}
extract-page
Advertised by the server during the last successful anonymous check.

Fetch a webpage and return clean text, metadata, and links

extract-page input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "URL to extract"
    }
  }
}
extract-pdf
Advertised by the server during the last successful anonymous check.

Extract text and tables from a PDF (requires PDF_EXTRACTOR_URL)

extract-pdf input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Public PDF URL"
    }
  }
}
fact-check
Advertised by the server during the last successful anonymous check.

Verify the accuracy of a claim. Returns verdict (TRUE/FALSE/MIXED/UNVERIFIED/MISLEADING), confidence score, summary, and supporting/contradicting evidence with sources.

fact-check input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Generate cryptographic hashes (sha256, sha512, md5, sha1)

generate-hash input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Generate images from text prompts via DALL-E 3 (1024×1024, 1792×1024, 1024×1792).

generate-image input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Generate UUIDs (v1/v4), secure random tokens, and API-key-format strings

generate-uuid input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Convert HTML or any URL to clean Markdown

html-to-markdown input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "URL to fetch and convert"
    },
    "html": {
      "type": "string",
      "description": "HTML string to convert"
    }
  }
}
image-generate
Advertised by the server during the last successful anonymous check.

Generate SVG images from text prompts via Claude

image-generate input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Remove background from any image

image-remove-bg input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Geolocate any IP address — country, city, timezone, ISP, VPN/proxy detection

ip-lookup input schema
{
  "type": "object",
  "required": [
    "ip"
  ],
  "properties": {
    "ip": {
      "type": "string",
      "description": "IPv4 or IPv6 address to look up"
    }
  }
}
jsonpath-query
Advertised by the server during the last successful anonymous check.

Run JSONPath expressions against any JSON payload

jsonpath-query input schema
{
  "type": "object",
  "required": [
    "json",
    "path"
  ],
  "properties": {
    "json": {
      "description": "JSON object or string to query"
    },
    "path": {
      "type": "string",
      "description": "JSONPath expression starting with $"
    }
  }
}
language-detect
Advertised by the server during the last successful anonymous check.

Detect the language of any text with confidence score and script identification

language-detect input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "Text to detect language of"
    }
  }
}
news-search
Advertised by the server during the last successful anonymous check.

Search for recent news articles on any topic. Returns title, URL, description, source, and publication date from Brave News, Tavily, or Serper.

news-search input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Extract text from images or screenshots using AI vision (base64 or URL input)

ocr-extract input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Parse and validate phone numbers in any format — E.164, carrier type, country

phone-validate input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Detect and optionally redact PII: names, emails, SSNs, credit cards, API keys, and more

pii-detect input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Generate QR codes from text or URLs (PNG data URL or SVG)

qr-code input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Compute Flesch-Kincaid readability, grade level, word count, and read time

readability-score input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "Text to analyze"
    }
  }
}
regex-generate
Advertised by the server during the last successful anonymous check.

Generate regular expressions from plain English with explanations and test results

regex-generate input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Generate a structured AI research report on any topic. Searches multiple sources and synthesizes findings into executive summary, key findings, and conclusion with citations.

research-report input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Fetch and parse RSS or Atom feeds into clean structured JSON

rss-parse input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Get a page's title, description, Open Graph image and a text preview (metadata only; no rendered screenshot)

screenshot-capture input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Public page URL"
    }
  }
}
search-web
Advertised by the server during the last successful anonymous check.

Search the web and return structured results (Tavily/Serper or DuckDuckGo fallback)

search-web input schema
{
  "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
Advertised by the server during the last successful anonymous check.

AI-powered semantic search across web content

semantic-search input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Send transactional emails via Resend — plain text or HTML.

send-email input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Analyze text sentiment: positive/negative/neutral with score and emotion detection

sentiment-analysis input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 50000,
      "description": "Text to analyze"
    }
  }
}
session-create
Advertised by the server during the last successful anonymous check.

Create a persistent AI conversation session

session-create input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Send a message in an existing AI session

session-message input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Summarize text in multiple styles: paragraph, bullets, tldr, headline, executive

summarize input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Convert text to natural-sounding audio via ElevenLabs. Returns base64-encoded MP3.

text-to-speech input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Convert a datetime between any two IANA timezones

timezone-convert input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Search for any token by name or ticker, returns CoinGecko IDs

token-lookup input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Transcribe audio files to text via OpenAI Whisper. Supports 100+ languages.

transcribe-audio input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Transform text: uppercase, lowercase, trim, reverse, slug, title, camel, snake, base64

transform-text input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Shorten any URL via TinyURL

url-shorten input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "URL to shorten"
    }
  }
}
validate-data
Advertised by the server during the last successful anonymous check.

Validate JSON data against a JSON Schema

validate-data input schema
{
  "type": "object",
  "required": [
    "schema",
    "data"
  ],
  "properties": {
    "data": {
      "description": "Data to validate"
    },
    "schema": {
      "type": "object",
      "description": "JSON Schema to validate against"
    }
  }
}
video-generate
Advertised by the server during the last successful anonymous check.

Generate short video clips from text prompts

video-generate input schema
{
  "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
Advertised by the server during the last successful anonymous check.

POST a JSON payload to any webhook URL

webhook-send input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Scrape and extract content from websites with optional CSS selector

web-scrape input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Real-time web search with AI-synthesized answer (requires TAVILY_API_KEY)

web-search input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Look up domain registration info: registrar, created/expires dates, nameservers, status

whois-lookup input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name to look up (e.g. google.com)"
    }
  }
}
workflow-agent
Advertised by the server during the last successful anonymous check.

Multi-step autonomous AI agent pipeline

workflow-agent input schema
{
  "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

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

Too few checks for a percentage yet (1 of 1 answered).

  1. 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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http arch-tools-mcp https://archtools.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add arch-tools-mcp --url https://archtools.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable arch-tools-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "arch-tools-mcp": {
      "url": "https://archtools.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "arch-tools-mcp": {
      "type": "streamableHttp",
      "url": "https://archtools.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start arch-tools-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "arch-tools-mcp": {
      "type": "http",
      "url": "https://archtools.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http arch-tools-mcp https://archtools.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://archtools.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.