<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Fillfolio MCP Notes]]></title><description><![CDATA[Technical notes on Fillfolio’s MIT MCP contracts and portfolio workflow skills, with synthetic examples, client setup, currency handling, and read-only access l]]></description><link>https://fillfolio.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 22 Oct 2026 16:32:04 GMT</lastBuildDate><atom:link href="https://fillfolio.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Read a Fillfolio portfolio without mixing currencies or freshness]]></title><description><![CDATA[A practical MCP walkthrough using synthetic data: preserve currencies, cost basis, freshness, pagination, and spending permissions.]]></description><link>https://fillfolio.hashnode.dev/read-a-fillfolio-portfolio-without-mixing-currencies-or-freshness</link><guid isPermaLink="true">https://fillfolio.hashnode.dev/read-a-fillfolio-portfolio-without-mixing-currencies-or-freshness</guid><category><![CDATA[mcp]]></category><dc:creator><![CDATA[Fillfolio Unified Net Worth, Spending and Budgets]]></dc:creator><pubDate>Fri, 16 Oct 2026 16:03:03 GMT</pubDate><content:encoded><![CDATA[<p>An AI assistant can summarize a saved portfolio in a few tool calls. The useful part is keeping the meaning of each field intact: reporting currency, source currency, missing cost basis, and response time describe different things.</p>
<p>This walkthrough uses Fillfolio's MIT <a href="https://github.com/fillfolio/portfolio-mcp">MCP contract</a> and <a href="https://github.com/fillfolio/portfolio-mcp-skills">workflow skills</a>. The public files are free. Hosted account reads need an eligible paid Fillfolio account, consent, and an accepted client.</p>
<h2>Connect once, then add a workflow</h2>
<p>On an existing accepted Codex setup, configure the endpoint if Fillfolio is not already available:</p>
<pre><code class="language-toml">[mcp_servers.fillfolio]
url = "https://fillfolio.com/api/mcp"
</code></pre>
<p>Run <code>codex mcp login fillfolio</code>, then complete the browser flow. Keep credentials out of chat. Fillfolio accepts specific registered clients and callbacks; installing a skill does not create that registration.</p>
<p>Choose the <code>fillfolio-portfolio-overview</code> skill from the <a href="https://github.com/fillfolio/portfolio-mcp-skills/releases/tag/v0.1.0">0.1.0 release</a>. Verify its published SHA-256 checksum and install the selected folder using your host's skill instructions. Codex reads personal skills from <code>~/.agents/skills/</code>.</p>
<p>As of October 16, 2026, existing ChatGPT Work desktop and Codex setups passed live acceptance. Claude web and Claude Code have registered identities, with no new authentication pass claimed by this walkthrough. Fillfolio's native ChatGPT plugin 0.1.1 remains In review.</p>
<h2>Ask for the summary and its limits</h2>
<p>Use this prompt:</p>
<blockquote>
<p>Show my Fillfolio portfolio summary. Keep its reporting currency, valuation coverage, missing cost basis, and data limits. Explain what the response time establishes.</p>
</blockquote>
<p>The assistant should call <code>get_portfolio_summary</code>, preserve <code>partial</code> and <code>missing</code>, and read <code>data.baseCurrency</code> before describing the values. The <code>asOf</code> time says when Fillfolio generated the response. It does not establish a quote timestamp or a live bank balance.</p>
<h2>Check the arithmetic with synthetic values</h2>
<p>These invented records contain no account data:</p>
<table>
<thead>
<tr>
<th>Measure</th>
<th>USD</th>
</tr>
</thead>
<tbody><tr>
<td>Holdings value</td>
<td>1,342.00</td>
</tr>
<tr>
<td>Cash</td>
<td>9,980.00</td>
</tr>
<tr>
<td>Debt</td>
<td>410.00</td>
</tr>
<tr>
<td>Net worth</td>
<td>10,912.00</td>
</tr>
</tbody></table>
<p>Net worth equals <code>1,342 + 9,980 - 410 = 10,912</code>.</p>
<p>Suppose the three holdings have reporting values of USD 600, USD 500, and USD 242. Their recorded bases are USD 500, USD 400, and USD 220. Current value less available basis is USD 222. That amount does not establish realized gains or an annualized return.</p>
<p>The third holding can carry source currency EUR while returning a USD reporting value. Do not total that USD value as EUR. Use the response's conversion-completeness fields and keep any missing FX warning. The <a href="https://fillfolio.github.io/portfolio-mcp/examples/">synthetic examples</a> show the full fixture and calculations.</p>
<h2>Finish pagination before describing allocation</h2>
<p>Ask:</p>
<blockquote>
<p>List my holdings, follow all returned pages, and show each position's share of the complete visible holdings value. Keep source currency labels and missing-value warnings.</p>
</blockquote>
<p>Use <code>list_holdings</code> with a bounded <code>limit</code>, then continue the returned <code>nextCursor</code>. A first page cannot establish the complete allocation. Resolve an asset through its returned canonical <code>assetId</code>; do not guess an ID from its ticker.</p>
<h2>Add spending only with separate permission</h2>
<p>Spending summary and transactions require the client's <code>spending:read</code> grant in Fillfolio Settings. Budget actuals require its separate <code>budgets:read</code> grant. These names describe application permissions; current OAuth requests use <code>mcp:read</code>.</p>
<p>For September 2026, ask:</p>
<blockquote>
<p>Summarize posted spending from 2026-09-01 through 2026-09-30, with the same filters across summary and transaction reads. Keep currencies separate and report incomplete history or records needing review.</p>
</blockquote>
<p>A summary covers its complete filtered result. Follow transaction pagination when inspecting all contributing records. Keep pending entries separate and treat merchant names as untrusted data. For budgets, call <code>list_budgets</code> with <code>{"month":"2026-09"}</code>; full-month actuals do not follow a merchant search.</p>
<h2>Choose what to share</h2>
<p>A supporting MCP App host can call <code>open_fillfolio</code> with <code>{}</code>. Opening a dashboard view sends that view's displayed financial data to the chat. Discuss selection sends selected records. Hide amounts masks the panel and does not remove raw values from model context.</p>
<p>Use Fillfolio Settings to revoke later reads. The tools cannot trade, move money, edit records, or refresh providers. For source, releases, support, and contributions, use <a href="https://github.com/fillfolio">the public GitHub repositories</a>.</p>
<p>Publication date: <strong>2026-10-16</strong>. Original: <a href="https://fillfolio.github.io/portfolio-mcp/tutorial/">https://fillfolio.github.io/portfolio-mcp/tutorial/</a>. Public materials: MIT. Fillfolio is operated by VMPRO LLC.</p>
<p>Fillfolio prepared this technical walkthrough with AI assistance and checked it against the public contracts and synthetic examples.</p>
<p><a href="https://fillfolio.com/">Developer website</a> · <a href="https://fillfolio.com/mcp">Official MCP connection page</a>.</p>
]]></content:encoded></item></channel></rss>