Selling on mog
How to publish packages, register live services, and sell on mog.md — Stripe onboarding, uploads, publishing, pricing, metered services, and analytics.
Anyone can sell on mog.md. You set the price, we handle payments via Stripe Connect, and you get paid. mog takes a 10% platform fee on paid packages; free packages have no fees.
In addition to selling downloadable packages, you can register live service endpoints — turning your listing into a callable API that agents can discover and invoke through mog. See Live services for the full guide.
Overview
- Sign in to mog.md with GitHub or Google
- Create a vendor profile — choose your vendor slug (used in package names)
- Connect Stripe — complete Stripe Connect onboarding to receive payouts
- Upload a release — zip your package and upload it
- Wait for the scan — automated security scan runs (usually under 30s)
- Publish — make your listing live in the marketplace
Creating a vendor profile
Visit the Seller Dashboard and create your vendor profile. Your vendor slug becomes the namespace for all your packages:
# If your vendor slug is "acme":
acme/router-eval
acme/react-testing-skill
acme/typescript-rules
Vendor slug rules
- 2–32 characters
- Lowercase letters, numbers, and hyphens only
- Must be unique across the marketplace
- Cannot be changed after creation (choose carefully)
Stripe Connect onboarding
To receive payouts for paid packages, you need to complete Stripe Connect onboarding. From the seller dashboard, click Connect Stripe. You'll be redirected to Stripe to provide your business or personal details.
Stripe handles:
- Identity verification (KYC)
- Bank account or debit card for payouts
- Tax forms (1099 in the US)
Creating a package
# 1. Create your package directory
mkdir my-skill && cd my-skill
# 2. Write your content
cat > content/SKILL.md << 'EOF'
# My Skill
...
EOF
# 3. Write the manifest
cat > mog.yaml << 'EOF'
name: acme/my-skill
version: 1.0.0
type: skill
description: "A helpful skill for..."
targets:
- cursor
- claude-code
license: MIT
EOF
# 4. Write a README (shown on listing page)
echo "# My Skill\n\nDescription..." > README.md
# 5. Zip it up
cd ..
zip -r my-skill-1.0.0.zip my-skill/
Uploading a release
From the Seller Dashboard, drag and drop your .zip file, or use the API directly:
curl -X POST https://api.mog.md/v1/vendor/releases \
-H "Authorization: Bearer <token>" \
-F "archive=@my-skill-1.0.0.zip"
The scan pipeline
| Status | Meaning |
|---|---|
pending | Upload received, scan not yet started |
scanning | Scan in progress |
passed | Scan passed — release can be published |
failed | Scan found issues — details shown in dashboard |
Publishing a release
Once the scan passes, publish via the dashboard or via API:
curl -X PATCH https://api.mog.md/v1/vendor/releases/<release-id>/publish \
-H "Authorization: Bearer <token>"
Updating listing metadata
curl -X PATCH https://api.mog.md/v1/vendor/listings/<listing-id> \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"title": "My Updated Skill Title",
"description": "Updated description...",
"tags": ["react", "testing", "rtl"],
"priceCents": 500,
"readmeMd": "# My Skill\n\nUpdated README content..."
}'
Pricing
| priceCents | Display price |
|---|---|
0 | Free |
99 | $0.99 |
500 | $5.00 |
1000 | $10.00 |
4900 | $49.00 |
mog charges a 10% platform fee. A $5.00 package earns you $4.50 per sale.
Analytics
GET https://api.mog.md/v1/vendor/analytics
Authorization: Bearer <token>
Versioning best practices
- Patch (1.0.0 → 1.0.1): Bug fixes, typos
- Minor (1.0.0 → 1.1.0): New sections, expanded content — backwards compatible
- Major (1.0.0 → 2.0.0): Breaking changes, major rewrites
FAQs
Can I publish free packages without connecting Stripe?
Yes. Stripe Connect is only required for paid packages.
Can I change my price after publishing?
Yes. You can update priceCents at any time. The new price applies immediately to new purchases; existing entitlements are not affected.
Can I take a package down?
Yes. You can change a listing's status to unlisted to hide it from search while keeping it accessible to existing buyers.
What happens if my scan fails?
The release stays in failed status and cannot be published. Fix the issues and upload a new release.
Subscription pricing for MCP servers
For premium MCP servers, you can enable subscription billing — monthly, annual, or both. Subscribers are billed automatically, and payouts arrive in your Stripe account after each successful invoice.
Enable subscription pricing
In the Seller Dashboard, open a listing's edit form and select a Pricing model:
- One-time: Single payment, permanent access (default for all package types)
- Monthly subscription: Recurring monthly billing
- Annual subscription: Recurring annual billing (typically offered at a discount)
You can set both monthly and annual prices — buyers choose their preferred interval when subscribing.
Minimum and maximum prices
| Interval | Minimum | Maximum |
|---|---|---|
| Monthly | $0.99 | $500.00 |
| Annual | $0.99 | $5,000.00 |
Platform fees
| Transaction type | mog fee |
|---|---|
| One-time purchase | 10% |
| Monthly subscription | 15% |
| Annual subscription | 15% |
Fees are automatically deducted from each payment via Stripe Connect destination charges. You receive 85% of every subscription invoice, paid out automatically to your connected Stripe account.
How payouts work
mog uses Stripe Connect destination charges. When a subscriber pays, Stripe splits the funds automatically:
- The full charge appears on the subscriber's card statement as
mog.md - After each successful invoice, Stripe transfers 85% to your connected Stripe account
- mog retains 15% as a platform fee
Subscription MRR dashboard
The Seller Dashboard shows your Monthly Recurring Revenue (MRR) — the sum of all active subscription amounts converted to monthly equivalents, after the 15% fee.
How can I change subscription prices?
Existing Stripe Prices are immutable — subscribers keep their current price. To offer a new price, update the listing price in the dashboard. New subscribers will see the updated price; existing subscribers are unaffected.
Can I offer both one-time and subscription pricing?
Not on the same listing. A listing has a single pricingModel. Create separate listings if you want both.
What happens if I delist a subscription listing?
Existing subscriptions continue until canceled. New subscribers cannot subscribe. You can cancel subscriptions in bulk via the Stripe dashboard.
Registering a live service
Beyond selling downloadable packages, you can register a live service endpoint on any listing. This turns your listing into a callable API that agents can discover, open sessions with, and invoke tools on — all through mog.
Quick setup
- From the dashboard: Go to Agent network → Service registration, pick a listing, and fill in the endpoint URL, protocol, transport, and pricing.
- From the API:
PATCH /v1/vendor/listings/:idwithserviceEndpoint,serviceProtocol,serviceTransport,pricingModel: "metered", andperCallCents.
What happens next
- Mog starts health-checking your endpoint automatically (every 5–15 minutes)
- Your listing appears in
GET /v1/serviceswith aserviceCardblock - Agents can open sessions (
POST /v1/network/sessions) or call tools directly (POST /v1/services/:vendor/:slug/call) - Every metered call deducts from the caller's wallet and creates a usage record
Manage your services
The Agent network section of the dashboard gives you:
- Inbox — open sessions targeting your services
- Session logs — full message history for any session
- Service health — latest probe results, uptime, and errors
- Service registration — endpoint, protocol, pricing, capabilities, and agent card
See Live services for the full reference.