nexus-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NEXUS_API_KEY | Yes | Personal API key from Nexus Mods | |
| NEXUS_OAUTH_CLIENT_ID | No | OAuth client ID | |
| NEXUS_OAUTH_TOKEN_FILE | No | Token store path, defaults to ~/.nexus-mcp/oauth-tokens.json | |
| NEXUS_OAUTH_REDIRECT_URI | No | OAuth redirect URI, defaults to http://localhost/callback | |
| NEXUS_OAUTH_CLIENT_SECRET | No | Client secret for non-public OAuth apps |
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
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| nexus_validate_keyA | Validate the configured Nexus Mods API key and identify the account. Returns user_id, username, is_premium, is_supporter, email, and profile_url. This endpoint is exempt from hourly rate limits - safe to use to check the key works or to probe remaining quota via the '_rl' rate-limit snapshot. |
| nexus_get_gamesA | List all games on Nexus Mods with their domain_name, mod counts, and file counts. Use this to find the correct lowercase domain_name slug for other tools. Returns: JSON array of games: {id, domain_name, name, genre, mods, file_count, downloads, approved_date, collections}. With '_rl' rate-limit snapshot. |
| nexus_get_gameA | Get details for one game: stats, file counts, download counts, and its file/mod categories. Returns: JSON object with game info including a 'categories' list (category_id, name, parent_category). |
| nexus_get_modA | Get full details for one mod: name, author, version, description, endorsement and download counts, upload dates. Returns: JSON mod info object (mod_id, name, summary, description BBCode, version, author, endorsement_count, mod_downloads, created/updated timestamps, ...). Server-cached 5 minutes. |
| nexus_get_mod_changelogsA | Get the changelog history for one mod. Returns: JSON dict mapping version -> list of HTML changelog strings, e.g. {"1.1": ["Fixed X"], "1.2": ["Added Y"]}. |
| nexus_get_latest_addedA | Get the 10 most recently added mods for a game (array of mod info objects). |
| nexus_get_latest_updatedB | Get the 10 most recently updated mods for a game (array of mod info objects). |
| nexus_get_trendingA | Get the 10 currently trending mods for a game (array of mod info objects). |
| nexus_get_updated_modsA | Get all mods for a game whose files/activity changed within a time window. Returns: JSON array of {mod_id, latest_file_update (epoch), latest_mod_activity (epoch)}. Server-cached 5 minutes. Useful to check if your own mod page saw activity. |
| nexus_get_mod_filesA | List all files attached to a mod, with versions, sizes, upload dates, and update chain. Returns: JSON {files: [...], file_updates: [{old_file_id, new_file_id, ...}]}. File category_id mapping: 1=MAIN, 2=UPDATE, 3=OPTIONAL, 4=OLD_VERSION, 6=DELETED, 7=ARCHIVED. |
| nexus_get_file_infoA | Get details for a single file of a mod: version, size, MD5, virus scan link, changelog. |
| nexus_get_download_linkA | Get a short-lived download URL for a mod file from the Nexus CDN. Premium accounts can omit key/expires. Non-premium accounts MUST extract 'key' and 'expires' from a .nxm download link (nxm://{domain}/mods/{mod}/ files/{file}?key=...&expires=...) generated on the Nexus website. Returns: JSON array of {URI, name, short_name} mirrors - the first entry is the preferred location. Links are short-lived; do not cache them. |
| nexus_download_mod_fileA | Resolve a mod file's CDN link and stream it to a local file. Downloads the actual file behind nexus_get_download_link, saving it to disk with MD5 + SHA-256 checksums (verify MD5 against nexus_get_file_info). Premium accounts can omit key/expires; non-premium accounts MUST pass the key/expires pair from a .nxm download link generated on the Nexus website. Returns: JSON {file, bytes, md5, sha256, mirror, _rl} or an error string. |
| nexus_search_by_md5A | Look up which mod and file on Nexus matches a file's MD5 hash (useful to identify an installed file). Returns: JSON array of {mod: , file_details: }. |
| nexus_get_tracked_modsA | List the mods the authenticated account is tracking. Returns: JSON array of {mod_id, domain_name}. |
| nexus_track_modA | Start tracking a mod for the authenticated account (get update notifications). Returns: JSON {message: "..."}; HTTP 200 = already tracking, 201 = newly tracked. |
| nexus_untrack_modB | Stop tracking a mod for the authenticated account. Returns: JSON {message: "..."}. |
| nexus_get_endorsementsA | List the authenticated account's endorsement history. Returns: JSON array of {mod_id, domain_name, date (epoch), version, status ('Undecided' | 'Abstained' | 'Endorsed')}. |
| nexus_endorse_modA | Endorse a mod on behalf of the authenticated account. Constraints: the account must have downloaded the mod, and Nexus enforces a 15-minute cooldown after the download before endorsing (TOO_SOON_AFTER_DOWNLOAD). Returns: JSON {message: "Updated to: Endorsed", status: "Endorsed"}. |
| nexus_abstain_endorsementA | Withdraw or abstain from an endorsement for a mod. Returns: JSON {message: ..., status: "Abstained"}. |
| nexus_search_modsA | Search Nexus Mods with free text + filters, sorted and paginated. Backed by the v2 GraphQL API (https://api.nexusmods.com/v2/graphql), which does NOT consume the v1 REST rate-limit quota. The v1 REST API has no free-text search, so this is the only way to search by name. Returns: JSON {totalCount, _returned, nodes: [{modId, uid, name, summary, author, version, downloads, endorsements, fileSize, game, modCategory, uploader, pictureUrl, ...}]}. Paginate with offset += _returned until offset >= totalCount. Note: description (full BBCode) is NOT included here - use nexus_get_mod_v2 for full mod details. |
| nexus_get_mod_v2A | Get rich mod details via v2 GraphQL: full description (raw BBCode), tags, requirements, and complete file list - none of which v1 REST exposes. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Returns: JSON {mod: {..., description (BBCode + literal tags - render or strip before display), requirements}, files: [{fileId, name, version, category, sizeInBytes, totalDownloads, date, description}]}. |
| nexus_get_user_v2A | Get a public Nexus Mods user profile by member ID or exact username. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Provide exactly one of member_id or username. Returns: JSON {memberId, name, about, avatar, modCount, joined, kudos, contributedModCount, collectionCount, recognizedAuthor, lastActive, posts}. |
| nexus_search_collectionsA | Search Nexus Mods collections (curated mod packs) with free text. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. v1 REST has no collections search at all. Returns: JSON {totalCount, _returned, nodes: [{slug, name, summary, endorsements, totalDownloads, overallRating, game, user, ...}]}. |
| nexus_graphql_introspectA | Introspect any type in the Nexus v2 GraphQL schema. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Useful for discovering filters, sorts, and fields before composing a query with nexus_graphql_query. Returns: JSON {name, kind, description, fields: [{name, type}], inputFields, enumValues} or null if the type does not exist. |
| nexus_graphql_queryA | Run a raw query against the Nexus v2 GraphQL API (power-user escape hatch). Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Introspect types with nexus_graphql_introspect first to build valid queries. Use for read-only queries; most mutations require OAuth scopes this server does not have and will fail cleanly. Returns: The raw GraphQL 'data' payload as JSON, or 'Error: ...' with the server-side GraphQL error messages. |
| nexus_search_usersA | Search Nexus Mods users by username (v2 GraphQL). Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Unlike nexus_get_user_v2 this supports partial names. Returns: JSON {totalCount, _returned, nodes: [{memberId, name, avatar, modCount, joined, kudos, ...}]}. Paginate with offset += _returned. |
| nexus_search_gamesA | Search Nexus Mods games by name, sorted and paginated (v2 GraphQL). Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Complements nexus_get_games (full cached catalog). Returns: JSON {totalCount, _returned, nodes: [{domainName, name, id, modCount, downloadCount, genre, forumUrl, supportsVortex, approvedAt}]}. |
| nexus_resolve_domainA | Resolve a game display name to its Convenience wrapper for agents: most tools require a lowercase
Backed by the v2 GraphQL API (does not consume the v1 REST quota). Returns:
JSON {totalCount, _returned, nodes: [{domainName, name, id}]} -
best matches first; take |
| nexus_get_game_v2A | Get rich game details via v2 GraphQL: mod/download/collection counts, genre, forum URL, Vortex support. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Returns: JSON game object, or {error: ...} for unknown domains. |
| nexus_get_files_v2A | Get the complete file list of a mod via v2 GraphQL. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Same data as nexus_get_mod_files but from v2 and therefore quota-free on the v1 pool. Returns: JSON {totalFiles, _returned, files: [{fileId, name, version, category, sizeInBytes, totalDownloads, date, description}]}. |
| nexus_get_mods_batchA | Fetch many mods across games in a single v2 GraphQL query. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Batch equivalent of nexus_get_mod - ideal for resolving many mod IDs at once without burning quota. Returns: JSON {totalResolved, _returned, mods: [...same shape as nexus_search_mods nodes...]}. |
| nexus_get_mod_endorsersA | List users who endorsed a mod via v2 GraphQL. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Resolves the mod's uid first (two-step, both cached). Returns: JSON {pageInfo: {endCursor, hasNextPage}, nodes: [{memberId, name, avatar, modCount, kudos, ...}]}. Paginate with after_cursor. |
| nexus_get_newsA | Get Nexus Mods news articles (site news, game news, interviews, ...). Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Filter by category and/or game. Returns: JSON {totalCount, _returned, nodes: [{id, title, summary, author, date, newsCategory, sourceName, sourceUrl, commentsCount, image, games}]}. |
| nexus_get_categoriesA | Get mod categories (per-game or global) via v2 GraphQL. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Provide exactly one of domain_name or is_global. Note: these are collection-style categories (Total Overhaul, Themed, Vanilla Plus, ...) - per-game lists may be sparse for newer games. Returns: JSON list [{id, name, parentId, description, approved, ...}]. |
| nexus_get_tagsA | Get the mod tag taxonomy of a game via v2 GraphQL. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Useful to build tag filters for nexus_search_mods. Returns: JSON list [{id, name, parentId, global, blockable, searchable}]. |
| nexus_get_collectionA | Get full details of a mod collection by slug via v2 GraphQL. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. v1 REST has no collection detail endpoint. Returns: JSON {slug, name, summary, description (BBCode), endorsements, downloads, ratings, game, author, tags, category}. |
| nexus_get_collection_revisionA | Get a specific collection revision (mod count, sizes, status) via v2 GraphQL. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Returns: JSON {id, revisionNumber, revisionStatus, status, adultContent, latest, overallRating, totalDownloads, uniqueDownloads, modCount, totalSize, collection}. |
| nexus_search_commentsA | Search Nexus Mods comments by text or list a thread's comments. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Provide exactly one of term or thread_id. KNOWN ISSUE: Nexus' searchComments endpoint currently returns HTTP 500 for all requests server-side; errors are surfaced as-is until Nexus fixes it. May also require extra permissions for some threads. Returns: JSON {totalCount, timeTaken, nodes: [{id, body, createdAt, likesCount, isPinned, creator}]}. |
| nexus_get_comment_threadA | Get a comment thread with all top-level comments and their replies. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Useful to read replies on threads where nexus_search_comments is unavailable (that endpoint is currently broken upstream). NOTE: only thread IDs returned by the GraphQL API itself resolve (e.g. from nexus_search_mods-related queries or createComment). Thread IDs scraped from mod-page posts-tab HTML do NOT resolve ("not found"). Returns: JSON {id, comments: {totalCount, nodes: [{id, body, createdAt, likesCount, isPinned, creator, replies: {totalCount, nodes}}]}}. |
| nexus_get_commentA | Get a single comment by ID via v2 GraphQL. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Returns: JSON {id, body, createdAt, updatedAt, likesCount, isPinned, creator}. |
| nexus_get_badgesA | List all badges a mod can earn (e.g. 'Top pick', 'Easy install'). Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Static catalog - cache the result in your workflow. Returns: JSON {badges: [{id, name, description}]}. |
| nexus_get_user_monthly_summaryA | List the months a user has a monthly activity report for. Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. Follow up with nexus_get_user_monthly_report (v1) for a specific month's download/upload numbers. Returns: JSON {userId, entries: [{month, year}]}. |
| nexus_track_userA | Start tracking a user (get notifications about their new mods) via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON {trackUser: {success}} or an error string. |
| nexus_untrack_userA | Stop tracking a user via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON {untrackUser: {success}} or an error string. |
| nexus_give_kudosA | Give kudos to a user via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON {giveKudos: {success}} or an error string. |
| nexus_remove_kudosA | Remove previously given kudos from a user via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON {removeKudos: {success}} or an error string. |
| nexus_add_favourite_gameA | Add a game to your favourites via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON {addFavouriteGame: {success}} or an error string. |
| nexus_remove_favourite_gameA | Remove a game from your favourites via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON {removeFavouriteGame: {success}} or an error string. |
| nexus_like_commentA | Like a comment via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON {likeComment: {comment}} or an error string. |
| nexus_remove_comment_likeA | Remove your like from a comment via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON {removeCommentLike: {comment}} or an error string. |
| nexus_create_commentA | Post a comment in a thread via v2 GraphQL — top-level by default, or a nested reply when reply_to_id is given. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Find thread IDs on mod pages (?tab=posts); forum threads and mod posts have distinct thread IDs. Returns: JSON {createComment: {comment: {id, body, ...}}} or an error string. |
| nexus_edit_commentA | Edit the body of your own comment via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Only the comment's author can edit it. Returns: JSON {updateComment: {comment: {id, body, ...}}} or an error string. |
| nexus_discard_commentA | Discard (soft-delete) a comment via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Discarded comments are removed from public view. Only the author (or a moderator) can discard a comment. NOTE: restoring via nexus_restore_comment REQUIRES OAuth Bearer auth - Nexus denies restore under apikey-only auth, so with an API key alone discard is effectively one-way. Returns: JSON {discardComment: {comment: {id, isDiscarded, discardedAt}}} or an error string. |
| nexus_restore_commentA | Restore a previously discarded comment via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Undo for nexus_discard_comment — the comment becomes publicly visible again. REQUIRES OAuth Bearer auth: Nexus denies restore under apikey-only auth even for your own comments. Returns: JSON {restoreComment: {comment: {id, isDiscarded, discardedAt}}} or an error string. |
| nexus_get_files_by_uidA | Get mod file lists by mod UID(s) via v2 GraphQL - no domain/modId pair needed. Ideal when you only have the uid (e.g. from a .nxm link or your own mod pipeline). Backed by the v2 GraphQL API, which does NOT consume the v1 REST rate-limit quota. NOTE: the response does NOT include domainName/modId - resolve the owning game/mod separately (e.g. nexus_search_by_md5) before calling the download tools. Returns: JSON {totalFiles, _returned, files: [{fileId, name, version, category, sizeInBytes, totalDownloads, date, description}]}. |
| nexus_get_favourite_gamesA | Get the authenticated user's favourite games via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON array of games: {id, name, domainName, genre, modCount, collectionCount}. |
| nexus_get_ignored_usersA | Get the current user's ignored (muted) users via v2 GraphQL. Consumes the v2 GraphQL pool, NOT the v1 REST rate-limit quota. Returns: JSON array of users: {memberId, name, avatar, viewerHasIgnored}. |
| nexus_ignore_userA | Ignore (mute) a user via v2 GraphQL - hides their content in your feed. Personal preference only: no public side effect. Reversible with nexus_unignore_user. Provide user_id OR username (at least one). NOTE: applies immediately but list reads (nexus_get_ignored_users) can lag several seconds - wait before re-reading to confirm. Returns: JSON {ignoreUser: {success}} or an error string. |
| nexus_unignore_userA | Stop ignoring (unmute) a user via v2 GraphQL. Personal preference only: no public side effect. Provide user_id OR username (at least one). NOTE: applies immediately but list reads (nexus_get_ignored_users) can lag several seconds - wait before re-reading to confirm. Returns: JSON {unignoreUser: {success}} or an error string. |
| nexus_get_blocked_tagsA | Get the current user's blocked tags via v2 GraphQL. Blocked tags hide matching mods/collections from your searches. Find tag IDs with nexus_get_tags / nexus_search_mods. Returns: JSON array of tags: {id, name, global, blockable, searchable, parentId}. |
| nexus_block_tagA | Block a tag for the current user via v2 GraphQL - hides matching content. Personal preference only: no public side effect. Reversible with nexus_unblock_tag. Only blockable tags can be blocked. NOTE: preference mutations apply immediately but list reads (nexus_get_blocked_tags) can lag several seconds - wait before re-reading to confirm. Returns: JSON {blockTag: {success}} or an error string. |
| nexus_unblock_tagA | Unblock a previously blocked tag via v2 GraphQL. Personal preference only: no public side effect. List reads (nexus_get_blocked_tags) can lag several seconds after this returns success - wait before re-reading to confirm. Returns: JSON {unblockTag: {success}} or an error string. |
| nexus_get_user_by_nameA | Get a user profile by exact username via v2 GraphQL. Unlike nexus_search_users (fuzzy), this resolves one exact username and fails cleanly when nobody has it. Useful to convert a username to a memberId for the user mutation tools. Returns: JSON user object {memberId, name, avatar, modCount, kudos, joined, ...} or {userByName: null} when the username does not exist. |
| nexus_get_user_monthly_reportA | Get the download/upload numbers for ONE specific month via v2 GraphQL. Companion to nexus_get_user_monthly_summary (which lists available months): this fetches the actual per-mod/per-game values for a chosen month. Useful for tracking your own mod's download history. NOTE: Nexus hides this report for privacy-restricted accounts ("UserMonthlyReport was hidden due to permissions") - that is an API-side restriction, not a tool failure. Returns: JSON {userMonthlyReport: {userId, reportType, entries: [{month, year, value, status, ratio, modId, gameId, authorId, ...}]}}. |
| nexus_get_speedtest_urlsA | Get CDN speedtest URLs to diagnose download issues via v2 GraphQL. Handy when downloads feel slow: test latency/throughput against each mirror and compare. Consumes the v2 GraphQL pool. Returns: JSON array of {title, description, location, tag}. |
| nexus_oauth_loginA | Start the OAuth2 authorization-code flow: returns the URL to open in a browser. Uses PKCE S256 + random state (per the official Nexus OAuth guide). After approving, copy the 'code' query parameter from the final redirect URL and pass it to nexus_oauth_exchange. Bearer tokens then take precedence over NEXUS_API_KEY and unlock user-context mutations. Returns: JSON {authorize_url, redirect_uri, state, instructions}. |
| nexus_oauth_exchangeA | Complete the OAuth2 flow: exchange the authorization code for tokens. Exchanges via PKCE code_verifier (+ client_secret when configured), saves tokens to the token file, and validates the identity with the resulting Bearer token. Tokens auto-refresh; any 4xx refresh response is treated as revocation per the official guide. Returns: JSON account summary from nexus_validate_key, or an error string. |
| nexus_oauth_statusA | Report the OAuth login state: configured env vars, token expiry, scope. Never exposes the access token itself - only a prefix and expiry metadata. Returns: JSON {configured, logged_in, expires_at, scope, has_refresh_token, token_file}. |
| nexus_oauth_refreshA | Force a refresh of the OAuth access token via the refresh grant. Use when a request unexpectedly returns 401. A 4xx refresh failure means the user revoked the application (see https://users.nexusmods.com/oauth/authorized_applications) and the stored tokens are cleared - log in again with nexus_oauth_login. Returns: JSON {refreshed, expires_at, scope} or an error string. |
| nexus_oauth_logoutA | Delete stored OAuth tokens and fall back to NEXUS_API_KEY authentication. Removes the local token file. To fully revoke access, also remove the application at https://users.nexusmods.com/oauth/authorized_applications. Returns: JSON {logged_out: true}. |
| nexus_update_mod_direct_downloadA | Enable or disable direct (no-ads) downloads on your own mod via v2 GraphQL. REQUIRES OAuth login (nexus_oauth_login + nexus_oauth_exchange): this user-context mutation is rejected under apikey-only auth even for the mod owner. Useful for mod authors automating release pipelines. Returns: JSON payload from Nexus or an error string. |
| nexus_get_age_verification_infoA | Get a user's age verification status (v2 GraphQL). Returns: JSON {verified, externalVerificationIds: [{createdAt, externalVerificationId}]}. |
| nexus_get_api_applicationsA | List the authenticated account's registered API applications (v2 GraphQL). Returns: JSON list of {active, id, key, name, slug, summary}. |
| nexus_get_category_by_idA | Get a single collection category by ID (v2 GraphQL). Returns: JSON {id, name, description, parentId, approved, createdAt, updatedAt}. |
| nexus_get_collection_gamesA | List games that support collections (v2 GraphQL). Returns: JSON list of {id, name, domainName, modCount, collectionCount}. |
| nexus_get_current_warningsA | Get the current user's unread moderation warnings and global notices (v2 GraphQL). Returns: JSON {unreadWarnings: [{id, category, date, isRead, link, publicReason, reason, postId, removedDate, removedReason}], unreadGlobalNotices: [{content, date}]}. |
| nexus_get_external_videoA | Resolve an external video URL to embed metadata (v2 GraphQL). Returns: JSON {id, title, platform, embedUrl, thumbnailUrl}. |
| nexus_get_file_hashB | Look up which mod file matches an MD5 hash (v2 GraphQL). Returns: JSON list of {md5, fileName, fileType, fileSize, gameId, modFileId, createdAt}. |
| nexus_get_file_hashesA | Look up which mod files match a batch of MD5 hashes (v2 GraphQL). Returns: JSON list of {md5, fileName, fileType, fileSize, gameId, modFileId, createdAt}. |
| nexus_get_game_artworkA | Get the current game artwork schema URLs (v2 GraphQL). Returns: JSON {schemaV1: {tile, tileBlurred}, schemaV2: {hero, thumbnail, tile}}. |
| nexus_get_legacy_modsA | Get mods by (gameId, modId) pairs via the legacy bridge (v2 GraphQL). Returns: JSON {totalCount, _returned, nodes: [mod objects]}. Paginate with offset += _returned. |
| nexus_get_tags_v2B | List tags with optional filters (v2 GraphQL). Returns: JSON list of {id, name, adult, global, taggablesCount, category, games}. |
| nexus_get_tag_categoriesA | List all tag categories with their tags (v2 GraphQL). Returns: JSON list of {id, name, tags: [{id, name, adult}]}. |
| nexus_get_tag_by_idA | Get a single tag by ID (v2 GraphQL). Returns: JSON {id, name, adult, global, taggablesCount, category, games}. |
| nexus_get_tag_category_by_idA | Get a single tag category by ID (v2 GraphQL). Returns: JSON {id, name, tags: [{id, name, adult}]}. |
| nexus_search_mediaA | Search site-wide media (images, supporter images, videos) via v2 GraphQL. NOTE: this endpoint is SERVER-SIDE FLAKY - it intermittently fails with GraphQL "A name ... was not found" errors regardless of filter combination. Identical calls often succeed on retry; just retry. (An adultContent filter was deliberately removed: that filter consistently errors server-side for both True and False.) Returns: JSON {totalCount, _returned, nodes: [...]}. Nodes are a union (Image, SupporterImage, Video) discriminated by __typename. Paginate with offset += _returned. |
| nexus_get_opted_in_modsA | List a user's mods that opted into Donation Points (v2 GraphQL). Returns: JSON {count, userId, user, entries: [{id, gameId, modId, uploaderId, ratio, createdAt}]}. |
| nexus_get_preferencesA | Get the current user's site preferences (v2 GraphQL). Returns: JSON with adult, default tabs/sort/search, download location, reminders, notification and subfeed booleans. Edit with nexus_update_preferences. |
| nexus_get_private_message_urlA | Get the web URL for one of your private messages (v2 GraphQL). Returns: JSON string URL or an error string. |
| nexus_get_transactionsA | Get Donation Points transactions for the current user (v2 GraphQL). NOTE: Nexus hides the data under apikey-only auth ("hidden due to permissions"). Requires OAuth login (nexus_oauth_login + nexus_oauth_exchange); the tool surfaces the error otherwise. Returns: JSON {totalCount, filteredCount, transactions: [{id, type, label, amount, createdAt, creditorEntity, debitorEntity}]}. |
| nexus_get_uploadsA | List mod file uploads with scan status (v2 GraphQL). Returns: JSON {totalCount, filteredCount, uploads: [{id, status, uploadType, md5, sha256, virusTotalStatus, ...}]}. |
| nexus_get_user_donation_preferencesA | Get the current user's Donation Points donation preferences (v2 GraphQL). Returns: JSON {donateStraight, donateProfile, donateAuthorpremium, donateOwnpremium, donatePremiumMax, paypal}. Edit with nexus_update_user_donation_preferences. |
| nexus_get_user_monthly_report_by_idA | Get one monthly Donation Points report by report ID (v2 GraphQL). NOTE: Nexus hides this report for privacy-restricted accounts ("hidden due to permissions") - an API-side restriction, not a tool failure. Returns: JSON {userId, entries: [{reportId, year, month, value, status, ratio, authorId, authorValue, gameId, modId, modCount, modValue, authorCount}]}. |
| nexus_request_media_upload_urlA | Request a presigned URL for uploading media (v2 GraphQL). Returns: JSON {url, uuid}. Upload the file to url, then reference the uuid. |
| nexus_get_collection_revision_upload_urlA | Request a presigned URL for uploading a collection revision bundle (v2 GraphQL). Returns: JSON {url, uuid}. |
| nexus_start_age_verification_flowA | Start the age verification flow for the current user (v2 GraphQL). This is an ACTION, not a read: it initiates a verification session. Returns: JSON {success, message, verificationResult: {id, url}} - open url to verify. |
| nexus_start_age_verification_appeal_flowA | Start the age verification appeal flow for the current user (v2 GraphQL). This is an ACTION, not a read: it initiates an appeal session. Returns: JSON {success, message, verificationResult: {id, url}} - open url to continue. |
| nexus_update_about_meA | Update a user's About Me profile text via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_update_countryA | Update a user's country via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_update_preferencesA | Update the current user's site preferences via v2 GraphQL. Only the provided fields are changed; omitted fields stay as-is. Read current values with nexus_get_preferences. Returns: JSON {success} or an error string. |
| nexus_update_user_donation_preferencesA | Update the current user's Donation Points preferences via v2 GraphQL. Only the provided fields are changed; omitted fields stay as-is. Returns: JSON {success, userDonationPreferences: {...}} or an error string. |
| nexus_create_messageA | Send a private message to one or more users via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_close_collection_bug_reportA | Close a bug report on your collection via v2 GraphQL. Returns: JSON {collectionBugReport: {id, status, closureReason, closedAt}}. |
| nexus_submit_moderation_fixA | Submit a fix for an active moderation on your content (v2 GraphQL). Returns: JSON {success, moderationFix: {id, status, description, createdAt}}. |
| nexus_create_collectionA | Create a new collection and its first draft revision (v2 GraphQL). Either build the payload from the individual params or pass the full CollectionPayload JSON via collection_data_json (shape: {adultContent, collectionManifest: {info: {...}, mods: [...]}, collectionSchemaId}). Returns: JSON {success, collectionId, revisionId} or an error string. |
| nexus_edit_collectionA | Edit a collection's metadata (must own the collection) via v2 GraphQL. Only the provided fields are changed; omitted fields stay as-is. Returns: JSON {success, collection: {id, name, slug}} or an error string. |
| nexus_create_or_update_revisionA | Create a new draft revision or update the existing draft (v2 GraphQL). Pass mods_json (or the full payload via collection_data_json) to replace the revision's mod list; omit mods_json to keep it unchanged. Returns: JSON {success, collectionId, revisionId, revisionNumber} or an error string. |
| nexus_update_revisionA | Update a collection revision's metadata (must own it) via v2 GraphQL. Only the provided fields are changed; omitted fields stay as-is. Returns: JSON {success, revisionId} or an error string. |
| nexus_publish_revisionA | Publish a draft collection revision (must own the collection) via v2 GraphQL. This makes the revision publicly available - hard to undo (use nexus_retract_revision afterwards). Returns: JSON {success} or an error string. |
| nexus_retract_revisionB | Retract a published collection revision (must own it) via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_discard_revisionA | Discard a collection revision (must own the collection) via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_discard_collectionA | Discard (soft-delete) an entire collection (must own it) via v2 GraphQL. DESTRUCTIVE: discards the collection. Prefer nexus_unlist_collection. Returns: JSON {success} or an error string. |
| nexus_list_collectionA | List (publish) a currently unlisted collection (must own it) via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_unlist_collectionA | Unlist a collection (hide from public listings, keep URL) via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_create_changelogA | Create a changelog entry for a collection revision (must own it) via v2 GraphQL. Returns: JSON {success, changelogId} or an error string. |
| nexus_update_changelogA | Update an existing changelog entry (must own it) via v2 GraphQL. Returns: JSON {success, changelogId} or an error string. |
| nexus_create_tagA | Create a new tag (moderator permissions may be required) via v2 GraphQL. Returns: JSON {success, tag: {id, name}} or an error string. |
| nexus_update_tagA | Update an existing tag (moderator permissions may be required) via v2 GraphQL. Only the provided fields are changed; omitted fields stay as-is. Returns: JSON {success, tag: {id, name}} or an error string. |
| nexus_discard_tagA | Discard (soft-delete) a tag (moderator permissions may be required) via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_add_badge_to_collectionA | Award a badge to a collection (moderator permissions required) via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_remove_badge_from_collectionA | Remove a badge from a collection (moderator permissions required) via v2 GraphQL. Returns: JSON {success} or an error string. |
| nexus_reorder_itemA | Reorder reorderable items (collection images/videos) via v2 GraphQL. Requires ownership of the parent collection. Returns: JSON {item: {__typename}} or an error string. |
| nexus_hide_commentA | Hide a comment (moderator permissions required) via v2 GraphQL. Returns: JSON {comment: {id}} or an error string. |
| nexus_lock_commentA | Lock a comment against further interaction (moderator permissions) via v2 GraphQL. Returns: JSON {comment: {id}} or an error string. |
| nexus_lock_comment_threadA | Lock a comment thread (e.g. a mod's comments page) via v2 GraphQL. Requires moderator permissions or thread ownership. Returns: JSON {commentThread: {id, lockedAt}} or an error string. |
| nexus_pin_commentA | Pin a comment to the top of its thread via v2 GraphQL. Requires moderator permissions or thread ownership. Returns: JSON {comment: {id}} or an error string. |
| nexus_unpin_commentA | Unpin a previously pinned comment via v2 GraphQL. Requires moderator permissions or thread ownership. Returns: JSON {comment: {id}} or an error string. |
| nexus_reorder_pinned_commentsA | Reorder pinned comments in a thread via v2 GraphQL. Pass ALL pinned comment IDs of the thread in the desired order. Returns: JSON {comments: [{id}]} in the new order, or an error string. |
| nexus_clear_comment_moderation_statusB | Clear a comment's moderation status (moderator permissions) via v2 GraphQL. Returns: JSON {comment: {id}} or an error string. |
| nexus_clear_comment_thread_moderation_statusA | Clear a comment thread's moderation status (moderator permissions) via v2 GraphQL. Returns: JSON {commentThread: {id}} or an error string. |
| nexus_track_app_metricA | Report an app metric (e.g. a Vortex collection install event) via v2 GraphQL. Returns: JSON {success, errors} or an error string. |
| nexus_block_mods_from_earning_dpA | Block a user's mods from earning Donation Points via v2 GraphQL. Requires moderator permissions when targeting another user. Returns: JSON {success} or an error string. |
| nexus_unblock_mods_from_earning_dpA | Unblock a user's mods from earning Donation Points via v2 GraphQL. Requires moderator permissions when targeting another user. Returns: JSON {success} or an error string. |
| nexus_upload_attachmentA | Upload an attachment (usable in comments) via the v2 GraphQL multipart spec. Accepts base64-encoded content and posts it as an Apollo Upload multipart request. Attachments can then be referenced by id in comment mutations. Returns: JSON {attachment: {id, filename, url}} or an error string. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Talya1412/nexus-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server