AI

Give AI Agents portfolio context with the Parqet MCP

Learn what the Parqet MCP server is, what tools it exposes, how authentication works, and how to use it with AI agents and other MCP clients.
Dennis

Dennis

Author

Give AI Agents portfolio context with the Parqet MCP

What is the Parqet MCP?

The Parqet MCP server is a remote Model Context Protocol server that lets AI agents and other MCP-compatible clients access your Parqet portfolio data. It acts as a bridge between your Parqet account and AI, so you can ask questions about your holdings, performance, transactions, and dividends in natural language.

The server is hosted at https://mcp.parqet.com and uses OAuth 2.0 via Parqet Connect for authentication. All tools are read-only: the MCP server cannot modify your portfolio data.

Key features

  • Portfolio overview: list all your portfolios with names, currencies, and connected brokers
  • Holdings & valuation: see current positions, market values, weights, and total portfolio worth
  • Performance metrics: get XIRR, TTWROR, realized/unrealized gains, dividends, fees, taxes, and net allocations (net exposure)
  • Transaction history: browse buy/sell/dividend/transfer activities with filtering and pagination
  • Multi-portfolio aggregation: query performance across multiple portfolios at once

Authentication

The Parqet MCP server uses OAuth 2.0 authorization code flow via Parqet Connect. It implements RFC 9728 (OAuth Protected Resource Metadata):

  1. MCP Server (mcp.parqet.com) = issues and validates tokens, enforces bearer auth and MCP session ownership
  2. ChatGPT / Claude / other MCP clients = obtains and uses tokens

When you connect through an MCP client, you'll be redirected to Parqet to authorize access. The MCP server then uses your access token to fetch data from the Parqet Connect API on your behalf.

Discovery endpoints:

EndpointURL
MCP Server Informationhttps://mcp.parqet.com/.well-known/mcp-server
Protected Resource Metadatahttps://mcp.parqet.com/.well-known/oauth-protected-resource
OAuth Authorization Serverhttps://mcp.parqet.com/.well-known/oauth-authorization-server
Health Checkhttps://mcp.parqet.com/health

Supported scopes: portfolio:read

Available tools

All tools require authentication and are read-only (readOnlyHint: true, destructiveHint: false, openWorldHint: false). Call parqet_get_user first to discover portfolio IDs.

parqet_get_user

Returns the authenticated user's info and their accessible portfolios. Use the portfolio IDs from the response for all other tools.

Parameters: none

Returns: userId, state, permissions[] (each with resourceId and access level)


parqet_list_portfolios

Lists all portfolios with metadata (name, currency, creation date, connected brokers) in a single call.

Parameters: none

Returns: items[] with id, name, currency, createdAt, distinctBrokers


parqet_get_portfolio

Gets metadata for a single portfolio by ID.

Parameters:

NameTypeRequiredDescription
portfolioIdstringyesPortfolio ID from parqet_get_user

Returns: id, name, currency, createdAt


parqet_get_activities

Retrieves transactions (buys, sells, dividends, transfers, deposits, withdrawals, fees) for a portfolio. Results are paginated.

Parameters:

NameTypeRequiredDescription
portfolioIdstringyesPortfolio ID
activityTypestring | stringnoFilter by type: buy, sell, dividend, interest, transfer_in, transfer_out, fees_taxes, deposit, withdrawal
assetTypestring | stringnoFilter by holding asset type: cash, security, crypto, commodity, custom, real_estate
holdingIdstring | stringnoFilter by one or more holding IDs
limitnumbernoPage size, 10–500 (default: 100)
cursorstringnoPagination cursor from previous response

Returns: activities[] (each with type, nested asset object discriminated by assetIdentifierType, holdingId, holdingAssetType, shares, price, amount, amountNet, currency, datetime, tax, fee, broker; sell and transfer_out also include realizedGains, realizedGainsNet, avgHoldingPeriod, buyAmountNet), cursor


parqet_get_performance

Returns portfolio value, returns, gains, dividends, holdings, net allocations, and other performance metrics. This is the primary tool for most portfolio questions.

Parameters:

