{"apiVersion":"v1","directorySlug":"seedfinder-mcp-11c9f75019","title":"Balatro Seed Curator","description":"Describe the Balatro run you want. Seedfinder drafts a safe JAML search plan and hands the grind to your machine.","pageUrl":"https://www.mcpbundles.com/skills/seedfinder-mcp-11c9f75019","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.seedfinder.app/mcp","hostedMcpUrl":null,"toolCount":17,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"app.seedfinder/seedfinder-mcp-11c9f75019","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"show_seedfinder_app","description":"Open the interactive Balatro seed curator: a JAML IDE plus client-side seed search. The user searches IN the app (motely-wasm on their CPU); this server never runs a search. Pass `jaml` to load a filter into the app's editor — this is THE reliable way to put JAML in front of the user.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"jaml":{"type":"string"}}},"title":"Show seedfinder.app","logicalName":"show_seedfinder_app","displayName":"Show seedfinder.app","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"learn_jaml","description":"Returns the JAML filter grammar used for Balatro seed search: clause syntax, the engine's exact PascalCase names for jokers, vouchers, tarots, spectrals, planets, tags and bosses, and worked filters from a 351-entry community corpus. JAML is not YAML: its block form is YAML-compatible and is the only form the engine loads; human one-liners go through compile_jummy. Every key is validated at load. topic=vocabulary returns a full name list for one kind; query=... searches the corpus by free text.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"kind":{"enum":["jokers","legendaryJokers","rareJokers","uncommonJokers","commonJokers","vouchers","tarotCards","spectralCards","planetCards","bosses","tags","decks","stakes","editions","enhancements","seals","stickers"],"type":"string"},"query":{"type":"string"},"topic":{"enum":["overview","jokers","legendaries","consumables","vouchers","tagsAndBosses","events","scoring","keywords","vocabulary","examples"],"type":"string"}}},"title":"Learn JAML","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"learn_jaml","displayName":"Learn JAML"},{"name":"plan_seed_search","description":"Turn a natural-language seed request into a grounded search brief: the FULL real engine vocabulary (jokers, legendaries, vouchers, tarot/spectral/planet cards, bosses, tags) matched to the request, corpus examples to crib from, and a keyword estimate if relevant. YOU (the agent) write the JAML from this brief — do not expect pre-baked JAML back. After writing JAML, validate it by passing it to show_seedfinder_app.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["request"],"properties":{"deck":{"type":"string"},"stake":{"type":"string"},"keyword":{"type":"string"},"padding":{"type":"string"},"request":{"type":"string","minLength":1}}},"title":"Plan a seed search","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"plan_seed_search","displayName":"Plan a seed search"},{"name":"estimate_keyword_search","description":"Estimate the size of an 8-character Balatro seed keyword search before running it.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["keyword"],"properties":{"keyword":{"type":"string","maxLength":8,"minLength":1},"padding":{"type":"string"}}},"title":"Estimate a keyword search","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"estimate_keyword_search","displayName":"Estimate a keyword search"},{"name":"save_filter","description":"Persist a JAML filter to the community library. Returns its jaml://filters/{slug} resource URI and a shareable URL.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","jaml"],"properties":{"deck":{"type":"string"},"jaml":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"notes":{"type":"string"},"stake":{"type":"string"},"authorName":{"type":"string"}}},"title":"Save JAML filter","logicalName":"save_filter","displayName":"Save JAML filter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_filters","description":"Browse the community filter library.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"query":{"type":"string"},"author":{"type":"string"}}},"title":"List JAML filters","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_filters","displayName":"List JAML filters"},{"name":"get_filter","description":"Fetch one saved filter's JAML by slug. Pass the returned jaml to show_seedfinder_app to load it into the app's IDE.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","pattern":"^[a-z0-9-]+$"}}},"title":"Get JAML filter","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_filter","displayName":"Get JAML filter"},{"name":"save_seed","description":"Record a seed the app found (client-side). Stores its score, deck/stake and per-clause tallies.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["seed"],"properties":{"deck":{"type":"string"},"seed":{"type":"string","maxLength":8,"minLength":1},"score":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"stake":{"type":"string"},"tallies":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},{"type":"array","items":{"type":"number"}}]},"filterSlug":{"type":"string","pattern":"^[a-z0-9-]+$"}}},"title":"Save found seed","logicalName":"save_seed","displayName":"Save found seed","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_seeds","description":"Browse found seeds, optionally per filter.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"filterSlug":{"type":"string","pattern":"^[a-z0-9-]+$"}}},"title":"List found seeds","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_seeds","displayName":"List found seeds"},{"name":"validate_jaml","description":"Check a JAML document with the engine's own validator (the same check save_filter runs) and report every problem with its line — unknown keys, misspelled item names with the known values, unterminated arrays, out-of-range antes. Also reports the effective deck/stake and which clause groups are present. Call this before score_seeds, jamlyze_seeds, or show_seedfinder_app whenever the JAML was just written or edited; it is instant.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["jaml"],"properties":{"jaml":{"type":"string","minLength":1}}},"title":"Validate JAML","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"validate_jaml","displayName":"Validate JAML"},{"name":"jamlyze_seeds","description":"Run the Jamlyzer (motely-wasm Analyze.seeds) directly, server-side, on known seeds — no app needed. Pass seeds in the `seeds` argument, or list them in the JAML's own `seeds:` field. For each seed, returns what actually happens per ante under the given JAML: boss blind, voucher, small/big blind tags, and — by default — the shop and pack contents. The full engine dump (every RNG pull stream, shop streams, mid-round events) is ~150 KB per seed; ask for it section by section with `include`, and nar","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["jaml"],"properties":{"jaml":{"type":"string","minLength":1},"antes":{"type":"array","items":{"type":"integer","maximum":39,"minimum":0},"maxItems":40},"seeds":{"type":"array","items":{"type":"string","maxLength":8,"minLength":1},"maxItems":1000},"include":{"type":"array","items":{"enum":["shop","packs","pulls","shopStreams","events","erraticDeck"],"type":"string"}}}},"title":"Jamlyze seeds","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"jamlyze_seeds","displayName":"Jamlyze seeds"},{"name":"score_seeds","description":"Score KNOWN seeds against one JAML filter in list mode (Search.settings(jaml).withSeedList): must clauses gate, should clauses rank. Returns each passing seed with its score and per-should tallies (one integer per should clause, in JAML order), best first; seeds that fail the must gates are listed as `rejected`; inputs that are not seed codes are listed as `invalid` with the reason. Echoes the deck/stake the engine ran with. THE tool for \"take these seeds and rank them by X\" (e.g. gate on Perkeo","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["jaml","seeds"],"properties":{"jaml":{"type":"string","minLength":1},"seeds":{"type":"array","items":{"type":"string","maxLength":8,"minLength":1},"maxItems":1000,"minItems":1}}},"title":"Score seeds against a filter","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"score_seeds","displayName":"Score seeds against a filter"},{"name":"find_similar_seeds","description":"Identify mystery seeds. Match each given seed code against the community filter library plus the built-in 351jamlyze_seeds (max 10000 seeds); pass `query` to focus the corpus scan or `filterSlugs` to include specific saved filters. For finding NEW seeds, use show_seedfinder_app.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["seeds"],"properties":{"query":{"type":"string"},"seeds":{"type":"array","items":{"type":"string","maxLength":8,"minLength":1},"maxItems":10000,"minItems":1},"filterSlugs":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9-]+$"}}}},"title":"Find similar seeds","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_similar_seeds","displayName":"Find similar seeds"},{"name":"compile_jummy","description":"Compile human one-line seed filters (\"JUMMY-prep\") to block-form JAML. This is the ONLY one-liner path: the engine takes block form only (a list item must be a mapping like `- joker: Blueprint`; it no longer parses \"Blueprint in ante 1\" itself), so never send a bare one-liner to validate_jaml or the app — send it here and use the JAML that comes back. One clause per line. Five prepositions, one axis each: in = antes (\"in ante 1 or 2\", \"in antes 1-3\"), from = source stream (\"from shop\", \"from arc","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"deck":{"type":"string"},"name":{"type":"string","maxLength":120},"text":{"type":"string"},"lines":{"type":"array","items":{"type":"string"},"maxItems":64},"stake":{"type":"string"},"strict":{"type":"boolean"}}},"title":"Compile JUMMY one-liners to JAML","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"compile_jummy","displayName":"Compile JUMMY one-liners to JAML"},{"name":"create_search_party","description":"Start an opt-in community Search Party for a JAML filter: the shared fleet (community machines plus donated hardware) grinds the whole keyspace and confirmed finds flow back to everyone. Consent-first — call this only when the user explicitly asks to page the community. It shares only the JAML spec and block ranges (game-only data any peer can reproduce) and validates the JAML before the party starts. Returns a partyId the app polls for live progress.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["jaml"],"properties":{"deck":{"type":"string"},"jaml":{"type":"string","minLength":1},"stake":{"type":"string"},"ttlMinutes":{"type":"integer","maximum":20160,"minimum":1}}},"title":"Create a Search Party","logicalName":"create_search_party","displayName":"Create a Search Party","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_search_party_status","description":"Poll a Search Party's live progress by partyId: blocks done vs total, active workers, and confirmed finds. App-only, so the widget refreshes at zero model-token cost.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["partyId"],"properties":{"partyId":{"type":"string","minLength":1}}},"title":"Search Party status","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_search_party_status","displayName":"Search Party status"},{"name":"cancel_search_party","description":"Wind down a Search Party by its partyId. Workers stop receiving new leases and the party settles into a cancelled state; confirmed finds so far stay available.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["partyId"],"properties":{"partyId":{"type":"string","minLength":1}}},"title":"Cancel a Search Party","logicalName":"cancel_search_party","displayName":"Cancel a Search Party","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Balatro-Seed-Curator&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3Auc2VlZGZpbmRlci5hcHAvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Balatro-Seed-Curator%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.seedfinder.app%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Balatro-Seed-Curator%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.seedfinder.app%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Balatro+Seed+Curator&connectorUrl=https%3A%2F%2Fmcp.seedfinder.app%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Balatro-Seed-Curator\" --url \"https://mcp.seedfinder.app/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/seedfinder-mcp-11c9f75019","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/seedfinder-mcp-11c9f75019/tools/{tool}","mcpServerUrl":"https://mcp.seedfinder.app/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/seedfinder-mcp-11c9f75019?live=1"}