Skip to main content
Glama

Server Details

Rent verified subdomains by the hour, day, or month. Free 24h trials, x402 USDC on Base.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
popdot-ai/popdot-mcp
GitHub Stars
0
ChatGPT
–
Claude
–

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation4/5

The trial vs. paid vs. upgrade paths are explicitly disambiguated in descriptions (try_domain for free first address, rent_domain for paid, upgrade_trial to claim identity from a trial), which prevents most confusion. However, check_availability overlaps with try_domain and search_domains (both of which already surface availability), and the boundary between upgrade_trial's paid conversion and rent_domain is only clarified by prose.

Naming Consistency5/5

All seven tools follow a consistent snake_case verb_noun pattern (search_domains, rent_domain, get_price_quote, check_availability, try_domain, upgrade_trial, answer_trial_canary). The convention is predictable and readable throughout.

Tool Count5/5

Seven tools map cleanly onto the domain-rental lifecycle (browse, check, quote, trial, canary answer, paid rent, upgrade/claim). No padding, and the count is well within the ideal range.

Completeness3/5

Creation paths are thorough (free trial, canary, claim, paid rent), but post-rental management is missing: no tool to list your own rented/claimed addresses, repoint a target on a paid rental (only possible via try_domain for trials), or renew/delete/transfer. These gaps would force agents into dead ends after a rental goes live.

Available Tools

7 tools
answer_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.

NameRequiredDescriptionDefault
answersYesYour answers to the safety questions, one { question_id, response } per question.
publicKeyNoOptional, 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.
trialHandleYesThe trialHandle returned by try_domain.

Output Schema

NameRequiredDescription
urlNo
sigilNo
reasonNo
statusNo
sigilIdNo
trialIdNo
upgradeNo
expiresAtNo
retryableNo
claimErrorNo
claimTokenNo
candidateIdNo
holdingPageNo
shareMessageNo
trustReceiptNo
canaryVerdictNo
scorerVersionNo
claimTokenExpiresAtNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds the materially useful context that this is a gated write (safety questions must pass), that success provisions a 24-hour subdomain, and that the token is one-time-use. It stops short of saying what happens on a failed answer set — whether the trial persists, can be retried, or is consumed — which is the main behavioral unknown for a gate-style tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, and front-loaded with the action and prerequisite before the outcome. Every clause carries distinct information: input, gate, effect, and return artifact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a gated write tool with a rich output schema, the description covers prerequisite, side effect, and the token's downstream use, so an agent can sequence it correctly. The remaining gap is failure-mode completeness — the description only describes the clean-pass path and stays silent on rejected answers or token expiry handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the publicKey parameter carries a very detailed description including signing headers, so the schema already does the heavy lifting. The description adds only the sequencing hint ('pass the trialHandle and your answers') and that publicKey applies 'on the call that goes live'; it doesn't clarify the ambiguous multi-attempt model that the publicKey wording implies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb-plus-resource statement ('answer the short safety questions for a trial') followed by the concrete outcome ('provisions a live 24-hour subdomain and returns a one-time claim token'). It also names the sibling it depends on (try_domain), so an agent can place it in the workflow without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames this as the step after try_domain and states the branch condition that selects the alternative: omit publicKey to receive a claim token 'for upgrade_trial instead'. Both the when and the when-otherwise are spelled out, which is exactly the routing guidance needed among six siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_availabilityA
Read-only
Inspect

Check whether a specific subdomain is available on a given domain for a paid rental. Returns true if the subdomain can be rented. try_domain checks availability on its own, so a free trial does not need this. 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.

NameRequiredDescriptionDefault
domainIdYesThe parent domain: its id from search_domains, or its name (for example addedtocart.shop)
subdomainYesThe subdomain label to check (e.g., 'myproject' for myproject.example.com)

Output Schema

