Sleeper API and MCP server Let your AI agent manage your Sleeper teams.

Set lineups, claim waivers, answer trades and read your leagues. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Sleeper
Sleeper logo Sleeper Cloud Browser

13 tools Read and write

Lineups to league chat

What can you automate in Sleeper? Use an AI agent, a workflow or a script.

  • Bench starters who are ruled out

  • Place FAAB waiver bids

  • Answer trade offers

  • Post the weekly league recap

  • Read matchups and scores

  • Clean up pending claims in every league

Official, read-only

Does Sleeper have an MCP server or an API? An API that only reads, and no MCP server.

Sleeper has a public API and no official MCP server (checked 28 Oct 2026). The API needs no token because it cannot change anything: no lineup, waiver claim, trade or chat message. Cotlet runs 13 Sleeper tools hosted, 6 of them writes, over MCP for agents and REST for scripts.

  • The API is free for non-commercial use; commercial use needs a license by email. Above about 1,000 calls a minute Sleeper may block your IP.
  • Your pending waiver claims and open trade offers are private, so the API cannot list them either.
  • Sleeper has no Zapier app, no n8n node and no webhooks. Approved partners such as FantasyPros sync leagues to read them.
The Sleeper API, a GitHub MCP server with your login and Cotlet compared, checked 28 Oct 2026
What you need Sleeper APIGitHub MCP + your loginCotlet
Read leagues, matchups and transactions Yes, no token Yes Yes
See your pending claims and trade offers No One server, private API Yes
Set lineups, bid, trade, post in chat No, read-only One server, off by default Yes, asks before bids and trades
Runs with your computer off Yes Only if you host it Yes, hosted
Allowed by Sleeper's terms Yes, non-commercial No, sections 11.1 and 11.3 No, sections 11.1 and 11.3

Checked 28 Oct 2026. Sources: Sleeper API documentation · Sleeper Support: How to Trade · Sleeper Support: How does FAAB bidding work? · Sleeper Terms of Service · joscaz/sleeper-mcp on GitHub

Set up once

How does Cotlet connect to Sleeper? One account, two ways to connect.

  1. 1Sign in to Sleeper

    Use your own account in its Cotlet Cloud Browser.

  2. 2Choose MCP or REST

    Connect your agent or create a Cotlet API key.

  3. 3Run your workflow

    Ask your agent or send an HTTP request.

We never keep your Sleeper password, and no bid, trade or chat message goes out until you approve it. Who can see your session

Any MCP client

Connect Sleeper to your agent or workflow

Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.

  1. 1

    Log in to Sleeper in a Cloud Browser. Create a Cotlet account, open Sleeper in its Cloud Browser, log in with the account that manages your teams and press Enable for agents.

  2. 2

    Add the Cotlet address. Put https://cotlet.dev/mcp/v1 into the MCP server or connector settings of your agent.

  3. 3

    Let the agent in. Chat apps send you to a Cotlet sign-in page. Code editors, n8n and scripts take an API key from the console.

The same address, https://cotlet.dev/mcp/v1, carries Sleeper together with your other apps. Enabled Sleeper after you connected? Refresh the connector so the 13 tools appear.

Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-sleeper \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-sleeper": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-sleeper]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: sleeper_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: sleeper_write
Scripts and HTTP

How to use the Sleeper REST API

Create your Cotlet API key

Create a Cotlet API key with access to Sleeper and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.

Connect Sleeper in Cotlet and enable it for agents. Account access: A Sleeper account that manages a team in the league.

Make your first Sleeper API request

REST
curl https://cotlet.dev/api/v1/sleeper/leagues \
  -H "Authorization: Bearer $COTLET_API_KEY"

Read leagues and apply the operation limits

A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt
{
  "status": "success",
  "app": "sleeper",
  "tool": "list_leagues",
  "result": {
    "leagues": [
      {
        "league_id": "L-5521",
        "name": "Sunday Scaries",
        "team": "Gridiron Ghosts",
        "status": "In season"
      },
      {
        "league_id": "L-7710",
        "name": "Office Dynasty",
        "team": "Waiver Wire Wizards",
        "status": "In season"
      }
    ]
  }
}

Returns each league with its name, the team you manage and its status. The agent calls this first to get the league_id the other tools take.

Leagues you archived are not listed.

