Skip to main content
Glama

rent_domain

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.

Input Schema

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

NameRequiredDescriptionDefault
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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema 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"
      +}
  2. Changed2 schema 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."
  3. Changed1 schema field changed
    • addedOutput schema / properties / tierProgression / properties / reason
      Added value: +{
      +  "type": "string"
      +}
  4. Changed3 schema 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."
  5. Changed7 schema 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"
      +}
  6. Changed18 schema 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"
      -]
  7. Changed1 schema 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"
      +}
  8. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Beyond annotations, the description discloses critical behavior: agent authentication is required, there is no funded account, each rental is a single on-chain payment, and there are two settlement paths including gasless facilitator settlement. This adds substantial operational context not captured by the annotations.

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 mostly front-loaded and appropriate for a two-phase payment tool. There is some redundancy, such as restating the x402 challenge request after already describing the flow, but the structure remains usable.

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?

Given the tool's complexity, annotations, complete schema coverage, and output schema, the description is complete enough for an agent to understand authentication, phase sequencing, payment options, and settlement. No essential calling behavior 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?

Schema description coverage is 100%, so the schema already documents all parameters. The description still adds meaningful workflow semantics by grouping phase-1 and phase-2 parameters and explaining how txHash and x402Payment are alternatives during settlement.

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

Purpose4/5

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

The description states a specific verb and resource: "Rent a subdomain" with USDC on Base via x402. It clearly distinguishes this as a paid on-chain rental rather than a stored-balance purchase, though it does not explicitly contrast with sibling tools such as try_domain or upgrade_trial.

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?

The description gives clear procedural context for when to call each phase and what each phase requires. It does not explicitly name alternatives or exclusions against sibling tools like get_price_quote or check_availability, so it falls short of full when/when-not guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.