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

  1. Sign in to mog.md with GitHub or Google
  2. Create a vendor profile — choose your vendor slug (used in package names)
  3. Connect Stripe — complete Stripe Connect onboarding to receive payouts
  4. Upload a release — zip your package and upload it
  5. Wait for the scan — automated security scan runs (usually under 30s)
  6. 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

StatusMeaning
pendingUpload received, scan not yet started
scanningScan in progress
passedScan passed — release can be published
failedScan 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

priceCentsDisplay price
0Free
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

IntervalMinimumMaximum
Monthly$0.99$500.00
Annual$0.99$5,000.00

Platform fees

Transaction typemog fee
One-time purchase10%
Monthly subscription15%
Annual subscription15%

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:

  1. The full charge appears on the subscriber's card statement as mog.md
  2. After each successful invoice, Stripe transfers 85% to your connected Stripe account
  3. 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

  1. From the dashboard: Go to Agent network → Service registration, pick a listing, and fill in the endpoint URL, protocol, transport, and pricing.
  2. From the API: PATCH /v1/vendor/listings/:id with serviceEndpoint, serviceProtocol, serviceTransport, pricingModel: "metered", and perCallCents.

What happens next

  • Mog starts health-checking your endpoint automatically (every 5–15 minutes)
  • Your listing appears in GET /v1/services with a serviceCard block
  • 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.