Skip to content

PortfolioFit

by portfolio.fit · remote · no sign-in to list tools · v0.1.3 · published by fit.portfolio

Check normalized portfolios against mandates and calculate allocation constraints.

Deletes · 1Changes · 5

10 tools: 1 can delete or cancel things, 5 change things and 4 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http portfoliofit https://portfolio.fit/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

10 tools

Deletes or cancels 1Claude Code: deny
  • cancel_portfolio_series_uploadCancel a pending upload and permanently remove its staging chunks.No findings

    Why it is in this group

    • The name "cancel_portfolio_series_upload" says "cancel": a word for removing or ending something.
    • The description says "permanently remove".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a pending upload and permanently remove its staging chunks.

    Annotations the server declares

    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
Changes things 5Claude Code: ask
  • calculate_portfolio_constraintsCalculate explicit portfolio constraints deterministically from normalized holdings.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Calculate explicit portfolio constraints deterministically from normalized holdings. Use this for arithmetic checks, not for interpreting natural-language mandates.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • calculate_portfolio_statisticsCalculate historical return, volatility, drawdown, risk-adjusted and benchmark-relative statistics from a confirmed portfolio series profile.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Calculate historical return, volatility, drawdown, risk-adjusted and benchmark-relative statistics from a confirmed portfolio series profile. The metrics parameter describes all available calculations and their required inputs. Use daily, weekly or monthly complete periods; results include coverage, warnings and exact dataset/profile pins. Reuse an idempotency_key only for an identical calculation.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • evaluate_portfolio_alignmentCompare a clean mandate with normalized holdings.No findings

    Why it is in this group

    • The name "evaluate_portfolio_alignment" says "evaluate": a word for a change.
    Description, as the server wrote it
    Compare a clean mandate with normalized holdings. Do not send PDF, CSV, spreadsheet, or factsheet files; extract them before calling.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • review_portfolio_series_profileCreate an immutable profile revision using revise, or explicitly confirm a warning-free proposal with confirmation=true.No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    Create an immutable profile revision using revise, or explicitly confirm a warning-free proposal with confirmation=true.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • upload_portfolio_series_rowsUpload normalized series_key/date/value/distribution rows and commit a dataset version.No findings

    Why it is in this group

    • The name "upload_portfolio_series_rows" says "upload": a word for a change.
    Description, as the server wrote it
    Upload normalized series_key/date/value/distribution rows and commit a dataset version. For up to 5,000 rows, omit chunk_index and total_chunks to complete in one call. For larger inputs, declare total_chunks on every call, send chunks in order, and reuse upload_id and idempotency_key. The final chunk automatically verifies and commits all data and returns immutable series profiles. Parse files locally before calling.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
Only reads 4Claude Code: allow
  • get_analysisRead retained normalized inputs, operations, results and owner-scoped dataset references.No findings

    Why it is in this group

    • The name "get_analysis" says "get": a word for reading.
    Description, as the server wrote it
    Read retained normalized inputs, operations, results and owner-scoped dataset references. This is not an external agent transcript.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_analysesRead private calculation groups and independent operations.No findings

    Why it is in this group

    • The name "list_analyses" says "list": a word for reading.
    Description, as the server wrote it
    Read private calculation groups and independent operations. Filter by kind, portfolio, dates, ready/running/attention status or legacy open/finished status.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_analysis_portfoliosList owner-scoped portfolios, analytics datasets, and profile readiness.No findings

    Why it is in this group

    • The name "list_analysis_portfolios" says "list": a word for reading.
    Description, as the server wrote it
    List owner-scoped portfolios, analytics datasets, and profile readiness.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_portfolio_seriesDiscover owner-scoped immutable series profiles and their exact dataset versions.No findings

    Why it is in this group

    • The name "list_portfolio_series" says "list": a word for reading.
    Description, as the server wrote it
    Discover owner-scoped immutable series profiles and their exact dataset versions. This returns metadata and coverage only, never dataset rows.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http portfoliofit https://portfolio.fit/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__portfoliofit__list_analysis_portfolios",
      "mcp__portfoliofit__list_portfolio_series",
      "mcp__portfoliofit__list_analyses",
      "mcp__portfoliofit__get_analysis"
    ],
    "ask": [
      "mcp__portfoliofit__evaluate_portfolio_alignment",
      "mcp__portfoliofit__calculate_portfolio_constraints",
      "mcp__portfoliofit__upload_portfolio_series_rows",
      "mcp__portfoliofit__review_portfolio_series_profile",
      "mcp__portfoliofit__calculate_portfolio_statistics"
    ],
    "deny": [
      "mcp__portfoliofit__cancel_portfolio_series_upload"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as portfoliofit. Review it before you use it.