What a 13F tells you

Form 13F is a quarterly SEC report from institutional investment managers with at least $100 million in Section 13(f) securities. The SEC's own 13F FAQ says these managers report holdings, issuer names, CUSIPs, share counts, and market values for reportable securities.

Raw 13F files are public. They're also awkward.

A single filing can have an XML cover page, a separate information table, amended rows, issuer names that don't sort cleanly, and quarter-to-quarter comparisons that require fetching the prior report. Agents shouldn't burn context trying to compare two filing tables by hand. They should call a paid endpoint, get the changes, and move on.

That's what 13f-deltas is for.

It's in the edge-finance cluster on agentutility.ai, priced at $0.005 per call. The live registry has 254 endpoints across clusters including edge-finance, edge-market, prooflayer, web-probe, and locale, with prices from $0.001 to $0.30. This one sits near the low end because the job is narrow: parse SEC 13F holdings and return position changes.

The endpoint shape

A routing model should pick 13f-deltas when the user asks for portfolio changes between two 13F periods.

Good prompts:

"What did Berkshire add or sell in its latest 13F?"

"Compare Pershing Square's last two 13Fs."

"Find funds that opened a new position in NVDA last quarter."

Bad fit:

"What's Berkshire's full stock portfolio right now?"

"Summarize Warren Buffett's investing style."

"Get Apple's 10-Q risk factors."

The input should identify a manager and a period. CIK is the cleanest key because names drift.

GET /edge-finance/13f-deltas?cik=0001067983&period=2026-03-31
Accept: application/json

A useful response needs four buckets:

{
  "manager": {
    "name": "Berkshire Hathaway Inc",
    "cik": "0001067983"
  },
  "period": "2026-03-31",
  "previous_period": "2025-12-31",
  "source": {
    "form": "13F-HR",
    "accession": "0001193125-26-226661"
  },
  "deltas": {
    "new": [],
    "closed": [],
    "increased": [
      {
        "issuer": "Example Corp",
        "cusip": "000000000",
        "shares_before": 1000000,
        "shares_after": 1250000,
        "share_delta": 250000,
        "percent_change": 25.0
      }
    ],
    "reduced": []
  }
}

Don't overthink the labels. new means absent last quarter and present this quarter. closed means present last quarter and absent this quarter. increased means share count went up. reduced means share count went down.

Market value changes alone shouldn't move a row. Price moved, fine. This endpoint is about position count changes.

A recent filing to test against

Use Berkshire Hathaway's Q1 2026 13F as a real test file. The SEC filing page for Berkshire's 2026-03-31 Form 13F-HR lists Berkshire Hathaway Inc, CIK 0001067983, and report period 03-31-2026.

The prior quarter is Berkshire's 2025-12-31 Form 13F-HR, filed on 2026-02-17 with accession 0001193125-26-054580.

So the agent task is direct:

{
  "endpoint": "13f-deltas",
  "params": {
    "cik": "0001067983",
    "period": "2026-03-31"
  },
  "expected_cost_usd": 0.005
}

The endpoint should fetch the Q1 2026 information table, fetch the Q4 2025 information table, normalize rows by CUSIP, compare share counts, and return the four delta buckets.

Small thing, big savings. Especially when the caller has to scan more than one manager.

Why deltas beat full holdings for agents

A full 13F table answers "what's in the portfolio?" A delta table answers "what changed?"

That's the better agent primitive.

An LLM reading a 100-row holdings table has to infer the story from row data. It may miss that a small new position matters more than a large unchanged holding. It may spend tokens on Apple, Bank of America, or Coca-Cola because they're familiar names, even when the actual user asked what changed.

A delta response makes the next step clear.

If new includes one issuer, the agent can call a market data endpoint for that ticker. If closed has a large prior share count, it can flag an exit. If increased has a 300% share jump, it can rank it above a 2% trim in a larger position.

And if every bucket is empty? Say that. No prose fog.

{
  "answer": "No position-count changes were found between 2025-12-31 and 2026-03-31 for CIK 0001067983.",
  "cost_usd": 0.005
}

The weekly math

At $0.005 per call, 100 13F delta checks per week costs $0.50.

That's enough for a small research agent to watch a set of hedge funds, bank trust departments, insurers, or family offices without running its own SEC parser. A human builder can wire the same call into a Slack alert, portfolio research page, or MCP tool.

The routing rule is simple: when the user asks what changed in an institutional manager's public equity holdings, call 13f-deltas.