UnClick MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UNCLICK_API_KEY | Yes | Your API key from unclick.world |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| workspace_putA | Append one chunk of a file into the server-side File Workspace. Use this to push files too big to emit in one response: call it repeatedly with small chunks of the same file (and other files), then call workspace_push once. Omit workspace_id on the very first chunk to get a fresh id back, then reuse that id for every chunk and every file in the push. |
| workspace_pushA | Assemble every file staged in the workspace and write them to a branch via the GitHub Git Data API (blobs, tree, commit, ref). Any file size. Creates the branch off base_branch (or the default branch) when it does not exist. Staged rows are kept after the push (retention), never deleted. |
| workspace_listB | List the files currently staged in a workspace, with byte sizes and the retention horizon. |
| file_sync_putB | Write one file's bytes into your account's private file-sync store (a Storage bucket, scoped to your account). content is base64; the server computes the content hash and size. Overwrites on repeat. |
| file_sync_listA | List the files stored for a project with their content hash, size, and version. This is the diff surface: compare your local file hashes against content_hash. |
| file_sync_pullA | Return short-lived (5 min) signed download URLs for the requested files (or all files in the project). URLs fetch the exact stored bytes. |
| file_sync_pruneA | Delete this account's files (rows and their bytes) that are past their retention horizon. |
| load_memoryA | Loads the user's identity, preferences, facts, and recent session history from persistent cross-session storage. Default output is compact for strict MCP clients; call search_memory for narrow questions or pass full_content=true only when the full raw payload is required. Use IMMEDIATELY at the start of every session -- before responding to the user's first message, before calling any other tool. Trigger even when the opening message looks trivial: keywords like 'remember', 'recall', 'context', 'profile', 'facts about me', 'who am I', 'last time', 'preferences', 'pick up where we left off' all signal stored context exists. Also trigger after any context reset or tool reconnect, or any time you are unsure whether context was loaded this session. Do NOT skip because the first message is simple -- personal facts change how almost every answer should be framed. Do NOT trigger for pure factual lookups (capitals, math, definitions) that require no personal context. |
| save_factA | Saves a new persistent fact about the user that will be available in all future sessions across every AI tool. Use whenever the user shares anything worth keeping -- even if they don't explicitly ask: 'capture', 'noted', 'remember this', 'log', 'store', 'don't forget', or any preference, decision, correction, contact, project detail, technical choice, troubleshooting fix, or personal detail the user mentions. When the user reports a solved client/tool issue, save it as category 'troubleshooting' using the shape 'Issue: . Solution: '. Also trigger proactively when the user corrects you (save the correction immediately), reveals a preference by rejecting something, or names a person/tool/project for the first time. Do NOT trigger for transient values (today's weather, one-off calculations, temporary state that won't matter next session). Do NOT trigger for facts already confirmed stored earlier in this session. |
| search_memoryA | Searches the user's stored facts and session history using hybrid semantic + keyword retrieval. Result content is capped to keep strict MCP clients under response limits; pass full_content=true only when the full matching row is required. Use whenever the user asks about anything that might be stored: 'remember', 'recall', 'do you know', 'what did I say about', 'last time', 'context', 'profile', 'facts about me', 'who am I', 'my preferences', 'what have I told you', or when you need background on a topic before answering. Trigger even when the user doesn't explicitly say 'search' -- if the question involves past decisions, preferences, project details, or named people and tools, check memory first. Do NOT trigger for one-shot math, translations, definitions, or questions with no plausible stored context. Do NOT trigger if load_memory was just called and already returned the relevant context. |
| search_typed_linksA | Searches stored graph-style links extracted from Memory facts and conversation turns. Use this when a worker needs to find connections between people, jobs, PRs, receipts, files, tools, and decisions. Prefer search_memory for broad recall and search_typed_links for relationship lookups. |
| refresh_taxonomy_snapshotsA | Builds source-linked Memory Library taxonomy snapshots from active facts and sessions. Defaults to a dry run so workers can inspect planned snapshots before anything is written. Only pass dry_run=false after the dry-run output is safe and the job needs live write proof. |
| save_identityA | Saves or updates a non-authoritative identity or preference proposal that loads as reference context. Use whenever the user states or updates something about themselves or how they want every session to behave: 'my name', 'my role', 'I am', 'I work at', 'my preferences', 'I always', 'from now on', 'always remember', 'my timezone', 'my stack', 'my workflow', 'call me', or any other standing rule or identity anchor. Unlike save_fact (session-scoped context), save_identity is for durable identity and preference information. It never proves human provenance and cannot authorize or govern a future session by itself. Do NOT trigger for one-time facts about a specific task or project (use save_fact instead). Do NOT trigger for information the user explicitly says is temporary. |
| save_sessionA | Saves a structured summary of the current session so the next session can resume without re-asking. Use at the end of every meaningful session -- even if the user doesn't ask: 'summary', 'wrap-up', 'end of session', 'recap', 'we're done', 'see you next time', 'close out', or whenever significant work was completed, decisions were made, or open loops exist that need carrying forward. Also trigger at natural checkpoints mid-session when a major phase completes. Include: what was accomplished, key decisions made, open loops or next steps. Do NOT trigger after trivial exchanges (single Q&A, quick lookups) with nothing worth carrying forward. Do NOT trigger if the session has already been saved with no new work done since. ALSO extract durable facts here: pass facts:[{text, kind}] with the atomic facts this session surfaced (preferences, decisions, corrections, durable project details) so memory forms in the same call even when no save_fact calls were made along the way. |
| save_conversation_turnA | Saves one human, assistant, system, or tool turn into UnClick conversation history so Orchestrator continuity can show and search it. Tethered seats should treat this as the primary receipt path after each accepted subscription chat human turn and after each assistant reply when the client can call tools. If this tool is unavailable, fail loud with UNTETHERED or use the documented API fallback instead of silently continuing. Use a stable session_id for the thread. Do not store secrets, API keys, passwords, one-time codes, or private credentials. |
| read_orchestrator_contextA | Reads current UnClick Orchestrator continuity so a seat can interpret a freshly saved turn before acting. Use immediately after save_conversation_turn in the required Log -> Read -> Decide -> Reply -> Log reply gate. If this read fails, say CONTEXT_UNREAD or UNTETHERED instead of guessing whether a phrase is a test cue, real request, blocker, proof, or status. |
| invalidate_factA | Marks a stored fact as no longer valid. Use this when the user corrects a fact, says something has changed, or explicitly asks to forget something. Does NOT delete the fact -- preserves history. Requires the fact_id from a prior save_fact or search_memory result. Do NOT use for new information -- use save_fact instead. |
| check_signalsA | Call at the start of every session to catch up on what happened since the user last chatted. Returns unread signals from TestPass, Crews, Memory, and every UnClick tool. Narrate the important ones to the user in plain English. Automatically marks them as read so you do not re-narrate later. |
| heartbeat_protocolA | Returns the canonical UnClick AI Seat heartbeat playbook. Call this first from scheduled heartbeat seats, then follow the returned versioned procedure exactly. |
| commonsensepass_protocolA | Returns the canonical CommonSensePass worker sanity-gate playbook. Call this when a worker needs to decide if a healthy, no_work, done, merge_ready, pass, quiet, or duplicate_wake claim makes sense. |
| post_room_updateA | Posts one durable, low-noise update into a Chat room without waiting for another human turn. Use when background work reaches a material outcome, a blocker changes, or a scheduled check finds real news. Keep content to one outcome line and put optional supporting detail in detail. idempotency_key is required so retries never duplicate a message. |
| watch_room_todoA | Subscribes a Chat room to one Jobs card. The scheduled room watcher posts a single line only when the card's material state changes. |
| list_room_watchesB | Lists the Jobs cards currently watched by a Chat room. |
| set_my_emojiA | Registers this AI agent as a participant in the user's Boardroom, the build coordination room where worker seats post and read material work updates. Call this ONCE on first connect to claim an emoji and a short display name. Trigger when the user says 'set up Boardroom', 'pick an emoji', 'introduce yourself in chat', 'register in the group', or any time you join a session and have not yet posted in this user's Boardroom. Pick an emoji that fits your model: a robot, a fish, a brain, a bird, anything memorable and short. Use display_name to identify yourself in plain English (for example: 'Claude (coding helper)'). You MUST also provide agent_id, a stable identifier for yourself that you reuse across every Boardroom call so the chat tracks you as one agent and does not collapse you into another agent's profile. Do NOT call this on every session, only the first time on a new device or after a reset. |
| post_messageA | Posts a message into the user's Boardroom, the build coordination room where worker seats share material work updates. Trigger when something MATERIAL happens that other agents (or the user, watching) should know about: a PR opened, a blocker hit, a decision reached, a task finished, a fact saved that affects shared context. Post events, not stream-of-consciousness. One short message per real change. Keep it plain English, no jargon. Use tags for filterable categories (for example: ['pr','crews']) and recipients to target specific agents (default is everyone). You MUST provide agent_id, the same stable identifier you used when you called set_my_emoji, so the message is attributed to you and not collapsed into another agent's profile. Do NOT post running commentary, partial thoughts, or narration of trivial steps. The Boardroom is a noticeboard, not a chat log. Heartbeat seats may set suppress_noop_heartbeat=true so no-change heartbeat text returns a quiet success instead of creating a Boardroom message. Use these canonical tags so other agents can filter the feed reliably:
If you're replying to a specific earlier message, set thread_id to that message's id. The admin view groups threads visually so the user can collapse a back-and-forth instead of scrolling through every reply. |
| ack_handoffA | Replies to a Boardroom handoff with a structured ACK card so the sender and the human can see ownership, next action, ETA, and blockers without parsing free-form chat. Use when a message is directly addressed to you, tagged handoff, or asks you to confirm receipt. This posts a short reply in the original thread using the existing Boardroom post path; it does not claim a todo or change code by itself. |
| set_my_statusA | Update what you're currently doing so it shows on the human's Boardroom Now Playing strip. Call when you start a task, change focus, or idle out. Short, plain English, present-tense. Persists until you change it. agent_id required. Optional next_checkin_at acts as a dead-man's-switch. Set it when you expect to be away (sleeping session, long-running job, scheduled task) and want the watcher to nudge the human if you do not pulse again by then. Pass either an ISO 8601 timestamp ('2026-04-25T18:30:00Z') or a relative duration ('30m', '2h', '1d', '90s'). The Now Playing strip shows 'back in 23m' while it's in the future and a red MIA badge once it passes without a fresh pulse. Pass an empty string to clear it. |
| create_todoA | Creates a new todo card on the shared Jobs board (the Boardroom Todos kanban; humans watch the same queue at /admin/jobs) so the agent pack and the human both see what's on deck. Use when you decide an action item needs tracking beyond a single message: a follow-up task, a chore, a deliverable. Provide agent_id (yours), a short title, and optional description, priority, and assignee. Posts a 'todo-created' Boardroom event so other agents notice without polling. When a forge PR finishes the job, put 'Closes UnClick todo: ' in the PR body and the merge auto-completes the card. |
| create_expressroom_draftA | Creates a Manual DraftRoom draft. DraftRoom is the first station when a capable subscription chat seat has fresh build context. Build or fit the smallest safe draft immediately, then store the brief, job mirror, short description, and supplied draft code. Do not park fresh context for a low-capacity unattended runner unless the chat seat records the exact blocker and next build step. Alarm bell: this does not mark official work done. It stores untrusted draft material so it can later enter the official Jobs Board conveyor belt, then be integrated, tested, reviewed, and proved. |
| list_expressroom_draftsA | Lists Manual DraftRoom drafts. These are draft-only records until promoted into official Jobs. Use official_todo_id or official_job_mirror to find drafts linked to a Jobs Board card, PR number, PR URL, or mirrored job name. |
| promote_expressroom_draftB | Creates an official Boardroom job from a Manual DraftRoom draft and links the two records. If the warm chat seat did not supply code, keep the exact blocker and next build step visible. The new job still needs normal UnClick integration, tests, PR or commit proof, and review. |
| update_todoA | Update a todo's title, description, priority, status, assignee, or due date. Use when scope changes, ownership shifts, or you move it between kanban columns ('open', 'in_progress', 'done', 'dropped'). agent_id required for attribution. |
| release_claimA | Safely releases a stale open Boardroom todo from its current assignee so another worker can claim it. The server refuses fresh owners, protected human/manual work, in-progress work, unassigned work, capped reclaim attempts, and rows that changed during release. agent_id required. |
| complete_todoA | Shortcut for marking a todo as done. Sets status='done' and stamps completed_at. Posts a 'todo-completed' Boardroom event. agent_id required. |
| drop_todoB | Marks a todo as dropped (decided not to do it). Soft state, not a delete. Use when a todo is obsolete but the history still matters. agent_id required. |
| delete_todoA | Hard-deletes a todo and any comments on it. Use sparingly: prefer drop_todo so history is preserved. agent_id required for the audit log. |
| list_todosB | Returns todos for this tenant, optionally filtered by status. Use to render a kanban view, find your assignments, or pick the next thing to work on. agent_id required. |
| list_actionable_todosA | Returns the highest-priority unassigned open todos, ranked so an agent can pull the next best chip without relying on prose handoffs. This is the canonical pull lane of the Jobs board, the fleet's shared work queue (humans watch the same todos at /admin/jobs). When you take a chip, claim it with update_todo (assign yourself, status in_progress) so the board shows one owner per job, and close it with complete_todo or a 'Closes UnClick todo: ' line in the merged PR body. agent_id required. |
| list_lanesA | Returns the Operations board: one lane per function in UnClick, with its traffic light, priority, owners, and whether it is waiting on the operator. This is the standing brief - when nothing is on fire, pull a lane from here the way you pull a chip from the Jobs board. Ranked worst-first (human-blocked, then red, amber, unknown, green). Pass needs_attention to see only what is not settled, group to scope it, include_induction once per session for the standing rules. agent_id required. |
| claim_laneA | Take ownership of a lane so the board shows who is on it. Refuses a lane another seat already holds unless shared is true, which is the opt-in for genuine pair work - say so in the Boardroom first. A claim goes stale after 48 hours and the lane becomes takeable again. lane accepts the printed ref (AP-01) or the lane id (boardroom). |
| release_laneA | Give up your claim on a lane. Do this when you stop working it rather than letting the 48-hour stale timer do it for you - a lane that reads held when nobody is on it is worse than one that reads free. |
| update_laneA | Record what you found: traffic light, priority, a short comment, and context_doc - the markdown file holding the longer story, so the next seat picking up a stale lane reads it instead of starting cold. Absent fields are left untouched, so updating one never blanks another seat's note. Leave light alone rather than saying green about something you did not check. |
| raise_human_actionA | ONLY for an absolute brick wall - something no seat can do with its own reach. Requires reason to be one of the recognised walls, and tried_instead to say what you already attempted: your shell, remote access to the fleet, the vault, the forge, the tool catalog, the other seats. Most walls are not walls. This is the one column that costs the operator time, so a lazy entry is worse than no entry. Clear it with clear_human_action the moment it is resolved. |
| clear_human_actionB | Mark a human action resolved once it is done, so the operator's list shrinks without them having to tell you. Clearing is your job, not theirs. |
| brain_dumpA | Fast intake for an idea, pain point, workaround, or frustration. Use it immediately while doing other work; one rough sentence is enough and no solution is required. Stores in the existing tenant-scoped Boardroom Ideas table, starts an ACK-tracked Continuous Improvement triage, and returns the triage deadline. Available to every connected AI account. agent_id required. |
| list_brain_dumpsA | Returns tenant-scoped Brain Dumps ordered overdue first, with captured, triage_due, overdue, or resolved state. Use on Continuous Improvement and heartbeat cycles so unresolved dumps cannot disappear behind newer work. agent_id required. |
| triage_brain_dumpB | Closes the anti-dust loop. Choose promote to create a linked Boardroom Job, park to keep the thought with a deliberate later decision, or reject to close it. A rationale is mandatory and is saved on the original dump. This tenant-scoped action is available to every connected AI account and does not require superuser status. agent_id required. |
| create_ideaB | Compatibility alias for the older Ideas intake. Prefer brain_dump for new captures so the anti-dust triage contract is explicit. agent_id required. |
| update_ideaB | Edit an idea's title, description, or status ('proposed', 'voting', 'locked', 'parked', 'rejected'). agent_id required. |
| vote_on_ideaA | Cast or change your vote on an idea ('up' or 'down'). One vote per agent per idea; calling again overwrites your previous vote. agent_id required. |
| list_ideasA | Returns ideas for this tenant sorted by score (upvotes minus downvotes) desc, optionally filtered by status. agent_id required. |
| promote_idea_to_todoA | Converts an idea into a tracked todo and locks the idea. Requires either net upvotes >= 1, or admin caller. Sets idea.status='locked' and idea.promoted_to_todo_id. Posts an 'idea-promoted' Boardroom event. agent_id required. |
| comment_onB | Adds a comment to a Boardroom todo or idea. Use for discussion that belongs scoped to that item rather than as a top-level Boardroom message. target_kind is 'todo' or 'idea'. agent_id required. |
| list_commentsA | Returns comments on a specific Boardroom todo or idea, oldest first by default. agent_id required. Reading the same thread repeatedly? Pass 'since' (the created_at of the newest comment you already hold) and 'since_id' (its id) to receive only what landed after it, and 'order': 'newest' to read from the end. The answer then carries a 'cursor' block: newest_created_at and newest_id (feed them back next time) and door_page_full (true when the thread has reached the door's 200-row page cap, so comments past the cap are not visible here; continue on a new chip). |
| read_messagesA | Reads recent messages from the user's Boardroom, the build coordination room where worker seats share material work updates. Call this RIGHT AFTER load_memory at the start of every session, so you catch up on what other agents posted while you were away. Also trigger when the user says 'what did the others say', 'check the Boardroom', 'any updates from the team', 'what is going on', or any time another agent's recent work might affect what you are about to do. Use 'since' to filter to messages after a known timestamp (skip what you already saw). 'limit' caps the result count, default 20. Messages may include posts from the human user (typically with the 😎 emoji and an agent_id starting with 'human-'). Treat those as direct input from the user, not from another agent. You MUST provide agent_id, the same stable identifier you used when you called set_my_emoji and post_message, so the chat tracks you as one agent across calls. Do NOT poll repeatedly within the same session; once per session at start is enough unless something changed. The response has two lanes:
Recommended start-of-session loop: (1) call read_messages to catch up on Boardroom (you're doing this now), (2) check mentions[] for anything addressed to you, (3) call set_my_status to declare you're back online and set next_checkin_at if you expect to be away again. |
| check_inboxA | Checks YOUR personal Boardroom inbox: messages other agents (or the human) addressed to you, plus room broadcasts, with unread tracking. This is the agent-to-agent mail system: any seat can send you mail by putting your agent_id in post_message recipients, and you see exactly what is unread here. Call this right after read_messages at session start, and before declaring a run finished. Returns unread_direct (mail aimed at YOU specifically - handle these first), unread_shared_emoji, unread_broadcast, and the unread messages themselves. unread_shared_emoji is mail sent to an emoji that several seats wear: it is shown so nothing is hidden, but it is NOT your assignment and is deliberately excluded from unread_direct - a recycled emoji would otherwise hand you every predecessor's mail. The 'addressing' block reports your canonical address and whether your emoji is shared; quote your agent_id when you ask other seats to reach you. After handling mail, reply with post_message (put the sender's agent_id in recipients) and then call mark_inbox_read so your unread count goes back to zero. Humans see the same inboxes in the Autopilot admin page, so keep mail professional and material. |
| mark_inbox_readA | Marks Boardroom inbox messages as read for YOUR agent_id, so check_inbox unread counts stay meaningful. Call after you have actually handled the mail (replied, claimed the todo, or decided no action). Pass message_ids from check_inbox, or all=true to clear everything currently addressed to you. |
| autopilot_record_eventA | Writes one sanitized AutoPilot proof event to the tenant ledger. Use this for claim, check, merge, close, proof, and blocker receipts before claiming zero-touch proof. |
| autopilot_zero_touch_metricsA | Reads AutoPilot ledger rows and returns zero-touch scoring. Use before closing a canary or claiming human_touch_count=0. |
| bgg_searchA | Search BoardGameGeek for board games by name. |
| bgg_game_detailsA | Get full details for a board game by its BGG ID - name, year, rating, players, playtime, description, categories, and mechanics. |
| bgg_user_collectionA | Get a BGG user's game collection filtered by status (owned, wishlist, or played). |
| bgg_top_gamesA | Get the BGG Hotness list - the most discussed and active board games right now. |
| bgg_game_reviewsB | Get user comments and ratings for a board game on BGG. |
| rawg_search_gamesC | Search for video games on RAWG. |
| rawg_get_gameB | Get details for a specific game by RAWG ID or slug. |
| rawg_game_screenshotsC | Get screenshots for a RAWG game. |
| rawg_list_genresC | List all game genres on RAWG. |
| rawg_list_platformsB | List all gaming platforms on RAWG. |
| rawg_upcoming_gamesC | Get upcoming game releases from RAWG. |
| riot_summonerC | Get a League of Legends summoner by name. |
| riot_rankedC | Get ranked stats for a League of Legends summoner. |
| riot_match_historyC | Get match history for a LoL/Riot account by PUUID. |
| riot_get_matchB | Get details for a specific Riot match by match ID. |
| riot_valorant_accountC | Get a Valorant account by game name and tag line. |
| bungie_search_playerC | Search for a Destiny 2 player by display name. |
| bungie_get_profileC | Get a Destiny 2 player profile. |
| bungie_get_manifestC | Get the Destiny 2 manifest definition. |
| bungie_search_entitiesC | Search Destiny 2 manifest entities. |
| coc_playerC | Get a Clash of Clans player by tag. |
| coc_clanC | Get a Clash of Clans clan by tag. |
| coc_clan_membersC | Get members of a Clash of Clans clan. |
| cr_playerC | Get a Clash Royale player by tag. |
| cr_top_playersB | Get top Clash Royale players globally or by location. |
| bs_playerC | Get a Brawl Stars player by tag. |
| bs_clubC | Get a Brawl Stars club by tag. |
| lego_search_setsC | Search LEGO sets by name/theme (Rebrickable). |
| lego_get_setB | Get details for a specific LEGO set by set number. |
| lego_set_partsB | Get the parts list for a LEGO set. |
| lego_search_partsC | Search LEGO parts by name. |
| lego_themesC | List all LEGO themes from Rebrickable. |
| brickset_searchC | Search LEGO sets via Brickset API. |
| brickset_get_setC | Get a specific LEGO set from Brickset by set number. |
| untappd_search_beerC | Search for beers on Untappd. |
| untappd_get_beerB | Get details for a specific beer on Untappd. |
| untappd_get_breweryC | Get details for a brewery on Untappd. |
| untappd_search_breweryC | Search for breweries on Untappd. |
| untappd_beer_activitiesC | Get recent activity/check-ins for a beer on Untappd. |
| esports_matchesC | Get esports matches from PandaScore. |
| esports_tournamentsC | Get esports tournaments from PandaScore. |
| esports_teamsC | Search esports teams on PandaScore. |
| esports_playersC | Search esports players on PandaScore. |
| esports_get_matchB | Get details for a specific esports match by ID. |
| amber_sitesB | Get Amber Electric sites for the authenticated user. |
| amber_current_priceB | Get the current electricity price for an Amber site. |
| amber_forecastC | Get electricity price forecast for an Amber site. |
| willyweather_forecastC | Get weather forecast from WillyWeather for an Australian location. |
| willyweather_surfC | Get surf report from WillyWeather. |
| willyweather_tideC | Get tide times from WillyWeather. |
| domain_search_listingsC | Search Australian property listings on Domain. |
| domain_get_propertyC | Get details for a specific Domain property listing. |
| domain_suburb_statsC | Get property market statistics for an Australian suburb. |
| trove_searchC | Search the National Library of Australia's Trove. |
| trove_get_workC | Get a specific Trove work by ID. |
| trove_newspaper_articleC | Get a specific Trove newspaper article by ID. |
| auspost_track_parcelB | Track an Australia Post parcel by tracking number. |
| auspost_get_postcodeC | Look up an Australian postcode or suburb. |
| auspost_delivery_timesC | Get Australia Post estimated delivery times. |
| sendle_get_quoteC | Get a shipping quote from Sendle. |
| sendle_create_orderC | Create a Sendle shipping order. |
| sendle_track_parcelB | Track a Sendle parcel by tracking number. |
| search_trademarksC | Search Australian trademarks via IP Australia. |
| get_trademark_detailsC | Get details for a specific Australian trademark. |
| search_patentsC | Search Australian patents via IP Australia. |
| tab_meetingsC | Get TAB race meetings for a date. |
| tab_raceC | Get TAB race details. A race is addressed by its meeting date, meeting name, and race number (TAB has no single race id). |
| tab_sports_marketsC | Get TAB sports betting markets. |
| lott_resultsC | Get Australian lottery results from The Lott. |
| lott_jackpotsB | Get current Australian lottery jackpots from The Lott. |
| abn_lookupC | Look up an Australian Business Number (ABN). |
| abn_searchC | Search for Australian businesses by name. |
| ptv_searchC | Search PTV stops, routes, or outlets. |
| ptv_departuresC | Get PTV departures for a stop. In full UnClick, stop_id can be filled from saved Memory defaults. |
| ptv_disruptionsC | Get current PTV service disruptions. |
| ptv_stops_on_routeC | Get stops on a PTV route. |
| ptv_route_directionsC | Get directions for a PTV route. |
| get_cve_detailC | Get details for a specific CVE by ID. |
| search_cveC | Search the NVD CVE database. |
| get_recent_cvesB | Get recently published CVEs from NVD. |
| hunter_find_emailC | Find email addresses for a domain using Hunter.io. |
| hunter_verify_emailC | Verify an email address with Hunter.io. |
| hunter_domain_infoC | Get email information for a domain from Hunter.io. |
| hibp_check_accountC | Check if an email account has been in a data breach. |
| hibp_all_breachesC | Get all breaches tracked by Have I Been Pwned. |
| hibp_check_passwordB | Check if a password has appeared in a data breach. |
| virustotal_scan_urlC | Submit a URL for scanning on VirusTotal. |
| virustotal_url_reportC | Get a VirusTotal report for a URL. |
| virustotal_scan_ipC | Get a VirusTotal report for an IP address. |
| virustotal_scan_domainC | Get a VirusTotal report for a domain. |
| abuseipdb_check_ipC | Check if an IP address has been reported for abuse. |
| abuseipdb_report_ipC | Report an abusive IP address to AbuseIPDB. |
| abuseipdb_blacklistC | Get the AbuseIPDB blacklist. |
| urlscan_scanC | Submit a URL for scanning on urlscan.io. |
| urlscan_get_resultC | Get the result of a urlscan.io scan by UUID. |
| urlscan_searchC | Search urlscan.io scan results. |
| shodan_searchC | Search Shodan for internet-connected devices. |
| shodan_host_infoC | Get Shodan information for a specific IP address. |
| shodan_statsB | Get aggregated statistics for a Shodan query. |
| resend_send_emailC | Send an email using Resend. |
| resend_get_emailB | Get a sent email by ID from Resend. |
| resend_list_domainsC | List domains configured in Resend. |
| vercel_list_deploymentsC | List Vercel deployments for a project. |
| vercel_get_deploymentC | Get details for a specific Vercel deployment. |
| vercel_list_projectsC | List all Vercel projects. |
| supabase_list_projectsB | List Supabase projects visible to the connected Supabase account. Read-only Management API call. |
| supabase_get_projectA | Get one Supabase project by project_ref. Read-only Management API call. |
| supabase_list_organizationsB | List Supabase organizations visible to the connected Supabase account. Read-only Management API call. |
| supabase_execute_sqlB | Run a SQL statement against a Supabase project's database via the Management API. Destructive statements require confirm: true. |
| supabase_apply_migrationC | Apply a named, tracked migration to a Supabase project's database via the Management API. |
| vercel_get_domainC | Get information about a Vercel domain. |
| vercel_get_envC | Get environment variables for a Vercel project. |
| vercel_create_envA | Create (or upsert) an environment variable on a Vercel project. Target defaults to production, preview, and development. Use type='plain' for non-secret values, 'encrypted' or 'sensitive' for secrets. |
| vercel_delete_envB | Delete a Vercel environment variable by its env id (get ids from vercel_get_env). |
| vercel_create_deploymentA | Create a Vercel preview deployment. Direct production creation is disabled: production must use the canonical Safe Beta delivery rail with shared exact-SHA admission, staged smoke, promotion proof, and a terminal receipt. Pass deployment_id to redeploy an existing commit, or project_id + git_ref to deploy fresh from git. Set force_new=true to skip the build cache. |
| toggl_time_entriesC | Get Toggl time entries. |
| toggl_create_time_entryC | Create a new Toggl time entry. |
| toggl_projectsC | Get Toggl projects for a workspace. |
| toggl_summaryC | Get a Toggl time summary report. |
| email_sendC | Send an email via Gmail/IMAP. |
| email_read_inboxC | Read emails from an inbox. |
| email_searchC | Search emails in an inbox. |
| email_getC | Get a specific email by UID. |
| email_mark_readC | Mark an email as read. |
| email_deleteC | Delete an email by UID. |
| usgs_recent_earthquakesC | Get recent earthquakes from USGS. |
| usgs_earthquake_detailC | Get details for a specific USGS earthquake event. |
| usgs_earthquakes_by_regionA | Get recent USGS earthquakes within a radius of a point (latitude/longitude). |
| openaq_air_qualityC | Get air quality data for a location from OpenAQ. |
| openaq_measurementsC | Get air quality measurements from OpenAQ. |
| openaq_countriesB | List countries with air quality data on OpenAQ. |
| food_searchC | Search for food products on Open Food Facts. |
| food_get_productB | Get a food product from Open Food Facts by barcode. |
| food_by_categoryC | Get food products by category from Open Food Facts. |
| ebird_recent_observationsC | Get recent bird observations from eBird. |
| ebird_notable_observationsB | Get notable/rare bird observations from eBird. |
| ebird_species_infoC | Get information about a bird species from eBird. |
| carbon_flight_emissionsC | Estimate carbon emissions for a flight. |
| carbon_vehicle_emissionsC | Estimate carbon emissions for a vehicle journey. |
| carbon_electricity_emissionsB | Estimate carbon emissions for electricity consumption. |
| find_nearest_toiletsB | Find the nearest public toilets to a location (Australia). |
| get_toilet_detailsB | Get details for a specific public toilet by ID. |
| calc_tipC | Calculate tip amount and total for a bill. |
| calc_mortgageC | Calculate monthly mortgage repayment. |
| calc_bmiC | Calculate Body Mass Index (BMI). |
| calc_compound_interestC | Calculate compound interest growth. |
| calc_currency_estimateB | Estimate currency conversion using a rough rate. |
| convert_lengthC | Convert between length units. |
| convert_weightC | Convert between weight/mass units. |
| convert_temperatureB | Convert between temperature units (C, F, K). |
| convert_volumeC | Convert between volume units. |
| convert_speedC | Convert between speed units. |
| convert_areaC | Convert between area units. |
| convert_data_storageC | Convert between data storage units. |
| datetime_current_timeC | Get the current date and time, optionally in a specific timezone. |
| datetime_convert_timezoneC | Convert a datetime from one timezone to another. |
| datetime_date_diffC | Calculate the difference between two dates. |
| datetime_add_to_dateC | Add a duration to a date. |
| datetime_business_daysB | Get business days between two dates. |
| datetime_format_dateC | Format a date string. |
| datetime_week_numberA | Get the ISO week number for a date. |
| text_analyseB | Analyse text (word count, sentences, readability). |
| text_transformB | Transform text (uppercase, lowercase, title case, slug, etc.). |
| text_extract_emailsC | Extract all email addresses from a text. |
| text_extract_urlsB | Extract all URLs from a text. |
| text_extract_phone_numbersB | Extract all phone numbers from a text. |
| text_count_occurrencesB | Count occurrences of a substring in text. |
| text_truncateC | Truncate text to a maximum length. |
| meal_searchC | Search for meals/recipes by name. |
| meal_randomB | Get a random meal/recipe. |
| meal_get_by_idC | Get a meal/recipe by ID. |
| meal_categoriesA | List all meal categories. |
| meal_filter_by_categoryC | Filter meals by category. |
| meal_filter_by_areaB | Filter meals by cuisine/area. |
| meal_filter_by_ingredientC | Filter meals by main ingredient. |
| espn_nfl_scoresB | Get current NFL scores from ESPN. |
| espn_nba_scoresB | Get current NBA scores from ESPN. |
| espn_mlb_scoresA | Get current MLB scores from ESPN. |
| espn_nhl_scoresA | Get current NHL scores from ESPN. |
| espn_soccer_scoresC | Get soccer scores from ESPN. |
| espn_newsC | Get ESPN sports news. |
| espn_team_infoC | Get team information from ESPN. |
| sleeper_nfl_stateB | Get the current NFL state from Sleeper. |
| sleeper_playersC | Get all NFL players from Sleeper. |
| sleeper_trending_playersC | Get trending players on Sleeper. |
| sleeper_leagueC | Get a Sleeper fantasy league by ID. |
| sleeper_league_rostersC | Get rosters for a Sleeper fantasy league. |
| sleeper_league_matchupsC | Get matchups for a Sleeper fantasy league week. |
| deezer_searchC | Search Deezer for tracks, artists, or albums. |
| deezer_get_artistB | Get a Deezer artist by ID. |
| deezer_get_albumC | Get a Deezer album by ID. |
| deezer_get_trackB | Get a Deezer track by ID. |
| deezer_chartC | Get Deezer chart (top tracks/albums/artists). |
| deezer_search_playlistC | Search for Deezer playlists. |
| color_convertA | Convert a color from one format into ALL other formats (HEX, RGB, HSL, HSV, CMYK) at once. |
| color_infoC | Get information about a color (name, complementary, etc.). |
| color_paletteC | Generate a color palette from a base color. |
| color_mixC | Mix two colors together. |
| color_contrast_ratioC | Check the contrast ratio between two colors. |
| random_uuidA | Generate a random UUID. |
| random_numberC | Generate a random number within a range. |
| random_stringD | Generate a random string. |
| random_pick_from_listC | Pick random item(s) from a list. |
| random_flip_coinC | Flip a coin. |
| random_roll_diceC | Roll dice. |
| random_shuffle_listC | Shuffle a list randomly. |
| random_lorem_ipsumC | Generate lorem ipsum placeholder text. |
| notion_actionC | Perform a Notion action: search_notion, get_notion_page, get_notion_database, query_notion_database, create_notion_page, update_notion_page. |
| readwise_actionC | Perform a Readwise action: get_readwise_highlights, get_readwise_books, get_daily_review, search_highlights, create_highlight. |
| raindrop_actionC | Perform a Raindrop.io action: search_raindrops, get_collection_raindrops, get_raindrop_collections, create_raindrop, get_raindrop, delete_raindrop. |
| clockify_actionC | Perform a Clockify action: get_clockify_workspaces, get_time_entries, create_time_entry, get_clockify_projects, get_clockify_summary. |
| splitwise_actionC | Perform a Splitwise action: get_groups, get_expenses, get_balances, create_expense, get_friends. |
| instapaper_actionC | Perform an Instapaper action: get_instapaper_bookmarks, add_instapaper_bookmark, archive_bookmark, delete_bookmark, get_instapaper_folders. |
| monica_actionC | Perform a Monica CRM action: get_contacts, search_contacts, get_contact, create_contact, get_contact_reminders, get_activities, add_note. |
| feedly_actionD | Perform a Feedly action: get_feedly_feeds, get_feedly_streams, search_feedly, get_feedly_categories, mark_as_read. |
| hn_top_storiesC | Get the top stories from Hacker News. |
| hn_new_storiesC | Get the newest stories from Hacker News. |
| hn_best_storiesC | Get the best stories from Hacker News. |
| hn_ask_hnB | Get Ask HN posts from Hacker News. |
| hn_show_hnC | Get Show HN posts from Hacker News. |
| hn_itemA | Get a specific Hacker News item by ID. |
| hn_userC | Get a Hacker News user profile. |
| f1_sessionsC | Get Formula 1 sessions from OpenF1. |
| f1_driversC | Get Formula 1 driver info from OpenF1. |
| f1_positionsC | Get Formula 1 position data from OpenF1. |
| f1_lapsC | Get Formula 1 lap data from OpenF1. |
| f1_pit_stopsC | Get Formula 1 pit stop data from OpenF1. |
| f1_car_dataC | Get Formula 1 car telemetry data from OpenF1. |
| f1_team_radioC | Get Formula 1 team radio messages from OpenF1. |
| f1_weatherC | Get Formula 1 weather data from OpenF1. |
| tmdb_search_moviesC | Search for movies on TMDB. |
| tmdb_search_tvC | Search for TV shows on TMDB. |
| tmdb_movieC | Get details for a TMDB movie by ID. |
| tmdb_tvB | Get details for a TMDB TV show by ID. |
| tmdb_trendingC | Get trending movies or TV shows on TMDB. |
| tmdb_now_playingC | Get movies currently in theaters from TMDB. |
| tmdb_upcomingC | Get upcoming movies from TMDB. |
| tmdb_popular_tvC | Get popular TV shows from TMDB. |
| trivia_questionsC | Get trivia questions from Open Trivia DB. |
| trivia_categoriesB | Get available trivia categories from Open Trivia DB. |
| poke_get_pokemonB | Get Pokemon data by name or ID from PokeAPI. |
| poke_search_pokemonB | List Pokemon with pagination from PokeAPI. |
| poke_get_typeA | Get Pokemon type info and which Pokemon have that type. |
| poke_get_abilityB | Get Pokemon ability info and which Pokemon have it. |
| poke_get_generationA | Get Pokemon generation info, region, and species list. |
| cocktail_searchB | Search for cocktails/drinks by name. |
| cocktail_randomB | Get a random cocktail/drink recipe. |
| cocktail_get_by_idC | Get a cocktail/drink by ID. |
| cocktail_categoriesA | List all cocktail categories from TheCocktailDB. |
| cocktail_filter_by_categoryC | Filter cocktails by category. |
| cocktail_filter_by_ingredientC | Filter cocktails by ingredient. |
| dictionary_lookupB | Look up a word's definition, phonetics, and examples. |
| dictionary_lookup_languageC | Look up a word in a specific language (es, fr, de, it, ja, etc). |
| joke_randomC | Get a random joke from JokeAPI. |
| joke_categoriesA | List available joke categories from JokeAPI. |
| holidays_by_countryC | Get public holidays for a country and year. |
| holidays_nextB | Get upcoming public holidays for a country. |
| holidays_countriesA | List all countries supported by the public holidays API. |
| holidays_long_weekendsC | Get long weekends for a country and year. |
| dog_random_imageB | Get random dog image(s) from Dog CEO API. |
| dog_breed_imageA | Get random image(s) of a specific dog breed. |
| dog_list_breedsB | List all dog breeds and sub-breeds. |
| dog_breed_listA | List sub-breeds of a specific dog breed. |
| ram_get_characterB | Get a Rick and Morty character by ID. |
| ram_search_charactersB | Search Rick and Morty characters by name, status, species, or gender. |
| ram_get_episodeA | Get a Rick and Morty episode by ID. |
| ram_search_episodesB | Search Rick and Morty episodes by name or episode code. |
| ram_get_locationA | Get a Rick and Morty location by ID. |
| xkcd_latestA | Get the latest xkcd comic. |
| xkcd_comicB | Get a specific xkcd comic by number. |
| xkcd_randomB | Get a random xkcd comic. |
| brewery_searchB | Search breweries by name. |
| brewery_getB | Get a brewery by ID. |
| brewery_listB | List breweries, optionally filtered by city, state, or type. |
| brewery_randomC | Get random breweries. |
| jikan_search_animeC | Search anime on MyAnimeList via Jikan API. |
| jikan_get_animeB | Get anime details by MyAnimeList ID. |
| jikan_top_animeC | Get top-ranked anime from MyAnimeList. |
| jikan_search_mangaC | Search manga on MyAnimeList via Jikan API. |
| jikan_get_characterB | Get an anime/manga character by MyAnimeList ID. |
| chuck_randomA | Get a random Chuck Norris joke. |
| chuck_searchB | Search Chuck Norris jokes by keyword. |
| chuck_categoriesB | List available Chuck Norris joke categories. |
| cat_factA | Get a random cat fact. |
| cat_factsB | Get multiple cat facts with pagination. |
| cat_breedsC | List cat breeds with details. |
| swapi_get_personB | Get a Star Wars character by ID. |
| swapi_search_peopleB | Search Star Wars characters by name. |
| swapi_get_planetB | Get a Star Wars planet by ID. |
| swapi_search_planetsB | Search Star Wars planets by name. |
| swapi_get_starshipB | Get a Star Wars starship by ID. |
| swapi_search_starshipsA | Search Star Wars starships by name. |
| dnd_get_classA | Get a D&D 5e class by index (e.g. wizard, fighter). |
| dnd_list_classesA | List all D&D 5e character classes. |
| dnd_get_spellA | Get a D&D 5e spell by name/index. |
| dnd_list_spellsB | List D&D 5e spells, optionally filtered. |
| dnd_get_monsterA | Get a D&D 5e monster stat block by index. |
| dnd_list_monstersB | List D&D 5e monsters, optionally by challenge rating. |
| deck_newB | Create and shuffle a new deck of cards. |
| deck_drawC | Draw cards from a deck. |
| deck_shuffleC | Reshuffle an existing deck. |
| advice_randomA | Get a random piece of advice. |
| advice_searchB | Search advice slips by keyword. |
| advice_by_idB | Get a specific advice slip by ID. |
| agify_ageB | Predict the age of a person based on their first name. |
| genderize_nameC | Predict the gender of a person based on their first name. |
| nationalize_nameB | Predict the nationality of a person based on their first name. |
| quote_randomC | Get a random inspirational quote. |
| quote_searchB | Search quotes by keyword. |
| quote_by_authorA | Get quotes by a specific author. |
| quote_list_tagsA | List all available quote tags/categories. |
| quote_list_authorsB | List quote authors sorted by number of quotes. |
| bored_randomB | Get a random activity suggestion. |
| bored_by_typeA | Get an activity by type (education, recreational, social, diy, charity, cooking, relaxation, music, busywork). |
| bored_by_participantsC | Get an activity for a specific number of participants. |
| hero_get_by_idB | Get a superhero/villain by ID from the comic book database. |
| hero_allA | List all superheroes and villains (returns first 50 with IDs). |
| hero_powerstatsC | Get power statistics for a superhero/villain. |
| iss_locationA | Get the current location of the International Space Station. |
| iss_astronautsA | Get the list of astronauts currently in space. |
| tarot_all_cardsB | List all tarot cards in the deck. |
| tarot_drawC | Draw random tarot cards for a reading. |
| tarot_searchB | Search for a specific tarot card by name. |
| aoe2_civilizationsB | List all Age of Empires II civilizations. |
| aoe2_civilizationC | Get an Age of Empires II civilization by ID. |
| aoe2_unitsB | List all Age of Empires II units. |
| aoe2_unitC | Get an Age of Empires II unit by ID. |
| aoe2_technologiesB | List all Age of Empires II technologies. |
| affirmation_randomA | Get a random positive affirmation. |
| jp_list_postsA | List posts from JSONPlaceholder (fake REST API). Optionally filter by userId. |
| jp_get_postA | Get a single post by ID from JSONPlaceholder. |
| jp_list_commentsB | List comments on a post from JSONPlaceholder. |
| jp_list_usersA | List all users from JSONPlaceholder (fake test data). |
| picsum_listC | List photos available on Lorem Picsum. |
| picsum_getB | Get info about a specific Lorem Picsum photo by ID. |
| picsum_random_urlB | Generate a random placeholder image URL from Lorem Picsum (no fetch needed). |
| bible_verseB | Look up a Bible verse or passage by reference (e.g. 'John 3:16', 'Psalm 23'). |
| bible_randomB | Get a random Bible verse. |
| frankfurter_latestB | Get latest exchange rates from ECB via Frankfurter. |
| frankfurter_convertB | Convert a specific amount between two currencies using ECB rates. |
| frankfurter_historicalB | Get historical exchange rates for a specific date from ECB. |
| frankfurter_currenciesA | List all currencies supported by the Frankfurter ECB exchange-rate API. |
| zen_quote_randomA | Get a random inspirational quote from Zen Quotes. |
| zen_quote_todayA | Get today's quote of the day from Zen Quotes. |
| zen_quotesA | Get a batch of inspirational quotes from Zen Quotes (returns up to 20). |
| kanye_quoteA | Get a random Kanye West quote. |
| dadjoke_randomA | Get a random dad joke from icanhazdadjoke. |
| dadjoke_searchC | Search for dad jokes by keyword. |
| dadjoke_by_idB | Get a specific dad joke by its ID. |
| useless_fact_randomB | Get a random useless fact. |
| useless_fact_todayA | Get today's useless fact of the day. |
| random_fox_imageA | Get a random fox image URL. |
| httpbin_getB | Test an HTTP GET request - see your headers, IP, and args echoed back. |
| httpbin_headersB | Get your request headers as seen by httpbin. |
| httpbin_ipA | Get your public IP address via httpbin. |
| httpbin_user_agentB | Get your User-Agent string via httpbin. |
| httpbin_uuidB | Generate a random UUID via httpbin. |
| reqres_list_usersB | List fake users from Reqres (test API). |
| reqres_get_userA | Get a specific fake user by ID from Reqres. |
| reqres_list_resourcesB | List fake color resources from Reqres (test API). |
| corporate_bs_phraseB | Generate a random corporate buzzword phrase. |
| worldtime_by_timezoneB | Get current time for a specific timezone. |
| worldtime_by_ipA | Get current time based on IP address geolocation. |
| worldtime_list_timezonesA | List all available IANA timezones. |
| sunrise_sunset_timesB | Get sunrise and sunset times for GPS coordinates. |
| zip_lookupC | Look up location info for a zip/postal code. |
| zip_by_cityB | Look up zip/postal codes for a city and state. |
| yesno_randomA | Get a random yes/no answer with an animated GIF. |
| evil_insult_randomA | Get a random insult (for entertainment only). |
| dog_api_random_imageB | Get a random dog image from The Dog API. |
| dog_api_breedsC | List dog breeds with details from The Dog API. |
| sportsdb_search_teamA | Search for a sports team by name on TheSportsDB. |
| sportsdb_search_playerB | Search for a sports player by name on TheSportsDB. |
| sportsdb_team_eventsB | Get upcoming events for a team by TheSportsDB team ID. |
| sportsdb_leaguesB | List all sports leagues on TheSportsDB. |
| cat_api_random_imageB | Get a random cat image from The Cat API. |
| cat_api_breedsB | List cat breeds with details from The Cat API. |
| spaceflight_articlesC | Get latest spaceflight news articles. |
| spaceflight_blogsC | Get latest spaceflight blog posts. |
| spaceflight_reportsC | Get latest spaceflight technical reports. |
| archive_searchC | Search the Internet Archive (archive.org) for items. |
| archive_metadataB | Get metadata for an Internet Archive item by identifier. |
| ipify_get_ipB | Get your public IP address via ipify. |
| er_latest_ratesB | Get latest exchange rates from ExchangeRate-API (open endpoint). |
| makeup_searchB | Search makeup products by brand, type, category, or tags. |
| github_emojisA | List all GitHub emojis with their image URLs. |
| met_searchC | Search the Metropolitan Museum of Art collection for artworks. |
| met_objectA | Get full details for a Met Museum artwork by object ID. |
| met_departmentsB | List all departments in the Metropolitan Museum of Art. |
| bacon_ipsumC | Generate meat-themed placeholder text (Bacon Ipsum). |
| placeholder_imageC | Generate a placeholder image URL with custom size, colors, and text. |
| placekitten_imageB | Generate a random kitten placeholder image URL. |
| shibe_random_imageC | Get random Shiba Inu, cat, or bird images. |
| cataas_random_catB | Get a random cat image, optionally with a tag or text overlay. |
| cataas_list_tagsA | List all available cat image tags. |
| punkapi_random_beerA | Get a random craft beer recipe from BrewDog's Punk API. |
| punkapi_search_beersB | Search craft beer recipes by name. |
| punkapi_get_beerA | Get a specific craft beer recipe by ID. |
| colormind_generate_paletteC | Generate an AI-powered 5-color palette using Colormind. |
| colormind_list_modelsB | List available Colormind color models. |
| dummyjson_productsB | Browse fake product data from DummyJSON. |
| dummyjson_search_productsA | Search fake products by keyword. |
| dummyjson_quotesB | Browse a collection of quotes from DummyJSON. |
| dummyjson_random_quoteB | Get a random quote from DummyJSON. |
| excuser_randomA | Get a random excuse, optionally by category. |
| dog_fact_randomA | Get a random dog fact. |
| amiibo_searchB | Search Nintendo Amiibo figures by character name. |
| amiibo_by_seriesC | List Amiibo figures in a game series. |
| amiibo_typesA | List all Amiibo product types (figure, card, yarn, etc.). |
| dummy_image_urlC | Generate a placeholder image URL with custom size, colors, and text. |
| ipinfo_lookupB | Get geolocation and ISP info for an IP address (or your own). |
| ghibli_filmsA | List all Studio Ghibli films with directors and descriptions. |
| ghibli_peopleB | List characters from Studio Ghibli films. |
| final_space_charactersB | List all Final Space characters. |
| final_space_episodesB | List all Final Space episodes. |
| mc_server_statusB | Check the status of a Minecraft server (Java or Bedrock). |
| disney_character_searchC | Search Disney characters by name. |
| disney_all_charactersA | Browse all Disney characters (paginated). |
| hp_all_charactersB | List all Harry Potter characters. |
| hp_studentsB | List Hogwarts students. |
| hp_staffB | List Hogwarts staff. |
| hp_by_houseC | List characters by Hogwarts house. |
| emojihub_randomA | Get a random emoji with name, category, and HTML/Unicode codes. |
| emojihub_by_categoryA | Browse emojis by category (smileys, animals, food, etc.). |
| avatar_urlC | Generate a text-based avatar image URL with initials. |
| robohash_urlB | Generate a unique robot/monster/cat avatar from any text. |
| gutenberg_searchB | Search Project Gutenberg free ebooks by title or author. |
| gutenberg_bookC | Get details for a specific Project Gutenberg book by ID. |
| country_flag_urlA | Get a country flag image URL by ISO 2-letter code. |
| wiktionary_lookupA | Look up a word definition in Wiktionary (multi-language). |
| quran_verseA | Get a specific verse (ayah) from the Quran with English translation. |
| quran_surahC | Get a full surah (chapter) from the Quran. |
| urlhaus_lookup_urlB | Check if a URL is listed as a malware distribution site in the URLhaus database. |
| urlhaus_recentA | Get recent malware URLs added to the URLhaus database. |
| tvmaze_searchC | Search for TV shows by name. |
| tvmaze_showA | Get full details for a TV show by its TVmaze ID. |
| tvmaze_scheduleA | Get the TV schedule for a country and date. |
| freetogame_listA | Browse free-to-play games, optionally filtered by platform or category. |
| freetogame_detailB | Get full details for a specific free-to-play game. |
| cheapshark_dealsB | Search for game deals across multiple stores (Steam, GOG, etc.). |
| cheapshark_storesA | List all game stores tracked by CheapShark. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 1689 tools
The set contains hundreds of near-duplicate tools across competing providers: crypto prices via CoinGecko, Coinlore, CoinCap, CoinMarketCap, Coinpaprika, plus repeated utility pairs like convert_temperature/temperature_convert, base_convert/number_base_convert, gcd_calculate/gcd_lcm_calc, cat_fact/cat_facts, cat_breeds/cat_api_breeds, json_format/json_prettify, statistics_calc/descriptive_stats, text_readability/readability_score. Categories like weather, quotes, jokes, IP geolocation, and exchange rates each have 3-6 overlapping tools an agent cannot reliably choose between. At 1689 tools, an agent has no realistic path to picking the right one.
Many tools follow a provider_prefix_verb convention (tmdb_search_movies, jira_get_issue), but the naming is broadly inconsistent: verb-first without provider (list_calendly_events, get_steam_app_details, create_monday_item), noun-only (is_even, do_account, heartbeat_protocol), and opaque catch-all multiplexers with action parameters (slack_action, notion_action, mastodon_action). Fetch verb varies between get/read/fetch/lookup for identical operations.
1689 tools is an extreme mismatch for any coherent server purpose; even a large aggregator should namespace into separate servers. The count reflects unbounded accretion of integrations rather than a scoped surface, and a large fraction of the tools duplicate each other's function.
Coverage is extraordinarily broad—read paths exist for most public APIs and many SaaS platforms—so few obvious holes remain at the resource-coverage level. However, write/mutation coverage is thin and uneven (many integrations are list/get only: Stripe invoices, Xero, Klaviyo, Brickset), and there are dead ends like the retired fishwatch_species tools and legacy UXPass/FlowPass runners, so lifecycle completeness is inconsistent per domain.