File Market
Menu
Sign in

Docs

Getting started

How to buy, sell, and connect an agent. No SDK.

Buying

  1. Browse Explore or type in the search box. Results rank by title first. Prefix @handle to stay in one shop. Cards show price, type, rating, and version. Free packs carry a Free badge; filter them with the Free chip.
  2. Paid packs: press Buy with Stripe. Checkout uses automatic payment methods: cards, Link, Apple Pay, and Google Pay when those are on in the Stripe Dashboard. ACH (US bank) if you enable it there. Apple Pay on Stripe hosted Checkout uses checkout.stripe.com. Register filemarket.app in Stripe if you later serve Apple Pay on the shop host itself. No PayPal. You can add a promo code or send the pack as a gift.
  3. Or fund Agentic Pay once. An agent with your fmb_ token spends that balance. Sleep buys need a funded wallet. Nobody can withdraw.
  4. Free packs: press Get free. No Stripe. Sign in so the claim writes a $0 receipt and library entitlement, the same record as a paid purchase.
  5. The success page gives you a signed download link (one hour, re-mintable from your library forever). Every future version is included.

Prices are in USD. $0 is Free. A local estimate is shown when your region is not USD; paid charges are always USD. Monthly packs say /mo and bill through Stripe until you cancel. Official first-party packs live at @filemarket and are free.

Library, seats, subscriptions

Your library lists every purchase with versions, changelogs, and an entitlement key (FM-XXXX-XXXX-XXXX) anyone can verify at /api/v1/entitlements/verify without learning who you are.

  • Seats. Share any purchase with up to three people. Invite an email, send them the link, and the pack appears in their library when they sign in with that email. Revoke any time. No extra charge.
  • Subscriptions. Monthly packs show their status in the library. Manage or cancel opens the Stripe Customer Portal; access lasts until the paid period ends.
  • Exports. Download your library as CSV from the library page.
  • Notifications. New versions, saved-search matches, seller updates, and seat acceptances land in Notifications.

Selling

Sixty seconds, one paste, one Stripe tap:

1
Create shop + agent prompt
Create the shop

Sign in. Sell. Create shop + agent prompt.

2
fmk_•••• included
Copy setup for my agent
Paste the prompt

Base URL, MCP, fmk_ token, steps. Paste into your bot.

3
stripe.com/setup/…
Connect Stripe to get paid
Tap Stripe

Needed for paid packs. Free listings skip this.

4
✓ scan clean
✓ checklist ready
Published · /s/you/pack
Bot publishes

Upload, scan, price, live URL. Then versions and sales.

Free & open-source welcome. Price $0 lists without Stripe. Claimers still get a library entitlement and a $0 receipt. No platform fee on free. License presets include MIT, Apache 2.0, GPL-3.0, BSD, and CC0; a license is optional. Official File Market packs live at @filemarket.

  1. Open Sell and connect Stripe Express for paid payouts. Free listings do not need a charge.
  2. Publish a pack: zip, PDF, or a single file, up to 100MB. Screenshots are PNG, JPEG, WebP, or GIF (4MB each). Inside a zip, source trees, scripts, configs, markdown, JSON, and small binaries shipped with source are fine; we do not need a special handler per extension. Packs over a few megabytes upload in parts to R2. Automated safety checks run first (zip structure, blocked file types, zip-slip and zip-bomb, shell and exfiltration patterns, optional VirusTotal). Quarantined uploads never go live. Oversized packs return HTTP 413 with a clear size message.
  3. Software and app listings must include readable source (in the zip, or a dedicated source upload). A pack that is only .exe / .dmg / .msi / bare .app stays quarantined. Agent, document, and media packs are exempt. Listings that pass show a Source included badge. The same source rule applies to free software.
  4. Ship versions with changelogs; buyers get them free. Add screenshots, tags, an optional license note, a demo video, coupons, shelves and bundles, and storefront updates.
  5. Mark a listing Coming soon to collect a notify-me list, or Monthly to bill through Stripe Billing (monthly cannot be $0).

Duplicate a listing to start a draft from an existing one, and hide or show many listings at once from the bulk bar. Sales export to CSV from the dashboard.

Embed a buy button

Every live listing has two copy-paste snippets under Sell → your listing → Embed a buy button. Neither contains a key, token, or price you have to keep in sync; both read the live listing.

Plain HTML. Works in READMEs, newsletters, and any site. The badge is an SVG we render with the current title and price, cached for five minutes.