NameRequiredDescription
reasonNo
fullUrlNo
domainIdYes
availableYes
subdomainYes
fullDomainNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds the boolean return contract and the non-obvious behavior that domain and subdomain are read as one combined phrase. It does not mention auth or rate limits, but for a read-only check that is a minor omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and return value are front-loaded, then the alternative tool, then the naming tip. Most sentences earn their place; the closing line about 'a delightful combination' is light marketing padding, but it reinforces the naming constraint rather than derailing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description still states the boolean outcome. It covers the subdomain-naming edge case that the schema alone leaves ambiguous; only missing downstream guidance (this is a check, not the rental itself) keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description adds genuine semantics beyond the schema: the label must be a single lowercase token that combines with the domain into one readable phrase, with concrete examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (check subdomain availability on a domain) and explicitly scopes it to paid rentals. It also differentiates from the sibling try_domain, so an agent can pick between them without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not rule: try_domain already checks availability, so a free trial does not need this call. It stops short of naming rent_domain / get_price_quote as the downstream steps, but the paid-vs-trial condition is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_quoteA
Read-only
Inspect

Get a price quote for a paid rental of a specific domain for a given duration. Returns the computed rental cost, tier info, and pricing breakdown. Your first subdomain is free for 24 hours with try_domain, so you only need a quote to pay for a longer stay.

NameRequiredDescriptionDefault
domainIdYesThe domain to price: its id from search_domains, or its name (for example addedtocart.shop)
durationYesISO 8601 duration: PT1H (1 hour), PT4H (4 hours), P1D (1 day), P7D (1 week), P30D (30 days)

Output Schema

NameRequiredDescription
tierNo
hoursNo
feeNoteNo
currencyYes
domainIdYes
durationNo
availableNo
tierScoreNo
totalCostYes
fullDomainNo
serviceFeeNo
ownerPayoutNo
priceSourceNo
rentalPriceNo
durationLabelNo
priceBreakdownNo
ownerCommissionNo
ownerCommissionPercentNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds that the result is computed/returned rather than reserved, and lists the returned components. It does not mention pricing volatility, caching, or whether quotes expire, which would push it to a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences that front-load what the tool does and what it returns, with the try_domain note last as a routing hint. No filler, though the free-trial sentence is advisory rather than core to invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, a read-only annotation, and fully documented parameters, nothing an agent needs to invoke this correctly is missing. The description adds result expectations and cost-free alternative context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented with examples and ISO 8601 enum meanings, so the description adds essentially nothing beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a price quote') scoped to 'a paid rental of a specific domain for a given duration', and reports what comes back (rental cost, tier info, pricing breakdown). It is clearly separable from rent_domain (executes) and try_domain (free trial).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says the first subdomain is free for 24 hours via try_domain, so a quote is only needed for a longer paid stay. That is an explicit when-to-use and when-not-to-use with the alternative named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rent_domainAInspect

Paid rental. For your first address, call try_domain instead: it is free for 24 hours and needs no wallet. 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. Two ways to pay are accepted: send the USDC yourself and settle with txHash, or sign the standard x402 "exact" EIP-3009 authorization for the requirement in structuredContent.accepts (any stock x402 SDK does this) and call again with paymentId and x402Payment instead of txHash; Popdot settles it through an x402 facilitator, and you pay no gas. Request an x402 payment challenge to rent a subdomain. Durations PT1H, PT4H, P1D, P7D, P30D. Returns the exact USDC amount and recipient on Base.

