AISP Agent Skill
Agent Inference Sharing Protocol (AISP) lets agents rent idle DIEM/Venice API capacity via USDC escrow. Providers list capped API keys; agents fund and receive keys automatically.
Architecture
Agent: fund() → Backend sees Funded event → Key released → Agent uses Venice API
Provider: list() → Agent funds → Term expires → settle() → Provider paid (99%, 1% fee)
Agent Workflow (Renting)
- Listings from backend:
GET /api/listings
- Approve USDC if needed (contract spends on
fund)
- Fund on-chain:
contract.fund(listingId, termDays, diemAmount) → returns rentalId
- Get key:
POST /api/key/{rentalId} with signed message diem-marketplace:get-key:{rentalId}:{timestamp}
- Use
apiKey with Venice API until expiresAt (Unix timestamp)
SDK (Agent)
import { DiemAgent } from "diem-marketplace-sdk";
const agent = new DiemAgent({
signer: wallet,
contractAddress: "0x...",
backendUrl: "https://diem-marketplace-backend.fly.dev",
usdcAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
});
const listings = await agent.getListings();
const { apiKey, expiresAt } = await agent.rent(
listings[0].listingId,
termDays,
ethers.parseUnits(diemAmount, 6)
);
Provider Workflow (Listing)
- Create listing on-chain:
contract.list(pricePerDay, termDays, diemMin, diemMax) → listingId
- Store key on backend:
POST /api/keys with { listingId, apiKey, signature, timestamp }
- Message:
diem-marketplace:store-key:{listingId}:{timestamp}
- Settle when rental expires:
contract.settle(rentalId) → provider receives 99% (1% protocol fee)
SDK (Provider)
import { DiemProvider } from "diem-marketplace-sdk";
const provider = new DiemProvider({
signer: wallet,
contractAddress: "0x...",
backendUrl: "https://diem-marketplace-backend.fly.dev",
usdcAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
});
const listingId = await provider.createListing({
pricePerDay: ethers.parseUnits("0.80", 6),
termDays: 30,
diemMin: ethers.parseUnits("1000", 6),
diemMax: ethers.parseUnits("4000", 6),
apiKey: "vn-scoped-...",
});
Key Paths
| Path |
Purpose |
sdk/src/agent.ts |
DiemAgent: getListings, rent, getKey, getMyRentals |
sdk/src/provider.ts |
DiemProvider: createListing, settle, revokeAndRefund |
backend/src/routes.ts |
API routes: /api/listings, /api/keys, /api/key/:id |
contracts/DiemMarketplace.sol |
On-chain escrow, 1% fee |
Backend API
| Endpoint |
Method |
Purpose |
/api/listings |
GET |
List rentable listings |
/api/listings/:id |
GET |
Single listing |
/api/keys |
POST |
Provider stores API key |
/api/key/:rentalId |
POST |
Agent retrieves key (signature required) |
/api/balance |
POST |
Check DIEM balance for API key |
/api/requests |
POST |
Create rental request |
Signatures
All backend requests requiring auth use EIP-191 signing:
getKey: diem-marketplace:get-key:{rentalId}:{timestamp}
storeKey: diem-marketplace:store-key:{listingId}:{timestamp}
balance: apiKey in body (no signature)
Contract (Base)
- Chain: Base (8453)
- Mainnet:
0xeeDa7657f2018b3b71B444b7ca2D8dE91b3B08f3
- USDC:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Security & Signing
- Use an external signer or hardware wallet; never paste raw private keys.
- Require explicit user confirmation before fund transfers or credential usage.
- Venice API keys must be scoped (inference-only), revocable, and minimal for escrow.
Notes
- Venice API keys must be inference-only (not admin)
- 1% protocol fee deducted at settlement
1---2name: aisp3description: Enables AI agents to interact with AISP (Agent Inference Sharing Protocol) for renting or providing DIEM API capacity. Use when working with diem-marketplace, Venice API keys, USDC escrow, listings, rentals, or when the user wants to rent inference capacity or list API keys.4---56# AISP Agent Skill78Agent Inference Sharing Protocol (AISP) lets agents rent idle DIEM/Venice API capacity via USDC escrow. Providers list capped API keys; agents fund and receive keys automatically.910## Architecture1112```13Agent: fund() → Backend sees Funded event → Key released → Agent uses Venice API14Provider: list() → Agent funds → Term expires → settle() → Provider paid (99%, 1% fee)15```1617## Agent Workflow (Renting)18191. **Listings** from backend: `GET /api/listings`202. **Approve USDC** if needed (contract spends on `fund`)213. **Fund** on-chain: `contract.fund(listingId, termDays, diemAmount)` → returns `rentalId`224. **Get key**: `POST /api/key/{rentalId}` with signed message `diem-marketplace:get-key:{rentalId}:{timestamp}`235. Use `apiKey` with Venice API until `expiresAt` (Unix timestamp)2425### SDK (Agent)2627```typescript28import { DiemAgent } from "diem-marketplace-sdk";2930const agent = new DiemAgent({31 signer: wallet,32 contractAddress: "0x...",33 backendUrl: "https://diem-marketplace-backend.fly.dev",34 usdcAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",35});3637const listings = await agent.getListings();38const { apiKey, expiresAt } = await agent.rent(39 listings[0].listingId,40 termDays,41 ethers.parseUnits(diemAmount, 6)42);43```4445## Provider Workflow (Listing)46471. **Create listing** on-chain: `contract.list(pricePerDay, termDays, diemMin, diemMax)` → `listingId`482. **Store key** on backend: `POST /api/keys` with `{ listingId, apiKey, signature, timestamp }`49 - Message: `diem-marketplace:store-key:{listingId}:{timestamp}`503. **Settle** when rental expires: `contract.settle(rentalId)` → provider receives 99% (1% protocol fee)5152### SDK (Provider)5354```typescript55import { DiemProvider } from "diem-marketplace-sdk";5657const provider = new DiemProvider({58 signer: wallet,59 contractAddress: "0x...",60 backendUrl: "https://diem-marketplace-backend.fly.dev",61 usdcAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",62});6364const listingId = await provider.createListing({65 pricePerDay: ethers.parseUnits("0.80", 6),66 termDays: 30,67 diemMin: ethers.parseUnits("1000", 6),68 diemMax: ethers.parseUnits("4000", 6),69 apiKey: "vn-scoped-...",70});71```7273## Key Paths7475| Path | Purpose |76|------|---------|77| `sdk/src/agent.ts` | DiemAgent: getListings, rent, getKey, getMyRentals |78| `sdk/src/provider.ts` | DiemProvider: createListing, settle, revokeAndRefund |79| `backend/src/routes.ts` | API routes: /api/listings, /api/keys, /api/key/:id |80| `contracts/DiemMarketplace.sol` | On-chain escrow, 1% fee |8182## Backend API8384| Endpoint | Method | Purpose |85|----------|--------|---------|86| `/api/listings` | GET | List rentable listings |87| `/api/listings/:id` | GET | Single listing |88| `/api/keys` | POST | Provider stores API key |89| `/api/key/:rentalId` | POST | Agent retrieves key (signature required) |90| `/api/balance` | POST | Check DIEM balance for API key |91| `/api/requests` | POST | Create rental request |9293## Signatures9495All backend requests requiring auth use EIP-191 signing:96- `getKey`: `diem-marketplace:get-key:{rentalId}:{timestamp}`97- `storeKey`: `diem-marketplace:store-key:{listingId}:{timestamp}`98- `balance`: `apiKey` in body (no signature)99100## Contract (Base)101102- **Chain**: Base (8453)103- **Mainnet**: `0xeeDa7657f2018b3b71B444b7ca2D8dE91b3B08f3`104- **USDC**: `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`105106## Security & Signing107108- Use an external signer or hardware wallet; never paste raw private keys.109- Require explicit user confirmation before fund transfers or credential usage.110- Venice API keys must be scoped (inference-only), revocable, and minimal for escrow.111112## Notes113114- Venice API keys must be **inference-only** (not admin)115- 1% protocol fee deducted at settlement