NameTypeRequiredDescription
portfolioIdsstringyesOne or more portfolio IDs (max 25)
intervalTypestringno"relative" for preset ranges, "absolute" for custom date range. Defaults to relative "max" if omitted
intervalValuestringnoPreset range (only for intervalType: "relative"): 1d, 1w, mtd, 1m, 3m, 6m, 1y, ytd, 3y, 5y, 10y, max
intervalStartstringnoISO 8601 datetime for interval start (only for intervalType: "absolute")
intervalEndstringnoISO 8601 datetime for interval end (only for intervalType: "absolute", defaults to now)

Returns:

  • holdings[] — current positions with asset (name, ISIN/symbol, type), position (shares, purchasePrice, purchaseValue, currentPrice, currentValue, isSold), per-holding performance (kpis, gains, dividends, fees, taxes, valuation), quote and startQuote (price, currency, exchange, fx), nickname, logo
  • kpis.inInterval.xirr — annualized money-weighted return
  • kpis.inInterval.ttwror — time-weighted return
  • valuation.atIntervalEnd — current total portfolio value
  • realizedGains.inInterval — profit from sold positions
  • unrealizedGains.inInterval — paper profit on current holdings
  • dividends.inInterval — dividend income
  • fees.inInterval.fees — total fees paid
  • taxes.inInterval.taxes — total taxes paid
  • netAllocations.net — net total across positive and negative holdings
  • netAllocations.base — larger absolute side used as the allocation base
  • netAllocations.positive — positive bucket with total, shareOfBase, and a holdings map by holding ID
  • netAllocations.negative — negative bucket with total, shareOfBase, and a holdings map by holding ID

Connect to the Parqet MCP server

Any MCP client that supports Streamable HTTP transport and OAuth 2.0 can connect:

{
  "parqet": {
    "url": "https://mcp.parqet.com"
  }
}

The server uses OAuth for authentication. Your client will be redirected to Parqet Connect to authorize access.

See Connect the Parqet MCP to Claude for a full walkthrough.

Usage examples

Example 1: Check portfolio value and top holdings

Prompt: "What's my portfolio worth and what are my biggest positions?"

The AI will call parqet_get_user to find your portfolios, then parqet_get_performance to get the current valuation and holdings sorted by weight. You'll get a response like:

Your portfolio "Main Account" is currently worth €47,230. Your top 3 positions are:

  1. iShares MSCI World ETF — €18,500 (39.2%)
  2. Apple Inc. — €8,200 (17.4%)
  3. NVIDIA Corp. — €5,100 (10.8%)

Example 2: Review dividend income

Prompt: "How much dividend income did I receive, and from which holdings?"

The AI calls parqet_get_performance and reads the dividends.inInterval data along with the holdings array. You'll see a breakdown of gross/net dividend income, taxes withheld, and which assets paid dividends.

Example 3: Analyze recent transactions

Prompt: "Show me all my stock purchases in the last month."

The AI calls parqet_get_activities with activityType: ["buy"] and filters by date. You'll get a list of recent buys with asset names, share counts, prices, and total amounts.

Example 4: Compare portfolio performance

Prompt: "What's my annualized return across all portfolios?"

The AI calls parqet_get_user to discover all portfolio IDs, then parqet_get_performance with all IDs to get aggregated metrics. You'll see your XIRR (money-weighted return) and TTWROR (time-weighted return) across all accounts.

Example 5: Look up a specific holding

Prompt: "How many Tesla shares do I have and what's my profit on them?"

The AI calls parqet_get_performance and filters the holdings array for Tesla. You'll see your share count, current value, purchase value, and unrealized gain/loss.

Example 6: Understand net exposure

Prompt: "What's my net exposure, and which holdings contribute to negative allocations?"

The AI calls parqet_get_performance and reads netAllocations.net, netAllocations.positive, and netAllocations.negative.holdings. You'll get the overall net exposure plus a breakdown of which holding IDs make up the positive and negative sides of the portfolio.

Privacy & data handling

  • The MCP server only accesses data you explicitly authorize via OAuth
  • All communication uses HTTPS/TLS
  • No conversation data is collected or stored by the MCP server
  • Access tokens are scoped to the permissions you grant during OAuth
  • You can revoke access at any time through your Parqet account settings

For details, see the Parqet Privacy Policy.

Support

If you run into issues with the Parqet MCP server: