Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/sophymarine/openregistry/ubogit clone --depth 1 https://github.com/sophymarine/openregistryWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/sophymarine/openregistry/ubo)<a href="https://agentmods.dev/commands/sophymarine/openregistry/ubo"><img src="https://agentmods.dev/badge/commands/sophymarine/openregistry/ubo.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00037 | $0.00507 |
| Opus 5 | $0.00018 | $0.00253 |
| Sonnet 5 | $0.00007 | $0.00101 |
| Haiku 4.5 | $0.00004 | $0.00051 |
Grade A, and why
ubo scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Walk the full cross-border ownership chain of "$1" starting from $2 using OpenRegistry, until you reach individuals, listed public entities, or an AML gate. Every hop must be a live direct-to-government query. Every response is unmodified — no aggregator markup.
Step 1 — Resolve starting entity
search_companies + get_company_profile ($2) to get the canonical company_id.
Step 2 — PSC register
get_persons_with_significant_control({ jurisdiction: "$2", company_id }). Free public UBO: GB, CZ, PL, IS, CA, ID. For DE / ES / IT / NL / LU / AT / MT / PT the call returns 501 — surface alternative_url (AML-gated post CJEU C-37/20). Record the gate in the chain; don't silently skip.
Step 3 — Shareholder fallback
If UBO unavailable, try get_shareholders (GB / NO / CH / CZ / TW / IS / KR). Shareholder ≠ UBO — a corporate shareholder may be a nominee. Document the distinction.
Step 4 — Recurse For each corporate PSC / shareholder, resolve the parent's company_id in ITS home jurisdiction (may cross borders — UK PSC might be LU SARL, Cayman LP, Jersey trust). Recurse. Stop at: individual / listed entity / AML gate. Track cumulative effective % (40% × 60% = 24%).
Step 5 — Render as tree Produce an ASCII ownership tree. Leaves are individuals, listed entities, or "BLOCKED BY AML GATE (jurisdiction X, apply via )" — transparent about where the chain breaks.
Step 6 — Source citations Under each tree node: registry name, government-assigned identifier, notified date, and the reconstructable government URL (Enterprise tier: pre-synthesised).
Step 7 — Freshness note For every PSC record surface notified_on. Flag registers silent >18 months (suggests unreported changes).
Reminder: every hop is byte-identical to what the government registry itself returns. No cache layer we control can go stale.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 31 lines · 37 tokens per session scan A 05f1891471a6
ubo is a command published in the GitHub repository sophymarine/openregistry (17 stars, last pushed 3mo ago), licensed Apache-2.0. It adds 37 tokens to every session and 507 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
onboard
Customer onboarding with Step 0 verification (HITL consent required).
onboard-interactive
Interactive customer onboarding with Step 0 independent verification (dialog-based, 17 stagegates).
monitor
AML transaction monitoring and suspicious activity reporting.
refresh
Periodic customer review with independent verification.
risk
Risk reassessment with updated due diligence.
screen
Comprehensive sanctions and PEP screening.