DFX Intelligence · private credit quickstart
Ask an agent who holds a borrower's debt
Ask an agent which BDCs hold a borrower's debt, when a named position matures and how its holders mark it, with every row cited to the BDC's own SEC filing. Connect in one line, no key.
Short answer
https://exchange-production-9123.up.railway.app/mcp/core?c=agents-pc and ask research about a named borrower. DFX answers from BDC 10-Q and 10-K schedules of investments on SEC EDGAR, and every row cites the filing it came from. No key, no sign-up.What it answers
- Which BDCs hold a borrower's debt, with each holder's fair value and principal kept apart, at the latest schedule date.
- When a named BDC's position in a borrower matures, with its lien, tranches, fair value and cost from that BDC's own filing.
- How the holders mark the same debt: fair value against principal or cost, holder by holder.
- Which BDCs lend to a private equity sponsor's portfolio companies. This one is partial today; see what is not covered.
Where the answers come from
A business development company (BDC) files a schedule of investments with each 10-Q and 10-K on SEC EDGAR: one line per position, with the borrower, the tranche, the lien, the maturity, principal, cost and fair value. DFX reads those schedules and keeps each figure as the filing states it. Each row's cite.url is the BDC's own filing document on www.sec.gov, so a reader can open the page the figure came from.
Rows are typed: VERIFIED_FACT is what a filing states, DERIVED is DFX arithmetic over filed values (a sum across BDCs is a lower bound), and INFERENCE is DFX judgement, such as a sponsor matched to a borrower. The evidence schema has the full list.
What is covered, and what is not
Covered: BDCs that file a schedule of investments with the SEC, by borrower, holder, tranche, lien, maturity, principal, cost and fair value, at each schedule date DFX has read.
- Not covered: banks, CLOs and private funds that file no schedule of investments. A BDC holder list is not the whole lender group, and principal summed across BDCs is a lower bound. Every answer states this in
coverage_limits. - Exact maturity days where a filing prints only a month and year. A maturity on the 1st of a month may carry no more than that.
- Changes between two quarters and change events (new positions, exits, markdowns, non-accrual). Without a plan,
researchreads the latest schedule date only, andplan.depth_basison every answer says which depth ran. Do not read a latest-date answer as "nothing changed". - A sponsor's lenders. The live answer is organised by borrower rather than by BDC, comes back
PARTIAL, and its owncitation_checkfails because some rows cite only a dataset. Treat those rows as unverified, and ask the holders question for each borrower it names. - Non-accrual status, which comes only from a BDC's own footnote. A mark below cost is the lender's own mark.
- Questions with no named company, such as a sector screen.
Connect
The endpoint is https://exchange-production-9123.up.railway.app/mcp/core?c=agents-pc, the core profile. It speaks Streamable HTTP, takes no key and no sign-up, and every tool is read-only. The full profile, https://exchange-production-9123.up.railway.app/mcp?c=agents-pc, lists every DFX tool, for an agent that needs one outside the core; start with the core.
| Client | Status |
|---|---|
| Claude Code | Verified. DFX's own checks connect this way, to the same endpoint, and get answers. |
| claude.ai and Claude Desktop, custom connector | Not certified. DFX has not yet run a full custom connector session end to end, and DFX is not in the Claude connector directory. The steps follow Claude's own custom connector settings. |
| ChatGPT, developer mode | Not listed. DFX is not a published ChatGPT app or directory listing. A custom MCP server in developer mode is the only way in, which plans and workspaces may add one is set by OpenAI and the workspace admin, and DFX has not tested it end to end. |
| Python and TypeScript SDKs | Published as dfx-intel 0.1.0 on PyPI and npm. They call the same endpoint and tag their own calls (sdk-py, sdk-ts). |
| Any other MCP client | Any client that accepts a remote Streamable HTTP URL connects with the endpoint above. Per-client setup for Cursor, VS Code, Windsurf, Cline and others is on /agents. |
Claude Code (verified)
claude mcp add --transport http dfx "https://exchange-production-9123.up.railway.app/mcp/core?c=agents-pc"
claude.ai or Claude Desktop, custom connector (not certified)
Pro and Max: Customize > Connectors > + Add > Add custom connector Team and Enterprise: an Owner adds it under Organization settings > Connectors > Add > Custom > Web Name: DFX Intelligence URL: https://exchange-production-9123.up.railway.app/mcp/core?c=agents-pc Authentication: No sign in
ChatGPT, developer mode (not listed)
chatgpt.com/plugins > + > Add custom MCP server (developer mode; workspace policies apply) Name: DFX Intelligence URL: https://exchange-production-9123.up.railway.app/mcp/core?c=agents-pc Authentication: none
Python SDK
pip install dfx-intel
from dfx_intel import research
r = research("Which BDCs hold Hyland Software debt?")
print(r.state, r.answer)
for url in r.evidence_urls:
print(url)TypeScript SDK
npm install dfx-intel
import { research } from "dfx-intel";
const r = await research("Which BDCs hold Hyland Software debt?");
console.log(r.state, r.answer);
for (const url of r.evidenceUrls) console.log(url);Other MCP clients that take a URL
{
"mcpServers": {
"dfx": {
"url": "https://exchange-production-9123.up.railway.app/mcp/core?c=agents-pc"
}
}
}Run a first task
Each question below was asked on the live exchange on 2026-10-25 between 23:14 and 23:16 UTC, anonymously, and the answer matched the question. Paste one exactly. Every figure is from the BDCs' schedules of investments at 2026-06-30.
Which BDCs hold a borrower's debt
Ask your agent, in plain words:
Which BDCs hold Hyland Software debt?
Or call the tool yourself:
research {"question": "Which BDCs hold Hyland Software debt?"}What production returned at . State OK in 3.7 s. Each of the four holders cites its own 10-Q for 2026-06-30. 21 is the number of BDCs on DFX's tape, not every lender: banks, CLOs and private funds are outside the data, and the answer says so.
At 2026-06-30, 21 BDCs held positions in Hyland Software, Inc on their own schedules of investments; the largest: Blue Owl Technology Finance Corp. ($142.9M of debt at fair value over 2 tranches; principal $147.5M), Blue Owl Credit Income Corp. ($139.2M of debt at fair value over 2 tranches; principal $143.6M), ARES CAPITAL CORP ($108.6M of debt at fair value), Goldman Sachs Private Credit Corp. ($92.6M of debt at fair value over 2 tranches; principal $93.1M), and 17 more on the next page (continue with page.continuation).
When a named position matures
Ask your agent, in plain words:
When does Blue Owl Technology Finance Corp. position in Hyland Software mature?
Or call the tool yourself:
research {"question": "When does Blue Owl Technology Finance Corp. position in Hyland Software mature?"}What production returned at . State OK in 5.3 s, cited to the BDC's 10-Q (accession 0001747777-26-000028). Name both the lender and the borrower. Read a maturity on the 1st of a month as month and year: some filings print only those, and another BDC prints a different day for the same loan.
Blue Owl Technology Finance Corp.'s own schedule of investments reports its first lien term loan, first lien revolver in Hyland Software, Inc (2 rows): at 2026-06-30, fair value $142,901,000 against cost $147,584,000 (96.8% of cost), maturing 2030-09-01.
How the holders mark the same debt
Ask your agent, in plain words:
Which BDCs hold Medallia's loans and how did they mark them at June 30, 2026?
Or call the tool yourself:
research {"question": "Which BDCs hold Medallia's loans and how did they mark them at June 30, 2026?"}What production returned at . State OK in 2.3 s. The answer prints fair value and principal side by side for each holder, never blended; the mark is their ratio (about 49 cents on the dollar for the largest holder, computed here, not by DFX). A mark below cost is the lender's own mark, not a finding of impairment.
At 2026-06-30, 8 BDCs held positions in Medallia, Inc on their own schedules of investments; the largest: Blackstone Private Credit Fund ($553.6M of debt at fair value over 2 tranches; principal $1.12B), Blackstone Secured Lending Fund ($195.6M of debt at fair value over 2 tranches; principal $395.2M), FS KKR Capital Corp ($117.4M of debt at fair value; principal $234.1M), HPS Corporate Lending Fund ($40.7M of debt at fair value; principal $82.8M), and 4 more on the next page (continue with page.continuation).
A small lender group, with lien and maturity
Ask your agent, in plain words:
Which BDCs held a debt investment in Trench Plate Rental Co. at June 30, 2026, and what lien?
Or call the tool yourself:
research {"question": "Which BDCs held a debt investment in Trench Plate Rental Co. at June 30, 2026, and what lien?"}What production returned at . State OK in 1.8 s. The lien and maturity are on each holder's own row, cited to that holder's 10-Q, and an equity-only holder is labelled as such rather than counted as a lender. A group this small is easy to check against EDGAR yourself.
At 2026-06-30, 4 BDCs held positions in Trench Plate Rental Co on their own schedules of investments (3 of them its debt and 1 only equity or a fund stake); the largest: Apollo Debt Solutions BDC ($47.3M of debt at fair value over 2 tranches; principal $47.8M), MidCap Financial Investment Corp ($18.9M of debt at fair value over 2 tranches; principal $19.1M), Stepstone Private Credit Fund LLC ($5.8M of debt at fair value over 2 tranches; principal $5.8M), Nuveen Churchill Private Capital Income Fund ($40.0K at fair value, no debt). On each debt holder's row (relationships[].tranches), for example Apollo Debt Solutions BDC: first lien term loan $43.2M due 2028-12-04; first lien revolver $4.1M due 2028-12-04
Write the question with the company's full name. research answers a question about a named borrower; when a name does not resolve, call resolve_name or what_can_dfx_answer first.
Inspect the citations
- Every row in
relationshipsandfactscarries aciteblock. For a BDC position,cite.urlis the BDC's 10-Q or 10-K document itself, withdocument_id(the accession) andsource_location.section,Schedule of Investments. In the Hyland answer above, Blue Owl Technology Finance's row citeshttps://www.sec.gov/Archives/edgar/data/1747777/000174777726000028/ortf-20260630.htm. citation_checkgrades the answer as a whole.UNVERIFIEDwithtraceable: PASSmeans every row cites a document, not that the document was re-read for this answer.FAILmeans some rows cite no document a reader can open; surface it rather than hide it.coverage_limitssays what the data cannot see,uncertaintywhat it cannot decide, anddo_not_concludethe inferences the rows do not support. Read them before writing a conclusion.withheldcounts what this access tier left out. Withheld means withheld, not missing.- Quote a figure with its date and its
cite.url, never withdfx_page, which is DFX's own page and not a source. www.sec.gov refuses a client whose User-Agent names no contact, so send one with a name and an email address when you open a filing.
Continue an answer
Long answers page whole claims, and the answer's basis is always on page 1. When page.continuation is not null, pass it back as continue to get the next page of the same answer; it does not re-run the question. On the live build, the continuation from the Hyland answer returned its next page with more cited rows, among them the borrower's earliest maturity from Golub Capital BDC's 10-Q. Each answer's next also lists follow-up calls with their arguments filled in.
Continue
research {"continue": "<page.continuation from the previous answer>"}
Python (dfx-intel 0.1.0):
from dfx_intel import research
r = research("Which BDCs hold Hyland Software debt?")
if r.has_more:
page2 = research(continuation=r.continuation)
TypeScript (dfx-intel 0.1.0):
import { research } from "dfx-intel";
const r = await research("Which BDCs hold Hyland Software debt?");
if (r.continuation) {
const page2 = await research("", { continuation: r.continuation });
}When the answer is not OK
| state | What to do |
|---|---|
OK | Answered from cited rows. Still read coverage_limits and withheld. |
PARTIAL | Part of the question was answered. uncertainty says which part was not. |
UNKNOWN | DFX could not resolve or decide. Retry with the borrower's legal name as a 10-Q prints it, or call resolve_name first. |
NOT_COVERED | Outside the data, such as a bank-only lender. A coverage limit, not a no. |
RATE_LIMITED | The anonymous budget for your network is used. The reply says when to retry, and a refused call is not charged. |
When a membership adds value
- Names an anonymous answer withholds. The
withheldblock counts them, and itsmembershipfield says what a plan would add to that answer. - Comparing quarters and reading change events: these need a deeper read than the latest-date screen an anonymous call gets.
- Sustained use. Anonymous calls share one budget per network; on a membership, an agent calls as your account and draws on its own allowance.
Plans, prices and what each includes are on the plans page. This page quotes none of them, so the plans page is the one place they are kept current.
The first tasks were checked against the live exchange (build 63e8c0cbbd) on . Related: developer docs, research and continuation, evidence schema, private credit research notes.