{"name":"io.scopeweb/scopeweb","slug":"scopeweb","title":"Scopeweb","description":"Suggest domain names for a concept, rank them, and confirm which are actually free.","url":"https://mcp.market/server/scopeweb","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"seo","tags":["seo"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":1,"ok":1,"last_checked_at":"2026-09-19T19:41:23.807Z","last_ok_at":"2026-09-19T19:41:23.807Z","latency_ms":399},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://scopeweb.io","version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://mcp.scopeweb.io/mcp"}],"packages":[],"tools":[{"name":"audit_domain","description":"Use this when the user asks what is wrong with a site they already own, or wants a name they hold assessed rather than a new one found. Fetch a live domain's observable surface: HTTP status, redirect target, title, meta description, h1 headings and tech hints. Read-only. Cannot spend money. Use to compare what is actually deployed against a spec, or to check whether a domain serves anything at all.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string"}},"required":["domain"]}},{"name":"check_live","description":"⛔ THE LAST GATE, NOT THE FIRST STEP. Use this to CONFIRM a name immediately before acting on it, after suggest_names has generated candidates and score_name has ranked them. It answers only 'is this registered', and it will answer just as confidently for a list you invented as for one this service helped you build -- so a clean result here says nothing about whether the name is any good, or whether a better one sits next to it. If none of the names you pass have been seen by suggest_names or scan_namespace, the response says so and points you back. Use this immediately before you recommend buying anything, and any time an earlier answer said 'unknown', 'pending' or 'unprobed'. Those are never registration claims. Real-time authoritative registration check for up to 10 domains via RDAP. Read-only. Cannot spend money. This is the final gate before recommending a purchase — never rely on cached or older scan results for buying decisions. It answers whether a registration EXISTS, not whether the name can be bought or at what price: reserved and premium names return 404 here too. Registration-only: it does not fetch the site, so it returns 'registered' rather than 'active' or 'dormant'.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string"}}},"required":["domains"]}},{"name":"create_draft","description":"Use this when the user wants a page, site or landing draft for a name and there is nothing to edit yet. Store a draft website in the user's Scopeweb portfolio. Returns a persistent draft_id and a live preview_url. Drafts survive across conversations — use list_drafts in future sessions to resume work. Content is screened on every version; a flagged draft still returns normally here but its preview serves 451.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name_hint":{"type":"string","description":"Working name for the project"},"description":{"type":"string","description":"One paragraph on what this is"},"files":{"type":"array","description":"Site files. index.html required for a browsable preview.","items":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"}},"required":["path","content"]}}},"required":["files"]}},{"name":"fetch","description":"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\".","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"A domain name."}},"required":["id"]}},{"name":"get_draft","description":"Use this before editing a draft you did not create in this conversation, so you are changing the text that actually exists rather than what you remember. Get a draft's metadata and file list, or a single file's content by passing path. Read-only. Cannot spend money. Use to resume work on a draft from a previous conversation.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"draft_id":{"type":"string"},"path":{"type":"string","description":"Optional: return this file's content"}},"required":["draft_id"]}},{"name":"get_finance","description":"Use this before recommending anything with a price, so the numbers you quote are this account's real ones rather than list prices. The fiduciary readout for a project: the budget, per-domain renewal costs, total known carry, how many domains have UNKNOWN renewal costs, and the remaining headroom. Read-only. Cannot spend money. Read `carry_unknown_count` before quoting headroom to anyone: domains held at another registrar renew at that registrar's price list, which we cannot see, so their cost is reported as unknown with `reason: foreign_registrar_pricing` — never guessed, never zero. Where we can price a transfer to us, it appears as `alternative.transfer_in_price` and is explicitly NOT their renewal price. When `partial` is true, headroom is an UPPER BOUND and the true figure is lower.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string"}},"required":["project_id"]}},{"name":"kb_search","description":"Use this to understand how something works before explaining it. Do NOT use it to decide anything: registry policy and registration status come from the dedicated tools, and they win. Semantic search over a small curated corpus: this system's own documentation and methodology, ICANN policy, and per-registry policy documents. Read-only. Cannot spend money. Returns passages with the source, its URL, and what that source may be cited FOR. THIS IS RETRIEVAL, NOT AUTHORITY. A vector search always returns its nearest neighbour, so it always looks confident; nearness is not correctness, and a passage being returned is not evidence that it answers you. Use it to understand how something works. Do NOT use it to decide anything: registry policy comes from GET /tld/:tld/policy, which carries per-field citations and marks unverified fields as unknown, and registration status comes from check_live via RDAP/WHOIS. If those two disagree with a passage here, they win.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string"},"top_k":{"type":"integer"}},"required":["query"]}},{"name":"list_domains","description":"Use this at the start of any portfolio, renewal or 'what do I own' question, before assuming which names the user holds. List the user's domain inventory: every domain with a verification challenge issued or completed, plus cached liveness, classification, title and expiry. Read-only. Cannot spend money. Includes scan_age_ms so a stale verdict is never mistaken for a fresh one. Use before suggesting the user buy anything.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_drafts","description":"List all drafts in the user's Scopeweb portfolio with status, preview URLs and timestamps. Read-only. Cannot spend money. Call this at the start of a session to see existing work.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"quote_domain","description":"Use this when the user has chosen a name and wants the real price. It returns a confirm_url for the human to complete. It is NOT a purchase and you cannot make one. Get a real price for a name you believe is unregistered. Reads prices only. Cannot spend money — there is deliberately no tool in this server that can complete a purchase. Re-runs the authoritative gate first: a name that is registered, or whose status cannot be authoritatively determined, is never quoted. Returns total_cents, renewal_cents, an expiry, and a confirm_url. THE CONFIRM URL IS NOT A PURCHASE — it opens a page where a human must type the domain to authorise the charge. There is deliberately no tool to complete an order. An agent using this surface has no verb that spends, so nothing here needs obeying. Premium names are quoted at their real price or refused; they are never sold at the TLD base rate. An expired quote is re-quoted, never honoured.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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string"}},"required":["domain"]}},{"name":"scan_namespace","description":"Classify an explicit list of candidate domains (max 25). Read-only. Cannot spend money. Use suggest_names instead when you have a concept rather than a list. Returns registered, resolves, serves, parked, classification and liveness for each.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"candidates":{"type":"array","items":{"type":"string"},"description":"Full domain names, max 25."}},"required":["candidates"]}},{"name":"score_name","description":"Use this when the user is choosing between names, or asks whether a name is any good. Not for deciding availability, which is check_live. Grade 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/digits, and TLD perception. Read-only. Cannot spend money. Every component returns its score, weight and basis so the number can be audited rather than trusted. Severe properties CAP the total instead of being averaged away — a name one edit from a major brand cannot score well however short it is. EXPLICITLY NOT a search-ranking prediction: exact-match-domain SEO value has been largely dead since Google's 2012 EMD update and nothing here forecasts how a name will rank. NOT a trademark search: brand_collision is string similarity to a published list, not legal clearance. Components that cannot be measured (zone rarity, trademark) are returned as unavailable with reasons and never estimated.","write_action":false,"price_micros":0,"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"}}}},{"name":"search","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"A word or an idea, for example \"calm inbox\"."}},"required":["query"]}},{"name":"set_budget","description":"Use this when the user states a spending limit for a project. It records their ceiling; it never authorises a purchase. Set a monthly or yearly budget for a project, in cents. Records a number you chose. Cannot spend money and cannot buy anything. The response comes back with the project's CURRENT CARRY and HEADROOM already computed, because a budget with no carry beside it is a number rather than information. Headroom is flagged `partial` whenever the project contains a domain whose renewal price is unknown — a renewal we cannot price is counted as unknown, NEVER as zero, so headroom is an upper bound in that case and real headroom is lower.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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string"},"period":{"type":"string","enum":["monthly","yearly"]},"amount_cents":{"type":"integer"}},"required":["project_id","period","amount_cents"]}},{"name":"show_plans","description":"Use this when the user asks what a tier costs or bumps into a limit, so the answer is this account's actual plan rather than a guess. Show the available plans with what each includes, plus the caller's current tier and any allowance they have used. Read-only. Cannot spend money — it displays pricing and cannot start, change or cancel a subscription. Call this when a refusal names it as the recovery: an allowance is exhausted and the user is deciding what to do about it. PLANS GATE 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. Paying buys more of the picture, never a different answer about reality, so never present an upgrade as a way to get a better verdict.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"suggest_names","description":"★ START HERE when the user is choosing or inventing a name: it returns candidate names across a namespace. 'suggest names', 'help me name X', 'what should we call it', 'find me a domain for Y'. Give it a CONCEPT (a word or short phrase) and it generates and ranks candidates around it, classified by what is actually free. Read-only. Cannot spend money. (Renamed from browse_namespace on 2026-09-09: the old name described the mechanism, so assistants looking for a way to SUGGEST NAMES never matched it and invented candidates from their own heads instead.) Use scan_namespace instead when you already have an explicit list. Follow this with score_name to rank, and check_live LAST as the purchase gate. Re-querying the same scan_id walks deeper into the namespace and converges over about 3 calls. 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"A word, name or idea, e.g. 'stowed'"},"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)"},"offset":{"type":"number","description":"Walk deeper into the expansion"},"scan_id":{"type":"string","description":"Resume a previous browse; replaces query/tlds"}}}},{"name":"update_draft","description":"Use this when a draft already exists and the user asks to change its copy, sections or layout. Call get_draft first if you do not have the current text. Update files in an existing draft. Acts as a patch: files you send are written as a new version, files you omit are carried forward unchanged. Previous versions are retained immutably. Returns the new version and preview_url.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"draft_id":{"type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"}},"required":["path","content"]}}},"required":["draft_id","files"]}},{"name":"verify_ownership","description":"Use this when the user claims a domain is theirs and you are about to act on that claim. Ownership asserted in chat is not ownership; this is how it gets proven. Prove the user owns a domain via a DNS TXT challenge. action 'start' returns the TXT record to publish; action 'check' verifies it. Verification is required before a domain appears in list_domains. A failed DNS lookup returns an error, never 'not owned'.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string"},"action":{"type":"string","enum":["start","check"],"description":"Defaults to 'start'."}},"required":["domain"]}}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-19T19:12:00.488Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:12:00.471Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 690ms"]},"poisoning":{"score":15,"max":15,"notes":["18 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 2 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://mcp.scopeweb.io/mcp","reachable":true,"authRequired":false,"latencyMs":690,"serverInfo":{"name":"scopeweb","version":"0.1.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://scopeweb.io/favicon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}