# singularityagent__portfolio

Query one address, or a whole set of them, across many chains in parallel. Pass addresses when somebody holds an EVM address, a Solana pubkey and a Bitcoin address — that is one person's holdings and would otherwise be three separate questions. Each address is matched only to the chains its own format is valid on, so this is not a cross product and a Solana pubkey never produces twenty EVM errors; an address valid nowhere is reported in errors rather than failing the call. holdings is the consolidated view, by asset rather than by chain. It sums only where a sum is honest: the same token, on the same chain, across the addresses you gave. It never adds a token to itself across chains — USDC on Ethereum and USDC on Base are different contracts with different issuers of record — and never merges two contracts because they share a ticker, since only symbols this tool supplies itself are grouped by name at all. spansChains marks an asset found in more than one place. Read completeness before concluding anything is absent. Balances only: there is no fiat pricing and therefore no total value.

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

## Facts

- Tool: `singularityagent__portfolio`
- Server: Rokha (`https://rokha.ai/mcp/jsonrpc`) — https://policylayer.com/tools/ai-rokha-rokha.md
- Homepage: https://github.com/aetherBytes/rokha-sdk
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 5
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `budget` | string | number | no | How much of each list to return: 'small' (10 items, for a tight context), 'standard' (the default), 'full' (this source's maximum), or a number for an exact cou |
| `chains` | array | no | Chains to query. Defaults to a spread of major chains across all four families. |
| `address` | string | no | One address, ENS/SNS name, or configured alias. Use `addresses` for a set. |
| `addresses` | array | no | Several addresses, which may span chain families. Deduplicated before querying. |
| `includeTokens` | boolean | no | Set false for native balances only. |

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__portfolio",
    "arguments": {}
  }
}
```

## Why singularityagent__portfolio is rated Medium

An AI agent can call singularityagent__portfolio faster than any human can review: one bad instruction and it creates or modifies resources in Rokha by the hundred, each call as confident as the last.

## Use case

AI agents use singularityagent__portfolio to create or update resources in Rokha, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Rokha environment.

## Recommended policy (PolicyLayer)

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

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "singularityagent__portfolio": {
      "limits": [
        {
          "counter": "singularityagent__portfolio_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## 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
