{"serverId":"mcp-registry/co.spark-apps/spark-apps","tools":[{"name":"get_app","fixed":{"name":"get_app","description":"Get one app from the Spark catalogue by its id, with its full description, tags and links. Read-only. If the id is unknown the result lists every valid id, so there is no need to guess twice.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","minLength":1,"description":"The app's catalogue id, e.g. sparkstack or sparkmobile. Lowercase, no spaces."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"list_apps","fixed":{"name":"list_apps","description":"List every app in the Spark catalogue: id, name, tagline, description, tags, homepage and store or repository links. Read-only. Small enough to read in full, so prefer this over search when the question is about the range of apps rather than a specific one.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"list_tags","fixed":{"name":"list_tags","description":"List every tag used across the Spark catalogue with how many apps carry it, most used first. Read-only. Use this before search_apps to pick a tag that actually exists.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":85,"tokensAfter":85},{"name":"search_apps","fixed":{"name":"search_apps","description":"Search the Spark catalogue by keyword across app names, taglines, descriptions and tags, optionally narrowed to a single tag. Read-only. Pass an empty query with a tag to list everything carrying that tag.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"tag":{"type":"string","maxLength":50,"description":"Restrict to one tag, e.g. Next.js or Mobile. Use list_tags to see valid tags."},"query":{"type":"string","maxLength":100,"description":"Words to look for. Matched as a substring; pass an empty string to match all."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":176,"tokensAfter":176}],"toolsChanged":4,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}