<a href="https://filemarket.app/s/your-handle/your-pack?utm_source=embed&utm_medium=card" target="_blank" rel="noopener"> <img src="https://filemarket.app/embed/card/your-handle/your-pack.svg" alt="Buy on File Market" height="22" /> </a>

Script button

One external script draws a button and, when a buyer clicks it, opens Stripe Checkout through the public checkout API. If payments are off or the request fails, it opens the listing page instead. The buyer pays on Stripe; your site never sees card data.

<script async src="https://filemarket.app/embed/button.js" data-listing="your-handle/your-pack"></script>
  • CSP. Allow script-src https://filemarket.app and connect-src https://filemarket.app for the script button; the link card only needs img-src https://filemarket.app.
  • Themes. Add data-theme="light" to the script tag for light backgrounds.
  • Referrals. A ?ref=handle on your page is passed through to checkout so referral credit still applies.
  • Tracking. Links carry utm_source=embed; nothing else is tracked and no cookies are set on your site.

Agents: REST

Browse and open Stripe Checkout with no key. Filter bot packs with ?type=bots (alias: agent). Sleep buys need a funded Agentic Pay wallet and a buyer token. Underfunded returns 402. Card data never touches an agent. Free packs return payment: "free" immediately when you send buyer_email or a buyer token.

curl -s https://filemarket.app/api/v1/catalog
curl -s -X POST https://filemarket.app/api/v1/checkout -H 'content-type: application/json' -d '{"slug":"inbox-triage","buyer_email":"you@example.com","agent_id":"my-agent"}'
curl -s https://filemarket.app/api/v1/checkout/SESSION_ID -H 'x-agent-id: my-agent'

Invite a human

If the human does not have an account yet, POST /api/v1/accounts/invite with their email and an optional handle. Never send a password. That creates a pending account the agent can attach checkouts to. Unauthenticated callers always get the same generic confirmation and never receive claim_url. When mail is on, the human gets the link in their inbox. When mail is off, a seller token or a signed-in seller/admin can receive claim_url once to hand over. The human opens /claim-account, sets a password or signs in with X, and then mints their own fmb_ / fmk_ tokens. Until they claim, the agent has no session and no seller powers.

curl -s -X POST https://filemarket.app/api/v1/accounts/invite -H 'content-type: application/json' -d '{"email":"you@example.com","handle":"yourname"}'

Tickets and wallet

With a buyer token: GET /api/v1/tickets lists the human's tickets. POST /api/v1/tickets opens one (kind, message, optional order or sku). POST /api/v1/tickets/{id}/reply adds a reply. POST /api/v1/wallet/topup with {"amount_cents":2500} returns a Stripe Checkout URL for the human. Cards stay in Stripe.

Reference: OpenAPI · agent.json · llms.txt · Atom feed of new versions · status.json

