{"serverId":"mcp-registry/com.myprivacyagent/public","tools":[{"name":"get_case_status","fixed":{"name":"get_case_status","description":"Requires OAuth and the 'share_results' permission. Returns one case by case_id with its current status, verification status, and any step only the person can do.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["case_id"],"properties":{"case_id":{"type":"string","maxLength":200,"minLength":1}}},"annotations":{"readOnlyHint":true},"title":"Read one removal case"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":109,"tokensAfter":109},{"name":"get_library_verification_status","fixed":{"name":"get_library_verification_status","description":"Read the actual catalog size, distinct route variants, current verified counts, checks captured today and the latest scheduled sweep. Counts include only native evidence that is still current; inventory rows, aliases and agent callbacks never count as verified.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}},"annotations":{"readOnlyHint":true},"title":"Read current library coverage"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"get_my_report","fixed":{"name":"get_my_report","description":"Requires OAuth and the 'share_results' permission for the subject. Returns the report summary the dashboard shows: status, counts, and per-site findings (site, status, what it exposes, guide link). No listing URLs or observed values are included. Returns authorization_required with a connect URL when the permission is missing.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"subject_id":{"type":"string","maxLength":200,"minLength":1}}},"annotations":{"readOnlyHint":true},"title":"Read my exposure report"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":149,"tokensAfter":149},{"name":"get_opt_out_instructions","fixed":{"name":"get_opt_out_instructions","description":"The complete free website guide: direct answer, steps, troubleshooting, FAQs, official sources and content review date, plus separate current native verification. Retired sites return what-to-do-now guidance without historical actionable forms. Accepts a slug (spokeo), domain, name, alias, or URL. No login or personal lookup.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["broker"],"properties":{"broker":{"type":"string","maxLength":120,"minLength":1,"description":"Public site name, guide slug, domain, alias, broker URL, or canonical myprivacyagent.com/remove/<slug> URL. Never a person's details."}}},"annotations":{"readOnlyHint":true},"title":"Get opt-out instructions for a site"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":198,"tokensAfter":198},{"name":"get_removal_route","fixed":{"name":"get_removal_route","description":"For any of the 950+ sites in the takedown registry: the documented removal method (form, email, both, guide, or none), the opt-out URL and privacy email on record, the parent company that actually processes the request, sibling sites one request may cover, and a link to our step-by-step guide when one exists. Accepts a domain or a URL.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["domain"],"properties":{"domain":{"type":"string","maxLength":300,"minLength":3,"description":"Domain or URL on the site, e.g. spokeo.com or https://www.spokeo.com/..."}}},"annotations":{"readOnlyHint":true},"title":"Get the documented removal route for a site"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":182,"tokensAfter":182},{"name":"get_route_verification","fixed":{"name":"get_route_verification","description":"Read the exact official route variants for a domain or route ID, current independently checked scope, actor and region, capture time, expiry and failures. No badge means the route is not currently verified. This never starts a check or submits a request.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["route"],"properties":{"route":{"type":"string","maxLength":160,"minLength":1,"description":"Exact route ID, domain, or published guide slug."}}},"annotations":{"readOnlyHint":true},"title":"Read current independent route checks"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"get_service_overview","fixed":{"name":"get_service_overview","description":"The public service description: scope of these tools, the private handoff pages (free check, review a listing, pricing), the rules assistants must follow, and registry statistics. Call this once before recommending the service.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}},"annotations":{"readOnlyHint":true},"title":"How to hand a person to My Privacy Agent"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":106,"tokensAfter":106},{"name":"list_my_cases","fixed":{"name":"list_my_cases","description":"Requires OAuth and the 'share_results' permission. Lists removal cases (site, action, status, verification status, steps only the person can do, dates). Status words mean different things: filed, pending, needs review, verified removed. Never collapse them.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"subject_id":{"type":"string","maxLength":200,"minLength":1}}},"annotations":{"readOnlyHint":true},"title":"List my removal cases"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"list_my_subjects","fixed":{"name":"list_my_subjects","description":"Requires OAuth. Lists the person (first name, city, state, verification status) whose exposure this account has checked, with the subject_id other personal tools need. Returns authorization_required with a connect URL when the token is missing.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}},"annotations":{"readOnlyHint":true},"title":"List the subjects on my account"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"list_opt_out_guides","fixed":{"name":"list_opt_out_guides","description":"Summaries of every curated website guide and retired-site explanation, without duplicates. Includes kind, domain, category, documented method and content review date. Undocumented facts are null. Supports paging; call get_opt_out_instructions directly when you already know the site.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"offset":{"type":"integer","maximum":9007199254740991,"minimum":0},"category":{"enum":["people_search","background_check","public_records","marketing_data","risk_data","contact_cleanup"],"type":"string"}}},"annotations":{"readOnlyHint":true},"title":"List available opt-out guides"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"request_recheck","fixed":{"name":"request_recheck","description":"Requires OAuth and the 'run_check' permission. Queues a fresh check of the person's existing details (the same re-scan Patrol runs monthly). Patrol plan only, verified subjects only, once per 24 hours; it never starts a first check and never takes new details. Returns queued, or a structured reason (not_allowed with retry_after, entitlement_required with pricing_url, unavailable, error). Purchases happen on the website only.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"subject_id":{"type":"string","maxLength":200,"minLength":1}}},"annotations":{"readOnlyHint":true},"title":"Re-check my exposure now"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":177,"tokensAfter":177},{"name":"search_privacy_library","fixed":{"name":"search_privacy_library","description":"Search My Privacy Agent's published articles, opt-out guides, help answers, and plan facts. Returns ranked hits with canonical URLs to cite. Use it before answering questions about data brokers, opt-outs, relisting, pricing, or what the service does and does not do.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["query"],"properties":{"limit":{"type":"integer","maximum":20,"minimum":1},"query":{"type":"string","maxLength":200,"minLength":2}}},"annotations":{"readOnlyHint":true},"title":"Search the public privacy library"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"submit_approved_plan","fixed":{"name":"submit_approved_plan","description":"Requires OAuth and the 'submit_requests' permission. Without confirm: true it only previews which eligible listings would be queued (status preview) — show that list to the person and get a yes first. With confirm: true it queues removal requests for exactly those listings, using the approval the person already gave on the website and their paid plan. It cannot approve listings, pick new sites, or buy anything: approval_required and entitlement_required send the person to the website. A request ","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"confirm":{"type":"boolean","description":"true only after the person has seen the preview and said yes."},"subject_id":{"type":"string","maxLength":200,"minLength":1}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Queue the removal requests the person already approved"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":228,"tokensAfter":228}],"toolsChanged":13,"tokensSaved":0,"todo":[{"tool":"get_case_status","params":["case_id"]},{"tool":"get_my_report","params":["subject_id"]},{"tool":"list_my_cases","params":["subject_id"]},{"tool":"list_opt_out_guides","params":["limit","offset","category"]},{"tool":"request_recheck","params":["subject_id"]},{"tool":"search_privacy_library","params":["limit","query"]},{"tool":"submit_approved_plan","params":["subject_id"]}],"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."}