Keep the same selection when continuing a list. Compare changed record values as well as identifiers when refreshing your destination.

Sleeper workflows for agents and automations

Sleeper workflows you configure
ToolConnect throughExample workflow
n8nHTTP RequestRead your starters and bench in a league. Use get_lineup in your configured content report.
MakeHTTP > Make a requestRead the matchups and scores of one league week. Use list_matchups in your configured content report.
Python or Node.jsREST APIRead the processed adds, drops and trades of a league. Use list_transactions in your configured content report.

Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads Sleeper; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.

Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.

The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.

7 read, 6 write

Sleeper API endpoints and MCP tools

Leagues, lineups and matchups4

Start with list_leagues for the league ids. set_lineup refuses a player whose game has kicked off, because Sleeper locks him.

  • list_leagues List the leagues the signed-in account plays in. read

    Returns each league with its name, the team you manage and its status. The agent calls this first to get the league_id the other tools take. Leagues you archived are not listed.

    MCP callsleeper_read → list_leagues

    REST endpointGET https://cotlet.dev/api/v1/sleeper/leagues

    Parameters

    Parameters: list_leagues
    NameTypeDescription
    season string string Season year, for example 2026. Defaults to the current season.

    Example response

    {
      "leagues": [
        {
          "league_id": "L-5521",
          "name": "Sunday Scaries",
          "team": "Gridiron Ghosts",
          "status": "In season"
        },
        {
          "league_id": "L-7710",
          "name": "Office Dynasty",
          "team": "Waiver Wire Wizards",
          "status": "In season"
        }
      ]
    }
  • get_lineup Read your starters and bench in a league. read

    Returns your starting slots in the order the Team tab shows them, then your bench and any injured reserve. Each player has a position and the injury status shown in the app. It reads the roster as it is now and does not look ahead to future weeks.

    MCP callsleeper_read → get_lineup

    REST endpointGET https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/lineup

    Parameters

    Parameters: get_lineup
    NameTypeDescription
    league_id string required string League to read, from list_leagues.

    Example input

    {
      "league_id": "league_8c41d2"
    }

    Example response

    {
      "league_id": "L-5521",
      "starters": [
        {
          "slot": "QB",
          "player": "Dean Mercer",
          "status": "Active"
        },
        {
          "slot": "RB",
          "player": "Jamal Okoye",
          "status": "Out"
        },
        {
          "slot": "WR",
          "player": "Eli Brandt",
          "status": "Active"
        }
      ],
      "bench": [
        {
          "player": "Tyrese Boone",
          "position": "RB",
          "status": "Active"
        }
      ]
    }
  • list_matchups Read the matchups and scores of one league week. read

    Returns each pairing with both team names, their records and their points so far. Scores of a live week change until the games end. Weeks that have not started show no points.

    MCP callsleeper_read → list_matchups

    REST endpointGET https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/matchups

    Parameters

    Parameters: list_matchups
    NameTypeDescription
    league_id string required string League to read, from list_leagues.
    week integer integer Week to read. Defaults to the current week.

    Example input

    {
      "league_id": "league_8c41d2"
    }

    Example response

    {
      "league_id": "L-5521",
      "week": 8,
      "matchups": [
        {
          "teams": [
            "Gridiron Ghosts",
            "Blitz Brothers"
          ],
          "record": [
            "5-2",
            "4-3"
          ],
          "points": [
            131.4,
            118.9
          ]
        },
        {
          "teams": [
            "Waiver Wire Wizards",
            "Fourth and Long"
          ],
          "record": [
            "3-4",
            "2-5"
          ],
          "points": [
            102.2,
            97.6
          ]
        }
      ]
    }
  • set_lineup Move players between starting slots and the bench. write

    Puts the player in the slot and moves the old starter to the bench. It refuses a player whose game has already started, because Sleeper locks those players. It reaches no one and one more call undoes it, so it does not wait for your approval.

    MCP callsleeper_write → set_lineup

    REST endpointPUT https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/lineup

    Parameters

    Parameters: set_lineup
    NameTypeDescription
    league_id string required string League to change, from list_leagues.
    slot string required string Starting slot to fill, as get_lineup names it.
    player_id string required string Player to start in that slot, from get_lineup or list_free_agents.

    Example input

    {
      "league_id": "league_8c41d2",
      "slot": "slot",
      "player_id": "player_8c41d2"
    }

    Example response

    {
      "league_id": "L-5521",
      "slot": "RB",
      "started": "Tyrese Boone",
      "benched": "Jamal Okoye",
      "status": "saved"
    }

