Skip to content

feat(agentkit): add OSF action provider for sanctions/entity/CVE data - #1356

Open
onefreeman1337 wants to merge 2 commits into
coinbase:mainfrom
onefreeman1337:feat/osf-action-provider
Open

feat(agentkit): add OSF action provider for sanctions/entity/CVE data#1356
onefreeman1337 wants to merge 2 commits into
coinbase:mainfrom
onefreeman1337:feat/osf-action-provider

Conversation

@onefreeman1337

Copy link
Copy Markdown

Description

Adds an OSF (Open Source Filings) action provider giving agents three paid, provenance-stamped data tools over x402 (USDC on Base mainnet):

  • lookup_entity ($0.01) — entity / counterparty verification (KYC/KYB) via CMS NPI, GLEIF LEI, FDIC, and SEC EDGAR.
  • screen_entity ($0.05) — sanctions screening against OFAC SDN, EU consolidated, and UK OFSI lists (AML/KYC).
  • check_cve_exploited ($0.02) — CVE exploitation check via CISA KEV, EPSS score, and CVSS severity (DevSecOps).

Every result carries a provenance URL to the authoritative primary source (and, for sanctions, an audit receipt), so an agent can justify a decision to an auditor or regulator. Payment is automatic per request via x402, with a per-call spend ceiling enforced by the max_amount policy. OSF settles on Base mainnet only.

How it works

Each action is a @create_action on OsfActionProvider(ActionProvider[EvmWalletProvider]). Paid calls use the x402 client (x402ClientSync + register_exact_evm_client + x402_requests); the OSF endpoint replies 402, the client signs and settles the USDC micropayment with the agent's wallet, then retries and returns the record plus the on-chain payment proof.

Testing

  • Unit tests included (tests/action_providers/osf/) — provider name, network support, action names, URL encoding, success/non-200/exception handling. All passing.
  • ruff format and ruff check clean.
  • Payment path verified live on Base mainnet: a real screen_entity call settled on-chain — settlement tx 0xb7426254fc4eaab16d0812fcd94ff5ef5feee9a740ec809667ba3edcc0eb161d (eip155:8453), returning a verified sanctions record with a provenance URL.

Network support

Base mainnet (base-mainnet / eip155:8453).

More on OSF: https://api.osf-master-server.com/mcp

@cb-heimdall

Copy link
Copy Markdown

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 1
Sum 2

@github-actions github-actions Bot added documentation Improvements or additions to documentation action provider New action provider python labels Jul 2, 2026
All three OSF endpoints now quote 50000 atomic USDC ($0.05) in their live
HTTP 402 response, verified against the server on 2026-07-27. The README
still advertised $0.01 for lookup_entity and $0.02 for check_cve_exploited,
and _MAX_ENTITY_ATOMIC sat exactly at the live price with no headroom, which
defeats the stated design of keeping every ceiling above list price.

All three ceilings are now 150000 atomic USDC ($0.15). Tests mock max_amount,
so none of them depend on these values. Also expanded the screen_entity list
coverage, which is eleven lists from ten authorities rather than three.
@onefreeman1337

Copy link
Copy Markdown
Author

Refreshed this today rather than just bumping it.

All three OSF endpoints now quote 50000 atomic USDC ($0.05) in their live HTTP 402 response. The provider still advertised $0.01 for lookup_entity and $0.02 for check_cve_exploited, and _MAX_ENTITY_ATOMIC had drifted to sit exactly at the live price with no headroom, which defeats the point of having a ceiling above list price. Pushed a commit that sets all three ceilings to 150000 ($0.15) and corrects the README. The tests patch max_amount, so nothing in the suite depends on those constants.

Current state: 2 commits, 8 files, no conflicts with main, StepSecurity Required Checks and labeler both green. The only thing outstanding is Heimdall Review Status at 0/1 reviews.

Happy to split the tests out, drop the README, or narrow this to a single action if that makes review cheaper. If new action providers are not being taken at the moment, say so and I will close it myself rather than leave it in the queue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action provider New action provider documentation Improvements or additions to documentation python

Development

Successfully merging this pull request may close these issues.

2 participants