Skip to main content
Glama

upgrade_trial

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.

Input Schema

TableJSON Schema
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

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema 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"
      -}
  2. Changed1 schema field changed
    • addedOutput schema / properties / tierProgression / properties / reason
      Added value: +{
      +  "type": "string"
      +}
  3. 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."
  4. Changed6 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 / 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"
      +  }
      +}
  5. Changed1 schema 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)."
  6. Added

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.