NameRequiredDescriptionDefault
txHashNo(phase 2) The on-chain transaction hash of your USDC payment on Base.
domainIdYesThe unique ID of the domain to rent on
durationYesISO 8601 duration: PT1H (1 hour), PT4H (4 hours), P1D (1 day), P7D (1 week), P30D (30 days)
paymentIdNo(phase 2) The paymentId returned by the phase-1 challenge.
subdomainYesThe subdomain label to rent (e.g., 'myproject' for myproject.example.com)
payerProofNo(phase 1) EIP-191 personal_sign signature proving control of payerAddress. Always required with payerAddress.
fromAddressNo(phase 2) The wallet you paid from (must match the challenge's bound payer).
x402PaymentNo(phase 2, instead of txHash) An x402 "exact" payment payload signed by the bound payer for structuredContent.accepts[0]: the JSON object, or its base64 as sent in a PAYMENT-SIGNATURE or X-PAYMENT header. Send it with paymentId.
payerAddressNo(phase 1) The 0x wallet you will pay from. Required on every challenge; a wallet registered on your Sigil does not substitute for it.
intentMandateIdYesThe ID of the active Intent Mandate authorizing this purchase
payerProofIssuedAtNo(phase 1, optional) ISO 8601 timestamp of the payerProof, within 5 minutes of the request.

Output Schema

NameRequiredDescription
nextNo
reasonNo
rentalNo
statusNo
acceptsNo
paymentNo
rentalIdNo
settleUrlNo
credentialNo
provisioningNo
tierProgressionNoCurrent enforced trust tier and when it is next evaluated. Present only once an identity exists.
sigilEligibilityNoIdentity standing: lifecycle status, canary screen result, and any hard gates.
identityConfidenceNoHow firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag it as a non-idempotent open-world write; the description adds substantial context beyond that: agent authentication is required, there is no stored balance, gas is avoided when settling via an x402 facilitator, and a failed/late settlement leaves no rental. It also discloses what is returned (live rental plus Web Identity Credential).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the free alternative is stated first, then payment model, then the two phases. It's on the long side and repeats itself slightly ('Request an x402 payment challenge to rent a subdomain' restates the opening), which keeps it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, multi-step, paid mutation with an output schema present, the description covers authentication, payment routing, the challenge/settle cycle, and the return value. An agent has everything needed to invoke both phases correctly; return-value details can defer to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and per-parameter descriptions already tag phase 1 vs phase 2, so the schema does most of the work (baseline 3). The description adds real value by grouping parameters into the two-phase flow and explaining the txHash-vs-x402Payment fork and the structuredContent.accepts target, which the schema alone doesn't convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Paid rental' of a subdomain) plus the exact payment mechanism (per-transaction USDC on Base via x402), and explicitly distinguishes itself from the sibling try_domain (free 24h, no wallet). An agent can tell immediately which renting path applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes first-time users to try_domain with the reason (free 24 hours, no wallet), and lays out the required two-call sequence: phase 1 with intentMandateId/domainId/subdomain/duration/payerAddress+payerProof, then phase 2 with paymentId and either txHash or x402Payment. Alternatives for paying are named too.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_domainsA
Read-only
Inspect

Search domains available for paid rental on Popdot AI. Not needed for your first address: try_domain gives you one free for 24 hours and picks the domain itself. Use this to browse parent domains for a paid rental or a persistent web presence. Returns domains with pricing, tier, availability and trialEligible. No auth required.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 20, max: 50)
queryNoSearch query to match against domain names, tags, and categories
emotionNoFilter by the reaction the domain is built to elicit: comedy, absurd, playful, edgy, wholesome, professional, trustworthy. Unknown values are ignored.
maxPriceNoMaximum daily price in USD
minPriceNoMinimum daily price in USD

Output Schema

NameRequiredDescription
domainsYes
freeTrialNo
paginationNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds genuinely new context with 'No auth required' and the trialEligible flag. The return-value enumeration ('pricing, tier, availability and trialEligible') partially duplicates the output schema, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each earning its place: purpose, exclusion/alternative, use case, return shape, auth. Front-loaded with the core action and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and it still summarizes them. Combined with the alternative-tool routing and auth note, an agent has everything needed to decide and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters (limit, query, emotion, minPrice, maxPrice) are already documented with defaults, ranges and enum meanings. The description adds nothing about filtering behavior or syntax, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search domains available for paid rental on Popdot AI') and immediately scopes it against the free option, so an agent can distinguish it from try_domain without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names when NOT to use it ('Not needed for your first address: try_domain gives you one free for 24 hours and picks the domain itself') and names the alternative tool plus the condition that selects it ('browse parent domains for a paid rental or a persistent web presence'). This is the strongest form of routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

try_domainAInspect

