wishlistme

Connect your agent

Everything you can do in the web app works from an AI assistant or a script: creators claim slots and get tracking links, developers post a job from their Steam link, send direct offers and read job reports. It is all one shared state, so a job posted over MCP shows up on the dashboard right away.

Sign in with a demo token

Searching jobs and estimates need no token. To act as an account, send Authorization: Bearer <token>, or for MCP clients that can’t set headers, use wishlistme.me/mcp?token=<token>. Real accounts will use OAuth.

  • wlm_demo_creatorMara Quill, the creator the web app signs in as
  • wlm_demo_creator_<id>Any creator, e.g. wlm_demo_creator_c-2 (ids from /api/creators)
  • wlm_demo_studioDevolver Digital, the studio the web app signs in as
  • wlm_demo_studio_<name>Any studio, e.g. wlm_demo_studio_Lone_Pixel for a solo developer

MCP server

Streamable HTTP. Add it to Claude, Cursor or any MCP client.

{
  "mcpServers": {
    "wishlistme": {
      "type": "http",
      "url": "https://wishlistme.me/mcp",
      "headers": { "Authorization": "Bearer wlm_demo_studio" }
    }
  }
}

In Claude Code: claude mcp add --transport http wishlistme https://wishlistme.me/mcp

For everyone

  • search_campaigns

    Find open Steam game jobs: developers bid a price per wishlist for a number of creators, each delivering a set number of wishlists. Filter by text, channel and minimum bid.

  • get_campaign

    Full details of one job: bid per wishlist, creators wanted, open slots, wishlists per creator, deadline, minimum audience, channels and brief.

  • estimate_earnings

    Estimate what a creator would earn from a job for a given number of link clicks and click-to-wishlist rate, capped at the slot size.

  • estimate_job

    For Game Devs: the budget and fee for a job at a bid per wishlist, a number of creators and wishlists per creator (at least 50).

  • draft_job_from_steam

    For solo developers and studios: paste a Steam store link and get a ready-to-post job (game details from Steam, bid, creators, wishlists each, budget and fee) plus a prefilled link to fund and post it after signing in.

  • get_rules

    How jobs, attribution, escrow, the payout hold and fees work, and what creators are not allowed to do.

  • whoami

    Your dashboard: for a creator, slots, offers and earnings; for a developer, jobs, games, spend and escrow. Says how to sign in if no token was sent.

For creators (creator token)

  • claim_slot

    Claim a creator slot in an open job, or accept a direct offer. Instant if a slot is open and your verified audience meets the job minimum. Returns your tracking link.

  • decline_offer

    Pass on a direct offer a developer sent you.

  • add_tracking_link

    A new tracking link for another video or post in a job you have a slot in. Put it in the description; Steam attributes wishlists to it.

  • my_slots

    Your claimed slots with progress: verified and estimated wishlists, clicks per link, days left and earnings.

  • my_earnings

    Pending, available and paid earnings, with each ledger line. Earnings release after the 30-day hold.

  • connect_channel

    Connect YouTube, Twitch, TikTok, X, a Steam curator page or a blog. Verified followers count towards job minimums.

For Game Devs (developer token)

  • post_job

    Post a job. Posting is free: you are charged when the first creator claims a slot. Pass your Steam link (solo developers: that is all you need) or a game_id, a bid per wishlist, creators and wishlists each. Add `invite` with creator ids to make it a direct offer. Creators can claim right away.

  • check_game

    Add a game from its Steam link (or by name if it has no Steam page yet). Reads the store page: wishlists open, demo out, released or free, and suggests the job to post: wishlists, players or sales.

  • my_jobs

    Your jobs with status, slots claimed, clicks, verified wishlists, spend and whether Steamworks is connected.

  • job_report

    One job slot by slot: which creators claimed, their links and clicks, and what Steam verified.

  • set_job_status

    Set a job live, paused or ended. Ending refunds the unearned budget.

  • find_creators

    The creator directory with track records (delivered wishlists, conversion, fill rate, games), to pick creators for a direct offer. Empty until creators have joined.

  • connect_steamworks

    Connect read-only Steamworks analytics for a game once, so Wishlistme can pull the UTM report daily. Without it, wishlists for that game can’t be verified.

  • sync_steam

    Pull the Steam UTM report now instead of waiting for the next daily sync, and credit newly verified wishlists.

Agent skill

Teaches an agent how to help creators and developers, and which practices to never suggest. Listed in the skills index.

npx skills add https://wishlistme.me

REST API

JSON, CORS enabled. Full spec in openapi.json. Public reads:

Any account

  • GET /api/meYour dashboard (creator or developer, from the token)
  • GET /api/creatorsCreator directory with track records. Query: query, channel, min_followers
  • GET /api/creators/{id}One creator’s channels and track record
  • POST /api/demo/resetPut the demo back to its starting data (for everyone)

Creators

  • GET /api/me/slotsYour claimed slots with links, clicks and verified wishlists
  • GET /api/me/offersDirect offers waiting for your answer
  • GET /api/me/earningsPending, available and paid earnings with ledger lines
  • GET /api/me/channelsYour connected channels
  • POST /api/me/channelsConnect a channel. Body: { kind }
  • DELETE /api/me/channels/{kind}Disconnect a channel
  • POST /api/campaigns/{id}/claimClaim a slot or accept a direct offer. Body: { pitch? }
  • POST /api/campaigns/{id}/declineDecline a direct offer
  • POST /api/campaigns/{id}/linksNew tracking link for a video. Body: { label, channel? }

Developers

  • GET /api/studio/jobsYour jobs with claims, clicks, verified wishlists and spend
  • POST /api/studio/jobsPost and fund a job. Body: { steam_url | game_id, rate_usd, creators, wishlists_per_creator, min_followers?, channels?, brief?, invite? }. With invite it is a direct offer.
  • GET /api/studio/jobs/{id}Job report, slot by slot
  • PATCH /api/studio/jobs/{id}Pause, resume or end. Body: { status: live | paused | ended }
  • GET /api/studio/gamesYour games and their Steamworks connection
  • POST /api/studio/gamesAdd a game from its Steam link. Body: { steam_url }
  • PUT /api/studio/games/{id}/steamworksConnect Steamworks (read-only analytics). Body: { connected }
  • POST /api/studio/syncPull the Steam UTM report for your games now
# A solo developer posts a job from their Steam link
curl -X POST https://wishlistme.me/api/studio/jobs \
  -H "Authorization: Bearer wlm_demo_studio_Lone_Pixel" \
  -H "Content-Type: application/json" \
  -d '{"steam_url":"https://store.steampowered.com/app/5188190/","rate_usd":0.25,"creators":3,"wishlists_per_creator":50}'

# A creator claims a slot in it
curl -X POST https://wishlistme.me/api/campaigns/<job id>/claim \
  -H "Authorization: Bearer wlm_demo_creator"

Discovery

Every public page is available as Markdown: add .md to the path, or send Accept: text/markdown.