list_portfolios

List portfolios

read collection tenant-private since 2026-10-01

Lists portfolios, ordered by portfolio id, a page at a time. Each carries its id, name and account, and its orgs by id and name. An account owner names an account they own and sees that account's portfolios and no others; staff may name any account, or none to see every portfolio, staff portfolios included.

Contract

shape
collection
authority
read
evidence
none
subscription
false
permission
any one of: staff.read (the staff role staff_read held in the Internal org, tradehq_role.staff_role); account.owner (account role owner or higher in at least one account; the call is scoped to those accounts); a deactivated caller is refused first
idempotency
safe
emits
none
MCP tool
list_portfolios
REST
POST https://api.containertradehq.com/v1/cap/list_portfolios

Idempotency: a read: calling again changes nothing

Inputs

nametyperequiredvalidation
account_idaccount_idoptionaltradehq-account-id
Only this account's portfolios. Required of an account owner, and one they own; staff may leave it out.
limitintegeroptional1 to 200; default 50
The page size.
afterportfolio_idoptionaltradehq-portfolio-id
The previous page's next_after.

Paginated: next next_after · ceiling not_declared

Response

  • items · object[]
  • next_after · stringnull · Pass as `after` for the next page; null on the last one.
Full JSON Schema
{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "portfolio_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
            "format": "tradehq-portfolio-id",
            "description": "The portfolio's id.",
            "x-data-class": "operational"
          },
          "name": {
            "type": "string",
            "description": "Its name.",
            "x-data-class": "operational"
          },
          "account_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
            "format": "tradehq-account-id",
            "description": "Its account; null for a staff portfolio.",
            "x-data-class": "operational"
          },
          "org_count": {
            "type": "integer",
            "minimum": 0,
            "description": "How many orgs it holds.",
            "x-data-class": "operational"
          },
          "orgs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "org_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 20,
                  "pattern": "^[A-Za-z0-9_-]{1,20}$",
                  "format": "tradehq-org-id"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "org_id",
                "name"
              ],
              "additionalProperties": false
            },
            "description": "Its orgs, by org id, each with its name.",
            "x-data-class": "operational"
          }
        },
        "required": [
          "portfolio_id",
          "name",
          "account_id",
          "org_count",
          "orgs"
        ],
        "additionalProperties": false
      }
    },
    "next_after": {
      "type": [
        "string",
        "null"
      ],
      "description": "Pass as `after` for the next page; null on the last one."
    }
  },
  "required": [
    "items",
    "next_after"
  ],
  "additionalProperties": false
}

Refusals

not yet declared

The platform refusals apply to every call: version, authentication, authority, validation and rate limits, each in the same envelope.

Surfaces

DesktopF
MobileF
APIF
MCPF
VoiceD4
PushN
OneBoxN
OutboundN
  • Voice: degraded: visualization
  • Push: emits nothing
  • OneBox: no document originates a portfolio listing
  • Outbound: crosses to no counterparty

Events

None emitted.

Related

None.