Waivers and free agents5

Bids are blind until waivers process, at the time your commissioner set. A claim can be cancelled until then.

  • list_free_agents List players that no team in the league has rostered. read

    Returns available players the way the Players tab lists them, with the injury status and whether the player is on waivers. Players on waivers can only be claimed, not added at once. The list is capped at the first page the app shows.

    MCP callsleeper_read → list_free_agents

    REST endpointGET https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/free-agents

    Parameters

    Parameters: list_free_agents
    NameTypeDescription
    league_id string required string League to read, from list_leagues.
    position string string Filter by the position names of the Players tab.
    query string string Part of a player name.

    Example input

    {
      "league_id": "league_8c41d2"
    }

    Example response

    {
      "league_id": "L-5521",
      "players": [
        {
          "player_id": "P-3301",
          "name": "Tyrese Boone",
          "position": "RB",
          "status": "Active",
          "on_waivers": true
        },
        {
          "player_id": "P-2189",
          "name": "Colt Reyes",
          "position": "RB",
          "status": "Questionable",
          "on_waivers": false
        }
      ]
    }
  • list_transactions Read the processed adds, drops and trades of a league. read

    Returns the moves of the league newest first: who added or dropped whom, trades and the FAAB bid that won a claim. The app shows full bid details for a processed waiver; the tool returns the winning move.

    MCP callsleeper_read → list_transactions

    REST endpointGET https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/transactions

    Parameters

    Parameters: list_transactions
    NameTypeDescription
    league_id string required string League to read, from list_leagues.
    week integer integer Week to read. Defaults to the current week.

    Example input

    {
      "league_id": "league_8c41d2"
    }

    Example response

    {
      "league_id": "L-5521",
      "transactions": [
        {
          "type": "waiver",
          "team": "Blitz Brothers",
          "added": "Colt Reyes",
          "dropped": "Mo Vance",
          "bid": 9
        },
        {
          "type": "trade",
          "teams": [
            "Fourth and Long",
            "Gridiron Ghosts"
          ],
          "summary": "Two players for one and a 2027 round 3 pick"
        }
      ]
    }
  • list_waiver_claims List your pending waiver claims in a league. read

    Returns the claims shown under Team, then Transactions: the player, who you drop and the bid in leagues with FAAB. Claims with the same bid keep the order you set. A processed claim moves out of this list into the league transactions.

    MCP callsleeper_read → list_waiver_claims

    REST endpointGET https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/waiver-claims

    Parameters

    Parameters: list_waiver_claims
    NameTypeDescription
    league_id string required string League to read, from list_leagues.

    Example input

    {
      "league_id": "league_8c41d2"
    }

    Example response

    {
      "league_id": "L-5521",
      "claims": [
        {
          "claim_id": "C-9041",
          "add": "Tyrese Boone",
          "drop": "Mo Vance",
          "bid": 12
        }
      ]
    }
  • submit_waiver_claim Claim a player on waivers, with a drop and a bid. writeasks first

    Creates the claim the way the waiver icon in the Players tab does. Bids are blind: other managers cannot see yours. The claim stays pending until the league processes waivers, and you can cancel it before then. By default you confirm each call; you can switch that off for this tool.

    MCP callsleeper_write → submit_waiver_claim

    REST endpointPOST https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/waiver-claim/submit

    Parameters

    Parameters: submit_waiver_claim
    NameTypeDescription
    league_id string required string League to change, from list_leagues.
    add_player_id string required string Player to claim, from list_free_agents.
    drop_player_id string string Player to drop if your roster is full.
    bid integer integer FAAB bid in dollars. Leave out in leagues that do not use FAAB.

    Example input

    {
      "league_id": "L-5521",
      "add_player_id": "P-3301",
      "drop_player_id": "P-1180",
      "bid": 12
    }

    Example response

    {
      "league_id": "L-5521",
      "claim_id": "C-9041",
      "add": "Tyrese Boone",
      "drop": "Mo Vance",
      "bid": 12,
      "status": "pending"
    }
  • cancel_waiver_claim Cancel one of your pending waiver claims. write

    Removes the claim from Team, then Transactions, and returns the bid to your budget in FAAB leagues. It reaches no one and you can place the claim again, so it does not wait for your approval. A claim that already processed cannot be cancelled.

    MCP callsleeper_write → cancel_waiver_claim

    REST endpointPOST https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/waiver-claim/cancel

    Parameters

    Parameters: cancel_waiver_claim
    NameTypeDescription
    league_id string required string League of the claim.
    claim_id string required string Claim to cancel, from list_waiver_claims.

    Example input

    {
      "league_id": "league_8c41d2",
      "claim_id": "claim_8c41d2"
    }

    Example response

    {
      "league_id": "L-5521",
      "claim_id": "C-9041",
      "status": "cancelled"
    }

