tootsies

a discord bot for the tootsies server. ask, recap, discuss, ship features by typing.


Project maintained by mejasonmejason Hosted on GitHub Pages — Theme by mattgraham

Upstream integration field coverage

What every external API hands us vs. what we surface to the model. This is the “are we dropping anything” ledger: each integration lists the fields we extract and the fields we deliberately omit (with the reason). The rule is either 100% of the answer-valuable fields, or an explicit entry here saying what’s missing and why — so an omission is a documented decision, never a silent gap.

Scope note: “surface to the model” means the field reaches Claude’s context (a rendered block or a tool result), not telemetry. The constitution’s data-minimization rule governs telemetry + her outbound replies, NOT the in-context input we feed the model, so enriching context is in-spec. A handful of fields are withheld from output by the HARD RULES (no personal-info disclosure) even when fetched — those are noted.

Every surfaced field is also self-describing in its rendered block or tool description (a header legend or inline label), so the model knows what each value means and what to do with it — not just that it exists.


Music / reference

Genius (utils/genius.py)

Apple Music / iTunes (utils/apple_music.py)

Deezer (utils/deezer.py)

MusicBrainz (utils/musicbrainz.py)

Wikidata (utils/wikidata.py)

Wikipedia chart parser (utils/chart_data.py)

Wikipedia reader (utils/reference.py)


Sports

SGO — SportsGameOdds (utils/markets.py, utils/sportsdata/board.py)

Polymarket (utils/markets.py)

Kalshi (utils/markets.py)

The Odds API (utils/the_odds_api.py)

The SGO-down resilience backstop (#725 epic). Lower tier — 20,000 credits/month, cost = #markets × #regions per /odds or /event-odds call; /sports + /events are FREE, /scores = 1 (2 with daysFrom). x-requests-remaining is captured on every call (client.credits_remaining) so the budget is observable.

Endpoints covered (all live v4 endpoints):

API-Sports (utils/api_sports.py)

Highlightly (utils/highlightly.py)


Media / AI / enrichment

Perplexity (utils/perplexity.py)

X / fxtwitter (utils/x_fetch.py)

yt-dlp video (utils/video_fetch.py)

Giphy (utils/gifs.py)

OpenAI image (utils/image_gen.py)

OpenAI embeddings (utils/embeddings.py)

ElevenLabs STT (utils/stt.py)

ElevenLabs TTS (utils/tts.py)

Giphy usage (utils/gifs.py, #753)

OpenAI usage (utils/embeddings.py + utils/image_gen.py, #753)

Perplexity / Genius usage (no machine-readable budget, #753)


Ops (model-facing via tools)

GitHub (utils/github.py, check_fixes)

Railway (utils/railway.py, check_deploys)


Known real gaps (documented, not yet closed)

These are the only answer-valuable fields a user could plausibly want that we still drop. Each is a conscious low-priority deferral, recorded here so it’s explicit:

Integration Field Why deferred
Deezer track-level release date / explicit Not in Deezer’s track-search response shape (an upstream limitation; the album catalog path carries the date).

(API-Sports venue + referee, previously listed here, are now surfaced via GAME CONTEXT; only the Deezer upstream limitation remains.)

Everything else is either surfaced or an intentional omission listed above.