get_competition_coaching_report
ChatGPTData tool: coaching report for a specific participant in a competition. Includes the full ranked participant list with the specified user highlighted, plus individual historical_trend blocks for at-risk and falling-behind participants (up to 10, with the focused user always included when they are not on track) — avg_period_score, best_period_score, trend: improving/declining/steady, recent vs prior period averages. Also includes an all_participants_trend block when org graphstats are available. If graphstats fail or are sparse, YAML may omit some trend blocks; still call render_competition_coaching_widget in widget hosts so the user gets the full interactive card. When the focused participant is on_track, YAML typically has no historical_trend for them; call render anyway — the card still shows the leaderboard with focus. Use for natural requests like "coaching details", "pull coaching", or "drill into [person] on this comp" — not only after get_competition_leaderboard. In ChatGPT and MCP Apps hosts, after this call succeeds you MUST call render_competition_coaching_widget in the same turn with the same competition_id and user_id. Do not ask the user whether they want the card or tell them to "say if you want it invoked" — only skip render when the user explicitly asked for text-only or no UI.
get_competition_leaderboard
ChatGPTAdmin data tool. Returns the full ranked participant list for a specific competition. Each result states whether the competition is team or individual, how many teams or players have joined, plus status (on_track / at_risk / falling_behind) and a competition-wide trend summary. Use this for a top-level view of how a competition is going. To drill into a specific participant's coaching details use get_competition_coaching_report. Use the id field from get_org_competitions to look up a leaderboard. In ChatGPT and MCP Apps hosts, after this succeeds you MUST call render_competition_leaderboard_widget in the same turn with the same competition_id. Do not ask the user to opt in or confirm the widget — only skip when they asked for text-only or no UI.
get_notifications
ChatGPTReturns recent Alert notifications for the authenticated Spinify user's organisation. Each notification has a title, human-readable message, received timestamp, and a URL to the full notification detail page. Results are formatted as YAML for easy reading. No arguments are needed — the user identity is derived from the Bearer token.
get_org_competitions
ChatGPTReturns all currently running competitions for the organisation, including whether each is a team or individual competition, participant counts (teams vs players), health flags (no participants, low participation, ending soon), and a historical_trend block per competition derived from competition-level graphstats. The historical_trend is the combined performance of ALL participants — it is NOT individual data. Use this tool to get a high-level picture of which competitions need attention before drilling in with get_competition_coaching_report. Results are formatted as YAML sorted by days remaining ascending.
get_org_members
ChatGPTAdmin-only tool. Looks up users and teams in the organisation by name and returns their IDs. Use this to resolve a person or team name to a user_id or team_id before calling get_user_competition_summary or get_competition_coaching_report. Matching is fuzzy: each word in the search term must appear somewhere in the display name (case-insensitive), so "bob sm" matches "Bob Smith". A search term of at least 2 characters is required — orgs can have thousands of members.
get_user_competition_summary
ChatGPTAdmin-only tool. Returns all active competitions for a specific user, including their rank, score vs target, and progress percentage. Each competition also includes a historical_trend block derived from that user's individual graphstats — this shows how their performance has changed over time (avg_period_score, best_period_score, trend: improving/declining/steady, recent vs prior period averages). Use the historical_trend data when asked how a rep is doing compared to their previous results — the trend and period averages are the historical comparison. Use this after get_org_competitions or get_competition_coaching_report identifies a low performer to get a full picture across every competition they are currently in.
render_competition_coaching_widget
ChatGPTAlways call get_competition_coaching_report with the same competition_id and user_id before calling this tool. This render-only tool attaches the interactive coaching leaderboard card in ChatGPT and MCP Apps hosts (decoupled pattern). In widget-capable hosts, call this in the same assistant turn immediately after the data tool — do not ask the user to opt in, confirm, or "say if you want the card"; that is incorrect unless they already asked for text-only or no UI. Applies even when YAML has no historical_trend (e.g. focused participant on_track) or no all_participants_trend. Re-fetches coaching data for the iframe.
render_competition_leaderboard_widget
ChatGPTAlways call get_competition_leaderboard with the same competition_id before calling this tool. This render-only tool attaches the interactive leaderboard card in ChatGPT and MCP Apps hosts (decoupled pattern). In widget-capable hosts, call this in the same assistant turn immediately after the data tool — do not ask the user to opt in or confirm the widget. Skip only when the user explicitly asked for text-only or no UI. Re-fetches leaderboard data for the iframe.