Prompt to paste into any assistant
Shop File Market for me. It is a marketplace for agent packs, software, and files (https://filemarket.app). Checkout is held on Stripe; downloads unlock after payment. No API key needed. You never see or enter card numbers.

Buy for me:
1. GET https://filemarket.app/api/v1/catalog (filter: ?type=bots|agent|software|file). Details: GET https://filemarket.app/api/v1/products/<slug>.
2. Compare and pick the best fit for my use case. Ask me one question if unclear.
3. If I funded Agentic Pay, GET https://filemarket.app/api/v1/wallet with my buyer token, then POST https://filemarket.app/api/v1/checkout with that token and {"slug":"<slug>","agent_id":"<your name>"}. payment "wallet" returns download_url. A 402 underfunded means I need to top up. Sleep buys need that wallet.
4. If the wallet is empty and I am here, POST https://filemarket.app/api/v1/checkout with JSON {"slug":"<slug>","buyer_email":"<my email>","agent_id":"<your name>"} and give me checkout_url. I pay on Stripe. Optional: gift_email, notify_url, coupon.
5. After a human Checkout, GET https://filemarket.app/api/v1/checkout/<session_id> (header x-agent-id) until status is "paid", then give me download_url.

Sell for me:
6. I will give you a seller token from https://filemarket.app/sell. Use "Authorization: Bearer <token>". POST https://filemarket.app/api/v1/uploads (raw file, headers x-filename and content-type) then POST https://filemarket.app/api/v1/listings with title, slug, type, description, price_cents (50 to 149900), file_key. New versions: POST https://filemarket.app/api/v1/listings/<id>/versions with file_key and changelog. Steps: https://filemarket.app/llms.txt

Rules: only recommend products present in the catalog response. Never invent slugs, prices, or features. Quote price_display exactly. If you cannot make HTTP requests, give me the curl commands or open https://filemarket.app and stop at the Stripe page.

Agents: MCP

Remote Model Context Protocol server at POST https://filemarket.app/mcp (JSON-RPC 2.0: initialize, tools/list, tools/call). Add it to Claude, Cursor, ChatGPT, or any MCP client:

{ "mcpServers": { "file-market": { "url": "https://filemarket.app/mcp" } } }

Tools cover search, product detail, checkout, status, versions, collections and bundles, library, seats, tickets, and wallet top-up (buyer token), plus listing, uploads, versions, announcements, and sales (seller token). Full list on /mcp.

Tokens and scopes

TokenWhereCanCannot
fmb_… buyerAccountList the library, mint download links, debit Agentic Pay, open a wallet top-up Checkout for the human, read checkout status, verify keys, manage seats, open and reply to ticketsWithdraw, sell, change the account
fmk_… sellerSellUpload, create and edit listings, publish versions, post updates, read salesMove money, change payouts, act on other sellers
fmc_… helperInvited from Sell → Helper access, minted on AccountUpload, create and edit listings, publish versions, trash and restore, read the shop profileSales, payouts, Stripe, storefront updates, tickets, tokens (403)
noneBrowse, search, invite a human (POST /api/v1/accounts/invite, generic confirmation only), open a checkout, poll status with the same agent_idAnything account-scoped. Invite never returns claim_url, never sets a password, and never opens a session as the human.

Send tokens as Authorization: Bearer …. They are shown once, stored hashed, and revocable.

Safety and refunds

  • Every upload is scanned before it can be downloaded; results show as a badge on the listing. Checks are automated and not a guarantee, so read the file list and reviews. Packs may be up to 100MB; screenshots stay 4MB.
  • Source for software. Application listings must include readable source (dedicated upload or a zip with source, README, or package manifests). A pack that is only .exe, .dmg, .msi, or a bare .app stays quarantined. Common dev contents inside a zip (source trees, scripts, configs, markdown, JSON, small binaries with source) are fine. Bot packs, documents, and media are exempt.
  • Zip checks cover path traversal (zip slip), extreme compression (zip bombs), blocked types, and text heuristics for shell pipes and credential exfil. VirusTotal is optional when a key is configured.
  • Downloads are short-lived signed links through the Worker; packs are never public objects.
  • Refunds and problems: open a ticket from Support or from the order in your library. Sellers see tickets on their dashboard; File Market can step in.
  • Report a listing or seller from its page. Reports go to the seller and the platform queue.

Security notes and the audit log live in the repository's SECURITY_AUDIT.md. Live health: /status.

Search and sharing

  • Every public page has a unique title, meta description, canonical URL, Open Graph and Twitter card, and crawlable HTML (not an empty JS shell).
  • Listings emit Product or SoftwareApplication, Offer, BreadcrumbList, and FAQ JSON-LD when those fields exist. Shops and collections emit ItemList. Home emits Organization and WebSite with SearchAction.
  • /sitemap.xml lists home, explore facets, docs, leaders, /updates, live listings, shops, collections, and /media with lastmod and priority. /robots.txt allows those pages and disallows account, login, checkout, saved lists, claim links, and download internals.
  • Share cards for listings, shops, and collections are generated at /og/s/{handle}/{sku}.png, /og/@{handle}.png, and /og/c/{slug}.png. Site-wide cards stay at /media/og/v1/card.png. The File Market mark is the same icon as /media/brand/icon.svg and /media/brand/icon-4096.png on the nav, favicon, OG, campaign stills, and embeds.
  • Agent discovery stays at /llms.txt and /.well-known/agent.json.

Press and ads

The brand kit lives at /media: SVG and PNG marks, wordmarks, OG, square, X header, and a downloadable zip. Use those files for advertising. Video storyboards and scripts are in the repo at docs/ads.md; Market Ads produces final spots outside this Worker.

  • Keep the 2×2 mark (cream / copper / faint / cream) on the ink field.
  • Do not recolour, stretch, or nest the mark inside another logo.
  • Official shop is @filemarket. All of its packs are free and still write a real $0 purchase.