{"apiVersion":"v1","directorySlug":"setupchess-mcp-248083816d","title":"SetupChess","description":"SetupChess is a directory of chess websites, apps, and tools: engines, training apps, and opening explorers, searchable in one place beyond the big platforms.","pageUrl":"https://www.mcpbundles.com/skills/setupchess-mcp-248083816d","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://www.setupchess.com/mcp","hostedMcpUrl":null,"toolCount":8,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.setupchess/setupchess-mcp-248083816d","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"find_entry_by_url","description":"Look up a directory entry by its exact URL. Returns the entry if it already exists, empty if not. Call this first when given a URL to avoid duplicates.","inputSchema":{"type":"object","required":["input"],"properties":{"sort":{"type":"array","items":{"type":"object","required":["field","direction"],"properties":{"field":{"enum":["id","name","slug","brief","bio","bio_html","url","note","public_status","editors_pick","parent_id","logo_id"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"}}}},"input":{"type":"object","required":["url"],"properties":{"url":{"type":"string"}}},"limit":{"type":"integer","default":25},"filter":{"type":"object"},"offset":{"type":"integer","default":0},"result_type":{"oneOf":[{"enum":["run_query","count","exists"]},{"properties":{"field":{"enum":["id","name","slug","brief","bio","bio_html","url","note","public_status","editors_pick","parent_id","logo_id"],"type":"string"},"aggregate":{"enum":["max","min","sum","avg","count"],"type":"string"}}}],"default":"run_query"}}},"logicalName":"find_entry_by_url","displayName":"find_entry_by_url","title":"find_entry_by_url","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_entries","description":"List and search directory entries. Filter by any public attribute (name, url, slug, brief). Use to check for duplicates or browse existing content. Offset-paginated: pass limit/offset plus sort: [{field, direction}] to page through results in order. Use result_type: \"count\" first to confirm the total row count before assuming a sweep is complete.","inputSchema":{"type":"object","required":[],"properties":{"sort":{"type":"array","items":{"type":"object","required":["field","direction"],"properties":{"field":{"enum":["id","name","slug","brief","bio","bio_html","url","note","public_status","editors_pick","parent_id","logo_id"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"}}}},"limit":{"type":"integer","default":25},"filter":{"type":"object"},"offset":{"type":"integer","default":0},"result_type":{"oneOf":[{"enum":["run_query","count","exists"]},{"properties":{"field":{"enum":["id","name","slug","brief","bio","bio_html","url","note","public_status","editors_pick","parent_id","logo_id"],"type":"string"},"aggregate":{"enum":["max","min","sum","avg","count"],"type":"string"}}}],"default":"run_query"}}},"logicalName":"list_entries","displayName":"list_entries","title":"list_entries","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_entries","description":"Closest-match text search across entry name (prefix), brief, and bio (stemmed) using BM25 relevance scoring — unlike list_entries' exact attribute filters, this tolerates partial/inexact input. Pass query (min 2 chars) and optionally limit (default 8). Results are ordered by relevance; use this before create_entry to check whether something similar already exists under a different name/slug.","inputSchema":{"type":"object","required":["input"],"properties":{"sort":{"type":"array","items":{"type":"object","required":["field","direction"],"properties":{"field":{"enum":["id","name","slug","brief","bio","bio_html","url","note","public_status","editors_pick","parent_id","logo_id"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"}}}},"input":{"type":"object","required":[],"properties":{"limit":{"type":"integer"},"query":{"type":"string"}}},"limit":{"type":"integer","default":24},"filter":{"type":"object"},"offset":{"type":"integer","default":0},"result_type":{"oneOf":[{"enum":["run_query","count","exists"]},{"properties":{"field":{"enum":["id","name","slug","brief","bio","bio_html","url","note","public_status","editors_pick","parent_id","logo_id"],"type":"string"},"aggregate":{"enum":["max","min","sum","avg","count"],"type":"string"}}}],"default":"run_query"}}},"logicalName":"search_entries","displayName":"search_entries","title":"search_entries","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_similar_entries","description":"Find entries semantically similar via vector embeddings (name+brief+bio) — complements search_entries' keyword matching with meaning-based matching. Costs a real OpenAI embedding API call in query mode, so don't run it reflexively alongside search_entries: use it as the fallback check when find_entry_by_url and search_entries turned up nothing, or when picking alternative_ids for an entry that already exists (entry_id mode reuses its stored embedding, no extra call). Provide exactly one of: quer","inputSchema":{"type":"object","required":["input"],"properties":{"sort":{"type":"array","items":{"type":"object","required":["field","direction"],"properties":{"field":{"enum":["id","name","slug","brief","bio","bio_html","url","note","public_status","editors_pick","parent_id","logo_id"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"}}}},"input":{"type":"object","required":[],"properties":{"limit":{"type":"integer"},"query":{"type":"string"},"entry_id":{"type":"integer"},"max_distance":{"type":"number","format":"float"}}},"limit":{"type":"integer","default":10},"filter":{"type":"object"},"offset":{"type":"integer","default":0},"result_type":{"oneOf":[{"enum":["run_query","count","exists"]},{"properties":{"field":{"enum":["id","name","slug","brief","bio","bio_html","url","note","public_status","editors_pick","parent_id","logo_id"],"type":"string"},"aggregate":{"enum":["max","min","sum","avg","count"],"type":"string"}}}],"default":"run_query"}}},"logicalName":"find_similar_entries","displayName":"find_similar_entries","title":"find_similar_entries","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_tags","description":"List all available tags with their IDs, names, and slugs. Always call this before create_entry to find the right tag_ids. Offset-paginated: pass limit/offset plus sort: [{field, direction}].","inputSchema":{"type":"object","required":[],"properties":{"sort":{"type":"array","items":{"type":"object","required":["field","direction"],"properties":{"field":{"enum":["id","name","slug","brief","icon","color","note","public_status","entries_count"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"}}}},"limit":{"type":"integer","default":25},"filter":{"type":"object"},"offset":{"type":"integer","default":0},"result_type":{"oneOf":[{"enum":["run_query","count","exists"]},{"properties":{"field":{"enum":["id","name","slug","brief","icon","color","note","public_status","entries_count"],"type":"string"},"aggregate":{"enum":["max","min","sum","avg","count"],"type":"string"}}}],"default":"run_query"}}},"logicalName":"list_tags","displayName":"list_tags","title":"list_tags","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_tags","description":"Closest-match text search across tag name (prefix) and brief (stemmed) using BM25 relevance scoring — unlike list_tags' exact attribute filters, this tolerates partial/inexact input. Pass query (min 2 chars) and optionally limit (default 8). Use this before create_tag to check whether a similar tag already exists under a different name/slug.","inputSchema":{"type":"object","required":["input"],"properties":{"sort":{"type":"array","items":{"type":"object","required":["field","direction"],"properties":{"field":{"enum":["id","name","slug","brief","icon","color","note","public_status","entries_count"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"}}}},"input":{"type":"object","required":[],"properties":{"limit":{"type":"integer"},"query":{"type":"string"}}},"limit":{"type":"integer","default":24},"filter":{"type":"object"},"offset":{"type":"integer","default":0},"result_type":{"oneOf":[{"enum":["run_query","count","exists"]},{"properties":{"field":{"enum":["id","name","slug","brief","icon","color","note","public_status","entries_count"],"type":"string"},"aggregate":{"enum":["max","min","sum","avg","count"],"type":"string"}}}],"default":"run_query"}}},"logicalName":"search_tags","displayName":"search_tags","title":"search_tags","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_tag_by_slug","description":"Look up a tag by its exact slug (kebab-case, e.g. 'opening-prep'). Returns the tag if it exists, empty if not. Call this to check for duplicates before creating a new tag.","inputSchema":{"type":"object","required":["input"],"properties":{"sort":{"type":"array","items":{"type":"object","required":["field","direction"],"properties":{"field":{"enum":["id","name","slug","brief","icon","color","note","public_status","entries_count"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"}}}},"input":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"}}},"limit":{"type":"integer","default":25},"filter":{"type":"object"},"offset":{"type":"integer","default":0},"result_type":{"oneOf":[{"enum":["run_query","count","exists"]},{"properties":{"field":{"enum":["id","name","slug","brief","icon","color","note","public_status","entries_count"],"type":"string"},"aggregate":{"enum":["max","min","sum","avg","count"],"type":"string"}}}],"default":"run_query"}}},"logicalName":"find_tag_by_slug","displayName":"find_tag_by_slug","title":"find_tag_by_slug","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_submissions","description":"List and filter submitted feedback (tool submissions, edit suggestions, and contact messages). Offset-paginated: pass limit/offset plus sort: [{field, direction}]. Filter by kind (:tool_submission, :edit_suggestion, :contact) or read_at (nil means unread). For :tool_submission, check the submitted name/URL against the directory before calling create_entry — find_entry_by_url then search_entries first (both free), and only fall back to find_similar_entries (costs a real API call) if those two fin","inputSchema":{"type":"object","required":[],"properties":{"sort":{"type":"array","items":{"type":"object","required":["field","direction"],"properties":{"field":{"enum":["id","kind","links","email","message","note","read_at","entry_id"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"}}}},"limit":{"type":"integer","default":25},"filter":{"type":"object"},"offset":{"type":"integer","default":0},"result_type":{"oneOf":[{"enum":["run_query","count","exists"]},{"properties":{"field":{"enum":["id","kind","links","email","message","note","read_at","entry_id"],"type":"string"},"aggregate":{"enum":["max","min","sum","avg","count"],"type":"string"}}}],"default":"run_query"}}},"logicalName":"list_submissions","displayName":"list_submissions","title":"list_submissions","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=SetupChess&config=eyJ1cmwiOiAiaHR0cHM6Ly93d3cuc2V0dXBjaGVzcy5jb20vbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22SetupChess%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwww.setupchess.com%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22SetupChess%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwww.setupchess.com%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=SetupChess&connectorUrl=https%3A%2F%2Fwww.setupchess.com%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"SetupChess\" --url \"https://www.setupchess.com/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/setupchess-mcp-248083816d","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/setupchess-mcp-248083816d/tools/{tool}","mcpServerUrl":"https://www.setupchess.com/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/setupchess-mcp-248083816d?live=1"}