-
v3.5.0
Stablereleased this
2026-09-30 00:52:14 -05:00 | 25 commits to main since this releaseAdded
- A fantasy matchup shows as a table. With mcp-gateway 0.66.0, each box
score comes with its starters already laid out in fixed-width columns:
your team on the left, projected and actual points, the position in the
middle, and the other team on the right. The prompt tells Claude to show
that table in a code block exactly as given, with its notes underneath,
instead of listing every starter. Discord still gets lists for anything
else, since it draws no tables of its own.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- A fantasy matchup shows as a table. With mcp-gateway 0.66.0, each box
-
v3.4.3
Stablereleased this
2026-09-29 21:42:35 -05:00 | 26 commits to main since this releaseFixed
- A private answer shows the question it answers. The
<@id> asked:
header was added only when an answer was made public, so the private copy
was an answer with nothing above it. Discord's own "used /aufhocker
query-chat" line names the command, not what was typed. The private copy
now carries the same header and is split exactly as the public post will
be, so what you see is what Make Public posts. Both commands get it.
Changed
- Chat answers aim to fit in one Discord message. A message holds 2,000
characters, and nothing told Claude so. A longer answer arrived as several
messages, with Make Public partway down. Thequery-chatsystem prompt
now asks for about 1,800 characters (roughly 300 words) unless the
question needs more.espnffalready asks for short answers and is
unchanged. The new prompt costs each open conversation one uncached
request.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- A private answer shows the question it answers. The
-
v3.4.2
Stablereleased this
2026-09-29 20:32:25 -05:00 | 27 commits to main since this releaseChanged
- The fantasy prompt knows about the rehearsals in mcp-gateway 0.65.0.
That server adds a free-agent pickup, a claim with a FAAB bid and
cancelling a claim. None was ever tested against ESPN, so they only
rehearse. The prompt used to say those could not be done from here, which
kept Claude from trying them. It now says their tools only rehearse, and
that Claude must tell the owner the change was not made. They need
Confirm like every change outsideESPNFF_UNCONFIRMED_TOOLS, so no
setting changes. - A change waiting for Confirm that will not be sent says why. The note
Claude gets used to blame dry-run mode alone. It now names the other
reason too: a change that isn't live yet.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The fantasy prompt knows about the rehearsals in mcp-gateway 0.65.0.
-
v3.4.1
Stablereleased this
2026-09-29 20:03:22 -05:00 | 28 commits to main since this releaseChanged
- Terror Zone messages stay up until 15 minutes after their zone ends.
The alert posted as a zone starts used to be deleted the moment the zone
rotated out, and a 5 to 20 minute warning was deleted as its zone
started, just when it was most useful. Both now stay through the zone
and go 15 minutes after it ends. Messages already up when this version
starts keep the delete time they were given.
Fixed
- Terror Zones rotate every 30 minutes, not every hour. The bot's own
rotation length said an hour. It was only used when the API gave no next
rotation time, and then an alert could stay up 30 minutes too long. The
warnings' new delete time is worked out from it, so it's corrected now.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Terror Zone messages stay up until 15 minutes after their zone ends.
-
v3.4.0
Stablereleased this
2026-09-29 19:30:24 -05:00 | 29 commits to main since this releaseThe fantasy team's manager can change it from Discord. With mcp-gateway
0.64.0 andESPN_WRITESon,/aufhocker espnff mcpcan set the lineup, put
in waiver claims and reorder them, for the people inESPNFF_OWNER_IDSand
nobody else. Deploy mcp-gateway 0.64.0 or later first: this version
gives non-owners only tools the fantasy server labels read-only, and an
older server labels none.Added
ESPNFF_OWNER_IDS(.env): the Discord ids offered the fantasy
server's owner-only tools, which change the team and read its private
pending claims. Empty means nobody. Everyone else keeps the read-only
tools and is never shown the others.- Confirm buttons. A change not listed in
ESPNFF_UNCONFIRMED_TOOLS
does not run when Claude asks for it. The bot previews it with the server
and posts a private message under the answer, with one Confirm button
per change and the change described in ESPN's names for the players.
Nothing is sent until the asker presses it. A button works once, only for
the asker while they are still an owner, and only for 15 minutes. Its
result replaces it: done and read back, accepted but not showing yet, dry
run, or refused. ESPNFF_UNCONFIRMED_TOOLS(.env.config): owner changes that run
straight away. It ships asupdate_lineup, because a lineup move is
undone by making it again and a waiver drop is not. Empty, the default in
code, confirms everything./aufhocker espnff helptells an owner which changes happen straight
away and which wait for Confirm, and tells nobody else anything about
changes.- The fantasy system prompt, for an owner, names which change tools run at
once and which wait, and says adry_runresult means nothing reached
ESPN. Everyone else's prompt is unchanged, byte for byte.
Changed
- Borrowed tools carry what their server says about them.
McpToolSourcereads each tool'sreadOnlyHintand_meta.owner_only. A
tool that says nothing counts as owner-only, so an unlabelled change tool
is hidden rather than shared. Theclaude/mcpconnect line names the
owner-only tools. - Claude can only run a tool the request offered. The tool executor
holds every tool the bot knows, change tools included, and it used to run
whatever name it was given. A call for an unoffered tool is now refused. - When a non-owner is offered no fantasy tools because all of them are
owner-only, the answer says the server offers nothing they can use. It no
longer says the server is not connected. - A plugin can own more than one button prefix. The query plugin owns
make_public_andespnff_confirm_.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v3.3.0
Stablereleased this
2026-09-29 13:58:18 -05:00 | 30 commits to main since this releaseChanged
- Answers show their formatting. Headers, bold, italics, quotes and
small grey text in an answer now render in Discord. The bot used to
escape every formatting character before sending, so they showed up as
a literal#or**, and a mention showed up as raw<@id>text. This
coversquery-chatanswers as well as fantasy ones. Pings are still
blocked for all bot output, as before. - A published answer says who asked. The line above it reads
@name asked: instead of Query:. The name is a mention, so it
shows the asker's name in that server, and it doesn't notify them. - The fantasy prompt tells Claude what Discord can show, including
that Discord has no tables, so it uses a list instead.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Answers show their formatting. Headers, bold, italics, quotes and
-
v3.2.2
Stablereleased this
2026-09-28 20:52:10 -05:00 | 31 commits to main since this releaseChanged
- The DClone status message has more room. A blank line separates the
four modes, and each region's flag, bar and level are spaced further
apart, like🇺🇸 ▰▰▱▱▱▱ 2/6.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The DClone status message has more room. A blank line separates the
-
v3.2.1
Stablereleased this
2026-09-28 20:43:11 -05:00 | 32 commits to main since this releaseChanged
- The Docker build keeps npm's downloads between builds. Both
npm ci
runs in the Dockerfile share a BuildKit cache on the build host, so a build
only downloads the packages that host hasn't fetched before. - A stuck npm download is retried after a minute. npm's default is to
wait 5 minutes per attempt, so one download that stalls without erroring
could run past CI's 15-minute job limit without printing anything. Both
installs now drop it after 60 seconds and try again.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The Docker build keeps npm's downloads between builds. Both
-
v3.2.0
Stablereleased this
2026-09-28 20:22:28 -05:00 | 33 commits to main since this releaseChanged
- The bot runs on Claude Sonnet 5.5.
CLAUDE_MODEL(the chat command)
andLOL_PREDICTION_MODEL(live-game predictions and lane detection) move
fromclaude-sonnet-5toclaude-sonnet-5-5in.env.config, and the
code's fallback forCLAUDE_MODELfollows. The price per token is the
same as Sonnet 5. - Lane detection works on Sonnet 5.5. It turns thinking off so a
thinking block can't use up its 150-token answer, and Sonnet 5.5 refuses
the old way of doing that (disabled) with a 400. On Sonnet 5.5 it now
sendsbetween_tools, the new lowest setting. Other models still get
disabled.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The bot runs on Claude Sonnet 5.5.
-
v3.1.1
Stablereleased this
2026-09-28 18:44:47 -05:00 | 34 commits to main since this releaseChanged
- The DClone status message puts each region on its own line. Three to
a line didn't fit on a phone, so the last flag ended one line and its bar
started the next. Now each mode is in bold over three short lines, like
🇺🇸 ▰▰▱▱▱▱ 2/6. It's longer, but nothing wraps.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The DClone status message puts each region on its own line. Three to