{"serverInfo":{"name":"ucord","title":"uCord Discord server directory","version":"1.1.0","websiteUrl":"https://ucord.cc"},"protocolVersion":"2026-07-28","supportedVersions":["2026-07-28","2025-11-25","2025-06-18","2025-03-26"],"transport":{"type":"streamable-http","url":"https://ucord.cc/mcp"},"capabilities":{"tools":{"listChanged":false},"resources":{"listChanged":false,"subscribe":false},"prompts":{"listChanged":false}},"authentication":{"required":false,"schemes":["oauth2","bearer"],"resourceMetadata":"https://ucord.cc/.well-known/oauth-protected-resource","authorizationServers":["https://ucord.cc"],"scopes":["servers:read","servers:write"],"publicTools":["search_servers","list_top_servers","get_server","find_similar_servers","list_tags","list_categories","get_advertising_info","report_problem"],"signInRequiredTools":["get_server_reviews","get_site_stats","list_my_servers","get_listing_stats","update_listing","set_listing_visibility","bump_server","repair_invite"],"apiKeyHeaders":["Authorization: Bearer <key>","X-API-Key: <key>"],"note":"Public tools need no credentials. Every other tool, get_server by vanity code, list_top_servers sorted by newest or bumped, and paging past the anonymous limit need a uCord sign-in (Discord through OAuth 2.1 with PKCE S256) or a uCord API key."},"tools":[{"name":"search_servers","title":"Search Discord servers","description":"Search uCord's directory of Discord servers by free text. Matches server names, vanity links, tags and descriptions, tolerating typos and common abbreviations (mc, rp, gta). Use this when someone asks for a Discord server about a topic.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"What to search for, e.g. \"minecraft survival\" or \"study group\"."},"category":{"type":"string","description":"Optional. Restrict results to one category from list_categories."},"tags":{"type":"array","items":{"type":"string"},"description":"Optional. Restrict to listings carrying any of these tags. More precise than category - see list_tags."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Maximum 25 without signing in, 50 signed in. A larger request is clamped, and limit_applied reports what was used."},"cursor":{"type":"string","description":"Opaque cursor from a previous response's next_cursor. Omit for the first page."},"include_nsfw":{"type":"boolean","default":false}},"required":["query"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"count":{"type":"integer","description":"Rows in this response."},"total":{"type":["integer","null"],"description":"Rows matching the query in total. Compare against count before stating a quantity. Excludes NSFW listings unless include_nsfw was true."},"offset":{"type":"integer"},"limit_applied":{"type":"integer"},"limit_requested":{"type":"integer","description":"Differs from limit_applied when the request exceeded the maximum."},"truncated":{"type":"boolean"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass back as cursor to continue. Null at the end."},"servers":{"type":"array","items":{"type":"object","properties":{"guild_id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"members":{"type":["integer","null"],"description":"Null when uCord has no stored count, which is the common case."},"members_known":{"type":"boolean","description":"False means members is unknown, not zero."},"tags":{"type":"array","items":{"type":"string"}},"nsfw":{"type":"boolean"},"rating":{"type":["number","null"]},"review_count":{"type":"integer"},"last_bumped":{"type":["string","null"],"format":"date-time"},"days_since_bump":{"type":["integer","null"]},"has_description":{"type":"boolean"},"rank_score":{"type":["number","null"],"description":"What ordered this listing under sort \"rank\"."},"first_party":{"type":"boolean","description":"True for uCord's own listing."},"listing_url":{"type":"string","format":"uri"},"vanity_url":{"type":["string","null"],"format":"uri"},"markdown_url":{"type":"string","format":"uri","description":"The same listing as markdown. No Accept header needed."}},"required":["guild_id","name","listing_url"]}},"detail":{"type":"string","enum":["basic","full"],"description":"basic without signing in: name, description, members, tags, links. full when signed in."},"paging_limit":{"type":"integer","description":"Without signing in, how many results paging can reach."},"paging_note":{"type":"string"},"listed_total":{"type":["integer","null"],"description":"Every listed server on uCord, NSFW included - the same figure as \"servers listed\" on ucord.cc. Not filtered by this query."},"nsfw_hidden":{"type":"boolean","description":"True when NSFW listings were excluded from these results (include_nsfw was not true)."},"query":{"type":"string"},"category":{"type":["string","null"]},"tags":{"type":["array","null"],"items":{"type":"string"}},"ordering":{"type":"string","description":"How the results are ordered."},"did_you_mean":{"type":["string","null"],"description":"A corrected spelling of the query, when the query matched nothing or only through a typo."},"suggested_tags":{"type":"array","items":{"type":"string"},"description":"Tags common among the matches, to narrow the search with the tags argument."}},"required":["count","total","truncated","has_more","servers"]},"annotations":{"title":"Search Discord servers","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":false}}},{"name":"list_top_servers","title":"Top Discord servers","description":"Browse listings without a search term, optionally restricted to a category or tags. Ordered by rank (default), member count, rating, newest listed, or most recently bumped. Use this for \"best/biggest/newest Discord servers\" and \"what was bumped lately\" questions.","inputSchema":{"type":"object","properties":{"category":{"type":"string","description":"One of the categories from list_categories."},"tags":{"type":"array","items":{"type":"string"},"description":"Restrict to listings carrying any of these tags. More precise than category - see list_tags."},"sort":{"type":"string","enum":["rank","members","rating","newest","bumped"],"default":"rank","description":"rank: uCord's ranking. members: largest first. rating: best reviewed. newest: most recently listed, and bumped: most recently bumped - these two need a uCord sign-in."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Maximum 25 without signing in, 50 signed in. A larger request is clamped, and limit_applied reports what was used. Use cursor and total to reach the rest; without signing in, paging stops at the first 200 results."},"cursor":{"type":"string","description":"Opaque cursor from a previous response's next_cursor. Omit for the first page."},"include_nsfw":{"type":"boolean","default":false}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"count":{"type":"integer","description":"Rows in this response."},"total":{"type":["integer","null"],"description":"Rows matching the query in total. Compare against count before stating a quantity. Excludes NSFW listings unless include_nsfw was true."},"offset":{"type":"integer"},"limit_applied":{"type":"integer"},"limit_requested":{"type":"integer","description":"Differs from limit_applied when the request exceeded the maximum."},"truncated":{"type":"boolean"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass back as cursor to continue. Null at the end."},"servers":{"type":"array","items":{"type":"object","properties":{"guild_id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"members":{"type":["integer","null"],"description":"Null when uCord has no stored count, which is the common case."},"members_known":{"type":"boolean","description":"False means members is unknown, not zero."},"tags":{"type":"array","items":{"type":"string"}},"nsfw":{"type":"boolean"},"rating":{"type":["number","null"]},"review_count":{"type":"integer"},"last_bumped":{"type":["string","null"],"format":"date-time"},"days_since_bump":{"type":["integer","null"]},"has_description":{"type":"boolean"},"rank_score":{"type":["number","null"],"description":"What ordered this listing under sort \"rank\"."},"first_party":{"type":"boolean","description":"True for uCord's own listing."},"listing_url":{"type":"string","format":"uri"},"vanity_url":{"type":["string","null"],"format":"uri"},"markdown_url":{"type":"string","format":"uri","description":"The same listing as markdown. No Accept header needed."}},"required":["guild_id","name","listing_url"]}},"detail":{"type":"string","enum":["basic","full"],"description":"basic without signing in: name, description, members, tags, links. full when signed in."},"paging_limit":{"type":"integer","description":"Without signing in, how many results paging can reach."},"paging_note":{"type":"string"},"listed_total":{"type":["integer","null"],"description":"Every listed server on uCord, NSFW included - the same figure as \"servers listed\" on ucord.cc. Not filtered by this query."},"nsfw_hidden":{"type":"boolean","description":"True when NSFW listings were excluded from these results (include_nsfw was not true)."},"sort":{"type":"string"},"note":{"type":"string"}},"required":["count","total","truncated","has_more","servers"]},"annotations":{"title":"Top Discord servers","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":false,"requiredFor":"sort newest or bumped"}}},{"name":"get_server","title":"Get one Discord server","description":"Full details for a single listing, by Discord guild ID or by its uCord vanity code. Includes events: the server's upcoming or live Discord scheduled events, as its listing page shows them (empty when it has none, the owner hid them, or uCord has not loaded them yet).","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","description":"Guild ID (a snowflake), public. A vanity code also works with a uCord sign-in."}},"required":["identifier"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"guild_id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"members":{"type":["integer","null"],"description":"Null when uCord has no stored count, which is the common case."},"members_known":{"type":"boolean","description":"False means members is unknown, not zero."},"tags":{"type":"array","items":{"type":"string"}},"nsfw":{"type":"boolean"},"rating":{"type":["number","null"]},"review_count":{"type":"integer"},"last_bumped":{"type":["string","null"],"format":"date-time"},"days_since_bump":{"type":["integer","null"]},"has_description":{"type":"boolean"},"rank_score":{"type":["number","null"],"description":"What ordered this listing under sort \"rank\"."},"first_party":{"type":"boolean","description":"True for uCord's own listing."},"listing_url":{"type":"string","format":"uri"},"vanity_url":{"type":["string","null"],"format":"uri"},"markdown_url":{"type":"string","format":"uri","description":"The same listing as markdown. No Accept header needed."},"long_description":{"type":["string","null"]},"markdown_hint":{"type":"string"},"events":{"type":"array","description":"Upcoming or live Discord scheduled events, soonest first, at most 3 within 30 days. Empty when there are none, the owner hid them, or they have not been loaded yet (try again shortly).","items":{"type":"object","properties":{"id":{"type":["string","null"],"description":"Discord scheduled event ID."},"name":{"type":"string"},"description":{"type":"string","description":"Full event description (Discord allows up to 1000 characters), line breaks kept. Empty string when unset."},"start_time":{"type":"string","format":"date-time","description":"ISO 8601, UTC."},"end_time":{"type":["string","null"],"format":"date-time","description":"ISO 8601, UTC. Null when the event has no set end."},"status":{"type":"string","enum":["upcoming","live"]},"entity_type":{"type":"string","enum":["stage","voice","external"],"description":"Where it happens: a stage or voice channel in the server, or somewhere else (see location)."},"location":{"type":["string","null"],"description":"For external events, where. Null otherwise."},"url":{"type":["string","null"],"format":"uri","description":"The event on discord.com. Opens only for server members; to join, use listing_url."},"interested":{"type":["integer","null"],"description":"People marked interested, as the listing page shows. Null when unknown."}},"required":["name","description","start_time","status","entity_type"]}}},"required":["guild_id","name","listing_url"]},"annotations":{"title":"Get one Discord server","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":false,"requiredFor":"a vanity code identifier"}}},{"name":"find_similar_servers","title":"Find similar servers","description":"Given one server, find others like it: shared tags (rarer shared tags count more), the same category, a similar size and uCord's ranking. The same results, in the same order, as the \"Servers Like This\" block on its listing page. Each result says why it matched (similar_because). Use this when someone says they already like a particular server and want more of the same, or when a first recommendation lands well and they want alternatives. NSFW results need include_nsfw and an NSFW source server.","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","description":"Guild ID or vanity code of the server to find neighbours for."},"limit":{"type":"integer","minimum":1,"maximum":15,"default":5},"cursor":{"type":"string","description":"Opaque cursor from a previous response's next_cursor. Omit for the first page."},"exclude_first_party":{"type":"boolean","default":true,"description":"uCord's own listing is excluded by default."},"include_nsfw":{"type":"boolean","default":false}},"required":["identifier"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"count":{"type":"integer","description":"Rows in this response."},"total":{"type":["integer","null"],"description":"Rows matching the query in total. Compare against count before stating a quantity. Excludes NSFW listings unless include_nsfw was true."},"offset":{"type":"integer"},"limit_applied":{"type":"integer"},"limit_requested":{"type":"integer","description":"Differs from limit_applied when the request exceeded the maximum."},"truncated":{"type":"boolean"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass back as cursor to continue. Null at the end."},"servers":{"type":"array","items":{"type":"object","properties":{"guild_id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"members":{"type":["integer","null"],"description":"Null when uCord has no stored count, which is the common case."},"members_known":{"type":"boolean","description":"False means members is unknown, not zero."},"tags":{"type":"array","items":{"type":"string"}},"nsfw":{"type":"boolean"},"rating":{"type":["number","null"]},"review_count":{"type":"integer"},"last_bumped":{"type":["string","null"],"format":"date-time"},"days_since_bump":{"type":["integer","null"]},"has_description":{"type":"boolean"},"rank_score":{"type":["number","null"],"description":"What ordered this listing under sort \"rank\"."},"first_party":{"type":"boolean","description":"True for uCord's own listing."},"listing_url":{"type":"string","format":"uri"},"vanity_url":{"type":["string","null"],"format":"uri"},"markdown_url":{"type":"string","format":"uri","description":"The same listing as markdown. No Accept header needed."},"similar_because":{"type":["string","null"],"description":"Why this listing matched, e.g. \"shared tags Anime, Manga\". The same line the listing page shows."}},"required":["guild_id","name","listing_url"]}},"detail":{"type":"string","enum":["basic","full"],"description":"basic without signing in: name, description, members, tags, links. full when signed in."},"paging_limit":{"type":"integer","description":"Without signing in, how many results paging can reach."},"paging_note":{"type":"string"},"listed_total":{"type":["integer","null"],"description":"Every listed server on uCord, NSFW included - the same figure as \"servers listed\" on ucord.cc. Not filtered by this query."},"nsfw_hidden":{"type":"boolean","description":"True when NSFW listings were excluded from these results (include_nsfw was not true)."},"source":{"type":"object","properties":{"guild_id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"members":{"type":["integer","null"],"description":"Null when uCord has no stored count, which is the common case."},"members_known":{"type":"boolean","description":"False means members is unknown, not zero."},"tags":{"type":"array","items":{"type":"string"}},"nsfw":{"type":"boolean"},"rating":{"type":["number","null"]},"review_count":{"type":"integer"},"last_bumped":{"type":["string","null"],"format":"date-time"},"days_since_bump":{"type":["integer","null"]},"has_description":{"type":"boolean"},"rank_score":{"type":["number","null"],"description":"What ordered this listing under sort \"rank\"."},"first_party":{"type":"boolean","description":"True for uCord's own listing."},"listing_url":{"type":"string","format":"uri"},"vanity_url":{"type":["string","null"],"format":"uri"},"markdown_url":{"type":"string","format":"uri","description":"The same listing as markdown. No Accept header needed."}},"required":["guild_id","name","listing_url"]},"note":{"type":"string"}},"required":["count","total","truncated","has_more","servers"]},"annotations":{"title":"Find similar servers","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":false}}},{"name":"get_server_reviews","title":"Read reviews for a server","description":"Requires uCord sign-in (servers:read). Recent reviews left by uCord users for one listing, most helpful first. Quote these when they exist - a member count says how big a server is, a review says what it is like. Most listings have none.","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","description":"Guild ID or vanity code."},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5},"cursor":{"type":"string","description":"Opaque cursor from a previous response's next_cursor. Omit for the first page."}},"required":["identifier"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"count":{"type":"integer","description":"Rows in this response."},"total":{"type":["integer","null"],"description":"Rows matching the query in total. Compare against count before stating a quantity. Excludes NSFW listings unless include_nsfw was true."},"offset":{"type":"integer"},"limit_applied":{"type":"integer"},"limit_requested":{"type":"integer","description":"Differs from limit_applied when the request exceeded the maximum."},"truncated":{"type":"boolean"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass back as cursor to continue. Null at the end."},"server":{"type":"object","properties":{"name":{"type":"string"},"listing_url":{"type":"string"}}},"rating":{"type":["number","null"]},"review_count":{"type":"integer"},"reviews":{"type":"array","items":{"type":"object","properties":{"rating":{"type":["integer","null"]},"text":{"type":["string","null"]},"by":{"type":["string","null"]},"helpful_votes":{"type":"integer"},"created":{"type":["string","null"],"format":"date-time"},"owner_reply":{"type":["string","null"]}}}},"note":{"type":"string"}},"required":["count","total","truncated","has_more","review_count","reviews"]},"annotations":{"title":"Read reviews for a server","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":true,"scope":"servers:read"}}},{"name":"list_tags","title":"List tags","description":"Every tag in use, with how many servers carry it, grouped by category. Call this before filtering by tag. Note that the largest tags (Friends, Social, Casual Gaming, Hangout) are catch-alls carried by most listings and filter weakly; smaller tags are far more precise.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"tags":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string"},"servers":{"type":"integer"}}}}}}},"community_tags":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string"},"servers":{"type":"integer"}}}},"note":{"type":"string"}},"required":["categories"]},"annotations":{"title":"List tags","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":false}}},{"name":"list_categories","title":"List categories","description":"The categories servers are grouped under, with per-tag listing counts. Call this first if you need a valid category value. Tags reporting servers: 0 are valid but match nothing - filtering on one returns an empty result.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"servers":{"type":"integer"},"available_tags":{"type":"integer"},"tags":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string"},"servers":{"type":"integer"},"available":{"type":"boolean"}}}}}}},"note":{"type":"string"}},"required":["categories"]},"annotations":{"title":"List categories","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":false}}},{"name":"get_site_stats","title":"uCord directory statistics","description":"Requires uCord sign-in (servers:read). How big uCord is: listed servers, their combined members, vanity links and recent clicks - the same figures ucord.cc shows. Use this rather than adding up category counts or a search total.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"servers":{"type":"integer","description":"Listed servers, NSFW included - \"servers listed\" on ucord.cc."},"members":{"type":"integer","description":"Sum of the listed servers' member counts. A total of memberships, not of people."},"largest_server_members":{"type":"integer"},"links":{"type":"integer","description":"Vanity links claimed, listed or not, excluding banned servers."},"clicks_90_days":{"type":"integer","description":"Vanity link clicks by people over the last 90 days."},"note":{"type":"string"}},"required":["servers","members","links"]},"annotations":{"title":"uCord directory statistics","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":true,"scope":"servers:read"}}},{"name":"get_advertising_info","title":"Advertising on uCord","description":"The public rate card: every ad spot on ucord.cc, where it sits, and its weekly and monthly price. Use this when someone asks how to promote a server or advertise on uCord.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"currency":{"type":"string"},"spots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"size":{"type":"string"},"price_week":{"type":"number"},"price_month":{"type":"number"}}}},"advertise_url":{"type":"string","format":"uri"},"note":{"type":"string"}},"required":["spots","advertise_url"]},"annotations":{"title":"Advertising on uCord","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":false}}},{"name":"list_my_servers","title":"List my servers","description":"Requires uCord sign-in (servers:read). Every server you manage in Discord that has a uCord listing, with its status: public, hidden, hidden_invite (unlisted because its invite died), hidden_bot_left, or banned. Start here before changing a listing.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"count":{"type":"integer"},"servers":{"type":"array","items":{"type":"object","properties":{"guild_id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["public","hidden","hidden_invite","hidden_bot_left","banned"]},"vanity_url":{"type":["string","null"]},"listing_url":{"type":"string"},"discord_invite_url":{"type":["string","null"],"description":"Your server's Discord invite. Only ever returned to its verified manager; never share it in place of vanity_url."},"invite_ok":{"type":"boolean"},"nsfw":{"type":"boolean"},"last_bumped":{"type":["string","null"]},"total_bumps":{"type":"integer"},"rating":{"type":["number","null"]},"review_count":{"type":"integer"}}}},"discord_list_stale":{"type":"boolean","description":"True when Discord could not be asked just now and the list is from your last sign-in."}},"required":["count","servers"]},"annotations":{"title":"List my servers","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":true,"scope":"servers:read"}}},{"name":"get_listing_stats","title":"Listing statistics","description":"Requires uCord sign-in (servers:read). Views, vanity-link clicks, joins, conversion and top referrers for one of your listings, against the previous period of the same length. daily_30d always holds the last 30 whole UTC days (today so far included) day by day, with totals and percent change against the 30 days before: the same figures as the chart on the owner dashboard.","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","description":"Guild ID or vanity code of a server you manage."},"range_days":{"type":"integer","enum":[7,30,90],"default":30}},"required":["identifier"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"guild_id":{"type":"string"},"range_days":{"type":"integer"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"totals":{"type":"object"},"previous":{"type":"object"},"deltas":{"type":"object"},"referrers":{"type":"array"},"countries":{"type":"array"},"devices":{"type":"array"},"daily_30d":{"type":["object","null"],"description":"Last 30 UTC days, one row per day (0 where nothing happened). Null if it could not be read just now.","properties":{"period":{"type":"object"},"previous_period":{"type":"object"},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"views":{"type":"integer"},"clicks":{"type":"integer"},"joins":{"type":"integer"}}}},"totals":{"type":"object"},"previous":{"type":"object"},"change_pct":{"type":"object"},"unavailable":{"type":"array","items":{"type":"string"}}}}},"required":["guild_id","range_days","totals"]},"annotations":{"title":"Listing statistics","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":true,"scope":"servers:read"}}},{"name":"update_listing","title":"Edit my listing","description":"Requires uCord sign-in (servers:write). Change any of the fields given; fields you leave out are untouched. The same rules as the edit page apply. Renaming vanity_code frees the old code immediately, with no redirect.","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","description":"Guild ID or vanity code of a server you manage."},"description":{"type":"string","minLength":20,"maxLength":300,"description":"The short description shown on cards and link previews (20-300 characters)."},"long_description":{"type":"string","maxLength":5000,"description":"The listing page text (50-5000 characters for a public listing)."},"tags":{"type":"array","items":{"type":"string"},"maxItems":5,"description":"Up to 5 tags. Replaces the current tags. Prefer tags from list_tags; your own are allowed (letters, numbers, spaces and & - +, at most 20 characters) and a spelling of an existing tag is saved as that tag."},"links":{"type":"array","maxItems":10,"items":{"type":"object","properties":{"kind":{"type":"string"},"url":{"type":"string"}},"required":["url"]},"description":"Links shown on the listing (website, socials). No Discord invites. [] clears them."},"nsfw":{"type":"boolean"},"embed_color":{"type":"string","description":"Hex colour such as #5865F2."},"vanity_code":{"type":"string","maxLength":32,"description":"New vanity code: letters, numbers, - and _, at least one letter."}},"required":["identifier"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"guild_id":{"type":"string"},"updated":{"type":"array","items":{"type":"string"}},"listing_url":{"type":"string"},"vanity_url":{"type":["string","null"]}},"required":["guild_id","updated"]},"annotations":{"title":"Edit my listing","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":true,"scope":"servers:write"}}},{"name":"set_listing_visibility","title":"Show or hide my listing","description":"Requires uCord sign-in (servers:write). public: true puts a finished listing in the directory (it needs descriptions and a vanity code; the error says what is missing). public: false takes it out; the vanity link keeps working.","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","description":"Guild ID or vanity code of a server you manage."},"public":{"type":"boolean","description":"true to list it in the directory, false to hide it."}},"required":["identifier","public"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"guild_id":{"type":"string"},"public":{"type":"boolean"},"changed":{"type":"boolean"},"listing_url":{"type":"string"}},"required":["guild_id","public","changed"]},"annotations":{"title":"Show or hide my listing","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":true,"scope":"servers:write"}}},{"name":"bump_server","title":"Bump my server","description":"Requires uCord sign-in (servers:write). Bump a public listing to the top of the directory, under the same cooldown as /bump in Discord. A cooldown answers BUMP_COOLDOWN with retry_after_seconds.","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","description":"Guild ID or vanity code of a server you manage."}},"required":["identifier"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"guild_id":{"type":"string"},"bumped_at":{"type":"string","format":"date-time"},"next_bump_at":{"type":"string","format":"date-time"},"total_bumps":{"type":"integer"},"streak":{"type":"integer"}},"required":["guild_id","bumped_at","next_bump_at"]},"annotations":{"title":"Bump my server","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":true,"scope":"servers:write"}}},{"name":"repair_invite","title":"Repair my invite","description":"Requires uCord sign-in (servers:write). Check the listing's Discord invite and repair it if it is dead: the server's vanity URL, an existing or new permanent invite, or the server widget. A listing hidden for a dead invite is listed again when this succeeds.","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","description":"Guild ID or vanity code of a server you manage."}},"required":["identifier"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"guild_id":{"type":"string"},"valid":{"type":"boolean","description":"Whether the listing now has a working invite."},"source":{"type":["string","null"],"description":"Where the working invite came from: stored, vanity, existing, create, any or widget."},"discord_invite_url":{"type":["string","null"],"description":"The working invite, for you as the server's manager. Share vanity_url instead."},"temporary":{"type":"boolean","description":"True for a widget invite, which expires within a day; add the uCord bot or a permanent invite."},"changed":{"type":"boolean"},"relisted":{"type":"boolean"},"note":{"type":"string"}},"required":["guild_id","valid"]},"annotations":{"title":"Repair my invite","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":true,"scope":"servers:write"}}},{"name":"report_problem","title":"Report a problem to uCord","description":"Tell uCord that something did not work. Call this after a tool returns an error, after a search returns nothing useful, or when you needed a capability this server does not have. Describe what the person was trying to accomplish rather than restating the error - the error is already in our logs, but what you were trying to do is not. Reports are read by the uCord team; nothing is returned to you beyond an acknowledgement.","inputSchema":{"type":"object","properties":{"intent":{"type":"string","description":"Required. What you were trying to accomplish, in plain language. For example: \"user asked for AI/ML servers, filtered on the AI tag, got zero results\"."},"server":{"type":"string","maxLength":100,"description":"The server the problem is about, if any: guild ID or vanity code. Use this to report a broken listing."},"tool_name":{"type":"string","description":"The tool involved, if any."},"arguments":{"type":"object","description":"The arguments you passed, if relevant."},"error_code":{"type":"string","description":"The error code you received, if any."},"outcome":{"type":"string","enum":["error","empty_result","unexpected_result","missing_capability"],"description":"empty_result and missing_capability matter as much as error - a query that succeeds and returns nothing useful is a gap in the directory, and gaps are what this tool is uniquely able to find."},"notes":{"type":"string","description":"Anything else worth knowing. 500 characters maximum."}},"required":["intent"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"accepted":{"type":"boolean"},"duplicate":{"type":"boolean","description":"True when you already sent this report recently; it was not sent again."},"message":{"type":"string"}},"required":["accepted"]},"annotations":{"title":"Report a problem to uCord","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"cc.ucord/auth":{"required":false}}}],"documentation":"https://ucord.cc/api/docs","privacyPolicy":"https://ucord.cc/privacy","termsOfService":"https://ucord.cc/terms"}