Trades and league chat4

Trades can carry players, draft picks and FAAB dollars. Every manager in the league reads the chat.

  • list_trade_offers List trade offers sent to you or by you. read

    Returns each open offer with the teams, what each side gives and who still has to accept. Sleeper shows offers on the Trade screen of the Team tab. Offers that were accepted, declined or expired are not listed.

    MCP callsleeper_read → list_trade_offers

    REST endpointGET https://cotlet.dev/api/v1/sleeper/trade-offers

    Parameters

    Parameters: list_trade_offers
    NameTypeDescription
    league_id string string Only this league. Defaults to every league.

    Example response

    {
      "offers": [
        {
          "trade_id": "T-3120",
          "league_id": "L-5521",
          "from": "Fourth and Long",
          "gives": [
            "Eli Brandt"
          ],
          "gets": [
            "2027 round 2 pick"
          ],
          "waiting_on": [
            "Gridiron Ghosts"
          ]
        }
      ]
    }
  • propose_trade Send a trade offer to one or more teams in a league. writeasks first

    Opens the offer from the Trade screen. Sleeper lets a trade include players, current and future draft picks and FAAB dollars. If every side accepts, the trade goes to the league review period before it is processed. By default you confirm each call; you can switch that off for this tool.

    MCP callsleeper_write → propose_trade

    REST endpointPOST https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/trade/propose

    Parameters

    Parameters: propose_trade
    NameTypeDescription
    league_id string required string League of the trade.
    partner_team string required string Team to trade with, as list_leagues or list_matchups name it.
    give array required array Player ids, draft picks or FAAB dollars you give.
    get array required array Player ids, draft picks or FAAB dollars you ask for.

    Example input

    {
      "league_id": "league_8c41d2",
      "partner_team": "partner team",
      "give": "give",
      "get": "get"
    }

    Example response

    {
      "league_id": "L-5521",
      "trade_id": "T-3144",
      "to": "Blitz Brothers",
      "gives": [
        "Jamal Okoye"
      ],
      "gets": [
        "Colt Reyes"
      ],
      "status": "sent"
    }
  • respond_to_trade Accept or decline a trade offer made to you. writeasks first

    Answers the offer the way the Trade screen does. Accepting hands over players and picks once the review period of the league ends. Declining tells the other manager. By default you confirm each call; you can switch that off for this tool.

    MCP callsleeper_write → respond_to_trade

    REST endpointPOST https://cotlet.dev/api/v1/sleeper/trades/{trade_id}/replies

    Parameters

    Parameters: respond_to_trade
    NameTypeDescription
    trade_id string required string Offer to answer, from list_trade_offers.
    decision string required string accept or decline.

    Example input

    {
      "trade_id": "trade_8c41d2",
      "decision": "decision"
    }

    Example response

    {
      "trade_id": "T-3120",
      "decision": "decline",
      "status": "declined"
    }
  • send_league_message Post a message in a league chat. writeasks first

    Posts as you in the league chat, where every manager reads it. Messages cannot be edited by the tool. By default you confirm each call; you can switch that off for this tool.

    MCP callsleeper_write → send_league_message

    REST endpointPOST https://cotlet.dev/api/v1/sleeper/leagues/{league_id}/message

    Parameters

    Parameters: send_league_message
    NameTypeDescription
    league_id string required string League whose chat to post in.
    text string required string Message text.

    Example input

    {
      "league_id": "league_8c41d2",
      "text": "text"
    }

    Example response

    {
      "league_id": "L-5521",
      "message_id": "M-8801",
      "status": "posted"
    }
