Skip to main content
Glama

Portfolios on this account

list_profiles
Read-onlyIdempotent

List the portfolios on this account (id, name, and how many exchanges and wallets each holds), plus which one is active in the app. Call this FIRST when the user names a portfolio ("what is in my trading account") so you can pass its name or id as the profile argument of another tool. Takes no arguments; an account with one portfolio needs none of this, because every tool reads the connection's default portfolio when profile is omitted.

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
errorNoPresent ONLY when the call was refused instead of answered: upgrade_required (Pro plan needed), not_found, profile_not_found, profile_ambiguous, invalid_arguments, write_not_permitted. No data fields come with it; read `message` to the user rather than retrying the same call.
itemsNo
activeNoId of the portfolio active in the app.
messageNoPlain-language explanation that accompanies `error` or a proposed change.
profileNoThe portfolio these figures belong to (absent on list_profiles).
source_urlNoLink to the page in the WhereItGoes app that shows this data.
upgrade_urlNoWhere the user can upgrade, on an upgrade_required refusal.
stock_assetsNoPresent when the answer mentions Binance Stocks shares (EQ_<ticker>): they are US stocks, not crypto.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "active": {
      +      "description": "Id of the portfolio active in the app.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "error": {
      +      "description": "Present ONLY when the call was refused instead of answered: upgrade_required (Pro plan needed), not_found, profile_not_found, profile_ambiguous, invalid_arguments, write_not_permitted. No data fields come with it; read `message` to the user rather than retrying the same call.",
      +      "type": "string"
      +    },
      +    "items": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "exchangeCount": {
      +            "type": "number"
      +          },
      +          "id": {
      +            "description": "Pass as the `profile` argument.",
      +            "type": "string"
      +          },
      +          "name": {
      +            "description": "Pass as the `profile` argument.",
      +            "type": "string"
      +          },
      +          "walletCount": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "exchangeCount",
      +          "walletCount"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "message": {
      +      "description": "Plain-language explanation that accompanies `error` or a proposed change.",
      +      "type": "string"
      +    },
      +    "profile": {
      +      "additionalProperties": true,
      +      "description": "The portfolio these figures belong to (absent on list_profiles).",
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "name"
      +      ],
      +      "type": "object"
      +    },
      +    "source_url": {
      +      "description": "Link to the page in the WhereItGoes app that shows this data.",
      +      "type": "string"
      +    },
      +    "stock_assets": {
      +      "additionalProperties": true,
      +      "description": "Present when the answer mentions Binance Stocks shares (EQ_<ticker>): they are US stocks, not crypto.",
      +      "properties": {
      +        "assets": {
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {
      +              "asset": {
      +                "type": "string"
      +              },
      +              "ticker": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "asset",
      +              "ticker"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "note": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "note",
      +        "assets"
      +      ],
      +      "type": "object"
      +    },
      +    "upgrade_url": {
      +      "description": "Where the user can upgrade, on an upgrade_required refusal.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds important operational context about default-portfolio resolution when `profile` is omitted. It does not need to explain return values because an output schema exists, though it could have noted any auth or rate-limit constraints.

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?

The description is front-loaded with the purpose, then usage, then the no-argument/default behavior. Every sentence adds concrete value with no repetition or filler.

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?

With an output schema, rich read-only annotations, and zero parameters, the description supplies everything an agent needs: what is listed, when to call it first, and why single-portfolio accounts can skip it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description reinforces this by saying it takes no arguments and by explaining how its result feeds the `profile` parameter of other tools.

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?

The description gives a specific verb and resource: list the portfolios on this account. It also states the returned fields (id, name, exchange/wallet counts, active portfolio), making its purpose clear relative to deeper single-portfolio tools like get_portfolio.

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?

It explicitly says to call this FIRST when the user names a portfolio and explains why: to obtain the name or id for another tool's `profile` argument. It also states when it is unnecessary: single-portfolio accounts can omit `profile` because other tools use the connection default.

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.