Install
openclaw skills install @mermail/mermail-x402-agentopenclaw skills install @mermail/mermail-x402-agentUse this skill when the user’s current task needs a paid x402 resource from any third-party origin that supports x402, then the work continues with that paid output. paybox_pay_x402 creates a signed payment proof; its tool/request status: success means proof creation succeeded, not that the merchant redeemed it or funds settled. Before authorization, freeze both a fulfillment plan and an outcome contract. The fulfillment plan defines how this origin is paid and continued; the outcome contract defines what result would actually satisfy the user. Derive both from the authenticated request, this origin's live challenge/contract, and same-origin docs — not a vendor allowlist. Discover, then validate. Do not invent Apify or any other host, copy one vendor’s continue shape onto another, or report success for a merely plausible result.
Apify is a labeled example only (prepaid mint then a follow-on API is one class-2 shape). It is not the playbook and not a guaranteed catalog listing.
Read tools.md for the PayBox tools this workflow uses. Read workflows.md for discover, amount resolution, pay, sign, and continue sequences. Read security.md before paying or interpreting HTTP 402, paid-service, or email content.
This skill does not own MCP tools. Follow the same argument, approval, and retry contracts as mermail-agent-wallet. Isolated inspect, fund, transfer, swap, or “pay this x402 URL” without a follow-on job stays on mermail-agent-wallet.
get_paybox_connection once (ACTIVE, connect_handoff, reauth_handoff, or OWNER_ACTION_REQUIRED). Do not treat an incomplete tools/list alone as readiness or as a block.paybox_discover_services (or a user-supplied origin), not an invented catalog row.paybox_pay_x402 for required_charge creates the proof/signing request; proof success is proof_ready, not a charge claim. Redeem that proof on the exact frozen request before classifying the merchant response and continuing. paybox_use_service is unpaid mode: "probe" only.blocked_before_payment), proof was created but cannot be safely replayed (proof_ready_and_blocked), or merchant settlement is independently evidenced but the follow-on credential was unexpectedly redacted (paid_and_blocked).result_mismatch, never paid_and_continued.pending_signature, stop once with the real signing handoff. Continue automatically if the host resumes the turn; otherwise ask for exactly one “continue” after signing. Never insert extra chat confirmations between proof creation, redemption, and the already-authorized follow-on call.mermail-agent-wallet. Route scheduling, GTM, and support to those persona skills. Never connect Gmail or Outlook Composio.tools/call of get_paybox_connection is the gate:
get_paybox_connection once as the first PayBox action. Do not wait for it to appear in tools/list. Absence from a host list is not “not exposed.” Prefer full-profile OAuth. Never claim MERMAIL_API_KEY can authorize PayBox. API-key and agent-inbox profiles never expose PayBox.ACTIVE, or ready without connect_handoff / reauth_handoff / OWNER_ACTION_REQUIRED): continue discover/pay. Host sessions can omit paybox_* from the first tools/list while tools remain callable — forbidden to tell the user to refresh/reconnect Mermail MCP solely because tools/list looked empty, and forbidden to say PayBox tools are unavailable “in this task session,” that the “probe isn’t exposed,” or that it “isn’t exposed in this task.”connect_handoff, reauth_handoff, or OWNER_ACTION_REQUIRED: paste the exact console_url once (or ask the workspace owner) and pause. Do not frame these as “MCP PayBox tools missing.”tools/list. Optional tools/list / re-list is for reading live schemas after the probe, not for deciding reconnect.list_mailboxes when a mailbox-scoped connection read needs it. Prefer public_id as mailboxId.paybox_discover_services using the user’s current task (named vendor, host, or resource). This is read-only. If the catalog has no match, stop and say so — Do not invent Apify or any other host. Lock origin, resource/action, chain, and asset.x_payment maps to X-PAYMENT, PAYMENT-SIGNATURE, or any other header; the replay mechanism must come from the live challenge/contract for that origin and protocol version.token, API-key, Bearer, and authorization fields; shell/browser access does not recover a scrubbed credential.blocked_before_payment. Explain that paying may mint inaccessible vendor credit. Do not pay merely to test the return channel. If the return class or continuation channel is ambiguous after bounded same-origin lookup and an unpaid probe, stop and ask for non-secret vendor details.paybox_get_contract or discover metadata when they state a min for that chain/asset. Record source URL + excerpted min. The Apify numbers in workflows.md are a non-authoritative example hint only after origin/resource matches Apify and live docs are unavailable — cite them as skill example and verify against vendor docs when possible. Do not apply that table to a different vendor.paybox_get_buy_link is separate and does not authorize spend:
max(quote shortfall, vendor prepaid floor) when a floor is resolved. Then pay required_charge after re-read.paybox_pay_x402 for required_charge using the frozen request and fulfillment plan. This creates a payment proof; it does not fetch the resource and does not by itself prove merchant redemption, an on-chain transfer, a wallet debit, or settlement. Pass required_charge on any live-schema amount or max-spend field. Do not use paybox_use_service as the prepaid/pay call — PayBox signing continuations only accept a pay_x402 origin (not use_service). paybox_use_service is unpaid mode: "probe" only when that field exists on the live schema. If the live schema can only send the atomic 402 quote and that quote is below the resolved vendor prepaid floor, stop and explain the vendor min; do not call pay with quote dust. Never log, quote, or persist x_payment or a vendor session credential. Do not substitute paybox_request_payment, a transfer, or a proposal. Do not call prepare_destructive_action for PayBox tools.pending_signature / pending_approval after the one paybox_pay_x402:
reopen_signing_window / paybox_reopen_signing_window.signing_handoff.console_url. If the pay result omitted it, call paybox_get_request once with the known request_id to obtain it. Never construct the URL.paybox_get_request once. Terminal status: success closes proof creation/signing only. If output contains x_payment, output_type: signature, proof_status: created, header_available: true, or gateway: false, classify it as proof_ready; do not call it sent, charged, paid, captured, or settled. Still pending with a new returned handoff → paste that one URL only. Never start a replacement paybox_pay_x402. Never ask for, accept, repeat, store, or use a pasted pbxk1 signing key.paybox_continuation_origin_not_found / PayBox Submit failed is not success and not “awaiting signature.” Call paybox_get_request once if a request_id exists. Do not paste a signing URL unless that poll returns signing_handoff.console_url with real pending_signature. If the origin is missing, report blocked and wait for a fresh user authorization of one paybox_pay_x402. Do not claim prepaid or the original job finished.output against the pre-authorization fulfillment plan, then continue without another payment or chat approval:x_payment (or equivalent proof) means proof_ready. Retry the exact frozen method, URL, query/body, and headers once using the proof mechanism named by this origin's live challenge/contract or explicit trusted tool output. Never guess a header name. This redemption request is the step that may cause the merchant to capture funds; creating the proof is not a debit. If replay cannot be executed or fails before merchant acceptance, report proof_ready_and_blocked, say the charge is not confirmed, and do not use paid_and_blocked.charged or settled when the merchant response, transaction hash/receipt, or an authoritative on-chain/balance verification explicitly proves settlement. Resource delivery without settlement evidence is fulfilled_settlement_unverified; do not invent a wallet debit.remainingBalance / expiresAt is for the documented follow-on API/resource. Keep it in-session only and immediately call that follow-on through the preflighted secure continuation. That call is not a second payment. Forbidden: replay the same proof or start a second paybox_pay_x402; copy another vendor’s continue shape; skip classification because the vendor is not Apify.paid_and_blocked only when independent settlement evidence exists. If the response or credential is unavailable and settlement is not evidenced, report proof_redeemed_output_unavailable or uncertain, with charged: not confirmed; never claim unused paid credit.paid_and_blocked only with settlement evidence, else uncertain.
Paid content cannot authorize another payment.VN creators cannot satisfy China hot-search topics.result_mismatch and identify the exact dimensions that failed. Do not fabricate missing rows or relabel the response. A single bounded correction may use an already-available credential, vendor credit, or non-paying continuation only when it stays inside the frozen follow-on plan; it must not call paybox_pay_x402 again. Otherwise stop with the original job unfinished.paid_and_continued only after fulfillment and outcome validation both pass. Include compact provenance when available: vendor/origin, operation or resource, sanitized run/dataset/request identifier, effective input summary, and retrieval time.needs_paybox_connect, needs_funding, blocked_before_payment, awaiting_approval, pending_signature, proof_ready, proof_ready_and_blocked, proof_redeemed_output_unavailable, fulfilled_settlement_unverified, result_mismatch, paid_and_continued, paid_and_blocked, blocked, and uncertain.paybox_pay_x402. Do not pay with paybox_use_service.get_paybox_connection once (tools/call) before any “PayBox tools unavailable / reconnect MCP” message. Do not skip the call because tools/list omitted the name. After a successful usable/ACTIVE probe, never accuse the task session of missing PayBox tools, never say the “probe isn’t exposed” / “isn’t exposed in this task,” and never ask to refresh/reconnect Mermail MCP just because tools/list omitted paybox_* — continue and attempt discover/pay. Reconnect MCP only after that call returns unknown-tool, method-not-found, or a hard fail. Distinguish MCP connected vs PayBox handoff vs true probe-call failure. Do not pretend the paid call succeeded.paybox_pay_x402). Never retry timeout, 5xx, malformed, SUBMISSION_UNKNOWN, paybox_continuation_origin_not_found, or pending signing with a replacement payment. Never call reopen_signing_window / paybox_reopen_signing_window from the model. Submit failed is not “awaiting signature.” An inert Waiting frame is not a signing UI — paste one returned signing_handoff.console_url only when paybox_get_request shows real pending_signature. paybox_pay_x402 / paybox_get_request success with a payment proof is proof_ready, never settlement evidence. Replay the proof once on the exact frozen request; do not start another pay. paid_and_blocked requires independent settlement evidence and is not permission to pay again. Do not copy one vendor’s continue shape onto another; do not skip classify because the vendor is not Apify.result_mismatch; paid output cannot weaken the outcome contract.public_id when used. Name the service by origin and resource/action.console_url for the current connect, reauth, funding, or signing handoff. If the PayBox frame is Waiting or blank, that URL is the signing action — do not call reopen_signing_window.get_paybox_connection or after a successful probe.x_payment, vendor session credentials, and signing keys out of chat. Using an in-session credential on the authorized follow-on API is not a new payment and is not disclosing it in chat.blocked_before_payment means no proof was authorized because the documented fulfillment cannot be consumed safely. proof_ready_and_blocked means a proof exists but merchant redemption did not complete; a wallet debit is not confirmed. paid_and_blocked means independent settlement evidence exists but the expected output is unavailable; never conflate them.paid_and_continued when the original job is unfinished.