Encrypted, revocable

Who can see my Sleeper session, and how do I revoke it?

  • What we store

    Your logged-in Sleeper profile, encrypted with AES-256-GCM, in Finland. Not the password.

  • What your agent gets

    The 13 Sleeper tools. Never the session token.

  • What the session sees

    Your leagues, rosters, pending claims, trade offers and league chats.

  • What no tool touches

    Sleeper Picks, the wallet, deposits, league dues, password and settings.

  • If Sleeper asks to verify

    You type the code from Sleeper yourself. We never do.

  • How to cut access

    Disable Sleeper for agents, reset the browser, or log out in Sleeper.

Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.

High account risk

Is it against Sleeper's terms? Account safety Yes. Since October 2026 the terms name tools like this one.

"A user's provision of credentials, tokens, or authorization to a third-party does not constitute authorization from Sleeper, and Sleeper's authorization must be obtained independently and directly from Sleeper."
Sleeper General Terms of Use, section 11.3, last updated 6 Oct 2026

Section 11.1 bans letting "any application, platform, service, or tool not developed or expressly authorized by Sleeper" log into your account on your behalf without written consent, and bans access "through any automated means, bot, script". Section 11.2 lets Sleeper suspend the account, revoke its sessions and block the tool. Cotlet has no agreement with Sleeper, so using it breaks these sections, and the risk sits with your account. We found no public case of a Sleeper account closed for automation or a third-party tool (checked 28 Oct 2026).

What we do to keep the risk down

  • Your own Sleeper account, logged in by you
  • One Cloud Browser with steady cookies, no new login per call
  • Waiver bids, trades and chat posts wait for your OK (4 tools)
  • No tool enters Picks contests, moves money or touches the wallet
  • If Sleeper objects, we pause the Sleeper tools for everyone within 24 h

The terms also ban use "for the benefit of any third-party or to send unsolicited communications". Run the agent only for teams you manage, and post only in leagues you play in.

Tested every 12 h

What happens when Sleeper changes? We repair the tool; your prompts stay the same.

between tests of the Sleeper reads and lineup moves
12 h
between tests of bids, trades and chat posts others see
24 h
for a call to a Sleeper tool paused for repair
$0

Sleeper ships app updates through the season. When a screen or field moves, we fix the tool on our side and the same prompt keeps working. status.cotlet.dev watches the site, console and API every 3 minutes.

4 tools ask first

Approvals, undo and mistakes Your league mates see nothing until you say so.

  1. 01 Reads the free agents Players on waivers are marked, locked players left out.
  2. 02 Checks your claims An open claim on the same player stops the run.
  3. 03 Waits for your OK The bid and the drop show up in your Cotlet console.
  4. 04 Reports the claim Claim id, bid and drop, pending until waivers run.
Which Sleeper actions can be undone
ActionUndo
Set lineupOne more call, until the player's game kicks off
Submit waiver claimCancel or edit it under Team, Transactions before waivers run
Cancel waiver claimPlace the claim again before waivers run
Propose or accept a tradeOnce all sides accept, only the commissioner can veto or reverse it
Send league messageNo, the tool cannot edit or remove it

4 of 13 tools ask first: submit_waiver_claim, propose_trade, respond_to_trade and send_league_message. Lineup moves and claim cancels reach no other manager, so they run at once. For a Sunday morning run you can switch the wait off per tool.

An accepted trade sits in the league review period, then Sleeper processes it at midnight PST. With the wait set to none it goes through at once.

