Oxford Ledge bronze
www.oxfordledge.com
“Financial research over U.S. public-filing data: a business-development-company private-credit corpus with loan-level borrower detail and cross-lender pricing, plus SEC EDGAR company fundamentals, Form 4 insider transactions, 13F institutional ownership, and intrinsic-value models computed from filed XBRL. Educational information, not investment advice.
a2a https://www.oxfordledge.com/api/a2a/v1 talk to it https://www.oxfordledge.com/.well-known/agent-card.json its cardwe checked this the operator says this
Verified by agenttru.st
Everything here is a check agenttru.st performed itself. Assurance, protocol, hosting and freshness are in the card above and are not repeated.
- Certificate
-
Issued by Google Trust Services
domain-validated
Valid until 23 Dec 2026.Control of the hostname was checked; nothing about who operates it.
- DANE / TLSA
- Not verified (TLSA query returned RCodeNameError)
- Discovery
- Well-known document
- AI use policy
-
What this site's
robots.txtsays about how AI may use its content. Recorded as the operator wrote it, not enforced — these are preferences about use, not access, and agenttru.st only reads the agent's own discovery documents. - AI-facing documents
-
Publishes
/llms.txt— “Oxford Ledge” a curated map of the site's content for language modelsPublishes a Web Bot Auth key directory (1 key,Ed25519) — the operator publishes keys so their agent's signed requests can be verified. agenttru.st recorded that the directory exists; it has not verified a signature.Fetched from this host during verification. Neither document is how this agent was discovered. - First seen
- 25 Sep 2026
View verification details
- Assurance
- bronze Bronze — agent card fetched over HTTPS with a valid certificate
- Protocols
- A2A verified by handshake or card fetch, not merely advertised
- Hosted in
-
? Unknown
·
Cloudflare, Inc.
(AS13335)
The address did not geolocate — usually anycast hosting, where one address answers from many places at once.
- Last checked
- 6d ago
What this agent says it can do
Declared in the agent's own card. agenttru.st has not tested whether it completes any of these tasks — the operator of www.oxfordledge.com controls every word below.
Company fundamentals (SEC XBRL)
Full XBRL financial history for one ticker. Returns {ticker, fundamentals:{years, periods, metrics, balanceSheet, quarterly, basis, as_of}, source_period, as_of}. `years` is newest-first, UP TO 30 annual labels (up to 30 fiscal years; 17-20 served for AAPL/JNJ/DAC), and EVERY entry under `metrics`/`balanceSheet` is a PARALLEL ARRAY aligned to it by index, not a per-year object: revenue, grossProfit, ebit, netIncome, opCF, capex, da, epsDiluted, sharesOut, totalAssets, totalLiabilities, stockholdersEquity, currentAssets, currentLiabilities, totalDebt, cashAndShortTerm, goodwill, intangibleAssets, plus derived fcf (opCF minus capex), grossMarginPct, ebitMarginPct, currentRatio, quickRatio, debtToAssets (a PERCENT: 25.2 means 25.2%). `periods` is the ISO period-end list index-aligned with `years`, and each label is the filer's FISCAL year; a 52/53-week filer whose year ends Jan 1-3 keeps every year (JNJ FY2022, ended 2023-01-01, is served as 2022). Two periods never share a label: a transition period or an insta
- Fundamentals for AAPL
- Ten years of revenue and EPS for KO
Institutional ownership (SEC 13F-HR)
What one institutional filer owns: the largest positions in its latest SEC 13F-HR, plus quarter-over-quarter changes. Accepts a numeric CIK (preferred), a ticker resolved via SEC's company map -- letters with at most one class suffix (BLK; BRK-B or BRK.B for Berkshire, which SEC lists as BRK-A / BRK-B, never bare BRK) -- or, since 2026-09-13, a filer NAME (3-80 characters, e.g. 'Berkshire Hathaway', 'Baupost'): ONE name-prefix match in the curated 13F filer universe resolves to its CIK and the payload carries `resolved_from` {query, cik, name}; zero or several matches is the INVALID_PARAMS error listing up to three candidates and naming ol_13f_filer_search -- the first of an ambiguous list is never picked. Any other shape is rejected as INVALID_PARAMS. Returns {cik, fundName, filingDate, periodOfReport, totalHoldings, totalValue, holdings}; each holding is {name (issuer name as filed), title_of_class, value, shares, type, position_type, lots} plus `cusip` ONLY for callers whose plan carries a CUSIP Global Ser
- Latest 13F positions for CIK 0001067983
- Top holdings of a named institutional filer
Business-development-company directory
Roster of the ACTIVE BDCs tracked by Oxford Ledge, sorted by portfolio size -- this is our coverage, not the whole BDC universe; wound-down / de-BDC'd issuers are excluded by design, so it is not a historical universe. No arguments. Returns {bdcs, count}; per BDC: ticker, name, listed (false for a non-traded BDC carried under a pseudo-ticker such as AGTC), holdingCount, totalFairValue (whole USD, latest filing), filingDate, lastParsed, plus the reconciliation triple reportedTotalFairValue (the filing's OWN stated grand total), fairValueBasis ('parsed-rows' or 'filing-reported') and parsedRowSumFairValue, and the refusal pair fairValueRefused / fairValueRefusalReason (true when the row breakdown is refused and only the filing's own total is served). READ fairValueBasis BEFORE using totalFairValue: when a parse over-counts, totalFairValue is swapped to the filing-reported figure and the raw row sum is preserved in parsedRowSumFairValue, so the two disagreeing numbers are both visible rather than silently reconc
- Which BDCs does Oxford Ledge track, with portfolio fair value
- BDC tickers and their latest filing dates
BDC borrower search (private-credit loan detail)
Which BDCs lend to one private-credit borrower, matched fuzzily on name -- Oxford Ledge's parse of SEC EDGAR BDC schedules of investments (ol-derived: canonical-name pick, borrower normalisation, group merge, current-holder aggregates), not filer-published data. Envelope: borrowerName, borrowerNorm (the canonical key the ol_bdc_* tools take), description (a compiled company profile from public sources, NOT filing text; `descriptionSource` names where it came from), industry, totalHolders, totalParAmount, totalFairValue, avgMarkedPrice/min/max, match_type, units, and `holders` -- one row per TRANCHE (bdcTicker, bdcName, filingDate, securityType, lienPosition, interestRate as filed, maturityDate, parAmount, fairValue, markedPrice, stale, staleBasis, holderStatus, successorTicker). `units` says it: USD; markedPrice is percent of par. ABOVE-PAR TRAP: markedPrice is fair value over FILED principal and filers differ on what principal tracks (capitalised PIK/OID may be excluded), so a mark above 100 is not a credit
- Which BDCs lend to a named private company
- Lien position and fair value of a borrower's loans
Intrinsic-value models from filed XBRL
Per-share intrinsic value from SEC EDGAR XBRL -- three textbook models: a levered-FCF DCF, a Greenwald Earnings-Power-Value, and the Graham number. Returns {summary, ticker, available, dcf_per_share, epv_per_share, graham_number, inputs, assumptions, as_of}. All three values are USD PER SHARE, rounded to 2dp. `inputs` echoes fcf_latest, shares_out, eps_diluted, book_value_per_share, ebit_5y_avg, net_income_5y_avg, total_debt, cash_and_short_term, fiscal_year; `assumptions` echoes the FIXED, NOT-PER-NAME model constants (10% discount, 2.5% terminal growth, 10y horizon, 21% tax) plus the derived fcf_growth and the fcf_growth_basis string explaining how it was fitted. NO current price, market cap or margin-of-safety is returned by design -- fetch a price yourself and compare. Graham is null on negative EPS or book value, DCF null on negative FCF, and EPV null (null_reasons names the input) when total_debt or cash is null -- never computed as if debt-free; total_debt reads a six-rung ladder (LongTermDebtAndCapita
- DCF, earnings-power and Graham values for MSFT from filed XBRL
- The assumption block behind an intrinsic-value estimate
Insider transactions (SEC Form 4)
Recent Form 4 insider transactions for one ticker. Returns {ticker, transactions}; THE 20 MOST RECENT TRANSACTION ROWS ONLY (one Form 4 can carry several), newest by filing date -- and the `days` argument is currently a NO-OP on this path, so it will not widen or narrow the window. Each row: ticker, filingDate, transactionDate, insiderName, position (the role, which is the load-bearing signal, not the name; an Oxford Ledge fallback label when the filing left it blank), title, transType (raw SEC transaction_code -- 'P' open-market buy, 'S' sale, 'A' grant, 'M' option exercise; there is no plain buy/sell field, so filter on this yourself), shares, pricePerShare, totalValue (USD with cents: |shares| x price computed by Oxford Ledge at ingest, null when the filed price failed the plausibility gate), sharesOwned (holding after the trade), securityTitle, isDerivative (true for an option / derivative row -- read it before treating `shares` as common stock), url (SEC filing link); keyed callers also see a row `id`. D
- Recent Form 4 transactions for NVDA
- Officer and director buys reported in the last quarter
Most widely syndicated private-credit borrowers
MOAT / BDC discovery: the private-credit borrowers syndicated across the MOST BDCs, ranked by lender count then exposure -- the entrypoint for the BDC/private-credit category no generic MCP touches. Pairs with `ol_bdc_borrower_dispersion` (feed a returned `borrower_norm` into it to see cross-lender pricing). Returns {summary, count, borrowers}; each row is {borrower (display name), borrower_norm (the key other ol_bdc_* tools take), holder_count (distinct BDC lenders; a wound-down filer's frozen last filing still counts -- read holder_count_active / holder_count_ever, summed over holder_ticker_status, for the present-tense split), total_fair_value (whole USD across lenders, latest filings; null when unpriced), industry}. Caps: limit default 25 / hard 100; min_holders default 2 (max 50). Parser mis-ingests (subtotals, maturity-date and instrument-descriptor rows, bare industry-taxonomy labels) are filtered out when the filter is available; the `borrower_filters` block says whether each half ran (nonborrower / i
- Borrowers held by the largest number of BDC lenders
- Lender count and aggregate fair value by borrower
Cross-lender loan-pricing dispersion for one borrower
MOAT: cross-lender loan-pricing DISPERSION for one private-credit borrower -- how N different BDCs each price the SAME loan (spread / mark / fair value). The credit-mispricing signal no generic MCP has: when one BDC marks a borrower S+550 @ 98 and another S+575 @ 99, the lenders disagree on the credit. Pass the borrower's canonical `borrower_norm` key (from `ol_bdc_top_borrowers` or `search_bdc_borrower`). Returns {summary, borrower_norm, count, lenders, spread_unit, base_rate, yield_disclosure, rows_above_par, as_of, completeness}, ordered widest-spread-first; each lender row is {bdc_ticker, bdc_name, filing_date, bdc_latest_filing, is_stale_vs_bdc_latest, filer_status, successor_ticker, security_type, lien_position, rate_type, maturity_date, spread, spread_bps, marked_price, mark_as_of, mark_above_par, mark_above_par_basis, fair_value, non_accrual, current_yield_pct, spread_to_maturity_bps, all_in_simple_yield_pct, yield_basis, yield_suppressed, pik_leg_excluded}. UNITS TRAP: `spread` is the RAW AS-FILED nu
- How different BDCs mark the same borrower's loan
- Spread and mark by lender for one private-credit borrower
Technical agent card
Copied from the agent's card. The operator controls these values; agenttru.st has not verified them.
- Provider
- Oxford Ledge — what this agent says about itself; other agents claiming the same provider are not thereby related
- Protocol
- a2a
- Version
- 1.0.0
- Auth schemes
- oxfordLedgeApiKey
- Card completeness
- complete all eight fields required by a2a.proto v1.0
View all card details
- Capabilities
- pushNotifications stateTransitionHistory streaming
- Agent card
- https://www.oxfordledge.com/.well-known/agent-card.json
Operate this agent and would rather not be listed? Request removal.