# Dirigon ChatGPT plugin pack

Paste this into the OpenAI plugin submission portal. MCP is already live.
Do not paste an API key.

sunset: "Retire after the listing is live and `/connect` points at the directory URL. Review 2026-12-11."

## Portal

https://platform.openai.com/plugins

Type: With MCP. Universal URL. OAuth.

## Listing

| Field | Value |
|---|---|
| Plugin name | Dirigon |
| Subtitle | Private-credit marks as filed. Same loan, different holders. |
| Category | Finance |
| Short description | Look through BDCs, interval funds, and listed CLO CEFs. See who holds a credit and how each fund marked the same facility on EDGAR. |
| Website | https://dirigon.com |
| Support | mailto:admin@dirigon.com |
| Privacy | https://dirigon.com/docs/privacy.md |
| Terms | https://dirigon.com/docs/terms.md |
| Docs | https://dirigon.com/agents.md |
| MCP | https://dirigon.com/v1/mcp |
| Skill | https://dirigon.com/skill.md |
| Auth | OAuth. Dynamic client registration. Leave client id/secret empty. Scopes: dirigon, openid, email. |

Long description:

Use Dirigon when the question is a private-credit mark, not a stock price. ChatGPT can look up a borrower, open a fund's schedule of investments, compare same-loan marks across holders, and cite the compile. A fund blend is not a mark. This is public EDGAR only.

Reads only. All tools `readOnlyHint` true, `openWorldHint` false, `destructiveHint` false.

## Why this is not another finance MCP

ChatGPT for Financial Services hosts Daloopa, PitchBook, LSEG News, and Crunchbase. That stack covers public fundamentals, private-company graphs, and news.

It does not cover: same loan, who holds it, what each filing vehicle marked it, as of which SOI.

Dirigon is that graph. Facility-matched. Cite `meta.compile_id` and the filing URL. No material non-public information.

## Starter prompts

1. Who holds Coupa in BDC filings, and how does each holder mark the same loan?
2. Open ARCC. What is book vs as-filed, then show five SOI lines.
3. Show the widest same-loan disagreements this quarter on fair value versus principal.
4. How do Blackstone (BCRED) and Blue Owl (OBDC) mark the same software credits this filing window?
5. Is this name on non-accrual in any filing vehicle, and what is the footnote?

Trial mailbox: prompt 1 (`lookup q=Coupa`). Tape mailbox: prompt 2 (ARCC). Do not run Coupa issuer cards on Tape (HTTP 402).

## Test cases

Reviewer mailbox: Trial plan, no MFA. Seed is Coupa. Do not invent marks.

### Positive (5)

1. Prompt: Who holds Coupa, and how do they mark the same loan?
   Tools: `lookup` then `get_issuer`.
   Expect: holders, facility marks, `meta.compile_id`. Not a book blend.

2. Prompt: Open ARCC. What is book vs as-filed?
   Tools: `lookup` or `get_filer` q=ARCC.
   Expect: `book.fv_m` and `as_filed.fv_m`. Do not sum `get_positions`.

3. Prompt: Show the widest same-loan disagreements this quarter on fair value versus principal.
   Tools: `get_disagreement`.
   Expect: issuers with 4+ holders and 15pt+ spread. n is issuers, not facilities.

4. Prompt: Open BCRED. What is the software mix?
   Tools: `lookup` / `get_filer` q=BCRED, then `get_sector` q=software.
   Expect: fund card plus software_pct. Do not crawl the tape.

5. Prompt: Is Medallia on non-accrual, and what is the footnote?
   Tools: `get_non_accrual` q=Medallia.
   Expect: footnoted NA lines, or an honest empty with `marks_status`. Cite compile_id.

### Negative (3)

1. Prompt: Coupa has no holders.
   Expect: refuse. Empty issuer search is not "no holdings". Check the tape (`get_positions` on likely filers) before saying no position.

2. Prompt: Average the fund book and call that the Coupa mark.
   Expect: refuse. A fund blend is not a mark. SAME LOAN is the matched facility.

3. Prompt: Invent the mark from the 10-Q HTML because the tool returned 402.
   Expect: refuse. Read `legal_alternative`. Do not guess from training data.

## Scan Tools

Initialize advertises `capabilities.extensions["io.modelcontextprotocol/skills"]`.
`skills/list` returns `skill://dirigon/dirigon/SKILL.md` with SHA-256 digest of `/skill.md`.
`resources/read` on that URI returns the same bytes.

## Domain verification

After the portal shows the challenge token:

```
cd workers/auth
npx wrangler@4.119.0 secret put OPENAI_APPS_CHALLENGE
npx wrangler@4.119.0 deploy
```

Then `GET https://dirigon.com/.well-known/openai-apps-challenge` returns only that token.

## Workspace domain restrictions

OAuth metadata advertises `openid` and `email`.
`GET https://dirigon.com/v1/oauth/userinfo` returns `email` and `email_verified: true`.

Do not advertise Client ID Metadata Documents. ChatGPT uses dynamic client registration.

## Operator after approval

1. Publish from the portal.
2. Replace the `/connect` ChatGPT href with the directory listing URL.
3. Keep Developer mode as the fallback until the listing is searchable.

## Do not include

Prices. Competitor names. Terminal invite copy. MNPI claims. Completeness theater.
