# singularityagent__prove_payment

After paying somebody, prove from the chain alone that the payment met the demand it answered — without relying on the payee to say so. Takes the transaction signature and the demand's terms (payee, amount, mint, the exact token account, memo, deadline, payer) and reports each term as its own check: what was expected, what the chain shows, and whether it holds. Only finalized state counts. Reach for it when a counterparty says a payment did not arrive, arrived late, went to the wrong place or lacked a reference, or whenever a payment has to be evidenced to a third party. verdict is proven only when the transaction finalized and every stated term holds, contradicted when at least one does not (a real payment can still be the wrong one), and unproven when the chain cannot settle it yet — not found, not finalized, or a block the endpoint will not date — which is never the same as contradicted. Read checks before verdict. The memo is returned as untrusted text, because whoever signed wrote it. Solana only. This reads: it signs nothing and sends nothing, and it proves what the chain shows, not that the payee credited it.

Agent View of the PolicyLayer registry record for `singularityagent__prove_payment`. HTML page: https://policylayer.com/tools/ai-rokha-rokha/singularityagent--prove-payment

## Facts

- Tool: `singularityagent__prove_payment`
- Server: Rokha (`https://rokha.ai/mcp/jsonrpc`) — https://policylayer.com/tools/ai-rokha-rokha.md
- Homepage: https://github.com/aetherBytes/rokha-sdk
- Risk category: Read (Low risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 9 (3 required)
- Recommended policy verdict: Allowed

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `to` | string | yes | The wallet the demand said would be paid. Matched by token-account owner. |
| `from` | string | no | The wallet that should have paid. Checked against whoever the funds left. |
| `memo` | string | no | Text the demand said the payment must carry. |
| `mint` | string | no | Token address — the mint. Omit for native SOL. Never a ticker. |
| `chain` | string | no | Solana chain id or alias. Defaults to "solana". |
| `amount` | string | yes | Whole tokens as a decimal string, as the demand stated it. |
| `expiresAt` | string | no | When the demand stopped being valid, ISO 8601. The payment must have landed before it. |
| `signature` | string | yes | The signature of the payment transaction. |
| `tokenAccount` | string | no | The exact destination token account the demand named, where it named one. |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "singularityagent__prove_payment",
    "arguments": {
      "to": "<to>",
      "amount": "<amount>",
      "signature": "<signature>"
    }
  }
}
```

## Why singularityagent__prove_payment is rated Low

Tool verifies payment existence and terms on immutable blockchain; read-only verification without side effects.

From the tool's own definition: "Prove from chain alone, reports each term as check, no state modification."

Risk signals: Bulk/mass operation — affects multiple targets

## Use case

AI agents call singularityagent__prove_payment to retrieve information from Rokha without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.

## Recommended policy (PolicyLayer)

Verdict: **Allowed**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Rokha:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "singularityagent__prove_payment": {}
  }
}
```

## Other tools on Rokha (215)

- `adspace_bid_cancel` — Destructive — https://policylayer.com/tools/ai-rokha-rokha/adspace-bid-cancel.md
- `delete_harness` — Destructive — https://policylayer.com/tools/ai-rokha-rokha/delete-harness.md
- `hook_delete` — Destructive — https://policylayer.com/tools/ai-rokha-rokha/hook-delete.md
- `rig_node_remove` — Destructive — https://policylayer.com/tools/ai-rokha-rokha/rig-node-remove.md
- `schedule_delete` — Destructive — https://policylayer.com/tools/ai-rokha-rokha/schedule-delete.md
- `signet_paper_reset` — Destructive — https://policylayer.com/tools/ai-rokha-rokha/signet-paper-reset.md
- `signet_revoke` — Destructive — https://policylayer.com/tools/ai-rokha-rokha/signet-revoke.md
- `auth_wallet_verify` — Execute — https://policylayer.com/tools/ai-rokha-rokha/auth-wallet-verify.md
- `harness_author` — Execute — https://policylayer.com/tools/ai-rokha-rokha/harness-author.md
- `orbitx__orbitx_gc_focus` — Execute — https://policylayer.com/tools/ai-rokha-rokha/orbitx--orbitx-gc-focus.md
- `registry_adopt` — Execute — https://policylayer.com/tools/ai-rokha-rokha/registry-adopt.md
- `registry_list_server` — Execute — https://policylayer.com/tools/ai-rokha-rokha/registry-list-server.md
- `rig_author` — Execute — https://policylayer.com/tools/ai-rokha-rokha/rig-author.md
- `rig_run` — Execute — https://policylayer.com/tools/ai-rokha-rokha/rig-run.md
- `sandbox_exec` — Execute — https://policylayer.com/tools/ai-rokha-rokha/sandbox-exec.md
- `sandbox_start` — Execute — https://policylayer.com/tools/ai-rokha-rokha/sandbox-start.md
- `sandbox_stop` — Execute — https://policylayer.com/tools/ai-rokha-rokha/sandbox-stop.md
- `send_agent_message` — Execute — https://policylayer.com/tools/ai-rokha-rokha/send-agent-message.md
- `signet_approve` — Execute — https://policylayer.com/tools/ai-rokha-rokha/signet-approve.md
- `singularityagent__mesh` — Execute — https://policylayer.com/tools/ai-rokha-rokha/singularityagent--mesh.md
- `studio_doors` — Execute — https://policylayer.com/tools/ai-rokha-rokha/studio-doors.md
- `x_link_start` — Execute — https://policylayer.com/tools/ai-rokha-rokha/x-link-start.md
- `adnet_feed` — Financial — https://policylayer.com/tools/ai-rokha-rokha/adnet-feed.md
- `adnet_join` — Financial — https://policylayer.com/tools/ai-rokha-rokha/adnet-join.md
- `ads_order` — Financial — https://policylayer.com/tools/ai-rokha-rokha/ads-order.md
- `adspace_bid` — Financial — https://policylayer.com/tools/ai-rokha-rokha/adspace-bid.md
- `auth_wallet_challenge` — Financial — https://policylayer.com/tools/ai-rokha-rokha/auth-wallet-challenge.md
- `campaign_claim` — Financial — https://policylayer.com/tools/ai-rokha-rokha/campaign-claim.md
- `carry_order` — Financial — https://policylayer.com/tools/ai-rokha-rokha/carry-order.md
- `creator_earnings` — Financial — https://policylayer.com/tools/ai-rokha-rokha/creator-earnings.md
- …and 185 more: https://policylayer.com/tools/ai-rokha-rokha.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=ai-rokha-rokha · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/ai-rokha-rokha
