Repository navigation
v5.61.0
A fix release, mainly for the first item below. SEC has started refusing the filing index URL EdgarTools built, so in 5.60.0 Filing.html() returns None for many inline-XBRL filings, and anything else that reads a filing's index page fails too. Upgrade if you use 5.60.0 or earlier. This release also fixes installing from the Official MCP Registry, and adds Schedule14D9 for tender-offer recommendations.
Upgrading. No public API changes. Filing.homepage_url now returns the index page inside the accession folder (.../data/<cik>/<accession-no-dashes>/<accession>-index.html), so code that compares the URL as a string will see the new form. The edgar-test console script is gone. It never worked from an installed package; run the harness with python -m scripts.harness.cli from a checkout.
MCP. You can now install the server straight from the Official MCP Registry (io.github.dgunning/edgartools); clients launch it with uvx --with 'edgartools[ai]==5.61.0' edgartools@5.61.0 mcp. The existing uvx --from "edgartools[ai]" edgartools-mcp setup is unchanged.
Added
Schedule14D9for SC 14D-9 tender-offer recommendations.filing.obj()on a target board's solicitation/recommendation statement returns its position asaccept,reject,neutral, orNonewhen the wording is hedged, with the Item 4 text it was read from; anSC 14D9/Athat does not restate Item 4 builds withitem4_text=None. Classified 52 of the 55 SC 14D-9 originals filed in 2025, each checked against the filing.
Changed
- The sync and async get/post request functions now share one implementation of their 429, redirect, SSL-error and identity handling. Each of those branches had been written out four times (twice for identity), and all of them are now single helpers in
edgar.httprequests. Behaviour is unchanged: the fast suite passes the same 7,927 tests before and after, and 26 new tests check each branch for each of the four callers. (bead edgartools-fx90)
Removed
- The
edgar-testconsole script was removed. It pointed attests.harness.cli, which ships in no wheel and left the repository when the harness moved, so it failed on every install. Run the harness withpython -m scripts.harness.clifrom a checkout. (bead edgartools-deq9)
Fixed
Filing.html()and anything else that reads a filing's index page returned None or raised, because SEC now refuses the index URL EdgarTools built. The short/data/<cik>/<accession>-index.htmlform answers 403 Access Denied for every filing tried;Filing.homepage_urlnow uses the index page inside the accession folder, which answers 200. (GH #1421)- Installing EdgarTools from the Official MCP Registry launched a command that does not exist. The listing pinned 5.21.1, and registry clients run
uvx edgartools@<version>, but the package shipped noedgartoolsexecutable. A newedgartools mcpcommand and a committedserver.jsonmake that launch start the server with all 13 tools. (GH #1413, bead edgartools-deq9) Section.markdown()dropped a section's own heading when the TOC anchor is nested inside it. The slicer started collecting after the anchor, by which point the heading's block had already begun. On Google's FY2004 10-K (0001193125-05-065298) 0 of 18 item sections began with their "ITEM N." heading; all 18 do now. (GH #1369)