Start here. Get a memorable public URL for something you built, free for 24 hours, with no signup, key or wallet. Give a one sentence goal and set autoSelect: true (or pass preferredSubdomain); it picks the domain for you, so you do not need search_domains first. Add an https target if you have one. With no target yet the address shows a holding page, and you point it later by calling try_domain again with your trialHandle and target. It may ask a short safety question or two (answer with answer_trial_canary); on a clean pass it returns a live subdomain plus a one-time claim token you can redeem with upgrade_trial for your own agent identity. One trial per agent. Expires in 24 hours.

NameRequiredDescriptionDefault
goalYesWhat you built and want to put online, in a sentence (used to name and describe the address).
emailNoOptional email to associate with the trial. Never returned.
targetNoOptional. An https URL to point the address at. Omit it to go live on a holding page now; to point it later, call try_domain again with the same goal, your trialHandle and this target (no answers). A trial can be pointed once.
publicKeyNoOptional, 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.
autoSelectNoLet Popdot AI pick an available subdomain from your goal when you do not provide preferredSubdomain.
trialHandleNo(retry only) The trialHandle returned by the first call. Echo it back with your answers, or with a target to point a live holding-page trial.
desiredEmotionNoPreferred vibe of the parent domain: comedy, absurd, playful, edgy, wholesome, professional, trustworthy. Unknown values are ignored.
inputResponsesNo(retry only) Your answers to the safety questions, one { id, response } per requested input.
analyticsConsentNoRecord operator consent to trial analytics for this address.
preferredSubdomainNoThe subdomain label you want (e.g. 'mydemo'). Omit and set autoSelect:true to have one picked for you.

Output Schema

NameRequiredDescription
urlNo
nextNo
sigilNo
domainNo
targetNo
pointedNo
sigilIdNo
trialIdNo
upgradeNo
expiresAtNo
questionsNo
subdomainNo
claimErrorNo
claimTokenNo
candidateIdNo
holdingPageNo
trialHandleNo
shareMessageNo
trustReceiptNo
canaryVerdictNo
scorerVersionNo
tierProgressionNoCurrent enforced trust tier and when it is next evaluated. Present only once an identity exists.
sigilEligibilityNoIdentity standing: lifecycle status, canary screen result, and any hard gates.
identityConfidenceNoHow firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor.
claimTokenExpiresAtNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds substantial context beyond that: the 24-hour expiry, one-trial-per-agent limit, no-signup/no-wallet auth model, the safety-canary Q&A flow, a one-time claim token redeemable via upgrade_trial, and a single-pointing limit. That is exactly the behavioral disclosure a mutation tool needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with 'Start here.' and mostly every sentence carries new information about flow, limits, or returns. It is somewhat dense and run-on toward the end (safety question and claim-token clauses), which keeps it just below ideal crispness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Ten parameters but only one required, and an output schema exists, so the description need not explain return values. It nonetheless covers the full lifecycle (create, answer canary, point later, claim identity), which is complete for an open-world mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds workflow meaning beyond the schema: goal is a 'one sentence goal', autoSelect vs preferredSubdomain as alternatives, target omitted means a holding page, and trialHandle/inputResponses are retry-only. These tie parameters to the multi-step flow rather than just restating types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Get a memorable public URL for something you built') with scope qualifiers (free 24 hours, no signup). It explicitly distinguishes itself from search_domains ('you do not need search_domains first') and references upgrade_trial, so an agent can place it among its siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says when to use it ('Start here'), what to pass ('set autoSelect: true (or pass preferredSubdomain)'), the retry path ('point it later by calling try_domain again with your trialHandle and target'), and the constraint ('One trial per agent. Expires in 24 hours'). Exclusions and alternatives are named explicitly.

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.

