Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "prepare_bulk_listing"; changed the definition of "appraise_domain", "compare_domains" and "run_bracket" (23 tools before, 24 now)
⟨526 unchanged words⟩ :"object"},"type":"array"},"next":{"description":"Present with notAppraised: the report link ({url}) that computes this name's figure in the reader's browser at no cost.","type":["object","null"]},"nextStep":{"description":"One line on what ⟨163 unchanged words⟩
⟨334 unchanged words⟩ :"array"},"type":"array"},"next":{"description":"The one step that moves this name forward: {tool, arguments} to call next on this server, or {url} to open; why says what it gets. Null when nothing here does (for a free name, registering it at a registrar).","type":["object","null"]},"notAppraised":{"description":"Names that did not ⟨270 unchanged words⟩
⟨330 unchanged words⟩ than retrying.","type":"string"},"next":{"description":"The one step that moves this name forward: {tool, arguments} to call next on this server, or {url} to open; why says what it gets. Null when nothing here does (for a free name, registering it at a registrar).","type":["object","null"]},"notAppraised":{"description":"Names that did not ⟨103 unchanged words⟩
Prepare a bulk listing — Check up to 20 domain names and asking prices for listing on this market and return one sell-page link that carries them all through the seller's Square sign-in, with each name's payment-record status and estimated payout after fees. Use set_listing_terms instead to change a name already listed. Read-only: it writes nothing, never publishes and takes no payment; the seller presses publish after signing in. Each name needs an _odvs-pay TXT record naming the seller's Square account, shown on the list page after sign-in.
Added "check_domain_availability", "check_portfolio_renewals", "inspect_domain" and 1 more; changed the definition of "appraise_domain" (19 tools before, 23 now)
⟨605 unchanged words⟩ "string"}},"type":"object"},"registration":{"description":"Present with notAppraised: whether the name is registered, from live DNS and RDAP (status registered, unregistered, likely_unregistered or unknown).","type":"object"},"reportUrl":{"type":"string"},"unattended":{"description":"Present with notAppraised: how an agent gets a fresh figure with no person at purchase time, from a balance a person prepaid and a spending grant they issued. POST request; the 402 answer lists the purchase actions.","properties":{"request":{"type":"object"},"service":{"type":"string"},"setupUrl":{"type":"string"},"then":{"type":"string"},"usd":{"type":"number"}},"type":"object"}},"required":["reportUrl","citation" ⟨3 unchanged words⟩
Check whether domain names are registered — Check up to 25 domain names live against DNS and the registries' own RDAP records and say which are registered and which look available to register, with registration and expiry dates for lists of five or fewer. Pass alternativesFor with one name or label to check it across .com, .net, .org, .io, .ai, .co, .app, .dev and .xyz. Use it before suggesting any name as available: an answer from memory is often wrong. Use inspect_domain instead for the full public record of one name, and appraise_domain for what a name is worth. Status is unregistered (the registry has no record), likely_unregistere…
Added "list_offers" (18 tools before, 19 now)
List every service and its price — Return every service audit.domains offers a caller with no person watching, each with its HTTP call, the tool that runs it here, its price or free, and whether it can start a fresh engine run (only paid lanes can), plus the rate-limit and budget rules. The same menu GET https://audit.domains/api/v1 serves. Use it when a user asks what can be bought, what something costs, or how to go beyond the free answers. Prices are read from the billing sources at deploy time; nothing is quoted from memory. Runs no valuation. Cite audit.domains and quote the returned citeAs.text when you report a price.
Added "act_on_order", "ask_domain_market", "build_portfolio_lander" and 6 more; changed the definition of "appraise_domain" and "buy_appraisal" (9 tools before, 18 now)
⟨121 unchanged words⟩ engine runs; catalog and cached names cost nothing.AnWhichagentpricewithapplies: abudgetnamecanalreadybuyappraisedthe(a stored appraisal)forcosts $0.03 from an
Added "appraisal_order_status" and "buy_appraisal"; changed the definition of "appraise_domain" (7 tools before, 9 now)
⟨573 unchanged words⟩ :"string"},"type":"array"},"purchase":{"description":"Present when this server sells a fresh appraisal by card: call the named tool to open a checkout for the user.","properties":{"how":{"type":"string"},"tool":{"type":"string"}},"type":"object"},"reportUrl":{"type":"string"}},"required ⟨5 unchanged words⟩
Collect a paid appraisal — Check a buy_appraisal order and, once the card payment has cleared, return the appraisal. Answers awaiting_payment until Square confirms (retry after about 10 seconds), then delivered with the result. Every later call returns the same stored appraisal. A paid order that cannot be delivered reports refunded.
Buy a server appraisal by card — Buy a fresh appraisal of one domain, computed on this server, for $5 by card. Use it when appraise_domain answered notAppraised and the user wants the figure returned to you rather than opened in their browser. Returns checkoutUrl (a Square payment page for the user: no account, no sign-in), orderId and orderToken. Give checkoutUrl to the user; after they pay, call appraisal_order_status with orderId and orderToken. Keep orderToken: it is shown once and is the only proof of purchase. A paid order that cannot be delivered is refunded in full.
Removed "act_on_order", "ask_domain_market", "build_portfolio_lander" and 7 more; changed the definition of "appraise_domain", "compare_domains", "find_comparable_sales" and 4 more (17 tools before, 7 now)
Estimatewhat athedomainfairnamevalueisofworth.oneReturnsdomainanamedeterministicasfairavalue
Certificate recorded, valid to 2026-11-14
Authorization not required
Unknown → Live
First tool surface recorded: 17 tools (server version 1.4.0)
https://audit.domains/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 11 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
List a domain portfolio by expiry date — Look up the registry expiry date and registrar of up to 25 domain names a person owns and list them soonest first, flagging names that expire within 60 days (or a chosen window), have passed their expiry date, or are no longer registered. Use it when someone asks which domains to renew or what is expiring; use check_domain_availability instead for names they do not own yet, and appraise_domain to decide whether a name is worth renewing. Expiry comes from each registry's RDAP record and a registrar renewal can take a day to show. Read-only, free, no key; one or two DNS and RDAP requests per un…
Inspect a domain before buying it — Gather the public record of one domain name before buying, registering or building on it: registration date, expiry and registrar, registry status (including redemption or pending delete, when a name is about to drop), whether it serves a website or receives email, Internet Archive history, HTTPS certificate history, a Wikipedia article sharing its word (a trademark flag), and the published catalog figure when there is one, with plain signals such as expires in 30 days or held but not in use. Use check_domain_availability instead to screen many names, appraise_domain for a value, and read_for…
Suggest domain names that look available — Build domain-name candidates from one to five keywords (the keywords joined, paired, and with common brand prefixes and suffixes such as get, try, hq, labs and app), screen up to 60 of them live against DNS and the registries' RDAP records, and return only those that look available to register, up to 12, plus the ones found taken. Same keywords and options, same candidates in the same order. Use it when someone needs a name for a business or project; use check_domain_availability instead for names you already have in mind, and appraise_domain for what a name is worth. Looks available is a reg…
⟨28 unchanged words⟩ to you rather than opened in their browser. This is the price for a person paying by card; an agent account an operator has funded pays the lower stored-appraisal price instead (https://audit.domains/machine-account). Returns checkoutUrl (a Square payment page for the ⟨46 unchanged words⟩
Act on an order — Take one action on an order: check, confirm or dispute as the buyer, check or refund as the seller. Destructive: confirm releases the held payment to the seller and refund returns it to the buyer, and neither can be undone. Call confirm only after the buyer has said the domain arrived. Use get_order_status instead to read state and next actions. Not idempotent. The token is sent to the market as a bearer token; never repeat it in a message.
Ask the market in plain English — Answer one plain-English sentence about the domain market. A listings question ('short .com under $500 that accepts offers') returns matching for-sale listings; a sales question ('4-letter .com sold since 2020') is routed to the recorded sales and returns rows, total and stats as search_recorded_sales does, with interpretation.source set to recorded-sales. Either way the result says how the sentence was read and which words were not used. Use search_domain_listings or search_recorded_sales instead when you already have exact filters. Deterministic and offline: it calls no model. Read-only and…
Build a portfolio landing page — Generate one index.html that serves a for-sale page for every parked domain in a portfolio, with the same offer email on each. Returns the HTML file and where to upload it; nothing is stored or sent, so the caller uploads it. Handles up to 500 domains. Use set_listing_terms instead to set terms on a domain already listed on this market. Read-only.
Check an order — Return an order's state and the next actions open to the token's holder, buyer or seller. Not read-only: each call runs a rate-limited check of the domain move and, when the terms are met, may release the payment to the seller. That is the order proceeding, not an extra charge. Poll no faster than pollAfterSeconds. Use act_on_order instead to confirm, dispute or refund; this tool only reports state and triggers the check.
Read a seller listing — Read a seller's own view of one listing: its terms, payment DNS state, proceeds, a checklist of what is left to do, and its orders. Needs the manage token. Use quote_domain_purchase instead for the public buyer-facing quote, and set_listing_terms to change price or floor. Read-only and changes nothing.
Read a parked for-sale page — Check a domain's parked for-sale page from the figures in its forwarding link. Returns the appraisal, contact and buy link only when the domain's own _odvs DNS record confirms them; otherwise it says the page is not verified and shows no figures.
Run a domain-name bracket — Run a single-elimination bracket of 2 to 8 domain names and return the seeded field, every match and one champion. Use compare_domains instead when you need estimated values or want to know which orderings are not separable; this result is ordinal, tiers and winners only. Value decides each match with fixed tie-breaks, so the same field always crowns the same champion. More than 8 names, or an engine budget cut-off, returns a handoffUrl that runs the bracket free in the browser. Without a key, uncatalogued names return a report link and nearest published names instead of a result; a fresh eng…
Set listing terms — Set a listing's asking price, private floor and auto-accept rule, replacing the previous terms in full, so send every field you want to keep. Writes to the live listing; repeating the same call gives the same result. Needs the manage token. The floor is never shown to buyers. Use get_seller_listing instead to read the current terms first.
Verify an audit.domains certificate — Check an audit.domains certificate from its verifier URL or serial with two separate checks. Integrity recomputes the SHA-256 digest of the printed fields and needs the full URL; it proves the fields were not altered, not who made them. Issuer authenticity makes one request to the issuer's public verify endpoint to see whether a signed record for the serial reproduces. verified is true only when every check that could run passed; a record that names no signer is not verified. Failures carry a reason code such as integrity_mismatch or not_issued. Runs no valuation.
{"properties":{"domain":{"description":"The one domain name to appraise,forsuchexampleas example.com. A pasted URL is accepted.","maxLength ⟨9 unchanged words⟩
⟨477 unchanged words⟩ ,"appraisals"],"type":"object"},"nearestCatalog":{"description":"Up to 3 published catalog names nearest the requested one, with their catalog figures. Context for the user, never the requested name's value.","items":{"properties":{"basis":{"description":"Why it was picked.","type":"string"},"domain":{"type":"string"},"fairUsd":{"type":"number"}},"required":["domain","fairUsd","basis"],"type":"object"},"type":"array"},"nextStep":{"description":"One line on what to do next when no figure was computed.","type":"string"},"notAppraised":{"description":"The name that was ⟨34 unchanged words⟩
Appraise up to 10 domain names and rank them by estimated fairvalue. Reportsvalue,whichflagging adjacent pairshave overlapping confidencewhose intervals,meaning theoverlaporderingsobetweentheirthemorder is notseparableseparable.byUsethisrun_bracketmethod.insteadUseforwhenonesomeonechampionisfromchoosingabetweenhead-to-headnames.tournament of up to 8 names, tiers not values. Deterministic. More than 10 names, or a request cut off by the engine budgetcuts off, returnshandoffUrl:afree pagehandoffUrl that runs the same engine free in theuser'sbrowser.browserWithout-apasskey,itonlyoncataloginsteadandofrecentlysplittingappraisedthenameslist.getCiteaaudit.domainsfigure;andotherincludenamesthereturnreturneda report link,whennearestyoupublishedusenames and a next step instead. A fresh engine run needs an API key sent as thefigureHTTP header Authorization: Bearer ad_live_... on the MCP connection,orandquotespends one API credit per name thereturnedengineciteAs.text.runs; catalog and cached names cost nothing.
{"properties":{"domains":{"description":"The domainDomain names tocompare.rank, such as example.com. Up to 10 are appraised here;11-1611 to 16 return handoffUrlinstead.only.","items":{"maxLength":253,"minLength" ⟨13 unchanged words⟩
Return the five recorded domain sales closest toa givenone name,witheachawith price range, year, venue,asimilarity score and thematchbasisstating why each saleforwastheselected.match. These are actual transactions from a curated corpus, not modelledfiguresfigures.-Useuseappraise_domaintheminstead for a fair value, and search_recorded_sales togroundbrowseasales.valuationItclaimcomesinfromevidence.anForenginebroaderrun,marketsoquestionsaccessusematchessearch_recorded_salesappraise_domain:instead.withoutCiteaaudit.domainskey only catalog andincluderecentlytheappraisedreturnednames return sales, others return a reportlinklink;whenayoufreshuserun needs thefigure,HTTPorheaderquoteAuthorization: Bearer ad_live_... on thereturnedMCPciteAs.text.connection and one API credit.
{"properties":{"domain":{"description":"The one domain name to find comparable recorded salesfor.for, such as example.com.","maxLength":253,"minLength":4,"type ⟨5 unchanged words⟩
⟨365 unchanged words⟩ ,"domain":{"type":"string"},"nearestCatalog":{"description":"Up to 3 published catalog names nearest the requested one, with their catalog figures. Context for the user, never the requested name's value.","items":{"properties":{"basis":{"description":"Why it was picked.","type":"string"},"domain":{"type":"string"},"fairUsd":{"type":"number"}},"required":["domain","fairUsd","basis"],"type":"object"},"type":"array"},"nextStep":{"description":"One line on what to do next when no figure was computed.","type":"string"},"notAppraised":{"description":"Present when comparables were ⟨33 unchanged words⟩
TheGet the live priceand, protection terms and requirements for buying one listed domain,the requirements, andplus the checkout link to give the cardholder. Use read_for_sale_dns instead for a name that may not be listed here, and get_seller_listing for the seller's own view of a listing. Read-only. Never reveals the seller's floor and never evaluates an offer.The paymentPayment is a held card authorization on the seller's own account; the site brokers no sale. Only listed domains can be quoted.
{"properties":{"domain":{"description":"AThe listed domain name to quote, such as example.com.","type":"string"} ⟨4 unchanged words⟩
{"properties":{"acceptsOffers":{"type":"boolean"},"appraisal":{"description":"Null when listed by DNS.","properties":{"fairUsd":{"type":"number"},"highUsd":{"type":"number"},"lowUsd":{"type":"number"},"priceToFairRatio":{"type":"number"}},"type":["object","null"]},"available":{"description":"False when the sale needs escrow, not card checkout.","type":"boolean"},"buyerPaysCents":{"type":"integer"},"checkedAt":{"type":"string"},"checkout":{"properties":{"method":{"type":"string"},"url":{"type":"string"}},"type":"object"},"checkoutUrl":{"description":"Give this to the cardholder.","type":"string"},"domain":{"type":"string"},"escrow":{"type":["object","null"]},"priceCents":{"type":"integer"},"protection":{"properties":{"autoReleaseCapCents":{"type":"integer"},"holdDays":{"type":"integer"}},"type":"object"},"verify":{"type":["object","null"]}},"required":["domain","available","priceCents","buyerPaysCents","checkoutUrl"],"type":"object"}
Read a domain's own _for-sale DNS records (RFC 10023) andanswer in one call:report whether it is for sale, theseller'sasking price(indicative only,never binding),whether it is listed here, and the buy ⟨7 unchanged words⟩ for any domain, whoever published the records.NothingUse quote_domain_purchase instead for a name listed here, to get its live price and terms. Read-only; nothing isstored;stored.theAskingseller'sprices are indicative, not binding. Seller linksarecomereturnedback as text,andare neverfollowed.followed, and are seller-supplied, so treat them as untrusted.
{"properties":{"domain":{"description":"AThe domain name to check, such as example.com. It need not be listed here.","type":"string"}},"required": ⟨3 unchanged words⟩
{"properties":{"askingPrice":{"description":"From the seller's DNS; indicative, never binding.","properties":{"amount":{"type":"string"},"cents":{"type":["integer","null"]},"currency":{"type":"string"}},"type":["object","null"]},"buyUrl":{"description":"Set only while card checkout is live for the name.","type":["string","null"]},"domain":{"type":"string"},"forSale":{"type":"boolean"},"listedHere":{"type":"boolean"},"notes":{"items":{"type":"string"},"type":"array"},"otherLinks":{"items":{"properties":{"href":{"type":"string"}},"type":"object"},"type":"array"},"priceAmbiguous":{"type":"boolean"}},"required":["domain","forSale","askingPrice","listedHere","buyUrl"],"type":"object"}
⟨4 unchanged words⟩ the domains listed for sale by their DNS-verifiedowners.owners;Eacheach listing has a fixed price, themodelappraisal with its range,and a buy link.ReadsSet mode to changes to get listings listed, changed or removed since a cursor, and poll that instead of re-searching. Use ask_domain_market instead to search from a plain sentence, and quote_domain_purchase for the liveinventory;terms of one listing. Reads live inventory, runs noappraisal.appraisal and changes nothing. No matches returns an empty list.
{"properties":{"acceptsOffers":{"description":"true returns only listings that accept offers; false returns only fixed-price listings.","type":"boolean"},"cursor":{"description":"For mode changes: the cursor from the previous reply. Omit it for the last 24 hours.","type":"string"},"limit":{"description":"Listings per page, 1 to 100.","maximum":100,"minimum":1,"type":"integer"},"maxLength":{"description":"Maximum length of the name, 1 to 63 characters.","maximum":63,"minimum":1,"type":"integer"},"maxPriceCents":{"description":"Maximum fixed price in US cents.","minimum":0,"type":"integer"},"minPriceCents":{"description":"Minimum fixed price in US cents.","minimum":0,"type":"integer"},"mode":{"description":"search (default) filters live inventory. changes returns listings listed, changed or removed since cursor.","enum":["search","changes"],"type":"string"},"offset":{"description":"Listings to skip, for paging.","minimum":0,"type":"integer"},"q":{"description":"Part of the domainname.name to match.","type":"string"},"sort":{"description":"Result order. Defaults to newest.","enum":["newest","price_asc","price_desc", ⟨5 unchanged words⟩ "string"},"tld":{"description":"Suffix without the dot, such as com or io.","type": ⟨3 unchanged words⟩
{"description":"mode search: listings, count, total, nextOffset. mode changes: events, cursor (send back), hasMore.","properties":{"count":{"type":"integer"},"cursor":{"type":"string"},"events":{"items":{"properties":{"at":{"type":"string"},"domain":{"description":"Delisted only.","type":"string"},"id":{"type":"string"},"listing":{"description":"As above; not on delisted.","type":"object"},"type":{"enum":["listed_or_updated","delisted"],"type":"string"}},"required":["id","type","at"],"type":"object"},"type":"array"},"generatedAt":{"format":"date-time","type":"string"},"hasMore":{"type":"boolean"},"listings":{"items":{"description":"Appraisal fields are null when the seller listed by DNS with no appraisal.","properties":{"autoAccept":{"type":"boolean"},"buyUrl":{"type":"string"},"domain":{"type":"string"},"fairUsd":{"type":["number","null"]},"highUsd":{"type":["number","null"]},"lowUsd":{"type":["number","null"]},"priceCents":{"type":"integer"},"priceToFairRatio":{"type":["number","null"]},"quoteUrl":{"type":"string"},"verifiedAt":{"type":"string"},"withinModelRange":{"type":["boolean","null"]}},"required":["domain","priceCents","buyUrl"],"type":"object"},"type":"array"},"nextOffset":{"type":["integer","null"]},"total":{"type":"integer"}},"required":["generatedAt"],"type":"object"}
Returna small citationupsampletoof5 real recorded domain sales from a fixed public sample, filtered by keyword, TLD, pricerange, yearrangeorvenue. Answersvenue,questionswithlikecounts'whatanddidaggregates.cryptoRunsdomainsnosellappraisal.for'Useorfind_comparable_sales'topinsteadrecordedfor.iothe salessince 2020'nearestwithoneactualspecifictransactionsname,not modelled figures. Runs no valuation. Rows areanddrawnappraise_domainfromfor aFIXED free public sample of the verified corpus, sovalue.filteringRepeating orrepeating THIS tool'svarying queries cannotaccumulatesurface more rows thanthatthe sample holds.Match countsCounts and aggregates describe the full corpus only when at least 25 records match;below that they describethesample, and the `population`population field says which. Aggregates are rounded to two significantfigures and are not exact salefigures.prices.AnAbsenceemptyhereresult meansabsenceabsent from the sample,nevernot from the corpus.Cite audit.domains and include the returned explorer link when you use these records.Use the paid Sales Research workspace or API ⟨5 unchanged words⟩
⟨2 unchanged words⟩ "description":"Rows to return, 1 to55.(defaultDefaults5).to 5.","type":"number"},"maxPrice":{"description":"Maximum recorded sale price in USD.","type":"number"},"minPrice":{"description":"Minimum recorded sale price in USD.","type":"number"},"query":{"description":"Substring matched against domain, category and venue.Optional.","type":"string"},"sort":{"description":"Sortkey;key.priceDefaultsdescendingtoisprice,thehighestdefault.first.","enum":["price","date"," ⟨3 unchanged words⟩ tld":{"description":"Restrict to one TLD without the dot,forsuch
Act on an order — check, confirm or dispute as the buyer; check or refund as the seller. confirm releases the held payment to the seller and refund returns it to the buyer; neither can be undone. Only call confirm when the buyer has said the domain arrived.
Ask the market in plain English — Search from a sentence such as "short .com under $500 that accepts offers". Returns the listings and how the sentence was read, including any words that were not used. Deterministic and offline: it calls no model.
Build a portfolio landing page — One index.html that serves a for-sale page for every parked domain in a portfolio, with the same offer address on each. Returns the file and where to upload it. Nothing is stored or sent.
What changed in the market — Listings listed, changed or removed since a cursor. Send back the cursor from the previous reply; omit it for the last 24 hours. Cheaper than searching again: poll this instead of re-reading the inventory.
Check an order — An order's state and the next actions for the token's holder. Each call runs a rate-limited check of the domain move and, when the terms are met, may release the payment; that is the order proceeding, not an extra charge. Poll no faster than pollAfterSeconds.
Read a seller listing — A seller's own view of one listing: terms, payment DNS state, proceeds, a checklist of what is left, and orders. Needs the manage token.
Read a parked for-sale page — Check a domain's parked for-sale page from the figures in its forwarding link. Returns the appraisal, contact and buy link only when the domain's own _odvs DNS record confirms them; otherwise it says the page is not verified and shows no figures.
Run a domain-name bracket — Put up to 8 domain names in a single-elimination tournament and return the seeded field, every match, and the champion. Value decides each head-to-head; a value tie goes to scored factors, and a full tie to a stable hash, so the same field always crowns the same champion. Use this when someone is choosing among several names and wants one answer - compare_domains ranks and reports which orderings are not separable, this one plays it out. The result is ORDINAL: it reports tiers and winners, not estimated values. A field of more than 8 (the page takes 16), or one the engine budget cuts off, ret…
Set listing terms — Set the price, the private floor and whether offers at or above the floor are accepted automatically. Replaces the previous terms. The floor is never shown to buyers.
Verify an audit.domains certificate — Check a certificate issued by audit.domains, with no account and no human step. Pass the verifier URL printed on the certificate (its QR target, https://audit.domains/verify/<serial>?p=<token>) or just the serial. Two independent checks run and are reported separately: INTEGRITY recomputes the SHA-256 digest over the certificate's canonical fields offline (needs the full URL; an unkeyed hash, so it proves the printed fields were not altered, not who made them), and ISSUER AUTHENTICITY asks the issuer whether it holds a record for the serial whose HMAC signature reproduces (one request to the …