MCP call
{
  "name": "submit_waiver_claim",
  "arguments": {
    "league_id": "L-5521",
    "add_player_id": "P-3301",
    "drop_player_id": "P-1180",
    "bid": 12
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/sleeper/leagues/L-5521/waiver-claim/submit \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"add_player_id":"P-3301","drop_player_id":"P-1180","bid":12}'
Response
{
  "league_id": "L-5521",
  "claim_id": "C-9041",
  "add": "Tyrese Boone",
  "drop": "Mo Vance",
  "bid": 12,
  "status": "pending"
}

Scripts and cron jobs call the same tools over REST at /api/v1/sleeper, with one key and one price. A claim on a player who is no longer available fails, and a failed call costs nothing. The tools table lists the REST path of each tool.

Pay per call

How much does the Sleeper MCP server cost?

About $15 a monthin season, for a manager in 3 leagues, 2,580 credits. Sleeper leagues stay free to play.

A month of Sleeper jobs for one manager, in credits
JobCallsCredits
Lineup check in 3 leagues, weekly7 × 4280
Sunday injury swap before kickoff5 × 4200
FAAB bids after the games, weekly8 × 4320
Answer a trade offer, twice a week2 × 8160
Tuesday recap in league chat3 × 4120
Cloud Browser, 30 days1,500
Total2,580
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Failed calls cost nothing

The month is our example: 3 leagues, 108 calls, during the NFL season. Sleeper publishes no figure for leagues per manager. Five leagues roughly double the lineup and waiver rows. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

Sleeper MCP server on GitHub, Zapier or hosted: which to use Many read; one GitHub server also writes, on your own machine.

Other Sleeper MCP servers and tools, checked 28 Oct 2026
OptionWhat it doesWhere it stops
joscaz/sleeper-mcp28 read tools on the public API plus 11 account tools on Sleeper's private GraphQL: lineups, IR, waivers, trades, league chat. 3 stars, MIT, last commit 17 Oct 2026.You host it with your Sleeper token or password in its config. Writes are off until you remove --read-only. Same terms problem as ours.
FloSchl8/sleeper-mcp, sourknives/sleeper-mcp-serverRead the public API: leagues, players, matchups, drafts. 29 and 25 stars.No writes and no pending claims. Last commits 5 Oct 2025 and 11 Aug 2026.
FantasyBotChatGPT app and Claude connector with 15 read-only tools for ESPN, Yahoo and Sleeper. Needs only your Sleeper username."Can never make a trade, drop a player, or change your lineup."
FantasyPros league syncRankings and advice for your synced league, as an approved Sleeper partner.Advice only; you make the moves in Sleeper.

For questions about your league, a free read-only server or FantasyBot is enough and stays inside Sleeper's API rules. Moves need a logged-in session: joscaz/sleeper-mcp gives you that on your own computer, Cotlet gives it hosted, with approvals before bids and trades.

EU company, since 2019

Who runs Cotlet A company you can look up.

Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Sleeper tools go to contact@cotlet.dev.

Sleeper API and MCP: questions

How do I get access?

Create a free account at https://cotlet.dev, open Sleeper under Integrations in the console and log in to Sleeper in its Cloud Browser. The trial starts with your first app, no card asked.

How do I connect Sleeper to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Sleeper once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Sleeper account through Cotlet, in their phone apps too.

What can ChatGPT do in Sleeper?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Sleeper: set the weekly lineup; bid on waiver wire targets; answer trade offers. You ask in plain words, and anything that reaches other people waits for your OK first.

Do Sleeper's terms allow automated access to my account?

Sleeper's Terms of Service say users may not access or extract data through automated means, bots or scripts, and that no third party may access the Services through a user's account without a written agreement. An agent acting in your session can fall under that, so use it on your own account at your own risk. For read-only data, the public API is the route Sleeper documents (checked 28 Oct 2026).

Does it work with Sleeper Picks or the Sleeper wallet?

No. The tools cover season-long fantasy leagues only. Sleeper Picks is a separate real-money game in the Sleeper Support Center, and the tools do not enter contests, move money or touch the wallet.

Can the agent see other managers' waiver bids?

Not before waivers run: Sleeper bids are blind. After they process, Sleeper shows every bid for a player to the whole league, and list_transactions returns the winning move.

Can I use the free Sleeper API instead?

For reading, yes: leagues, rosters, matchups and transactions need no token. It cannot set a lineup, bid, trade or post, and it does not show your pending claims or offers. Commercial use needs a license from Sleeper.

Does Sleeper have webhooks?

No. Nothing tells an agent that a trade offer arrived. Run it on a schedule instead, for example list_trade_offers every evening.

Is the MCP server different from the REST API?

Only the door differs. Both carry the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with Sleeper?

No. Cotlet is independent and not affiliated with Sleeper or Blitz Studios, Inc.

Can I use the Sleeper API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.

Give your agent access to Sleeper.

Free 7-day trial with 2,000 credits, no card needed.