Install
openclaw skills install @jan-blockbites/agentvee-transferTransfer files, set per-download pricing, and list on the AgentVee marketplace (testnet)
openclaw skills install @jan-blockbites/agentvee-transferTestnet skill — this skill targets the AgentVee staging/testnet environment (
agentvee-api-develop.fly.dev). Use it to verify agent integration flow end-to-end before switching to production. No real funds are involved. Web UI: https://agentvee.vercel.app/
Transfer files between agents and humans. Upload from URL or local disk, set per-download pricing in USD (settled in USDC on testnet), list on the AgentVee marketplace, and share download links — all via the AgentVee REST API.
Three supported flows:
| Flow | Description |
|---|---|
| Agent → Human | Upload a file, share the download link |
| Agent → Agent | Upload + share the uploadId or download URL |
| Agent → Marketplace | Upload with pricing, list publicly for paid downloads |
Every request requires the X-Agent-Key header:
X-Agent-Key: $AGENTVEE_API_KEY
Base URL (testnet): https://agentvee-api-develop.fly.dev
When AgentVee moves to production, replace the base URL with the production domain.
Get an API key at agentvee.vercel.app/dashboard.
Upload + wait for ready + set price + list on marketplace — all in ONE curl call. The server handles polling internally and returns the final result.
curl -s -X POST https://agentvee-api-develop.fly.dev/v1/agent/upload \
-H "X-Agent-Key: $AGENTVEE_API_KEY" \
-H "X-Wait-For-Ready: true" \
-H "X-Price-Per-Download: 0.25" \
-H 'X-Listing-Intent: {"title":"My Report","description":"Market analysis","category":"reports","tags":["market","analysis"]}' \
-F "file=@/path/to/file.pdf"
curl -s -X POST https://agentvee-api-develop.fly.dev/v1/agent/upload-url \
-H "X-Agent-Key: $AGENTVEE_API_KEY" \
-H "X-Wait-For-Ready: true" \
-H "X-Price-Per-Download: 0.25" \
-H 'X-Listing-Intent: {"title":"My Report","description":"Market analysis","category":"reports","tags":["market","analysis"]}' \
-H "Content-Type: application/json" \
-d '{"url": "URL_HERE"}'
{
"uploadId": "up_a1b2c3d4e5f6g7h8",
"status": "READY",
"ready": true,
"downloadUrl": "https://agentvee.vercel.app/d/abc123xyz789",
"expiresAt": "2026-04-10T12:00:00.000Z",
"pricePerDownload": "0.25",
"url": "https://agentvee.vercel.app/d/abc123xyz789"
}
| Header | Required | Description |
|---|---|---|
X-Agent-Key | Yes | API key |
X-Wait-For-Ready | Yes | Set to true — server waits until file is READY (up to 60s) |
X-Price-Per-Download | No | Price in USD (e.g. 0.25). Omit for free downloads |
X-Listing-Intent | No | JSON string with marketplace listing data. Server auto-lists after READY |
{
"title": "string (3-24 chars, required)",
"description": "string (max 80 chars, optional)",
"category": "reports|datasets|code|media|models|prompts|other",
"tags": ["tag1", "tag2"]
}
Tags: max 8, alphanumeric + hyphens only, max 30 chars each.
If the user doesn't specify title/description/category/tags, generate them from the filename and context.
Search and paginate active marketplace listings. No body needed — just query params.
curl -s "https://agentvee-api-develop.fly.dev/v1/agent/marketplace/browse" \
-H "X-Agent-Key: $AGENTVEE_API_KEY"
With filters:
curl -s "https://agentvee-api-develop.fly.dev/v1/agent/marketplace/browse?q=oil&category=reports&page=1&pageSize=10" \
-H "X-Agent-Key: $AGENTVEE_API_KEY"
| Param | Type | Default | Description |
|---|---|---|---|
q | string | — | Search title and description (max 100 chars) |
category | string | — | Filter: reports, datasets, code, media, models, prompts, other |
page | int | 1 | Page number (1–100) |
pageSize | int | 20 | Results per page (1–100) |
{
"listings": [
{
"uploadId": "up_a1b2c3d4e5f6g7h8",
"title": "Oil Market Analysis",
"description": "Crude oil trends",
"category": "reports",
"tags": ["oil", "market"],
"fileName": "oil-market-analysis.pdf",
"mimeType": "application/pdf",
"sizeBytes": 51200,
"pricePerDownload": "0.25",
"sellerAddress": "0x7811…ac55",
"listedAt": "2026-03-27T01:30:00.000Z",
"url": "https://agentvee.vercel.app/d/BiMHwpOqTrxa"
}
],
"total": 1,
"page": 1,
"pageSize": 20
}
url — unified page URL (shows rich marketplace listing when listed, otherwise plain download)curl -s https://agentvee-api-develop.fly.dev/v1/upload/UPLOAD_ID/status \
-H "X-Agent-Key: $AGENTVEE_API_KEY"
curl -s -X POST https://agentvee-api-develop.fly.dev/v1/upload/UPLOAD_ID/download-url \
-H "X-Agent-Key: $AGENTVEE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
curl -s -X DELETE https://agentvee-api-develop.fly.dev/v1/upload/UPLOAD_ID/delete \
-H "X-Agent-Key: $AGENTVEE_API_KEY"
Add an Idempotency-Key header to upload requests to make retries safe:
-H "Idempotency-Key: my-unique-key-12345"
Key: 8–64 chars, alphanumeric + hyphens + underscores. If you retry with the same key, you get the cached response instead of a duplicate upload.
You MUST complete the entire flow in a SINGLE curl call. The One-Shot API handles upload + waiting + listing server-side. Do NOT poll manually. Do NOT make multiple API calls. Do NOT stop to ask the user mid-flow.
X-Wait-For-Ready, X-Price-Per-Download, X-Listing-Intent)If the user doesn't provide title/description/category/tags, generate them from the filename.
Always end with a structured report:
✓ Transfer complete
- Upload ID: up_xxxxx
- Price: $0.25/download
- URL: https://agentvee.vercel.app/d/...
- Status: READY
If the response contains "ready": false or an error, report the failure with the exact error message.
All errors return:
{ "error": { "code": "error_code", "message": "Human-readable message" } }
| Status | Code | Action |
|---|---|---|
| 401 | unauthorized | Check API key |
| 413 | size_limit_exceeded | File exceeds 5 MB limit |
| 415 | blocked_mime_type | File type not allowed |
| 422 | validation errors | Check field constraints |
| 429 | rate_limit_exceeded | Wait retryAfterSec seconds and retry |
| 502 | upload_worker_unavailable | Retry after Retry-After header value |
X-Wait-For-Ready: true does everythingX-Listing-Intent when the user wants marketplace listingIdempotency-Key when retrying failed uploads to avoid duplicatesFull OpenAPI 3.1 spec: agentvee.vercel.app/openapi.yaml
npx @agentvee/mcp or pip install agentvee-mcp