{"serverId":"mcp-registry/ai.rootdata/public-directory","tools":[{"name":"compare_dsos","fixed":{"name":"compare_dsos","description":"Compare two Root Data public DSO directory profiles by slug using public profile summaries, regions, websites, and public signal counts.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["dso_slug1","dso_slug2"],"properties":{"dso_slug1":{"type":"string","maxLength":160,"minLength":1},"dso_slug2":{"type":"string","maxLength":160,"minLength":1}}},"annotations":{"readOnlyHint":true},"title":"Compare DSOs"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"get_dso_profile","fixed":{"name":"get_dso_profile","description":"Get one public Root Data DSO directory profile by slug. Returns public website, region, profile URL, summary, and public signals.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","maxLength":160,"minLength":1}}},"annotations":{"readOnlyHint":true},"title":"Get DSO Profile"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"get_practice_profile","fixed":{"name":"get_practice_profile","description":"Get one published public dental practice directory profile by slug. Returns public website, locations, services, rating summary, and profile URL.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","maxLength":180,"minLength":1}}},"annotations":{"readOnlyHint":true},"title":"Get Practice Profile"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"list_top_dsos","fixed":{"name":"list_top_dsos","description":"List public DSO directory profiles ranked by public size, locations, or growth signals inferred from public profile text. Results are directional, not a private operating benchmark.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["by"],"properties":{"by":{"enum":["size","locations","growth"],"type":"string"},"limit":{"type":"integer","maximum":25,"minimum":1}}},"annotations":{"readOnlyHint":true},"title":"List Top DSOs"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":126,"tokensAfter":126},{"name":"search_blog_articles","fixed":{"name":"search_blog_articles","description":"Search published Root Data blog articles by title, slug, excerpt, category, tag, or SEO summary. Supports DSO-only, practice-only, both-audience, or all articles.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":25,"minimum":1},"query":{"type":"string","maxLength":160},"audience":{"enum":["dso","practice","both","all"],"type":"string"}}},"annotations":{"readOnlyHint":true},"title":"Search Blog Articles"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":131,"tokensAfter":131},{"name":"search_dsos","fixed":{"name":"search_dsos","description":"Search Root Data's public DSO directory by organization name, slug, website, summary, or public website signals. Returns public directory data only.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":25,"minimum":1},"query":{"type":"string","maxLength":120}}},"annotations":{"readOnlyHint":true},"title":"Search DSOs"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":106,"tokensAfter":106},{"name":"search_practices","fixed":{"name":"search_practices","description":"Search Root Data's public dental practice directory. Supports query, service, location, city, state, minimum Google reviews, minimum star rating, and sorting by Google review count or rating. Returns published public listings only. All parameters are optional.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"city":{"type":"string","maxLength":80},"limit":{"type":"integer","maximum":25,"minimum":1},"query":{"type":"string","maxLength":120},"stars":{"type":"number","maximum":5,"minimum":0},"state":{"type":"string","maxLength":40},"sortBy":{"enum":["default","name","google_reviews","google_rating"],"type":"string"},"reviews":{"type":"integer","maximum":100000,"minimum":0},"service":{"type":"string","maxLength":100},"location":{"type":"string","maxLength":120}}},"annotations":{"readOnlyHint":true},"title":"Search Dental Practices"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240}],"toolsChanged":7,"tokensSaved":0,"todo":[{"tool":"compare_dsos","params":["dso_slug1","dso_slug2"]},{"tool":"get_dso_profile","params":["slug"]},{"tool":"get_practice_profile","params":["slug"]},{"tool":"list_top_dsos","params":["by","limit"]},{"tool":"root_data_faq","params":["limit","query"]},{"tool":"search_blog_articles","params":["limit","query","audience"]},{"tool":"search_dsos","params":["limit","query"]},{"tool":"search_practices","params":["city","limit","query","stars","state","sortBy","reviews","service","location"]}],"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."}