Koskamo

Scopeweb MCP

An MCP server providing domain intelligence, including name suggestion, scoring, live availability checking, and pricing quotes. It helps agents evaluate domain names by verifying registration status, renewal costs, and brand suitability before purchase.

Endpoint and access

OAuth sign-in: the first time you connect, your client opens the vendor's own authorization prompt in a browser.

Scopeweb MCP logo, by ScopewebVendor evidenceStreamable HTTPOAuth sign-inEndpoint checked 2026-11-06Operated by Scopeweb
MCP endpoint (Streamable HTTP)
https://mcp.scopeweb.io/mcp
Vendor documentation

What its tools do

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

21 of 21 have a description · 21 of 21 declare behavior hints · 9 of 17 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to scopeweb.io ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Suggest and rank domain names based on concepts
  • Check live availability and renewal costs for domains
  • Audit existing domains and list owned assets
  • Generate purchase quotes with confirmation links

Source and maintenance

Vendor evidenceRegistry 0.2.0

Protocol and capabilities

Server
scopeweb 0.1.0
MCP protocol negotiated in check
2025-06-18
Tools
21 advertised
Resources
4 advertised
Resource templates
Sign-in required
Prompts
3 advertised
Server-advertised capabilities
{
  "tools": {},
  "prompts": {},
  "resources": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Scopeweb: domain intelligence, name selection, and drafts that persist across conversations. Which tool fits which job: - The user wants a name picked ("what should we call this?"): recommend_name runs the whole job on the server and returns one domain, checked live and priced, with runners-up. - The user wants options to browse: suggest_names generates candidates from a concept; score_name grades them; check_live confirms availability in real time. - A specific list of names: scan_namespace classifies up to 25. - "Is this one name available?": check_live. - "Is this name any good?": score_name, which shows its working. - "What is at this domain?": audit_domain. - "What do I own?": list_domains. Existing pages: list_drafts. - The real price of a chosen name: quote_domain. What the answers mean. 'unknown', 'pending' and 'unprobed' are never registration claims, and 'unregistered' does not mean purchasable: reserved and premium names answer the registry the same way, so only a quote settles price. quote_domain and recommend_name return a confirm_url, which is not a purchase: a person opens it and pays on scopeweb.io, and no tool in this server completes an order. A refusal carries a recovery object naming the fix; when recovery.tool is null, actionable_by_agent is false and recovery.one_line is the message for the user.

Tools

21 advertised

search
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find domain names for an idea. Returns candidate names across every ending, each with the state we can defend: sellable, restricted, not ours to sell, taken, or not checked. Pass the concept, not a domain.

search input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "A word or an idea, for example \"calm inbox\"."
    }
  }
}
search output schema
{
  "type": "object",
  "required": [
    "results",
    "note"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "description": "Candidate names with the state we can defend."
    }
  }
}
search annotations
{
  "title": "Find names for an idea (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Everything we hold about one domain: whether it is registered, what it costs to claim AND what it renews at, and where each number came from. Pass a domain name as the id, for example "atlas.io".

fetch input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "A domain name."
    }
  }
}
fetch output schema
{
  "type": "object",
  "required": [
    "id",
    "title",
    "text",
    "url",
    "metadata"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "text": {
      "type": "string",
      "description": "Everything we hold, as prose."
    },
    "title": {
      "type": "string"
    },
    "metadata": {
      "type": "object"
    }
  }
}
fetch annotations
{
  "title": "Everything about one domain (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
create_draft
Advertised by the server during the last successful anonymous check.

Stores a draft website in the user's Scopeweb portfolio and returns a persistent draft_id and a live preview_url. For when the user wants a page, site or landing draft for a name and none exists yet. Drafts persist across conversations. Content is screened on every version; a flagged draft is still stored, but its preview serves HTTP 451. Cannot spend money.

create_draft input schema
{
  "type": "object",
  "required": [
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "path",
          "content"
        ],
        "properties": {
          "path": {
            "type": "string"
          },
          "content": {
            "type": "string"
          }
        }
      },
      "description": "Site files. index.html required for a browsable preview."
    },
    "name_hint": {
      "type": "string",
      "description": "Working name for the project"
    },
    "description": {
      "type": "string",
      "description": "One paragraph on what this is"
    }
  }
}
create_draft annotations
{
  "title": "Save a draft site",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
update_draft
Advertised by the server during the last successful anonymous check.

Writes a new version of an existing draft. Acts as a patch: files you send are written as a new version, files you omit carry forward unchanged, and earlier versions are kept. For when the user wants to change the copy, sections or layout of a draft that already exists. Returns the new version and preview_url. Cannot spend money.

update_draft input schema
{
  "type": "object",
  "required": [
    "draft_id",
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "path",
          "content"
        ],
        "properties": {
          "path": {
            "type": "string"
          },
          "content": {
            "type": "string"
          }
        }
      }
    },
    "draft_id": {
      "type": "string"
    }
  }
}
update_draft annotations
{
  "title": "Update a draft site",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
list_drafts
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists every draft in the user's Scopeweb portfolio with status, preview URL and timestamps. For when the user asks about existing pages or wants to resume earlier work. Read-only. Cannot spend money.

list_drafts input schema
{
  "type": "object",
  "properties": {}
}
list_drafts output schema
{
  "type": "object",
  "required": [
    "drafts"
  ],
  "properties": {
    "drafts": {
      "type": "array"
    }
  }
}
list_drafts annotations
{
  "title": "List drafts (read-only)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_draft
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns a draft's metadata and file list, or a single file's content when path is given. For reading the current text of a draft, including one made in an earlier conversation. Read-only. Cannot spend money.

get_draft input schema
{
  "type": "object",
  "required": [
    "draft_id"
  ],
  "properties": {
    "path": {
      "type": "string",
      "description": "Optional: return this file's content"
    },
    "draft_id": {
      "type": "string"
    }
  }
}
get_draft annotations
{
  "title": "Open a draft (read-only)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_ownership
Advertised by the server during the last successful anonymous check.
Open-world

Proves the user controls a domain with a DNS TXT challenge. action 'start' returns the TXT record to publish; action 'check' looks for it. For when the user says a domain is theirs and the claim matters. A verified domain joins the user's inventory. A failed DNS lookup returns an error, never 'not owned'. Cannot spend money.

verify_ownership input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "action": {
      "enum": [
        "start",
        "check"
      ],
      "type": "string",
      "description": "Defaults to 'start'."
    },
    "domain": {
      "type": "string"
    }
  }
}
verify_ownership annotations
{
  "title": "Prove you own a domain",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_domains
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the user's domain inventory: every domain with a verification challenge issued or completed, with cached liveness, classification, title and expiry. For portfolio, renewal and 'what do I own' questions. Each entry carries scan_age_ms, so a stale verdict reads as stale. Read-only. Cannot spend money.

list_domains input schema
{
  "type": "object",
  "properties": {}
}
list_domains output schema
{
  "type": "object",
  "required": [
    "domains"
  ],
  "properties": {
    "domains": {
      "type": "array"
    },
    "verified_count": {
      "type": "integer"
    },
    "unverified_count": {
      "type": "integer"
    }
  }
}
list_domains annotations
{
  "title": "List your domains (read-only)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
suggest_names
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Generates candidate names across a namespace from a concept (a word or short phrase) and classifies each by what the registry says: unregistered, registered, pending or unprobed. For when the user is choosing or inventing a name and wants options to look at. Pending and unprobed are never registration claims. Returns a scan_id; passing it back walks deeper into the same namespace, converging over about 3 calls. Read-only. Cannot spend money. Unregistered does not mean purchasable: reserved and premium names answer the registry the same way. Only a registrar quote settles a price. PRICES ARE IDENTICAL FOR ALL BUYERS REGARDLESS OF BUDGET. A budget changes which candidates are recommended and how they are ordered; it never changes what anything costs.

suggest_names input schema
{
  "type": "object",
  "properties": {
    "tlds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Defaults to com/io/ai/app/dev/co."
    },
    "limit": {
      "type": "number",
      "description": "Candidates per page, max 50 (default 25)"
    },
    "query": {
      "type": "string",
      "description": "A word, name or idea, e.g. 'stowed'"
    },
    "offset": {
      "type": "number",
      "description": "Walk deeper into the expansion"
    },
    "scan_id": {
      "type": "string",
      "description": "Resume a previous browse; replaces query/tlds"
    }
  }
}
suggest_names output schema
{
  "type": "object",
  "required": [
    "results",
    "query",
    "scan_id"
  ],
  "properties": {
    "query": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "description": "Candidate names with availability where known."
    },
    "scan_id": {
      "type": "string",
      "description": "Re-query this to walk deeper into the namespace."
    },
    "unprobed": {
      "type": "integer",
      "description": "Candidates whose availability was NOT checked. Never read as free."
    }
  }
}
suggest_names annotations
{
  "title": "Explore names (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
recommend_name
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Runs the whole naming job on the server and returns one recommended domain with its real price and a confirm_url, plus runners-up. From a concept it generates candidates, grades the unregistered ones on measurable properties with a trademark signal, re-checks the best against the registry live, and prices them in order until one quotes. For when the user wants a name picked rather than a list, for example 'what should we call this?'. The answer shows the count at every step, why the pick won, its trademark signal with the caveat, and any name refused along the way with the reason. The confirm_url is not a purchase: a person opens it and pays on scopeweb.io. Cannot spend money.

recommend_name input schema
{
  "type": "object",
  "required": [
    "concept"
  ],
  "properties": {
    "tlds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Endings to search. Defaults to com/io/ai/app/dev/co."
    },
    "concept": {
      "type": "string",
      "description": "What is being named, as a word or short phrase, e.g. 'calm inbox'."
    },
    "project_id": {
      "type": "string",
      "description": "Optional project for budget context on the quote."
    },
    "budget_cents": {
      "type": "number",
      "description": "Optional ceiling that reorders candidates; it never changes a price."
    }
  }
}
recommend_name output schema
{
  "type": "object",
  "required": [
    "concept",
    "recommendation",
    "runners_up",
    "steps"
  ],
  "properties": {
    "steps": {
      "type": "object",
      "description": "How many names each step saw."
    },
    "reason": {
      "type": "string"
    },
    "concept": {
      "type": "string"
    },
    "runners_up": {
      "type": "array"
    },
    "spends_money": {
      "type": "boolean"
    },
    "recommendation": {
      "type": [
        "object",
        "null"
      ],
      "description": "The pick with price and confirm_url, or null with a reason."
    },
    "refused_on_the_way": {
      "type": "array"
    }
  }
}
recommend_name annotations
{
  "title": "Recommend a name (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
score_name
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Grades candidate names on measurable properties of the string: length, syllables, pronounceability (the radio test), presence in a published English word list, edit distance to major brands, hyphens and digits, and TLD perception. For when the user is choosing between names or asks whether one is any good. It does not check availability. Every component returns its score, weight and basis so the number can be audited; severe properties cap the total instead of being averaged away. Not a search-ranking prediction, and brand_collision is string similarity, not legal clearance. Each of the top 5 results carries a trademark field: close live US and EU registrations and applications, with office, classes, owner and a required caveat. It is a signal, never a clearance, and measured: false means nothing was searched. Components that cannot be measured are returned as unavailable with reasons, never estimated. Read-only. Cannot spend money.

score_name input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "A single domain, e.g. 'forge.com'"
    },
    "domains": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Up to 10 domains; returned ranked best-first"
    }
  }
}
score_name output schema
{
  "type": "object",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": "array",
      "description": "Scored names, highest first, each showing its working."
    },
    "score_version": {
      "type": "integer"
    }
  }
}
score_name annotations
{
  "title": "Grade a name (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
scan_namespace
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Classifies an explicit list of up to 25 domains: registered, resolves, serves, parked, classification and liveness for each. For when the user already has specific names rather than a concept. Read-only. Cannot spend money.

scan_namespace input schema
{
  "type": "object",
  "required": [
    "candidates"
  ],
  "properties": {
    "candidates": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Full domain names, max 25."
    }
  }
}
scan_namespace annotations
{
  "title": "Classify names (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
check_live
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Checks up to 10 domains against the registry in real time (RDAP) and reports whether each is registered right now. For confirming availability just before a recommendation or purchase decision, and for any name an earlier answer marked 'unknown', 'pending' or 'unprobed', which are never registration claims. It answers whether a registration exists, not whether the name can be bought or at what price: reserved and premium names also read as unregistered here. It does not judge whether a name is good, and it does not fetch the site, so it reports 'registered' rather than 'active' or 'dormant'. Read-only. Cannot spend money.

check_live input schema
{
  "type": "object",
  "required": [
    "domains"
  ],
  "properties": {
    "domains": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
check_live output schema
{
  "type": "object",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": "array",
      "description": "One row per domain asked about, with its verdict and evidence grade."
    }
  }
}
check_live annotations
{
  "title": "Check availability (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
audit_domain
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Fetches a live domain's observable surface: HTTP status, redirect target, title, meta description, h1 headings and tech hints. For when the user asks what is wrong with a site they own, what is deployed at a domain, or whether it serves anything at all. Read-only. Cannot spend money.

audit_domain input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string"
    }
  }
}
audit_domain annotations
{
  "title": "Inspect a live site (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
set_budget
Advertised by the server during the last successful anonymous check.

Records a monthly or yearly spending ceiling, in cents, for one of the user's projects by project_id. For when the user states a spending limit. It never authorises a purchase and cannot spend money. The response includes the project's current carry and headroom. Headroom is flagged partial when a domain's renewal price is unknown: an unknown renewal is counted as unknown, never as zero, so headroom is then an upper bound. PRICES ARE IDENTICAL FOR ALL BUYERS REGARDLESS OF BUDGET. A budget changes what is recommended and how results are ordered; it never changes what anything costs.

set_budget input schema
{
  "type": "object",
  "required": [
    "project_id",
    "period",
    "amount_cents"
  ],
  "properties": {
    "period": {
      "enum": [
        "monthly",
        "yearly"
      ],
      "type": "string"
    },
    "project_id": {
      "type": "string"
    },
    "amount_cents": {
      "type": "integer"
    }
  }
}
set_budget annotations
{
  "title": "Set a project budget",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_finance
Advertised by the server during the last successful anonymous check.
Advertised read-only

The financial readout for one project: the budget, per-domain renewal costs, total known carry, how many domains have unknown renewal costs, and remaining headroom. For questions about what a project costs to hold or how much budget is left. Domains held at another registrar renew at that registrar's prices, which are not visible here, so their cost is reported as unknown with reason foreign_registrar_pricing, never guessed and never zero. A transfer-in price, when shown, is not their renewal price. When partial is true, headroom is an upper bound. Read-only. Cannot spend money.

get_finance input schema
{
  "type": "object",
  "required": [
    "project_id"
  ],
  "properties": {
    "project_id": {
      "type": "string"
    }
  }
}
get_finance annotations
{
  "title": "Read project finances (read-only)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_projects
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the projects this account owns or operates through an entity, with each project_id and how many domains and drafts each holds, plus a count of verified domains not filed in any project. For when the user refers to a project, or wants a budget or finance readout, and its project_id is not known yet. Read-only. Cannot spend money.

list_projects input schema
{
  "type": "object",
  "properties": {}
}
list_projects annotations
{
  "title": "List my projects (read-only)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_project
Advertised by the server during the last successful anonymous check.

Creates a named project owned by this account and returns its project_id. For when the user starts something new and wants a budget or its costs tracked. Cannot spend money.

create_project input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "What the project is called, e.g. 'Calm inbox app'"
    }
  }
}
create_project annotations
{
  "title": "Create a project",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
kb_search
Advertised by the server during the last successful anonymous check.
Advertised read-only

Semantic search over a small curated corpus: Scopeweb's own documentation and methodology, ICANN policy, and per-registry policy documents. Returns passages with the source, its URL, and what that source may be cited for. For explaining how something works. It is retrieval, not authority: a vector search always returns its nearest neighbour, so a returned passage is not evidence that it answers the question. Per-registry policy fields and current registration status have their own sources, which take precedence over a passage here. Read-only. Cannot spend money.

kb_search input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string"
    },
    "top_k": {
      "type": "integer"
    }
  }
}
kb_search output schema
{
  "type": "object",
  "required": [
    "query",
    "passages"
  ],
  "properties": {
    "query": {
      "type": "string"
    },
    "model_v": {
      "type": "string"
    },
    "passages": {
      "type": "array"
    },
    "not_a_claim_about": {
      "type": "array"
    }
  }
}
kb_search annotations
{
  "title": "Search the knowledge base (read-only)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
show_plans
Advertised by the server during the last successful anonymous check.
Advertised read-only

Shows the available plans with what each includes, plus the caller's current tier and any allowance used. For when the user asks what a tier costs or has reached a limit. Read-only: it displays pricing and cannot start, change or cancel a subscription. Plans change depth, never truth: the registration verdict, its rdap_source and a domain's price are identical on every tier, and the response lists exactly what does not vary.

show_plans input schema
{
  "type": "object",
  "properties": {}
}
show_plans output schema
{
  "type": "object",
  "required": [
    "plans"
  ],
  "properties": {
    "law": {
      "type": "string"
    },
    "plans": {
      "type": "array"
    },
    "your_plan": {
      "type": "object"
    }
  }
}
show_plans annotations
{
  "title": "Show plans (read-only)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
quote_domain
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Prices a name believed to be unregistered and returns total_cents, renewal_cents, an expiry and a confirm_url. For when the user has chosen a name and wants the real price. It re-runs the registry check first: a registered name, or one whose status cannot be confirmed, is not quoted. Premium names are quoted at their real price or refused, never at the base rate. An expired quote is re-quoted, never honoured. The confirm_url is not a purchase: it opens a page where a person types the domain to authorise the charge, and no tool in this server completes an order. Cannot spend money. PRICES ARE IDENTICAL FOR ALL BUYERS REGARDLESS OF BUDGET: passing a project_id adds budget context (does it fit, what is left after) and never changes the number.

quote_domain input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "The name to price, e.g. 'stoff.fit'."
    },
    "project_id": {
      "type": "string",
      "description": "Optional. Adds budget CONTEXT to the answer (does it fit, what is left after). It never changes the price."
    }
  }
}
quote_domain output schema
{
  "type": "object",
  "required": [
    "domain",
    "quotable"
  ],
  "properties": {
    "domain": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "contract": {
      "type": "string",
      "description": "Who may spend. An agent may not."
    },
    "quotable": {
      "type": "boolean",
      "description": "False means we will not sell it; read message and what_to_do."
    },
    "quote_id": {
      "type": "string"
    },
    "what_to_do": {
      "type": "string"
    },
    "confirm_url": {
      "type": "string",
      "description": "A page where a HUMAN completes the purchase. Not a purchase."
    },
    "quote_expires_at": {
      "type": "integer"
    },
    "annual_commitment_cents": {
      "type": "integer",
      "description": "What it costs to KEEP, every year."
    }
  }
}
quote_domain annotations
{
  "title": "Check a price (read-only)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

3 advertised

name_my_project — Help me name something

Advertised by the server during the last successful anonymous check.

Get one recommended domain for an idea, checked live and priced, with runners-up and the reasons behind the pick.

concept
What the thing is, in a sentence or two. (required)
endings
Optional preferred endings, e.g. 'com, io, dev'.
vet_a_name — Is this name any good, and can I have it

Advertised by the server during the last successful anonymous check.

Assess one domain name you already have in mind: its measurable properties, then whether it is actually available.

domain
The name to assess, e.g. 'stoff.fit'. (required)
what_will_this_cost — What does this name really cost

Advertised by the server during the last successful anonymous check.

Price a specific domain including the renewal, not just the first year, and surface the traps before anyone commits.

domain
The name to price, e.g. 'stoff.fit'. (required)

Resources

4 advertised

How to read a Scopeweb answer — Interpretation rules

Advertised by the server during the last successful anonymous check.

The evidence-grading rules every answer is governed by. The two that matter most: 'unknown', 'pending' and 'unprobed' are NEVER registration claims, and even 'unregistered' does not mean purchasable. Read this before acting on any availability verdict.

How to read a Scopeweb answer URI
scopeweb://rules/interpretation

MIME type: text/plain

What Scopeweb will and will not claim — Claims and refusals

Advertised by the server during the last successful anonymous check.

The published claims, and the things this service refuses to produce at all (an appraisal is the main one). Useful when deciding whether an answer you want exists here in principle.

What Scopeweb will and will not claim URI
scopeweb://facts

MIME type: text/plain

Wholesale pricing for every supported ending — TLD pricing table

Advertised by the server during the last successful anonymous check.

735 endings with first-year, renewal, transfer and redemption cost, plus whether WHOIS privacy is sold at all. This is where the traps are: endings that renew far above what they register for, endings with no privacy, and a two-year minimum term that makes first_year_cents null rather than computed. Large (about 335 KiB) -- for one ending, call quote_domain instead.

Wholesale pricing for every supported ending URI
scopeweb://pricing/tlds

MIME type: application/json

The tool and endpoint specification — API specification

Advertised by the server during the last successful anonymous check.

The single source this server's tool list is generated from, including every rate-limit ceiling and refusal shape. Read it to see what a tool can answer before calling it.

The tool and endpoint specification URI
scopeweb://spec

MIME type: application/json

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
606 ms
95th percentile latency
606 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 606 ms · metadata changed · refuses unauthenticated resources/templates/list (HTTP 401)

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 scopeweb-mcp https://mcp.scopeweb.io/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 scopeweb-mcp --url https://mcp.scopeweb.io/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start scopeweb-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "scopeweb-mcp": {
      "type": "http",
      "url": "https://mcp.scopeweb.io/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 scopeweb-mcp https://mcp.scopeweb.io/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://mcp.scopeweb.io/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": {
    "scopeweb-mcp": {
      "serverUrl": "https://mcp.scopeweb.io/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Scopeweb MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Scopeweb MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing