Skip to content

Add agentupload.dev file storage skill #2

@merit-agent

Description

@merit-agent

Summary

Look, here's the deal - we need a new skill for agentupload.dev, an S3-backed file upload service via x402 micropayments. No API keys, just pay-per-upload. The thing is, agents need to know how to, you know, upload their generated files somewhere.

Technical Context

Create a new skill at skills/file-storage/SKILL.md with the following content:

---
name: file-storage
description: |
  Upload files to permanent public URLs via x402 micropayments. No API keys needed.

  USE FOR:
  - Uploading generated images, videos, documents
  - Sharing files with users via public links
  - Storing outputs that need to persist (6 months)

  TRIGGERS:
  - "upload", "save file", "host this", "share this"
  - "make it downloadable", "give me a link"
  - "store this somewhere", "put this online"

  IMPORTANT: All paths use https://agentupload.dev/api/x402/{action}. Use exact URLs from Quick Reference or discover first.
mcp:
  - x402
---

# File Storage with AgentUpload

Upload any file and get a permanent public URL. Pay per upload with USDC on Base.

## Quick Reference

| Action | Endpoint | Price | Auth |
|--------|----------|-------|------|
| Buy upload slot | `POST https://agentupload.dev/api/x402/upload` | $0.10-$10.00 | x402 payment |
| List my uploads | `GET https://agentupload.dev/api/x402/uploads` | Free | SIWX |
| Get upload details | `GET https://agentupload.dev/api/x402/download/{uploadId}` | Free | SIWX |

## Pricing Tiers

| Tier | Max Size | Price |
|------|----------|-------|
| `10mb` | 10 MB | $0.10 |
| `100mb` | 100 MB | $1.00 |
| `1gb` | 1 GB | $10.00 |

All uploads expire after **6 months**.

## Upload a File (Two Steps)

### Step 1: Buy an upload slot

```mcp
x402.fetch(
  url="https://agentupload.dev/api/x402/upload",
  method="POST",
  body={
    "filename": "my-image.png",
    "contentType": "image/png",
    "tier": "10mb"
  }
)

Response:

{
  "uploadId": "k7gm3nqp2",
  "uploadUrl": "https://f.agentupload.dev/k7gm3nqp2/my-image.png?t=...",
  "publicUrl": "https://f.agentupload.dev/k7gm3nqp2/my-image.png",
  "expiresAt": "2025-08-01T00:00:00.000Z",
  "maxSize": 10485760
}

Step 2: PUT file to uploadUrl

x402.fetch(
  url="{uploadUrl from step 1}",
  method="PUT",
  headers={"Content-Type": "image/png"},
  body={binary file data}
)

The publicUrl is now live and shareable.

List My Uploads

x402.fetch_with_auth(
  url="https://agentupload.dev/api/x402/uploads",
  method="GET"
)

Uses SIWX (wallet signature auth), no payment required.

Common Workflows

Upload Generated Image

  1. Generate image with StableStudio
  2. Buy upload slot with matching content type
  3. PUT the image data to uploadUrl
  4. Share publicUrl with user

Upload Document/PDF

x402.fetch(
  url="https://agentupload.dev/api/x402/upload",
  method="POST",
  body={
    "filename": "report.pdf",
    "contentType": "application/pdf",
    "tier": "10mb"
  }
)

Key Points

  • Public URLs are permanent for 6 months - no auth needed to access
  • Upload URLs expire after 1 hour - upload promptly after buying slot
  • Any file type accepted - contentType is advisory
  • Files stored on S3 with public read access

## Context
- Reported via Discord by: sragss_ms_99022
- Discovery data from: https://agentupload.dev/.well-known/x402

---
@claude please implement this fix

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions