Skip to main content

arkleon

arkleon is the free client for Arkleon's point-in-time SEC fundamentals: filing-dated facts straight from EDGAR with no key, and an optional API client for the certified corpus (16,811 companies, 426,003 filings, 181,350,662 facts) with replayable as_of queries.

The free EDGAR core requires no account and no API key. The optional paid /v1 client and the corpus-backed point-in-time features are the only parts that need a key.

Install

pip install arkleon

Quickstart: free, no API key

The EDGAR helpers work on the first line of code with no Arkleon account and no key. The only string they require is an SEC fair-access User-Agent, which you write yourself.

from arkleon.edgar import EdgarClient

# SEC fair-access User-Agent: a self-declared contact string, NOT an Arkleon key.
edgar = EdgarClient(user_agent="Acme Research contact@acme.com")

# Fetch a company's 10-K filings by CIK (Apple = 320193):
for filing in edgar.filings(cik=320193, form="10-K"):
    print(filing.filed, filing.accession, filing.form)

# Parse as-reported numeric facts, filtered best-effort to a date:
assets = edgar.concept(cik=320193, tag="Assets", taxonomy="us-gaap")
for fact in assets.as_of("2020-01-01"):        # keep only filed <= 2020-01-01
    print(fact.period_end, fact.value, fact.unit, fact.filed)

No account, no key, no Arkleon network. Live-EDGAR, best-effort point-in-time.

Quickstart: optional paid /v1 client (certified point-in-time)

The free /v1 tier allows 500 requests / day.

A concept_alias parameter (plain-language concept names over raw us-gaap tags) is reserved and available after /v1 ships it.

# pip install "arkleon[api]"
from arkleon.api import DataClient

client = DataClient(api_key="ak_...")          # or ARKLEON_API_KEY env
page = client.facts(cik=320193, tag="Assets", as_of="2020-01-01")
for fact in page.data:
    print(fact["period_end"], fact["value"], fact.get("source_url"))

Certified corpus. as_of required, filters on filing date, identical query + as_of returns identical data permanently.

The free/paid boundary

The arkleon.edgar helpers never require a key and never contact Arkleon: their only remote hosts are data.sec.gov and www.sec.gov. Only the arkleon[api] client and the corpus-backed point-in-time features call Arkleon, and they refuse to operate without an ak_-prefixed key. Installing arkleon[api] does not by itself activate the paid path; a key must still be supplied at runtime.

MCP server

Install the server extra and launch the stdio server with the console script:

pip install "arkleon[mcp]"
arkleon-mcp

An agent host launches it the same way. Set ARKLEON_API_KEY in the launch environment to unlock the paid tools:

{
  "mcpServers": {
    "arkleon": {
      "command": "arkleon-mcp",
      "env": { "ARKLEON_API_KEY": "ak_..." }
    }
  }
}

The free EDGAR tools register unconditionally; the paid tools register only when an ak_ key is present. An agent with no key sees exactly the free set.

Tool Backed by Key required?
edgar_list_filings free EDGAR core No
edgar_company_facts free EDGAR core No
edgar_concept free EDGAR core No
edgar_facts_as_of (best-effort, live EDGAR) free EDGAR core No
edgar_resolve_cik (current-snapshot, non-point-in-time) free EDGAR core No
pit_facts (certified point-in-time) paid /v1 client Yes
pit_filings paid /v1 client Yes
resolve_company paid /v1 client Yes
pit_revision_history paid /v1 client Yes

Registry: The server is described by server.json at the repository root for the official MCP registry under the name io.github.jushuea/arkleon. It launches over stdio as arkleon-mcp; the free EDGAR tools register unconditionally and the paid tools only when an ak_ key is present. Install with pip install "arkleon[mcp]".

LangChain and LlamaIndex

Both integrations wrap the free EdgarClient and need no Arkleon key. The SEC requires a descriptive User-Agent, so pass user_agent, pass client=EdgarClient(...), or set SEC_EDGAR_USER_AGENT.

pip install "arkleon[langchain]"
pip install "arkleon[llamaindex]"

ArkleonEdgarFactsTool is a LangChain tool named arkleon_edgar_facts. Arguments are cik, tag, a required as_of in YYYY-MM-DD form, and taxonomy, which defaults to us-gaap.

from arkleon.integrations.langchain import ArkleonEdgarFactsTool

tool = ArkleonEdgarFactsTool(user_agent="Name email@example.com")
result = tool.invoke({"cik": 320193, "tag": "Assets", "as_of": "2020-01-01"})
print(result["facts"][0]["value"])

