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.
10 tools: 1 can delete or cancel things, 5 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things5Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
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/mcpTools
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.