Skip to main content
Glama

PrivateDAO Agent Exchange

PrivateDAO Payment Preparation

privatepay_prepare
Read-onlyIdempotent

Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for a local wallet to inspect and sign. Call this after privatepay_checkout and before wallet authorization; PrivateDAO never receives a private key and this tool never broadcasts.

Input Schema

NameRequiredDescriptionDefault
ownerNoOptional destination or balance owner public key.
payerNoWallet public key that will inspect and authorize the transaction.
phaseNoUnsigned wallet operation to prepare after the challenge: deposit into the private rail, private transfer, or withdrawal.transfer
splitNoOptional private transfer split count, from one to fifteen.
gaslessNoRequest the configured sponsored route when supported; the wallet still signs the returned transaction.
request_idYesPrivatePAY request identifier returned by the challenge or checkout.
amount_base_unitsYesToken amount in base units.

Output Schema

NameRequiredDescriptionDefault
phaseNoPrepared private-rail operation.
request_idNoPrivatePAY request identifier bound to the unsigned operation.
transactionNoSerialized unsigned transaction when the provider returns one.
required_signersNoWallet public keys that must sign locally.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • changedInput schema / description
      Previous value: -"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet signing. This does not sign or broadcast."New value: +"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet inspection and signing. PrivateDAO never receives a private key and this tool never broadcasts."
    • addedInput schema / properties / amount_base_units / description
      Added value: +"Token amount in base units."
    • addedInput schema / properties / gasless / description
      Added value: +"Request the configured sponsored route when supported; the wallet still signs the returned transaction."
    • addedInput schema / properties / owner / description
      Added value: +"Optional destination or balance owner public key."
    • addedInput schema / properties / payer / description
      Added value: +"Wallet public key that will inspect and authorize the transaction."
    • addedInput schema / properties / phase / description
      Added value: +"Unsigned wallet operation to prepare after the challenge: deposit into the private rail, private transfer, or withdrawal."
    • addedInput schema / properties / request_id / description
      Added value: +"PrivatePAY request identifier returned by the challenge or checkout."
    • addedInput schema / properties / split / description
      Added value: +"Optional private transfer split count, from one to fifteen."
    • addedOutput schema / properties
      Added value: +{
      +  "phase": {
      +    "description": "Prepared private-rail operation.",
      +    "enum": [
      +      "deposit",
      +      "transfer",
      +      "withdraw"
      +    ],
      +    "type": "string"
      +  },
      +  "request_id": {
      +    "description": "PrivatePAY request identifier bound to the unsigned operation.",
      +    "type": "string"
      +  },
      +  "required_signers": {
      +    "description": "Wallet public keys that must sign locally.",
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "transaction": {
      +    "description": "Serialized unsigned transaction when the provider returns one.",
      +    "type": "string"
      +  }
      +}
  2. Changed9 schema fields changed
    • changedInput schema / description
      Previous value: -"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet inspection and signing. PrivateDAO never receives a private key and this tool never broadcasts."New value: +"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet signing. This does not sign or broadcast."
    • removedInput schema / properties / amount_base_units / description
      Removed value: -"Token amount in base units."
    • removedInput schema / properties / gasless / description
      Removed value: -"Request the configured sponsored route when supported; the wallet still signs the returned transaction."
    • removedInput schema / properties / owner / description
      Removed value: -"Optional destination or balance owner public key."
    • removedInput schema / properties / payer / description
      Removed value: -"Wallet public key that will inspect and authorize the transaction."
    • removedInput schema / properties / phase / description
      Removed value: -"Unsigned wallet operation to prepare after the challenge: deposit into the private rail, private transfer, or withdrawal."
    • removedInput schema / properties / request_id / description
      Removed value: -"PrivatePAY request identifier returned by the challenge or checkout."
    • removedInput schema / properties / split / description
      Removed value: -"Optional private transfer split count, from one to fifteen."
    • removedOutput schema / properties
      Removed value: -{
      -  "phase": {
      -    "description": "Prepared private-rail operation.",
      -    "enum": [
      -      "deposit",
      -      "transfer",
      -      "withdraw"
      -    ],
      -    "type": "string"
      -  },
      -  "request_id": {
      -    "description": "PrivatePAY request identifier bound to the unsigned operation.",
      -    "type": "string"
      -  },
      -  "required_signers": {
      -    "description": "Wallet public keys that must sign locally.",
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "transaction": {
      -    "description": "Serialized unsigned transaction when the provider returns one.",
      -    "type": "string"
      -  }
      -}
  3. Changed9 schema fields changed
    • changedInput schema / description
      Previous value: -"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet signing. This does not sign or broadcast."New value: +"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet inspection and signing. PrivateDAO never receives a private key and this tool never broadcasts."
    • addedInput schema / properties / amount_base_units / description
      Added value: +"Token amount in base units."
    • addedInput schema / properties / gasless / description
      Added value: +"Request the configured sponsored route when supported; the wallet still signs the returned transaction."
    • addedInput schema / properties / owner / description
      Added value: +"Optional destination or balance owner public key."
    • addedInput schema / properties / payer / description
      Added value: +"Wallet public key that will inspect and authorize the transaction."
    • addedInput schema / properties / phase / description
      Added value: +"Unsigned wallet operation to prepare after the challenge: deposit into the private rail, private transfer, or withdrawal."
    • addedInput schema / properties / request_id / description
      Added value: +"PrivatePAY request identifier returned by the challenge or checkout."
    • addedInput schema / properties / split / description
      Added value: +"Optional private transfer split count, from one to fifteen."
    • addedOutput schema / properties
      Added value: +{
      +  "phase": {
      +    "description": "Prepared private-rail operation.",
      +    "enum": [
      +      "deposit",
      +      "transfer",
      +      "withdraw"
      +    ],
      +    "type": "string"
      +  },
      +  "request_id": {
      +    "description": "PrivatePAY request identifier bound to the unsigned operation.",
      +    "type": "string"
      +  },
      +  "required_signers": {
      +    "description": "Wallet public keys that must sign locally.",
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "transaction": {
      +    "description": "Serialized unsigned transaction when the provider returns one.",
      +    "type": "string"
      +  }
      +}
  4. Changed9 schema fields changed
    • changedInput schema / description
      Previous value: -"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet inspection and signing. PrivateDAO never receives a private key and this tool never broadcasts."New value: +"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet signing. This does not sign or broadcast."
    • removedInput schema / properties / amount_base_units / description
      Removed value: -"Token amount in base units."
    • removedInput schema / properties / gasless / description
      Removed value: -"Request the configured sponsored route when supported; the wallet still signs the returned transaction."
    • removedInput schema / properties / owner / description
      Removed value: -"Optional destination or balance owner public key."
    • removedInput schema / properties / payer / description
      Removed value: -"Wallet public key that will inspect and authorize the transaction."
    • removedInput schema / properties / phase / description
      Removed value: -"Unsigned wallet operation to prepare after the challenge: deposit into the private rail, private transfer, or withdrawal."
    • removedInput schema / properties / request_id / description
      Removed value: -"PrivatePAY request identifier returned by the challenge or checkout."
    • removedInput schema / properties / split / description
      Removed value: -"Optional private transfer split count, from one to fifteen."
    • removedOutput schema / properties
      Removed value: -{
      -  "phase": {
      -    "description": "Prepared private-rail operation.",
      -    "enum": [
      -      "deposit",
      -      "transfer",
      -      "withdraw"
      -    ],
      -    "type": "string"
      -  },
      -  "request_id": {
      -    "description": "PrivatePAY request identifier bound to the unsigned operation.",
      -    "type": "string"
      -  },
      -  "required_signers": {
      -    "description": "Wallet public keys that must sign locally.",
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "transaction": {
      -    "description": "Serialized unsigned transaction when the provider returns one.",
      -    "type": "string"
      -  }
      -}
  5. Changed1 schema field changed
    • addedOutput schema / properties
      Added value: +{
      +  "phase": {
      +    "description": "Prepared private-rail operation.",
      +    "enum": [
      +      "deposit",
      +      "transfer",
      +      "withdraw"
      +    ],
      +    "type": "string"
      +  },
      +  "request_id": {
      +    "description": "PrivatePAY request identifier bound to the unsigned operation.",
      +    "type": "string"
      +  },
      +  "required_signers": {
      +    "description": "Wallet public keys that must sign locally.",
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "transaction": {
      +    "description": "Serialized unsigned transaction when the provider returns one.",
      +    "type": "string"
      +  }
      +}
  6. Changed8 schema fields changed
    • changedInput schema / description
      Previous value: -"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet signing. This does not sign or broadcast."New value: +"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet inspection and signing. PrivateDAO never receives a private key and this tool never broadcasts."
    • addedInput schema / properties / amount_base_units / description
      Added value: +"Token amount in base units."
    • addedInput schema / properties / gasless / description
      Added value: +"Request the configured sponsored route when supported; the wallet still signs the returned transaction."
    • addedInput schema / properties / owner / description
      Added value: +"Optional destination or balance owner public key."
    • addedInput schema / properties / payer / description
      Added value: +"Wallet public key that will inspect and authorize the transaction."
    • addedInput schema / properties / phase / description
      Added value: +"Unsigned wallet operation to prepare after the challenge: deposit into the private rail, private transfer, or withdrawal."
    • addedInput schema / properties / request_id / description
      Added value: +"PrivatePAY request identifier returned by the challenge or checkout."
    • addedInput schema / properties / split / description
      Added value: +"Optional private transfer split count, from one to fifteen."
  7. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Unsigned PrivatePAY preparation context for local wallet authorization.",
      +  "type": "object"
      +}
  8. Changed4 schema fields changed
    • changedInput schema / description
      Previous value: -"Prepare a real MagicBlock private transfer transaction for the buyer to inspect and sign. This does not sign or broadcast."New value: +"Prepare an unsigned MagicBlock deposit, private transfer, or withdrawal for local wallet signing. This does not sign or broadcast."
    • addedInput schema / properties / owner
      Added value: +{
      +  "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / phase
      Added value: +{
      +  "default": "transfer",
      +  "enum": [
      +    "deposit",
      +    "transfer",
      +    "withdraw"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "request_id",
      -  "payer",
      -  "amount_base_units"
      -]New value: +[
      +  "request_id",
      +  "amount_base_units"
      +]
  9. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds meaningful behavioral context beyond those fields: the output is unsigned, PrivateDAO never receives a private key, and the tool never broadcasts. It does not cover rate limits or error behavior, 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?

Two tightly written sentences with no repetition. The action and sequencing guidance are front-loaded before the safety notes.

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 full schema coverage, an output schema, and rich safety annotations, the description supplies the remaining workflow and custody context an agent needs: when to call it and what it will not do. Nothing material is missing.

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%, including the phase enum, split bounds, and gasless behavior. The description names the three supported operations but does not add syntax, format, or default-value meaning beyond what the schema already provides. The baseline of 3 is appropriate.

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: prepare an unsigned deposit, private transfer, or withdrawal for local wallet inspection and signing. This clearly distinguishes it from sibling tools like privatepay_checkout and privatepay_settle.

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 places the tool in the flow: call after privatepay_checkout and before wallet authorization. Naming the adjacent sibling tools leaves little ambiguity about when this step is appropriate.

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.