It returns a dict with cik, tag, taxonomy, as_of, warning and facts. Each fact has period_start, period_end, value, unit, form, filed, accession, instantaneous and the other Fact fields.

ArkleonEdgarFactsReader is a LlamaIndex reader. load_data returns 1 Document per fact, with the fact fields plus cik, tag, taxonomy, as_of and warning in its metadata.

from arkleon.integrations.llamaindex import ArkleonEdgarFactsReader

reader = ArkleonEdgarFactsReader(user_agent="Name email@example.com")
docs = reader.load_data(cik=320193, tag="Assets", as_of="2020-01-01")
print(docs[0].metadata["filed"])

as_of keeps only facts filed on or before that date, which is best-effort over live EDGAR and not certified, and every result carries that warning. Neither integration wraps the paid /v1 DataClient.

What it returns, and what it does not

Returns: as-reported numeric XBRL facts, filing and company metadata, and the lineage linking each figure to its source filing.

Does not return: market prices, analyst estimates, narrative disclosure (MD&A, risk factors, footnotes), or derived analytics, ratios, scores, or signals. Neither layer serves these. It is a research corpus, not a real-time filing feed: the paid corpus refreshes on the SEC's quarterly cadence.

Point-in-time, in two sentences

as_of filters on the filing date (filed <= as_of), never on the period a fact describes, so a query sees only values that were already public on that date. Because a fact from a later filing never appears, a historical query cannot observe information that did not yet exist, which is what keeps a study free of look-ahead bias.

The certified corpus (paid)

The paid /v1 client serves the certified corpus. Per the /v1 API contract at https://arkleon.com/docs, which is the sole authority for what any surface may state, the claimable figures are:

Quantity Figure Kind
Filings 426,003 EXACT
Facts 181,350,662 EXACT
Distinct companies (CIK) 16,811 EXACT
Quarters spanned 69 (2009q1–2026q1) exact
Quarters populated 68 exact

The EXACT/exact label travels with each number and is not presentational. These figures are keyed to the date each filing became public, include values that later filings revised, and trace to their source filing. The earliest filed date in the corpus is 2009-04-15, so a query with an as_of earlier than that date correctly returns empty. Treat the contract's Appendix A, not this table, as the authority: a later corpus revision updates the contract, and any figure that disagrees with it is stale.

Identifiers

CIK is the addressable identifier across both layers. In the free layer, resolve_cik(ticker) maps a symbol to a CIK from SEC's current ticker snapshot; it is a convenience, not a reproducible identity resolver, because it has no ticker history, a symbol is reassigned over time, and one CIK carries several symbols at once (GOOG and GOOGL, BRK.A and BRK.B). The /v1 API does not serve the ticker filter today: a ticker request returns a distinct "not served in this release" error rather than silently resolving through the free snapshot. Address facts by CIK.

Install matrix

Install Adds
arkleon The free EDGAR fetch/parse core. No key, no Arkleon network.
arkleon[api] The optional paid /v1 DataClient. Requires an ak_ key at runtime.
arkleon[mcp] The built-in MCP server and the arkleon-mcp console script.
arkleon[pandas] Optional pandas DataFrame adapters for the free core. Never required.
arkleon[langchain] The ArkleonEdgarFactsTool LangChain tool and its langchain-core dependency.
arkleon[llamaindex] The ArkleonEdgarFactsReader LlamaIndex reader and its llama-index-core dependency.
arkleon[all] Convenience union of api, mcp, and pandas.

Base plus [pandas] stays fully free and credential-free. [api] and the paid tools in [mcp] are the only parts that consume an ak_ key.

License

MIT. See LICENSE.

Metadata

Release files for arkleon 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arkleon 0.1.5
File Size Uploaded
arkleon-0.1.5.tar.gz 25.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for arkleon 0.1.5
File Interpreter ABI Platform
arkleon-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 60.0 kB

Release files / arkleon-0.1.5.tar.gz

Download URL arkleon-0.1.5.tar.gz
Size 25.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8d73a3d9b6c7f202bb97135b26bfa637290b56796652ab717f4c1a9a241e44b3
BLAKE2b-256 checksum
How to use checksums
8295497409f61882e956a39f810bb27fc7245441f47a288e3050db1d57fe6ac0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / arkleon-0.1.5-py3-none-any.whl

Download URL arkleon-0.1.5-py3-none-any.whl
Size 34.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f0020a52e810c06f699ba4db92100ab9e6fb34d20ceb7a65a967af426106c641
BLAKE2b-256 checksum
How to use checksums
7e2ab5d7d5c0f941d8521192cb1eb7da339f64ffe2b5c57049d5deb7ecf865fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.6

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page