{
    "schema_version": "1.0",
    "name": "EuroVDC MCP Server",
    "description": "Model Context Protocol tools for EuroVDC domain search, product catalog, AI server recommendations and agent checkout.",
    "version": "1.4.0",
    "protocol": "2024-11-05",
    "documentation": "https://www.eurovdc.eu/agents.md",
    "openapi": "https://www.eurovdc.eu/.well-known/openapi.json",
    "commerce": "https://www.eurovdc.eu/.well-known/commerce.json",
    "acp": "https://www.eurovdc.eu/acp/checkout_sessions",
    "llms_txt": "https://www.eurovdc.eu/llms.txt",
    "llms_full_txt": "https://www.eurovdc.eu/llms-full.txt",
    "languages": {
        "en": {
            "llms_txt": "https://www.eurovdc.eu/llms.txt",
            "llms_full_txt": "https://www.eurovdc.eu/llms-full.txt",
            "agents": "https://www.eurovdc.eu/agents.md"
        },
        "tr": {
            "llms_txt": "https://www.eurovdc.eu/llms-tr.txt",
            "llms_full_txt": "https://www.eurovdc.eu/llms-full-tr.txt",
            "agents": "https://www.eurovdc.eu/agents-tr.md"
        },
        "de": {
            "llms_txt": "https://www.eurovdc.eu/llms-de.txt",
            "llms_full_txt": "https://www.eurovdc.eu/llms-full-de.txt",
            "agents": "https://www.eurovdc.eu/agents-de.md"
        },
        "bg": {
            "llms_txt": "https://www.eurovdc.eu/llms-bg.txt",
            "llms_full_txt": "https://www.eurovdc.eu/llms-full-bg.txt",
            "agents": "https://www.eurovdc.eu/agents-bg.md"
        }
    },
    "transports": [
        {
            "type": "http",
            "url": "https://www.eurovdc.eu/mcp",
            "description": "JSON-RPC 2.0 over POST (methods: initialize, tools/list, tools/call)"
        },
        {
            "type": "stdio",
            "description": "Node.js stdio server for Claude Desktop / Cursor",
            "package": "node/mcp-server",
            "command": "node",
            "args": [
                "index.js"
            ],
            "env": {
                "EUROVDC_BASE_URL": "https://www.eurovdc.eu",
                "EUROVDC_LANG": "en"
            }
        }
    ],
    "tools": [
        {
            "name": "search_domain",
            "description": "Check domain registration availability and return live EUR price for the TLD. Call when the user asks if a name is free or what a domain costs before cart."
        },
        {
            "name": "recommend_server",
            "description": "Recommend a EuroVDC Cloud VPS or Dedicated plan from a plain-language workload. Returns best_pid, best_name, cpu/ram/hdd/traffic specs and alternative_pid for agent_cart_add. Does not include email/VPN. Call when the user describes traffic, stack, or budget instead of a product id."
        },
        {
            "name": "list_products",
            "description": "List live EuroVDC catalog rows (hosting, Cloud VPS, Dedicated, SSL, email, VPN) with EUR prices, landing_url, purchase_url, billing_periods and server `_f` specs. Call first when comparing plans or before agent_cart_add with product_id."
        },
        {
            "name": "list_tlds",
            "description": "List supported TLDs with registration, renewal and transfer prices in EUR. Call when the user asks which extensions EuroVDC sells or for bulk TLD pricing."
        },
        {
            "name": "get_network_rtt",
            "description": "Measured ICMP RTT from EuroVDC Sofia (Neterra) Looking Glass egress to reference city probes (median ms, measured_at, disclaimer). Not an SLA. Call for Sofia/Bulgaria latency questions."
        },
        {
            "name": "whois_lookup",
            "description": "Look up WHOIS for a registered domain (registrar, expiry, nameservers). Call for ownership/expiry questions — not for price or availability (use search_domain)."
        },
        {
            "name": "ai_domain_suggest",
            "description": "Generate brandable domain ideas from a business description and check availability. Call when the user needs name ideas rather than a specific FQDN."
        },
        {
            "name": "agent_domain_fields",
            "description": "Return required additional registrant fields for a TLD (e.g. .tr) before agent_cart_add. Call for ccTLDs that need extra data."
        },
        {
            "name": "agent_cart_add",
            "description": "Add a product and/or domain to an agent cart and return checkout_url (24h TTL) for Phase 1 browser handoff. Call after list_products or search_domain when the user is ready to buy."
        },
        {
            "name": "agent_cart_get",
            "description": "Fetch an existing agent cart summary by cart_id (lines, totals, checkout_url). Call to resume a previous cart."
        },
        {
            "name": "agent_checkout_quote",
            "description": "Create a 15-minute locked EUR quote from an agent cart (ACP Phase 1/2). Call after agent_cart_add when proceeding beyond browser handoff."
        },
        {
            "name": "agent_checkout_prepare",
            "description": "Create a Stripe Checkout Session for a locked quote when Phase 2 is enabled; returns stripe_checkout_url. Call after agent_checkout_quote."
        },
        {
            "name": "agent_checkout_status",
            "description": "Poll payment status for a quote (syncs Stripe when a session exists). Call after prepare/pay to confirm payment."
        },
        {
            "name": "agent_checkout_pay",
            "description": "Pay a locked quote with a Stripe Shared Payment Granted Token (ACP Phase 3, spt_…). Call only when the client supplies an SPT."
        },
        {
            "name": "agent_checkout_fulfill",
            "description": "Create the order from a paid quote. Agents typically get login-required; prefer checkout_url browser handoff for Phase 1."
        }
    ]
}