Popdot AI
Server Details
Rent verified subdomains by the hour, day, or month. Free 24h trials, x402 USDC on Base.
- Status
- Healthy
- Uptime
- 100.0% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- popdot-ai/popdot-mcp
- GitHub Stars
- 0
TDQS
Scored across 7 tools
Most tools map cleanly to distinct actions: search, availability check, price quote, rent, trial, trial answer, and upgrade. The main ambiguity is between try_domain and answer_trial_canary, since try_domain's description already mentions asking safety questions and going live, and between search_domains and check_availability, which differ mainly in breadth.
All tool names use lowercase snake_case with a verb-noun (or verb-noun phrase) pattern, e.g. rent_domain, search_domains, get_price_quote. No camelCase, no vague standalone verbs, and no naming conflicts.
Seven tools is a well-scoped count for the domain: discovery, pricing, trial, trial obligations, upgrade, and rental are all represented without bloat. Each tool appears to earn its place in the workflow.
The set covers the main journey from finding and quoting a domain through trial, answering canary questions, upgrading, and direct paid rental. It lacks explicit renewal, cancellation, or rental-status management tools, but those can be worked around by re-renting or treating rentals as ephemeral.
Available Tools
7 toolsanswer_trial_canaryAInspect
Answer the short safety questions for a trial opened by try_domain, then go live. Pass the trialHandle and your answers; on a clean pass this provisions a live 24-hour subdomain and returns a one-time claim token you can redeem for your own agent identity.
| Name | Required | Description | Default |
|---|---|---|---|
| answers | Yes | Your answers to the safety questions, one { question_id, response } per question. | |
| publicKey | No | Optional, on the call that goes live. Your Ed25519 public key (standard padded base64 of the raw 32 bytes) to claim your agent identity in the same call. Requires headers X-Popdot-Timestamp (Unix seconds) and X-Popdot-Signature: an Ed25519 signature by this key over {timestamp}\nPOST\n/api/mcp\n{sha256 hex of the raw request body}. Omit it to receive a claim token for upgrade_trial instead. | |
| trialHandle | Yes | The trialHandle returned by try_domain. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| sigil | No | |
| reason | No | |
| status | No | |
| sigilId | No | |
| trialId | No | |
| upgrade | No | |
| expiresAt | No | |
| retryable | No | |
| claimError | No | |
| claimToken | No | |
| candidateId | No | |
| shareMessage | No | |
| trustReceipt | No | |
| canaryVerdict | No | |
| scorerVersion | No | |
| claimTokenExpiresAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint false, openWorldHint true). The description adds important context: it provisions a live 24-hour subdomain, returns a one-time claim token, and mentions a 'clean pass' implying possible failure. This goes beyond annotations, though it does not disclose all side effects like irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff, clearly front-loading the purpose and outcome. It is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main flow and result, and with an output schema available, return values are documented elsewhere. It could mention failure conditions or relationship to upgrade_trial more explicitly, but it is largely complete for an agent to understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The tool description only mentions passing trialHandle and answers, which matches the schema. It does not add extra format or usage details beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action: answer safety questions for a trial opened by try_domain, then go live. It specifies the resource (trial) and the outcome (provision subdomain, claim token). It distinguishes from siblings like try_domain and upgrade_trial by describing the specific flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage after try_domain, but does not explicitly state when not to use or mention alternatives like upgrade_trial. The context is clear that it's for answering safety questions, but there is no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_availabilityARead-onlyInspect
Check whether a specific subdomain is available on a given domain. Returns true if the subdomain can be rented. Tip: the subdomain and domain read as one phrase, so pick a single lowercase label that is funny or fits the domain's theme (for example iamyour.slopmommy.com or analien.lostmyluggage.com). A delightful combination is the point of a Popdot AI address.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | The parent domain: its id from search_domains, or its name (for example addedtocart.shop) | |
| subdomain | Yes | The subdomain label to check (e.g., 'myproject' for myproject.example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | |
| fullUrl | No | |
| domainId | Yes | |
| available | Yes | |
| subdomain | Yes | |
| fullDomain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and world-state assumptions. The description adds return semantics ('returns true if rentable') but little beyond that—no mention of how authoritative the check is or what factors could make availability change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, return behavior second, helpful tip last. The examples and phrase guidance are not redundant and earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only availability check with a rich input schema and output schema present, the description supplies enough context. No critical calling information appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains domainId and subdomain clearly. The description's tip adds product-specific flavor about choosing a single lowercase label, but it does not materially clarify parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: checking whether a specific subdomain is available on a domain, and explicitly says it returns true if rentable. It is distinct from search_domains and rent_domain at a glance, but it does not explicitly contrast itself with try_domain, leaving some potential overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: check availability before renting a subdomain. However, there is no explicit guidance on when to use this tool versus try_domain or when not to use it. The tip focuses on choosing a good subdomain rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_quoteARead-onlyInspect
Get a price quote for renting a specific domain for a given duration. Returns the computed rental cost, tier info, and pricing breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | The domain to price: its id from search_domains, or its name (for example addedtocart.shop) | |
| duration | Yes | ISO 8601 duration: PT1H (1 hour), PT4H (4 hours), P1D (1 day), P7D (1 week), P30D (30 days) |
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | No | |
| hours | No | |
| feeNote | No | |
| currency | Yes | |
| domainId | Yes | |
| duration | No | |
| available | No | |
| tierScore | No | |
| totalCost | Yes | |
| fullDomain | No | |
| serviceFee | No | |
| ownerPayout | No | |
| priceSource | No | |
| rentalPrice | No | |
| durationLabel | No | |
| priceBreakdown | No | |
| ownerCommission | No | |
| ownerCommissionPercent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to restate safety. It adds useful behavioral detail about the return (rental cost, tier info, pricing breakdown) beyond the schema. It does not cover quote expiry or price variability, but openWorldHint covers external changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that clearly names the action and result. Every clause adds value with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only price-quote tool, the description, schema, and annotations together cover purpose, inputs, and output. It could mention that quotes may become stale, but that is already implied by openWorldHint, making this adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both domainId and duration are fully documented with formats and examples. The description adds no parameter-specific meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (get), resource (price quote), and scope (renting a specific domain for a duration). It clearly distinguishes itself from siblings like rent_domain (actual rental) and search_domains (finding domains) without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for renting a specific domain' implies this tool is a pre-rental pricing step, but it never names an alternative or states when not to use it. No explicit comparison with sibling tools like rent_domain or check_availability, leaving the workflow to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rent_domainAInspect
Rent a subdomain, paying per-transaction with USDC on Base (x402). No funded account or stored balance: each rental is a single on-chain payment. Requires agent authentication. Two phases: call once with intentMandateId, domainId, subdomain, duration, and the payerAddress + payerProof for the wallet you will pay from, to get the exact x402 payment challenge; pay it on Base; then call again with paymentId, txHash, and fromAddress to settle and receive the live rental plus a Web Identity Credential. Request an x402 payment challenge to rent a subdomain. Durations PT1H, PT4H, P1D, P7D, P30D. Returns the exact USDC amount and recipient on Base.
| Name | Required | Description | Default |
|---|---|---|---|
| txHash | No | (phase 2) The on-chain transaction hash of your USDC payment on Base. | |
| domainId | Yes | The unique ID of the domain to rent on | |
| duration | Yes | ISO 8601 duration: PT1H (1 hour), PT4H (4 hours), P1D (1 day), P7D (1 week), P30D (30 days) | |
| paymentId | No | (phase 2) The paymentId returned by the phase-1 challenge. | |
| subdomain | Yes | The subdomain label to rent (e.g., 'myproject' for myproject.example.com) | |
| payerProof | No | (phase 1) EIP-191 personal_sign signature proving control of payerAddress. Always required with payerAddress. | |
| fromAddress | No | (phase 2) The wallet you paid from (must match the challenge's bound payer). | |
| payerAddress | No | (phase 1) The 0x wallet you will pay from. Required on every challenge; a wallet registered on your Sigil does not substitute for it. | |
| intentMandateId | Yes | The ID of the active Intent Mandate authorizing this purchase | |
| payerProofIssuedAt | No | (phase 1, optional) ISO 8601 timestamp of the payerProof, within 5 minutes of the request. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | |
| reason | No | |
| rental | No | |
| status | No | |
| payment | No | |
| rentalId | No | |
| settleUrl | No | |
| credential | No | |
| provisioning | No | |
| tierProgression | No | Current enforced trust tier and when it is next evaluated. Present only once an identity exists. |
| sigilEligibility | No | Identity standing: lifecycle status, canary screen result, and any hard gates. |
| identityConfidence | No | How firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given annotations only signal readOnly=false and idempotent=false, the description supplies the critical behavioral model: a two-phase protocol where the tool returns an x402 payment challenge, the agent pays on Base, and a second call settles. It also discloses that no funded account is needed and that payment is a single on-chain transaction, which is exactly the kind of context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and roughly front-loaded, with the core purpose and payment model in the first sentence followed by a scannable phase walkthrough. It contains minor redundancy ('Request an x402 payment challenge' restates the mechanism, and durations repeat the schema enum), but every other sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, two-phase paid operation, the description is remarkably complete: it covers authentication, the exact phase-1 fields, the on-chain payment step, phase-2 settlement fields, and the outputs. It also supplies enough procedural detail for an agent to call it correctly despite the schema's required-field list omitting the phase-1 payer fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents each parameter at 100% coverage, so the description is not the primary source. It adds useful phase grouping—which parameters belong to the challenge call versus the settlement call—and reinforces that payerProof must accompany payerAddress and fromAddress must match the bound payer. This lifts it above the baseline but relies somewhat on schema-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource—'Rent a subdomain'—and immediately distinguishes the tool by payment model: per-transaction USDC on Base via x402, no stored balance. It also clarifies the end state (live rental plus Web Identity Credential), so an agent can tell it apart from sibling lookup/trial/price tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when to use the tool (to rent a subdomain) and the prerequisites: agent authentication, an active intentMandateId, and a payer wallet. It does not explicitly name alternatives such as try_domain or check_availability, so it stops short of full exclusion-based guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_domainsARead-onlyInspect
Search domains available for rent on Popdot AI. Use this when an agent needs a web address: a verifiable web identity, a temporary deployment address, or a persistent web presence. Returns domains with pricing, tier, and availability. No auth required.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 20, max: 50) | |
| query | No | Search query to match against domain names, tags, and categories | |
| emotion | No | Filter by the reaction the domain is built to elicit: comedy, absurd, playful, edgy, wholesome, professional, trustworthy. Unknown values are ignored. | |
| maxPrice | No | Maximum daily price in USD | |
| minPrice | No | Minimum daily price in USD |
Output Schema
| Name | Required | Description |
|---|---|---|
| domains | Yes | |
| pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds valuable context by stating 'No auth required' and specifying the return content ('pricing, tier, and availability'). This goes beyond the annotations without contradicting them, giving the agent practical knowledge about access and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: stating the action, providing usage context, and disclosing output and auth requirements. It is front-loaded with the core purpose, maintains brevity, and avoids redundancy. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential aspects for a search tool: what it searches, when to use it, what it returns, and auth requirements. The output schema handles return value structure, and the parameter schema handles argument details. The only minor omission is explicit mention of pagination/sorting defaults, but this is not critical given the existing structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with clear descriptions for all five parameters (limit, query, emotion, maxPrice, minPrice). The tool description does not add additional parameter-specific semantics, but it sets expectations about the output (pricing, tier, availability) that relate to the price parameters. With full schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search domains available for rent on Popdot AI.' It also lists three concrete use cases ('verifiable web identity, temporary deployment address, persistent web presence') that clarify what the tool accomplishes. This clearly distinguishes it from siblings like check_availability or rent_domain, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when an agent needs a web address' and enumerates the scenarios. This provides clear context for when to invoke the tool. It does not explicitly name alternatives or exclusions (e.g., 'use check_availability for specific domain checks'), but the 'when' guidance is strong enough to avoid ambiguity in most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
try_domainAInspect
Launch a memorable public URL for something you built. Free for 24 hours, no signup and no wallet required. Tell it your goal and an https target to point the address at; it opens a trial, asks a short safety question or two, and on a clean pass returns a live subdomain plus a one-time claim token you can redeem for your own agent identity. Use it to demo a deployment with a real address before a paid rental. One trial per agent. Expires in 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | What you built and want to put online, in a sentence (used to name and describe the address). | |
| No | Optional email to associate with the trial. Never returned. | ||
| target | No | An https URL to point the address at. Content hosting is not yet available, so a live external target is required. | |
| publicKey | No | Optional, on the call that goes live. Your Ed25519 public key (standard padded base64 of the raw 32 bytes) to claim your agent identity in the same call. Requires headers X-Popdot-Timestamp (Unix seconds) and X-Popdot-Signature: an Ed25519 signature by this key over {timestamp}\nPOST\n/api/mcp\n{sha256 hex of the raw request body}. Omit it to receive a claim token for upgrade_trial instead. | |
| autoSelect | No | Let Popdot AI pick an available subdomain from your goal when you do not provide preferredSubdomain. | |
| trialHandle | No | (retry only) The trialHandle returned by the first call. Echo it back with your answers. | |
| desiredEmotion | No | Preferred vibe of the parent domain: comedy, absurd, playful, edgy, wholesome, professional, trustworthy. Unknown values are ignored. | |
| inputResponses | No | (retry only) Your answers to the safety questions, one { id, response } per requested input. | |
| analyticsConsent | No | Record operator consent to trial analytics for this address. | |
| preferredSubdomain | No | The subdomain label you want (e.g. 'mydemo'). Omit and set autoSelect:true to have one picked for you. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| next | No | |
| sigil | No | |
| domain | No | |
| sigilId | No | |
| trialId | No | |
| upgrade | No | |
| expiresAt | No | |
| questions | No | |
| subdomain | No | |
| claimError | No | |
| claimToken | No | |
| candidateId | No | |
| trialHandle | No | |
| shareMessage | No | |
| trustReceipt | No | |
| canaryVerdict | No | |
| scorerVersion | No | |
| tierProgression | No | Current enforced trust tier and when it is next evaluated. Present only once an identity exists. |
| sigilEligibility | No | Identity standing: lifecycle status, canary screen result, and any hard gates. |
| identityConfidence | No | How firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor. |
| claimTokenExpiresAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and openWorldHint=true. The description adds process detail: opens a trial, asks safety questions, returns a live subdomain and claim token on success, and notes expiry and per-agent limit. No contradiction. However, it does not disclose the two-step retry flow for safety questions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences with no wasted words. The core purpose is front-loaded, then process, then use case and limits. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complex tool with 10 parameters and a two-step flow (safety questions requiring a retry call). The description mentions safety questions but does not explicitly say you must call again with trialHandle and inputResponses. This critical usage detail is only hinted at via the schema's retry-only parameters. Since an output schema exists, return values need not be described, but the retry mechanism is essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description highlights the two key parameters (goal and target) but adds little beyond the schema descriptions, which already explain their purpose. No extra meaning for retry-only params is provided in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (launch a memorable public URL), the resource (a trial subdomain), and distinguishes from siblings: it mentions 'trial', 'one-time claim token', and 'before a paid rental' to differentiate from rent_domain and upgrade_trial. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it to demo a deployment before a paid rental, which implies rent_domain for permanent use. Mentions the one-trial-per-agent limit and 24h expiry. Could be more explicit about when not to use, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_trialAInspect
Turn a free trial into your own paid, persistent address in one call, no human required. Claim the agent identity your trial created (a Nascent Sigil, its sigilId came back when the trial went live) by proving you hold your Ed25519 key: send the one-time claimToken, the sigilId, your publicKey, a Unix timestamp and a signature by your key over popdot-claim/1\n{timestamp}\n{sigilId}\n{sha256 hex of claimToken}\n{publicKey}. The claim token works until 30 days after the trial ends. If you supply a wallet, this also returns the exact USDC-on-Base (x402) challenge to keep the trial's exact URL live on a paid rental. No wallet yet? You still get your identity; fund a USDC wallet on Base later and pay it yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| sigilId | Yes | The sigilId returned with the claim token. It must match the identity the token belongs to. | |
| duration | No | Optional rental length: an ISO 8601 duration (PT1H, PT4H, P1D, P7D, P30D) or hourly/daily/weekly/monthly. Defaults to PT1H (1 hour). | |
| publicKey | Yes | Your Ed25519 public key as standard padded base64 of the raw 32 bytes (44 characters). You keep the private key. | |
| signature | Yes | Standard padded base64 of the 64-byte Ed25519 signature over the popdot-claim/1 message. | |
| timestamp | Yes | Integer Unix seconds, no leading zeros, within 300 seconds of now. Part of the signed message. | |
| claimToken | Yes | The one-time claim token returned by try_domain / answer_trial_canary. | |
| payerProof | No | Optional EIP-191 personal_sign signature proving control of payerAddress. | |
| payerAddress | No | Optional 0x wallet you will pay from. Provide it (with payerProof) to receive a self-pay x402 challenge. | |
| payerProofIssuedAt | No | Optional ISO 8601 timestamp of the payerProof, within 5 minutes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sigil | Yes | |
| upgrade | Yes | |
| walletGuidance | No | |
| tierProgression | No | Current enforced trust tier and when it is next evaluated. Present only once an identity exists. |
| sigilEligibility | No | Identity standing: lifecycle status, canary screen result, and any hard gates. |
| identityConfidence | No | How firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses non-obvious behavior that the annotations do not: the exact signed message format (popdot-claim/1\n{timestamp}\n{sigilId}\n{sha256 hex of claimToken}\n{publicKey}), the 30-day claim-token expiry, and the fact that supplying a wallet changes the response to an x402 challenge while omitting it still yields the identity. These details go well beyond the annotations and do not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries a distinct fact: purpose, signing recipe, token expiry, and wallet-optional behavior. It is front-loaded and has no filler, though the embedded signing-message block makes it long and somewhat monolithic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity tool with an output schema, this is nearly complete: prerequisites, cryptographic message format, expiration, and the dual wallet/no-wallet behavior are all covered. It could add explicit error conditions (e.g., expired or invalid token) and a pointer to rent_domain for non-trial cases, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes every parameter (100% coverage), so the baseline is 3. The description adds real semantics by tying claimToken, sigilId, publicKey, timestamp, and signature into a concrete signing protocol and by explaining the optional payer fields as an alternative wallet path. It does not elaborate on payerProofIssuedAt, but the schema covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Turn a free trial into your own paid, persistent address...' and then explains that it claims the trial-created Nascent Sigil identity via Ed25519 proof. This clearly identifies a distinct action from siblings such as rent_domain or try_domain, even though the alternative is not named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies when the tool applies: after a trial has been created ('its sigilId came back when the trial went live'), using the one-time claimToken from try_domain / answer_trial_canary, and within 30 days after the trial ends. It also gives conditional wallet/no-wallet paths. It does not explicitly say 'use rent_domain for fresh domains' or list exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
answer_trial_canary4 fields changed- added
Input schema / properties / publicKeyAdded value: +{ + "description": "Optional, on the call that goes live. Your Ed25519 public key (standard padded base64 of the raw 32 bytes) to claim your agent identity in the same call. Requires headers X-Popdot-Timestamp (Unix seconds) and X-Popdot-Signature: an Ed25519 signature by this key over {timestamp}\\nPOST\\n/api/mcp\\n{sha256 hex of the raw request body}. Omit it to receive a claim token for upgrade_trial instead.", + "type": "string" +} - added
Output schema / properties / claimErrorAdded value: +{ + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / sigilAdded value: +{ + "properties": { + "agentName": { + "type": "string" + }, + "mandateId": { + "type": "string" + }, + "publicKey": { + "type": "string" + }, + "sigilId": { + "type": "string" + } + }, + "required": [ + "sigilId", + "publicKey", + "mandateId" + ], + "type": "object" +} - added
Output schema / properties / sigilIdAdded value: +{ + "type": "string" +}
- Changed
try_domain4 fields changed- added
Input schema / properties / publicKeyAdded value: +{ + "description": "Optional, on the call that goes live. Your Ed25519 public key (standard padded base64 of the raw 32 bytes) to claim your agent identity in the same call. Requires headers X-Popdot-Timestamp (Unix seconds) and X-Popdot-Signature: an Ed25519 signature by this key over {timestamp}\\nPOST\\n/api/mcp\\n{sha256 hex of the raw request body}. Omit it to receive a claim token for upgrade_trial instead.", + "type": "string" +} - added
Output schema / properties / claimErrorAdded value: +{ + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / sigilAdded value: +{ + "properties": { + "agentName": { + "type": "string" + }, + "mandateId": { + "type": "string" + }, + "publicKey": { + "type": "string" + }, + "sigilId": { + "type": "string" + } + }, + "required": [ + "sigilId", + "publicKey", + "mandateId" + ], + "type": "object" +} - added
Output schema / properties / sigilIdAdded value: +{ + "type": "string" +}
- Changed
upgrade_trial7 fields changed- changed
Input schema / properties / publicKey / descriptionPrevious value: -"Your BYO Ed25519 public key. The minted identity is bound to it and you hold the private key."New value: +"Your Ed25519 public key as standard padded base64 of the raw 32 bytes (44 characters). You keep the private key." - removed
Input schema / properties / requestSponsorUrlRemoved value: -{ - "description": "Set true to also receive an optional URL a human can use to sponsor the upgrade.", - "type": "boolean" -} - added
Input schema / properties / sigilIdAdded value: +{ + "description": "The sigilId returned with the claim token. It must match the identity the token belongs to.", + "type": "string" +} - added
Input schema / properties / signatureAdded value: +{ + "description": "Standard padded base64 of the 64-byte Ed25519 signature over the popdot-claim/1 message.", + "type": "string" +} - added
Input schema / properties / timestampAdded value: +{ + "description": "Integer Unix seconds, no leading zeros, within 300 seconds of now. Part of the signed message.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "claimToken", - "publicKey" -]New value: +[ + "claimToken", + "sigilId", + "publicKey", + "timestamp", + "signature" +] - removed
Output schema / properties / humanSponsorUrlRemoved value: -{ - "type": "string" -}
2 tool updates
- Changed
check_availability1 field changed- changed
Input schema / properties / domainId / descriptionPrevious value: -"The unique ID of the parent domain"New value: +"The parent domain: its id from search_domains, or its name (for example addedtocart.shop)"
- Changed
get_price_quote1 field changed- changed
Input schema / properties / domainId / descriptionPrevious value: -"The unique ID of the domain to price"New value: +"The domain to price: its id from search_domains, or its name (for example addedtocart.shop)"
1 tool update
- Changed
rent_domain2 fields changed- changed
Input schema / properties / payerAddress / descriptionPrevious value: -"(phase 1, optional) The 0x wallet you will pay from. Required only when your Sigil has no bound x402 wallet."New value: +"(phase 1) The 0x wallet you will pay from. Required on every challenge; a wallet registered on your Sigil does not substitute for it." - changed
Input schema / properties / payerProof / descriptionPrevious value: -"(phase 1, optional) EIP-191 personal_sign signature proving control of payerAddress. Required with payerAddress when no wallet is sigil-bound."New value: +"(phase 1) EIP-191 personal_sign signature proving control of payerAddress. Always required with payerAddress."
3 tool updates
- Changed
rent_domain1 field changed- added
Output schema / properties / tierProgression / properties / reasonAdded value: +{ + "type": "string" +}
- Changed
try_domain1 field changed- added
Output schema / properties / tierProgression / properties / reasonAdded value: +{ + "type": "string" +}
- Changed
upgrade_trial1 field changed- added
Output schema / properties / tierProgression / properties / reasonAdded value: +{ + "type": "string" +}
3 tool updates
- Changed
rent_domain3 fields changed- changed
Output schema / properties / identityConfidence / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"How firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor." - changed
Output schema / properties / sigilEligibility / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"Identity standing: lifecycle status, canary screen result, and any hard gates." - changed
Output schema / properties / tierProgression / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"Current enforced trust tier and when it is next evaluated. Present only once an identity exists."
- Changed
try_domain3 fields changed- changed
Output schema / properties / identityConfidence / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"How firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor." - changed
Output schema / properties / sigilEligibility / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"Identity standing: lifecycle status, canary screen result, and any hard gates." - changed
Output schema / properties / tierProgression / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"Current enforced trust tier and when it is next evaluated. Present only once an identity exists."
- Changed
upgrade_trial3 fields changed- changed
Output schema / properties / identityConfidence / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"How firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor." - changed
Output schema / properties / sigilEligibility / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"Identity standing: lifecycle status, canary screen result, and any hard gates." - changed
Output schema / properties / tierProgression / descriptionPrevious value: -"Reserved for a future scoring release. Not returned today."New value: +"Current enforced trust tier and when it is next evaluated. Present only once an identity exists."
6 tool updates
- Changed
answer_trial_canary4 fields changed- added
Output schema / properties / canaryVerdictAdded value: +{ + "type": "string" +} - added
Output schema / properties / scorerVersionAdded value: +{ + "type": "string" +} - added
Output schema / properties / trustReceipt / propertiesAdded value: +{ + "canaryVerified": { + "type": "boolean" + }, + "claimable": { + "type": "boolean" + } +} - added
Output schema / properties / upgrade / propertiesAdded value: +{ + "agentPaymentAvailable": { + "type": "boolean" + }, + "availableDurations": { + "items": { + "type": "string" + }, + "type": "array" + }, + "preserveExactUrl": { + "type": "boolean" + } +}
- Changed
get_price_quote2 fields changed- added
Output schema / properties / ownerCommissionAdded value: +{ + "type": "number" +} - added
Output schema / properties / ownerCommissionPercentAdded value: +{ + "type": "number" +}
- Changed
rent_domain7 fields changed- added
Output schema / properties / identityConfidenceAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "level": { + "enum": [ + "unbound", + "key_bound", + "sponsor_verified" + ], + "type": "string" + }, + "sponsorVerified": { + "type": "boolean" + } + }, + "type": "object" +} - added
Output schema / properties / payment / propertiesAdded value: +{ + "amountInSmallestUnit": { + "type": "string" + }, + "chainId": { + "type": "number" + }, + "expiresAt": { + "type": "string" + }, + "memo": { + "type": "string" + }, + "paymentId": { + "type": "string" + }, + "protocol": { + "type": "string" + }, + "recipient": { + "type": "string" + }, + "settleUrl": { + "type": "string" + }, + "status": { + "type": "string" + }, + "tokenAddress": { + "type": "string" + }, + "txHash": { + "type": "string" + } +} - added
Output schema / properties / provisioning / propertiesAdded value: +{ + "message": { + "type": "string" + }, + "pollIntervalSeconds": { + "type": "number" + }, + "statusUrl": { + "type": "string" + }, + "timeoutSeconds": { + "type": "number" + } +} - added
Output schema / properties / rental / propertiesAdded value: +{ + "endTime": { + "type": "string" + }, + "fullUrl": { + "type": "string" + }, + "id": { + "type": "string" + }, + "startTime": { + "type": "string" + }, + "status": { + "type": "string" + }, + "subdomain": { + "type": "string" + } +} - added
Output schema / properties / settleUrlAdded value: +{ + "type": "string" +} - added
Output schema / properties / sigilEligibilityAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "canaryStatus": { + "type": "string" + }, + "hardGates": { + "items": { + "type": "string" + }, + "type": "array" + }, + "status": { + "enum": [ + "eligible", + "awaiting_key_binding", + "active", + "review_required", + "denied", + "suspended", + "revoked" + ], + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / tierProgressionAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "currentTier": { + "enum": [ + "nascent", + "fledgling", + "established", + "trusted", + "sovereign" + ], + "type": "string" + }, + "evidenceConfidence": { + "type": "number" + }, + "nextEvaluationAt": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" +}
- Changed
search_domains1 field changed- added
Output schema / properties / pagination / propertiesAdded value: +{ + "limit": { + "type": "number" + }, + "page": { + "type": "number" + }, + "total": { + "type": "number" + }, + "totalPages": { + "type": "number" + } +}
- Changed
try_domain9 fields changed- added
Output schema / properties / canaryVerdictAdded value: +{ + "type": "string" +} - added
Output schema / properties / identityConfidenceAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "level": { + "enum": [ + "unbound", + "key_bound", + "sponsor_verified" + ], + "type": "string" + }, + "sponsorVerified": { + "type": "boolean" + } + }, + "type": "object" +} - added
Output schema / properties / questions / items / propertiesAdded value: +{ + "prompt": { + "type": "string" + }, + "question_id": { + "type": "string" + } +} - added
Output schema / properties / questions / items / requiredAdded value: +[ + "question_id", + "prompt" +] - added
Output schema / properties / scorerVersionAdded value: +{ + "type": "string" +} - added
Output schema / properties / sigilEligibilityAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "canaryStatus": { + "type": "string" + }, + "hardGates": { + "items": { + "type": "string" + }, + "type": "array" + }, + "status": { + "enum": [ + "eligible", + "awaiting_key_binding", + "active", + "review_required", + "denied", + "suspended", + "revoked" + ], + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / tierProgressionAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "currentTier": { + "enum": [ + "nascent", + "fledgling", + "established", + "trusted", + "sovereign" + ], + "type": "string" + }, + "evidenceConfidence": { + "type": "number" + }, + "nextEvaluationAt": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / trustReceipt / propertiesAdded value: +{ + "canaryVerified": { + "type": "boolean" + }, + "claimable": { + "type": "boolean" + } +} - added
Output schema / properties / upgrade / propertiesAdded value: +{ + "agentPaymentAvailable": { + "type": "boolean" + }, + "availableDurations": { + "items": { + "type": "string" + }, + "type": "array" + }, + "preserveExactUrl": { + "type": "boolean" + } +}
- Changed
upgrade_trial6 fields changed- added
Output schema / properties / identityConfidenceAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "level": { + "enum": [ + "unbound", + "key_bound", + "sponsor_verified" + ], + "type": "string" + }, + "sponsorVerified": { + "type": "boolean" + } + }, + "type": "object" +} - added
Output schema / properties / sigil / propertiesAdded value: +{ + "agentName": { + "type": "string" + }, + "mandateId": { + "type": "string" + }, + "publicKey": { + "type": "string" + }, + "sigilId": { + "type": "string" + } +} - added
Output schema / properties / sigil / requiredAdded value: +[ + "sigilId", + "publicKey", + "mandateId" +] - added
Output schema / properties / sigilEligibilityAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "canaryStatus": { + "type": "string" + }, + "hardGates": { + "items": { + "type": "string" + }, + "type": "array" + }, + "status": { + "enum": [ + "eligible", + "awaiting_key_binding", + "active", + "review_required", + "denied", + "suspended", + "revoked" + ], + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / tierProgressionAdded value: +{ + "description": "Reserved for a future scoring release. Not returned today.", + "properties": { + "currentTier": { + "enum": [ + "nascent", + "fledgling", + "established", + "trusted", + "sovereign" + ], + "type": "string" + }, + "evidenceConfidence": { + "type": "number" + }, + "nextEvaluationAt": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / upgrade / propertiesAdded value: +{ + "duration": { + "type": "string" + }, + "fqdn": { + "type": "string" + }, + "note": { + "type": "string" + }, + "payment": { + "properties": { + "amountInSmallestUnit": { + "type": "string" + }, + "chainId": { + "type": "number" + }, + "expiresAt": { + "type": "string" + }, + "memo": { + "type": "string" + }, + "paymentId": { + "type": "string" + }, + "protocol": { + "type": "string" + }, + "recipient": { + "type": "string" + }, + "settleUrl": { + "type": "string" + }, + "status": { + "type": "string" + }, + "tokenAddress": { + "type": "string" + }, + "txHash": { + "type": "string" + } + }, + "type": "object" + }, + "preserveExactUrl": { + "type": "boolean" + } +}
1 tool update
- Changed
upgrade_trial1 field changed- changed
Input schema / properties / duration / descriptionPrevious value: -"Optional rental length: an ISO 8601 duration (PT1H, PT4H, P1D, P7D, P30D) or hourly/daily/weekly/monthly. Defaults to P1D."New value: +"Optional rental length: an ISO 8601 duration (PT1H, PT4H, P1D, P7D, P30D) or hourly/daily/weekly/monthly. Defaults to PT1H (1 hour)."
4 tool updates
- Added
answer_trial_canary - Changed
rent_domain18 fields changed- added
Input schema / properties / fromAddressAdded value: +{ + "description": "(phase 2) The wallet you paid from (must match the challenge's bound payer).", + "type": "string" +} - added
Input schema / properties / payerAddressAdded value: +{ + "description": "(phase 1, optional) The 0x wallet you will pay from. Required only when your Sigil has no bound x402 wallet.", + "type": "string" +} - added
Input schema / properties / payerProofAdded value: +{ + "description": "(phase 1, optional) EIP-191 personal_sign signature proving control of payerAddress. Required with payerAddress when no wallet is sigil-bound.", + "type": "string" +} - added
Input schema / properties / payerProofIssuedAtAdded value: +{ + "description": "(phase 1, optional) ISO 8601 timestamp of the payerProof, within 5 minutes of the request.", + "type": "string" +} - added
Input schema / properties / paymentIdAdded value: +{ + "description": "(phase 2) The paymentId returned by the phase-1 challenge.", + "type": "string" +} - added
Input schema / properties / txHashAdded value: +{ + "description": "(phase 2) The on-chain transaction hash of your USDC payment on Base.", + "type": "string" +} - added
Output schema / properties / credentialAdded value: +{ + "type": "string" +} - removed
Output schema / properties / documentationRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / estimatedPriceRemoved value: -{ - "type": "object" -} - removed
Output schema / properties / messageRemoved value: -{ - "type": "string" -} - added
Output schema / properties / nextAdded value: +{ + "type": "string" +} - added
Output schema / properties / paymentAdded value: +{ + "type": "object" +} - added
Output schema / properties / provisioningAdded value: +{ + "type": "object" +} - added
Output schema / properties / reasonAdded value: +{ + "type": "string" +} - added
Output schema / properties / rentalAdded value: +{ + "type": "object" +} - added
Output schema / properties / rentalIdAdded value: +{ + "type": "string" +} - removed
Output schema / properties / stepsRemoved value: -{ - "items": { - "type": "object" - }, - "type": "array" -} - removed
Output schema / requiredRemoved value: -[ - "status", - "steps" -]
- Changed
try_domain30 fields changed- added
Input schema / properties / analyticsConsentAdded value: +{ + "description": "Record operator consent to trial analytics for this address.", + "type": "boolean" +} - added
Input schema / properties / autoSelectAdded value: +{ + "description": "Let Popdot AI pick an available subdomain from your goal when you do not provide preferredSubdomain.", + "type": "boolean" +} - added
Input schema / properties / desiredEmotionAdded value: +{ + "description": "Preferred vibe of the parent domain: comedy, absurd, playful, edgy, wholesome, professional, trustworthy. Unknown values are ignored.", + "enum": [ + "comedy", + "absurd", + "playful", + "edgy", + "wholesome", + "professional", + "trustworthy" + ], + "type": "string" +} - changed
Input schema / properties / email / descriptionPrevious value: -"An email to associate with your trial API key. Used to issue the key in step 1. If you don't have one, your operator's email works."New value: +"Optional email to associate with the trial. Never returned." - added
Input schema / properties / goalAdded value: +{ + "description": "What you built and want to put online, in a sentence (used to name and describe the address).", + "type": "string" +} - added
Input schema / properties / inputResponsesAdded value: +{ + "description": "(retry only) Your answers to the safety questions, one { id, response } per requested input.", + "items": { + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / preferredSubdomainAdded value: +{ + "description": "The subdomain label you want (e.g. 'mydemo'). Omit and set autoSelect:true to have one picked for you.", + "type": "string" +} - added
Input schema / properties / targetAdded value: +{ + "description": "An https URL to point the address at. Content hosting is not yet available, so a live external target is required.", + "type": "string" +} - added
Input schema / properties / trialHandleAdded value: +{ + "description": "(retry only) The trialHandle returned by the first call. Echo it back with your answers.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "goal" +] - removed
Output schema / properties / authRemoved value: -{ - "type": "string" -} - added
Output schema / properties / candidateIdAdded value: +{ + "type": "string" +} - added
Output schema / properties / claimTokenAdded value: +{ + "type": "string" +} - added
Output schema / properties / claimTokenExpiresAtAdded value: +{ + "type": "string" +} - removed
Output schema / properties / documentationRemoved value: -{ - "type": "string" -} - added
Output schema / properties / domainAdded value: +{ + "type": "string" +} - added
Output schema / properties / expiresAtAdded value: +{ + "type": "string" +} - removed
Output schema / properties / messageRemoved value: -{ - "type": "string" -} - added
Output schema / properties / nextAdded value: +{ + "type": "string" +} - added
Output schema / properties / questionsAdded value: +{ + "items": { + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / shareMessageAdded value: +{ + "type": "string" +} - removed
Output schema / properties / statusRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / stepsRemoved value: -{ - "items": { - "type": "object" - }, - "type": "array" -} - added
Output schema / properties / subdomainAdded value: +{ + "type": "string" +} - added
Output schema / properties / trialHandleAdded value: +{ + "type": "string" +} - added
Output schema / properties / trialIdAdded value: +{ + "type": "string" +} - added
Output schema / properties / trustReceiptAdded value: +{ + "type": "object" +} - added
Output schema / properties / upgradeAdded value: +{ + "type": "object" +} - added
Output schema / properties / urlAdded value: +{ + "type": "string" +} - removed
Output schema / requiredRemoved value: -[ - "status", - "steps" -]
- Added
upgrade_trial
5 tool updates
- Changed
check_availability1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "available": { + "type": "boolean" + }, + "domainId": { + "type": "string" + }, + "fullDomain": { + "type": "string" + }, + "fullUrl": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "subdomain": { + "type": "string" + } + }, + "required": [ + "domainId", + "subdomain", + "available" + ], + "type": "object" +}
- Changed
get_price_quote1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "available": { + "type": "boolean" + }, + "currency": { + "type": "string" + }, + "domainId": { + "type": "string" + }, + "duration": { + "type": "string" + }, + "durationLabel": { + "type": "string" + }, + "feeNote": { + "type": "string" + }, + "fullDomain": { + "type": "string" + }, + "hours": { + "type": "number" + }, + "ownerPayout": { + "type": "number" + }, + "priceBreakdown": { + "properties": { + "daily": { + "type": "number" + }, + "hourly": { + "type": "number" + }, + "monthly": { + "type": "number" + }, + "weekly": { + "type": "number" + } + }, + "type": "object" + }, + "priceSource": { + "enum": [ + "owner", + "algorithm" + ], + "type": "string" + }, + "rentalPrice": { + "type": "number" + }, + "serviceFee": { + "type": "number" + }, + "tier": { + "type": "string" + }, + "tierScore": { + "type": "number" + }, + "totalCost": { + "type": "number" + } + }, + "required": [ + "domainId", + "totalCost", + "currency" + ], + "type": "object" +}
- Changed
rent_domain1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "documentation": { + "type": "string" + }, + "estimatedPrice": { + "type": "object" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "steps": { + "items": { + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "status", + "steps" + ], + "type": "object" +}
- Changed
search_domains1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "domains": { + "items": { + "properties": { + "emotionTags": { + "items": { + "type": "string" + }, + "type": "array" + }, + "fullDomain": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "pricing": { + "properties": { + "currency": { + "type": "string" + }, + "daily": { + "type": "number" + }, + "hourly": { + "type": "number" + }, + "monthly": { + "type": "number" + }, + "weekly": { + "type": "number" + } + }, + "type": "object" + }, + "tier": { + "type": "string" + }, + "tierScore": { + "type": "number" + }, + "tld": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "pagination": { + "type": "object" + } + }, + "required": [ + "domains" + ], + "type": "object" +}
- Changed
try_domain1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "auth": { + "type": "string" + }, + "documentation": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "steps": { + "items": { + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "status", + "steps" + ], + "type": "object" +}
1 tool update
- Changed
search_domains1 field changed- added
Input schema / properties / emotionAdded value: +{ + "description": "Filter by the reaction the domain is built to elicit: comedy, absurd, playful, edgy, wholesome, professional, trustworthy. Unknown values are ignored.", + "enum": [ + "comedy", + "absurd", + "playful", + "edgy", + "wholesome", + "professional", + "trustworthy" + ], + "type": "string" +}
5 tool updates
- First observed
check_availability - First observed
get_price_quote - First observed
rent_domain - First observed
search_domains - First observed
try_domain
Related MCP Connectors
Pay-per-call tools for autonomous agents, settled in USDC on Base via x402.
72 x402 endpoints: trading, AI inference, blockchain, escrow. USDC on Base+Solana.
Market data and web intelligence for AI agents, paid per call in USDC on Base via x402.
Internet identity for AI agents: register or broker domains, email, DNS - pay by card or USDC.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceThe open marketplace for the agent economy — Buy any of 24,000+ live x402 services with USDC on Base.6MIT
- AlicenseAqualityDmaintenancePay-per-call x402 data products on Base mainnet — sanctions screening, aviation weather, mortgage rates, US property dossier, title chain, wallet balance, and agent session auth. Every call settles in USDC with an on-chain receipt, no accounts or API keys.727 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables AI clients to perform domain verification, DNS lookup, and domain assessment via the Revnuvo x402 paid APIs, with automatic USDC micropayments on Base.-

hyperd-mcpofficial
AlicenseAqualityCmaintenancePre-trade DeFi intelligence for AI agents. 20 paid x402 endpoints, USDC on Base.2329 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.