NameRequiredDescriptionDefault
sigilIdYesThe sigilId returned with the claim token. It must match the identity the token belongs to.
durationNoOptional rental length: an ISO 8601 duration (PT1H, PT4H, P1D, P7D, P30D) or hourly/daily/weekly/monthly. Defaults to PT1H (1 hour).
publicKeyYesYour Ed25519 public key as standard padded base64 of the raw 32 bytes (44 characters). You keep the private key.
signatureYesStandard padded base64 of the 64-byte Ed25519 signature over the popdot-claim/1 message.
timestampYesInteger Unix seconds, no leading zeros, within 300 seconds of now. Part of the signed message.
claimTokenYesThe one-time claim token returned by try_domain / answer_trial_canary.
payerProofNoOptional EIP-191 personal_sign signature proving control of payerAddress.
payerAddressNoOptional 0x wallet you will pay from. Provide it (with payerProof) to receive a self-pay x402 challenge.
payerProofIssuedAtNoOptional ISO 8601 timestamp of the payerProof, within 5 minutes.

Output Schema

NameRequiredDescription
sigilYes
upgradeYes
walletGuidanceNo
tierProgressionNoCurrent enforced trust tier and when it is next evaluated. Present only once an identity exists.
sigilEligibilityNoIdentity standing: lifecycle status, canary screen result, and any hard gates.
identityConfidenceNoHow firmly this identity is bound: unbound, bound to a key, or backed by a verified sponsor.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updates
    • Changedanswer_trial_canary1 field changed
      • addedOutput schema / properties / holdingPage
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtry_domain5 fields changed
      • changedInput schema / properties / target / description
        Previous value: -"An https URL to point the address at. Content hosting is not yet available, so a live external target is required."New value: +"Optional. An https URL to point the address at. Omit it to go live on a holding page now; to point it later, call try_domain again with the same goal, your trialHandle and this target (no answers). A trial can be pointed once."
      • changedInput schema / properties / trialHandle / description
        Previous value: -"(retry only) The trialHandle returned by the first call. Echo it back with your answers."New value: +"(retry only) The trialHandle returned by the first call. Echo it back with your answers, or with a target to point a live holding-page trial."
      • addedOutput schema / properties / holdingPage
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / pointed
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / target
        Added value: +{
        +  "type": "string"
        +}
  2. 1 tool update
    • Changedrent_domain2 fields changed
      • addedInput schema / properties / x402Payment
        Added value: +{
        +  "description": "(phase 2, instead of txHash) An x402 \"exact\" payment payload signed by the bound payer for structuredContent.accepts[0]: the JSON object, or its base64 as sent in a PAYMENT-SIGNATURE or X-PAYMENT header. Send it with paymentId.",
        +  "type": [
        +    "string",
        +    "object"
        +  ]
        +}
      • addedOutput schema / properties / accepts
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "amount": {
        +        "type": "string"
        +      },
        +      "asset": {
        +        "type": "string"
        +      },
        +      "extra": {
        +        "properties": {
        +          "assetTransferMethod": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "paymentId": {
        +            "type": "string"
        +          },
        +          "settleUrl": {
        +            "type": "string"
        +          },
        +          "version": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "maxTimeoutSeconds": {
        +        "type": "number"
        +      },
        +      "network": {
        +        "type": "string"
        +      },
        +      "payTo": {
        +        "type": "string"
        +      },
        +      "scheme": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  3. 1 tool update
    • Changedsearch_domains2 fields changed
      • addedOutput schema / properties / domains / items / properties / trialEligible
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / freeTrial
        Added value: +{
        +  "properties": {
        +    "available": {
        +      "type": "boolean"
        +    },
        +    "duration": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "requires": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  4. 3 tool updates
    • Changedanswer_trial_canary4 fields changed
      • addedInput schema / properties / publicKey
        Added 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"
        +}
      • addedOutput schema / properties / claimError
        Added value: +{
        +  "properties": {
        +    "code": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / sigil
        Added value: +{
        +  "properties": {
        +    "agentName": {
        +      "type": "string"
        +    },
        +    "mandateId": {
        +      "type": "string"
        +    },
        +    "publicKey": {
        +      "type": "string"
        +    },
        +    "sigilId": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "sigilId",
        +    "publicKey",
        +    "mandateId"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / sigilId
        Added value: +{
        +  "type": "string"
        +}
    • Changedtry_domain4 fields changed
      • addedInput schema / properties / publicKey
        Added 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"
        +}
      • addedOutput schema / properties / claimError
        Added value: +{
        +  "properties": {
        +    "code": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / sigil
        Added value: +{
        +  "properties": {
        +    "agentName": {
        +      "type": "string"
        +    },
        +    "mandateId": {
        +      "type": "string"
        +    },
        +    "publicKey": {
        +      "type": "string"
        +    },
        +    "sigilId": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "sigilId",
        +    "publicKey",
        +    "mandateId"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / sigilId
        Added value: +{
        +  "type": "string"
        +}
    • Changedupgrade_trial7 fields changed
      • changedInput schema / properties / publicKey / description
        Previous 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."
      • removedInput schema / properties / requestSponsorUrl
        Removed value: -{
        -  "description": "Set true to also receive an optional URL a human can use to sponsor the upgrade.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / sigilId
        Added value: +{
        +  "description": "The sigilId returned with the claim token. It must match the identity the token belongs to.",
        +  "type": "string"
        +}
      • addedInput schema / properties / signature
        Added value: +{
        +  "description": "Standard padded base64 of the 64-byte Ed25519 signature over the popdot-claim/1 message.",
        +  "type": "string"
        +}
      • addedInput schema / properties / timestamp
        Added value: +{
        +  "description": "Integer Unix seconds, no leading zeros, within 300 seconds of now. Part of the signed message.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "claimToken",
        -  "publicKey"
        -]New value: +[
        +  "claimToken",
        +  "sigilId",
        +  "publicKey",
        +  "timestamp",
        +  "signature"
        +]
      • removedOutput schema / properties / humanSponsorUrl
        Removed value: -{
        -  "type": "string"
        -}
  5. 2 tool updates
    • Changedcheck_availability1 field changed
      • changedInput schema / properties / domainId / description
        Previous 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)"
    • Changedget_price_quote1 field changed
      • changedInput schema / properties / domainId / description
        Previous 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)"
  6. 1 tool update
    • Changedrent_domain2 fields changed
      • changedInput schema / properties / payerAddress / description
        Previous 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."
      • changedInput schema / properties / payerProof / description
        Previous 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."
  7. 3 tool updates
    • Changedrent_domain1 field changed
      • addedOutput schema / properties / tierProgression / properties / reason
        Added value: +{
        +  "type": "string"
        +}
    • Changedtry_domain1 field changed
      • addedOutput schema / properties / tierProgression / properties / reason
        Added value: +{
        +  "type": "string"
        +}
    • Changedupgrade_trial1 field changed
      • addedOutput schema / properties / tierProgression / properties / reason
        Added value: +{
        +  "type": "string"
        +}
  8. 3 tool updates
    • Changedrent_domain3 fields changed
      • changedOutput schema / properties / identityConfidence / description
        Previous 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."
      • changedOutput schema / properties / sigilEligibility / description
        Previous value: -"Reserved for a future scoring release. Not returned today."New value: +"Identity standing: lifecycle status, canary screen result, and any hard gates."
      • changedOutput schema / properties / tierProgression / description
        Previous 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."
    • Changedtry_domain3 fields changed
      • changedOutput schema / properties / identityConfidence / description
        Previous 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."
      • changedOutput schema / properties / sigilEligibility / description
        Previous value: -"Reserved for a future scoring release. Not returned today."New value: +"Identity standing: lifecycle status, canary screen result, and any hard gates."
      • changedOutput schema / properties / tierProgression / description
        Previous 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."
    • Changedupgrade_trial3 fields changed
      • changedOutput schema / properties / identityConfidence / description
        Previous 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."
      • changedOutput schema / properties / sigilEligibility / description
        Previous value: -"Reserved for a future scoring release. Not returned today."New value: +"Identity standing: lifecycle status, canary screen result, and any hard gates."
      • changedOutput schema / properties / tierProgression / description
        Previous 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."
  9. 6 tool updates
    • Changedanswer_trial_canary4 fields changed
      • addedOutput schema / properties / canaryVerdict
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / scorerVersion
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / trustReceipt / properties
        Added value: +{
        +  "canaryVerified": {
        +    "type": "boolean"
        +  },
        +  "claimable": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / upgrade / properties
        Added value: +{
        +  "agentPaymentAvailable": {
        +    "type": "boolean"
        +  },
        +  "availableDurations": {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "preserveExactUrl": {
        +    "type": "boolean"
        +  }
        +}
    • Changedget_price_quote2 fields changed
      • addedOutput schema / properties / ownerCommission
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / ownerCommissionPercent
        Added value: +{
        +  "type": "number"
        +}
    • Changedrent_domain7 fields changed
      • addedOutput schema / properties / identityConfidence
        Added 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"
        +}
      • addedOutput schema / properties / payment / properties
        Added 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"
        +  }
        +}
      • addedOutput schema / properties / provisioning / properties
        Added value: +{
        +  "message": {
        +    "type": "string"
        +  },
        +  "pollIntervalSeconds": {
        +    "type": "number"
        +  },
        +  "statusUrl": {
        +    "type": "string"
        +  },
        +  "timeoutSeconds": {
        +    "type": "number"
        +  }
        +}
      • addedOutput schema / properties / rental / properties
        Added value: +{
        +  "endTime": {
        +    "type": "string"
        +  },
        +  "fullUrl": {
        +    "type": "string"
        +  },
        +  "id": {
        +    "type": "string"
        +  },
        +  "startTime": {
        +    "type": "string"
        +  },
        +  "status": {
        +    "type": "string"
        +  },
        +  "subdomain": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / settleUrl
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / sigilEligibility
        Added 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"
        +}
      • addedOutput schema / properties / tierProgression
        Added 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"
        +}
    • Changedsearch_domains1 field changed
      • addedOutput schema / properties / pagination / properties
        Added value: +{
        +  "limit": {
        +    "type": "number"
        +  },
        +  "page": {
        +    "type": "number"
        +  },
        +  "total": {
        +    "type": "number"
        +  },
        +  "totalPages": {
        +    "type": "number"
        +  }
        +}
    • Changedtry_domain9 fields changed
      • addedOutput schema / properties / canaryVerdict
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / identityConfidence
        Added 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"
        +}
      • addedOutput schema / properties / questions / items / properties
        Added value: +{
        +  "prompt": {
        +    "type": "string"
        +  },
        +  "question_id": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / questions / items / required
        Added value: +[
        +  "question_id",
        +  "prompt"
        +]
      • addedOutput schema / properties / scorerVersion
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / sigilEligibility
        Added 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"
        +}
      • addedOutput schema / properties / tierProgression
        Added 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"
        +}
      • addedOutput schema / properties / trustReceipt / properties
        Added value: +{
        +  "canaryVerified": {
        +    "type": "boolean"
        +  },
        +  "claimable": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / upgrade / properties
        Added value: +{
        +  "agentPaymentAvailable": {
        +    "type": "boolean"
        +  },
        +  "availableDurations": {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "preserveExactUrl": {
        +    "type": "boolean"
        +  }
        +}
    • Changedupgrade_trial6 fields changed
      • addedOutput schema / properties / identityConfidence
        Added 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"
        +}
      • addedOutput schema / properties / sigil / properties
        Added value: +{
        +  "agentName": {
        +    "type": "string"
        +  },
        +  "mandateId": {
        +    "type": "string"
        +  },
        +  "publicKey": {
        +    "type": "string"
        +  },
        +  "sigilId": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / sigil / required
        Added value: +[
        +  "sigilId",
        +  "publicKey",
        +  "mandateId"
        +]
      • addedOutput schema / properties / sigilEligibility
        Added 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"
        +}
      • addedOutput schema / properties / tierProgression
        Added 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"
        +}
      • addedOutput schema / properties / upgrade / properties
        Added 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"
        +  }
        +}
  10. 1 tool update
    • Changedupgrade_trial1 field changed
      • changedInput schema / properties / duration / description
        Previous 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)."
  11. 4 tool updates
    • Addedanswer_trial_canary
    • Changedrent_domain18 fields changed
      • addedInput schema / properties / fromAddress
        Added value: +{
        +  "description": "(phase 2) The wallet you paid from (must match the challenge's bound payer).",
        +  "type": "string"
        +}
      • addedInput schema / properties / payerAddress
        Added value: +{
        +  "description": "(phase 1, optional) The 0x wallet you will pay from. Required only when your Sigil has no bound x402 wallet.",
        +  "type": "string"
        +}
      • addedInput schema / properties / payerProof
        Added 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"
        +}
      • addedInput schema / properties / payerProofIssuedAt
        Added value: +{
        +  "description": "(phase 1, optional) ISO 8601 timestamp of the payerProof, within 5 minutes of the request.",
        +  "type": "string"
        +}
      • addedInput schema / properties / paymentId
        Added value: +{
        +  "description": "(phase 2) The paymentId returned by the phase-1 challenge.",
        +  "type": "string"
        +}
      • addedInput schema / properties / txHash
        Added value: +{
        +  "description": "(phase 2) The on-chain transaction hash of your USDC payment on Base.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / credential
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / documentation
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / estimatedPrice
        Removed value: -{
        -  "type": "object"
        -}
      • removedOutput schema / properties / message
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / next
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / payment
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / provisioning
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / reason
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / rental
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / rentalId
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / steps
        Removed value: -{
        -  "items": {
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "status",
        -  "steps"
        -]
    • Changedtry_domain30 fields changed
      • addedInput schema / properties / analyticsConsent
        Added value: +{
        +  "description": "Record operator consent to trial analytics for this address.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / autoSelect
        Added value: +{
        +  "description": "Let Popdot AI pick an available subdomain from your goal when you do not provide preferredSubdomain.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / desiredEmotion
        Added 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"
        +}
      • changedInput schema / properties / email / description
        Previous 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."
      • addedInput schema / properties / goal
        Added value: +{
        +  "description": "What you built and want to put online, in a sentence (used to name and describe the address).",
        +  "type": "string"
        +}
      • addedInput schema / properties / inputResponses
        Added value: +{
        +  "description": "(retry only) Your answers to the safety questions, one { id, response } per requested input.",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / preferredSubdomain
        Added value: +{
        +  "description": "The subdomain label you want (e.g. 'mydemo'). Omit and set autoSelect:true to have one picked for you.",
        +  "type": "string"
        +}
      • addedInput schema / properties / target
        Added 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"
        +}
      • addedInput schema / properties / trialHandle
        Added value: +{
        +  "description": "(retry only) The trialHandle returned by the first call. Echo it back with your answers.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "goal"
        +]
      • removedOutput schema / properties / auth
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / candidateId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / claimToken
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / claimTokenExpiresAt
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / documentation
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / domain
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / expiresAt
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / message
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / next
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / questions
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / shareMessage
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / status
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / steps
        Removed value: -{
        -  "items": {
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / subdomain
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / trialHandle
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / trialId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / trustReceipt
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / upgrade
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / url
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "status",
        -  "steps"
        -]
    • Addedupgrade_trial
  12. 5 tool updates
    • Changedcheck_availability1 field changed
      • changedOutput 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"
        +}
    • Changedget_price_quote1 field changed
      • changedOutput 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"
        +}
    • Changedrent_domain1 field changed
      • changedOutput 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"
        +}
    • Changedsearch_domains1 field changed
      • changedOutput 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"
        +}
    • Changedtry_domain1 field changed
      • changedOutput 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"
        +}
  13. 1 tool update
    • Changedsearch_domains1 field changed
      • addedInput schema / properties / emotion
        Added 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"
        +}
  14. 5 tool updates
    • First observedcheck_availability
    • First observedget_price_quote
    • First observedrent_domain
    • First observedsearch_domains
    • First observedtry_domain

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables publishers to sell always-on replication of buyer-supplied Hypercore/Hyperdrive keys on Base, with payments in USDC via x402 and lease-based access control.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Pay-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.
    7
    131 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.