Prerequisites
- Claude Code installed and authenticated.
- Node.js 18+ and an SEC API key in
SECAPI_API_KEY. - The reporting manager’s CIK. This example uses
0001067983.
1. Fetch a bounded comparison
Createfetch-13f-comparison.mjs:
node fetch-13f-comparison.mjs. The expected result is 13f-comparison.json containing the two selected filings, position rows, provenance, and request metadata. The route selects the latest two parsable reports; it does not compare arbitrary historical quarters.
2. Ask Claude Code for a review artifact
Open the directory in Claude Code and give it this bounded request:status rows and makes both filing dates visible; it does not manufacture explanations for a change.
3. Resolve the underlying reports
Use the filings route when the reviewer needs the report date, accession, or SEC link for a selected comparison:requestId alongside the generated review. The source filing is the authoritative record for a material statement.
Source and provenance
The raw comparison JSON is derived from the manager’s two latest parsable Form 13F reports. Preserve the manager CIK, both report dates, filing dates, accessions or source URLs in the returned provenance, andrequestId. The source reports, not Claude Code’s Markdown output, support any statement about a reported holding change.
Limits and failure modes
- A
400response commonly means the CIK is missing or malformed; this route needs the reporting manager CIK, not a portfolio-company ticker. - A comparison needs two parsable reports. An empty or unavailable comparison is not evidence of no exposure or no change.
- Do not let an agent replace null values with zero or infer a trade from an added or removed row; corporate actions and reporting conventions can change a row.
- Keep the JSON artifact out of version control if it contains data your repository should not retain, and never place the API key in a prompt, source file, or commit.

