Skip to main content
Glama
dacmail

indexa-capital-mcp-server

by dacmail

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
INDEXA_API_TOKENYesYour Indexa Capital API token. Obtain from your account settings.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
indexa_get_meA

Retrieve the authenticated user's profile and the list of all Indexa Capital accounts they own or have access to.

This is the entry point of the API: every other tool requires an account_number, and this tool is how you discover them. The token in INDEXA_API_TOKEN identifies the user, so no input is required.

Args:

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format, the raw response from GET /users/me: { "username": string, "email": string, "name"?: string, "surname"?: string, "document": string, "document_type": string, "roles": string[], "is_activated": boolean, "accounts": [ { "account_number": string, // e.g. "NK1NUTP1" — pass to other tools "status": string, // "active", "pending-contract", etc. "type": "mutual" | "pension" } ], "accounts_relations": [ { "account_number": string, "relation": "owner" | "auth" | "guest" } ] }

Examples:

  • Use when: User asks "what accounts do I have at Indexa?" or any question that mentions Indexa investments without specifying an account.

  • Use when: You need an account_number to call any other indexa_* tool.

  • Don't use when: The user already gave you an account_number.

Error handling:

  • 401/403: token is invalid or revoked. Regenerate it in the Indexa private area at Configuración de usuario > Aplicaciones.

indexa_get_accountA

Retrieve static information about a single Indexa account: product type (cartera de fondos / plan de pensiones), risk profile (1-10), holders, account status, funding state and currency.

This tool does NOT return the current portfolio value, holdings, or performance — for those use indexa_get_portfolio and indexa_get_performance.

Args:

  • account_number (string): Indexa account ID, obtained from indexa_get_me

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format, the raw response from GET /accounts/{account_number}: { "account_number": string, "account_type": "personal" | "company" | "minor", "type": "mutual" | "pension", "currency": string, // typically "EUR" "status": string, // "active", "pending-contract", etc. "funding": "total" | "partial" | "no", "profile": { "selected_risk": 1-10, // user-selected risk level "risk": { "tolerance": 1-10, // questionnaire-derived "capacity": 1-10, "total": 1-10 // = min(tolerance, capacity) }, "is_outdated": boolean, "needs_to_be_updated": boolean }, "holders": [...], // titulares con nombre y DNI "platform_code": string }

Examples:

  • Use when: "What's my risk profile on account NK1NUTP1?"

  • Use when: "Is my pension account active?"

  • Don't use when: The user wants the current portfolio value (use indexa_get_portfolio) or returns (use indexa_get_performance).

Error handling:

  • 404: account_number does not exist or you don't have access to it.

  • 401/403: token invalid or revoked.

indexa_get_portfolioA

Retrieve the current portfolio of an Indexa account: total value, cash position, and the full list of instruments currently held (ISIN, name, asset class, market value, cost basis, unrealized P/L and return %).

API response shape: { "portfolio": { "total_amount", "cash_amount", "instruments_amount", "instruments_cost", "date" }, "cash_accounts": [{ "amount", "date" }], "instrument_accounts": [{ "positions": [{ "amount", "cost_amount", "price", "titles", "instrument": { "identifier"(ISIN), "name", "asset_class", "management_company_description" } }] }] }

The Markdown output includes: grand total, cost basis, total P/L and return %, breakdown by asset class with %, and per-position detail sorted by value.

Args:

  • account_number (string): Indexa account ID, from indexa_get_me

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Examples:

  • Use when: "What's my Indexa portfolio worth?"

  • Use when: "Show me what funds I'm holding"

  • Use when: "How much am I up/down on my Indexa account?"

  • Don't use for: historical returns → indexa_get_performance

  • Don't use for: transaction history → indexa_get_transactions

indexa_get_performanceA

Retrieve the historical performance series for an Indexa account, with optional date filtering and projection data.

Performance values are returned in base 100 — a value of 105 at index N means +5% cumulative return since the start of the series. Per Indexa support, returns between two points are computed as: 100 * (return[end] / return[start] - 1).

Args:

  • account_number (string): Indexa account ID

  • date_from (string, optional): Filter the series to start on or after this date (YYYY-MM-DD)

  • date_to (string, optional): Filter the series to end on or before this date (YYYY-MM-DD)

  • include_projections (boolean, default false): Whether to include best/worst/expected forward projections in the JSON output. These can be large; leave off unless explicitly needed.

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

The Markdown format computes and displays:

  • Cumulative return over the period

  • Annualised return (estimated from the date range)

  • Plan expected return (Indexa's own projection)

  • Benchmark comparison and alpha (if benchmark series is present)

  • A sampled subset of the curve as a table (~8 points)

Returns: For JSON format, the structure is: { "plan_expected_return": number, // e.g. 0.0384 = +3.84%/year expected "performance": { "period": ["YYYY-MM-DD", ...], // dates "return": [number, ...], // base-100 actual return series "benchmark"?: [number, ...], // base-100 benchmark series "best"?: [number, ...], // best-case projection (if requested) "worst"?: [number, ...], // worst-case projection "expected"?: [number, ...] // expected projection } }

Examples:

  • Use when: "What's my YTD return on Indexa?" -> date_from = first day of year

  • Use when: "How has my account performed since I opened it?" -> no dates

  • Use when: "Compare my returns to the benchmark"

  • Don't use when: The user wants the current value (use indexa_get_portfolio) or transaction history (use indexa_get_transactions).

Error handling:

  • 404: account not found or no performance data yet (e.g. just opened).

  • 401/403: token invalid.

indexa_get_transactionsA

Retrieve the transaction history for an Indexa account: contributions (aportaciones), withdrawals (retiradas), fund subscriptions and redemptions, dividend reinvestments, fees charged, etc.

Use this for questions about money in/out of the account or specific operations on a date.

Args:

  • account_number (string): Indexa account ID

  • date_from (string, optional): Lower date bound (YYYY-MM-DD)

  • date_to (string, optional): Upper date bound (YYYY-MM-DD)

  • limit (number, default 50, max 500): Maximum transactions to return

  • offset (number, default 0): Pagination offset

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format, an array of transaction objects. The exact shape is not fully published in the Indexa RAML, but transactions typically include: { "date": "YYYY-MM-DD", "amount": number, // EUR; positive = into account "type": string, // e.g. "contribution", "subscription", "redemption", "fee" "description": string, "instrument"?: { "name": string, "identifier": string // ISIN } }

Examples:

  • Use when: "How much have I contributed to Indexa this year?"

  • Use when: "Show my last 20 movements on account NK1NUTP1"

  • Use when: "Did I get charged fees in March?"

Error handling:

  • 404: endpoint not available for this account type or status.

  • 401/403: token invalid.

Note: Date filtering and pagination are applied client-side after the API responds. For very active accounts with many years of history, narrow the date_from / date_to window to keep responses fast and within limits.

indexa_get_feesA

Retrieve the management fees charged by Indexa Capital on an account. Indexa bills quarterly, and this endpoint returns one record per quarter, including the asset base used, the net fee, VAT, the effective fee rate, and a link to the invoice PDF.

Args:

  • account_number (string): Indexa account ID

  • date_from (string, optional): Filter to quarters that end on or after this date (YYYY-MM-DD)

  • date_to (string, optional): Filter to quarters that start on or before this date (YYYY-MM-DD)

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format, an array of fee records: [ { "account_number": string, "date_from": "YYYY-MM-DD", // start of the billing quarter "date_to": "YYYY-MM-DD", // end of the billing quarter "fees": number, // net management fee in EUR "vat": number, // VAT applied in EUR "amount": number, // asset base used "average_fee": number, // effective fee rate (e.g. 1.95 = 1.95 bps avg) "document": { // invoice PDF metadata "showName": string, "show_name": string, "created_at": "YYYY-MM-DD HH:mm:ss" } } ]

The Markdown format computes total fees and total VAT for the filtered range.

Examples:

  • Use when: "How much did Indexa charge me in fees last year?"

  • Use when: "What's my effective fee rate on my pension account?"

  • Use when: "List all fee invoices since 2023"

Error handling:

  • 404: account not found or no fees yet (e.g. very recently opened).

  • 401/403: token invalid.

indexa_portfolio_summaryA

Convenience tool that returns a one-shot overview of ALL the user's Indexa Capital accounts: total wealth, per-account value, cash, unrealized P/L and cumulative return. Calls /users/me then /portfolio and /performance for each active account in parallel.

Use this as the FIRST tool for open-ended questions like "how are my Indexa investments doing?" or "give me an overview of my Indexa". Only use account-specific tools when the user specifies one account or aspect (composition, transactions, fees).

Args:

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns JSON: { "user": { email, name, surname }, "accounts": [{ account_number, type, status, total_value, cash, unrealized_pl, cumulative_return, plan_expected_return, error? }], "totals": { total_value, unrealized_pl, account_count } }

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dacmail/indexa-capital-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server