Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions typescript/.changeset/quiet-owls-screen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@coinbase/agentkit": patch
---

Added an Agentum action provider with seven x402-paid actions for company resolution, EU VAT validation, sanctions screening, vendor KYB, IBAN payee verification and OFAC wallet-address screening
33 changes: 33 additions & 0 deletions typescript/agentkit/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,39 @@ const agent = createAgent({
</table>
</details>
<details>
<summary><strong>Agentum</strong></summary>
<table width="100%">
<tr>
<td width="200"><code>resolve_entity</code></td>
<td width="768">Resolves a company to its official registry record (legal name, registration number, status, legal form, LEI, VAT) via x402 payment (USDC on Base).</td>
</tr>
<tr>
<td width="200"><code>verify_eu_vat</code></td>
<td width="768">Validates an EU VAT number against the European Commission VIES service via x402 payment (USDC on Base).</td>
</tr>
<tr>
<td width="200"><code>screen_sanctions</code></td>
<td width="768">Screens a company or person against OFAC SDN, EU, UN and UK FCDO sanctions lists via x402 payment (USDC on Base).</td>
</tr>
<tr>
<td width="200"><code>check_vendor</code></td>
<td width="768">Runs a one-call vendor KYB check (registry lookup, EU VAT check and sanctions screening) with a verdict via x402 payment (USDC on Base).</td>
</tr>
<tr>
<td width="200"><code>verify_bank_payee</code></td>
<td width="768">Validates an IBAN and checks the account country matches the expected payee country via x402 payment (USDC on Base).</td>
</tr>
<tr>
<td width="200"><code>batch_resolve</code></td>
<td width="768">Resolves 1 to 25 companies to official registry records in one call via x402 payment (USDC on Base).</td>
</tr>
<tr>
<td width="200"><code>screen_address</code></td>
<td width="768">Checks a crypto wallet address against OFAC's listed digital-currency addresses (exact match only) via x402 payment (USDC on Base).</td>
</tr>
</table>
</details>
<details>
<summary><strong>Base Account</strong></summary>
<table width="100%">
<tr>
Expand Down
74 changes: 74 additions & 0 deletions typescript/agentkit/src/action-providers/agentum/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Agentum Action Provider

This directory contains the **AgentumActionProvider** implementation, which gives an agent counterparty-verification and compliance actions backed by the [Agentum](https://agentum.asimplek.cloud) API: company resolution against official registries, EU VAT validation, sanctions screening, one-call vendor KYB, IBAN payee checks and OFAC wallet-address screening.

Each call is paid per request in USDC on Base via [x402](https://x402.org), signed by the agent's own wallet. The first 5 calls per day per caller IP address are free and require no payment. No API key or account is needed.

## Directory Structure

```
agentum/
├── agentumActionProvider.ts # Main provider with the 7 actions
├── agentumActionProvider.test.ts # Provider test suite
├── schemas.ts # Action schemas and config type
├── constants.ts # Base URL, endpoints, price cap, supported networks
├── utils.ts # x402 payment client and POST helper
├── index.ts # Package exports
└── README.md # This file
```

## Configuration

All options are optional:

```typescript
import { agentumActionProvider } from "@coinbase/agentkit";

const provider = agentumActionProvider({
// Highest price in USD the agent may pay for one call. Default: 0.03.
// A call priced above this is refused before anything is signed.
maxPriceUsd: 0.03,

// Server base URL. Default: https://agentum.asimplek.cloud
baseUrl: "https://agentum.asimplek.cloud",

// Per-request timeout in milliseconds, including the paid retry. Default: 30000.
timeoutMs: 30000,

// Sent as X-Agent-Id so the server can meter the free tier. Default: random per provider.
agentId: "my-agent",
});
```

## Network and wallet

The provider supports EVM wallet providers on `base-mainnet` only (USDC settles on Base). The wallet that the agent already uses signs an EIP-3009 `transferWithAuthorization` for the exact price, so the agent needs a small USDC balance on Base for paid calls. Free-tier calls cost nothing.

## Actions

| Action | What it does | Price (USDC) |
| ------------------- | ----------------------------------------------------------------------------- | ------------ |
| `resolve_entity` | Resolve a company to its official registry record (name, number, status, LEI) | 0.005 |
| `verify_eu_vat` | Validate an EU VAT number against live VIES | 0.005 |
| `screen_sanctions` | Screen a company or person against OFAC, EU, UN and UK FCDO lists | 0.005 |
| `check_vendor` | Registry lookup, VAT check and sanctions screen with a verdict | 0.010 |
| `verify_bank_payee` | Validate an IBAN (format, MOD-97) and check country against the payee | 0.003 |
| `batch_resolve` | Resolve 1 to 25 companies in one call | 0.025 |
| `screen_address` | Check a wallet address against OFAC's listed digital-currency addresses | 0.002 |

`batch_resolve` ($0.025) is under the default `maxPriceUsd` of 0.03. Lower `maxPriceUsd` to 0.01 to disable it, or to 0.002 to allow only `screen_address`.

## Limitations

- `screen_address` is an exact match against the official OFAC list only. It is not behavioural, cluster or mixer risk analysis, and `UNKNOWN` does not mean `CLEAR`.
- `resolve_entity` and `batch_resolve` use official registries; some companies in some countries are not resolved.
- Sanctions results are screening aids, not legal determinations.

## Security

Tool results contain text taken from public registries and sanctions lists (company names, addresses, remarks). As with every action that returns third-party text, treat it as untrusted data. See the AgentKit [Managing Risk](../../../../../README.md#%EF%B8%8F-managing-risk) guidance. Payments are bounded per call by `maxPriceUsd`, and the provider only ever contacts the configured `baseUrl`.

## Notes

- Service: https://agentum.asimplek.cloud (OpenAPI at `/openapi.json`, x402 discovery at `/.well-known/x402`).
- The same tools are also available as a remote MCP server at `https://agentum.asimplek.cloud/mcp`.
Loading
Loading