Prerequisites
- An SEC API key,
curl, andjq, or Node.js 18+. - A ticker or CIK. This example uses
AAPL.
1. Retrieve the latest disclosed compensation table
2. Compare the latest two disclosures
status, current/previous total compensation, delta, and disclosed years. Preserve the comparison provenance and source filings before writing commentary.
3. Generate a reviewer-ready table
Save this ascompare-compensation.mjs:
node compare-compensation.mjs. The expected output is a console table of returned comparison rows followed by the two filing dates, provenance, and request identifiers; amounts and row count vary by issuer and filing availability.
Source and provenance
The normalized rows and comparison come from the two DEF 14A disclosures selected by the API. Keep each returned accession, filing date, source URL or provenance object, executive identity, andrequestId. The proxy statement is the source for any explanation of a pay component or a changed named-executive roster.
Use the same job through MCP
In a connected MCP client, usetools.search to locate the live executive-compensation capability and tools.describe before calling it. Ask the client to keep the typed comparison result, both filing periods, provenance, requestId, and traceparent with its written summary. Tool names and arguments can change, so the live MCP contract is the source of truth.
Limits and failure modes
- A comparison requires two available disclosures. Do not treat an unavailable comparison as no pay change.
addedorremovedoften reflects a changed named-executive roster, not a compensation event.- A total-compensation delta can be driven by grant-date equity valuation and reporting-period changes; inspect the proxy table and compensation discussion.
- Do not coerce null salary, bonus, or awards to zero when calculating a mix.

