{"serverId":"mcp-registry/io.github.bbcbasic/testgraph","tools":[{"name":"assert_location","fixed":{"name":"assert_location","description":"Add a governed location assertion for an existing eligible subject. Resolve the subject and any existing Place first. New Places require a stable canonical key plus a durable identifier. Every assertion requires source provenance. Coordinates are WGS84 only and are never silently geocoded. WORKFLOW PRECONDITION: for an existing subject, the server checks classification before mutation. The authenticated user may always enrich a subject they own or one attached to their own non-deleted review wit","inputSchema":{"type":"object","required":["subject_id","predicate","source","idempotency_key"],"properties":{"value":{"type":"string"},"source":{"type":"object","additionalProperties":true},"valid_to":{"type":"string","format":"date-time"},"predicate":{"enum":["located_in","contained_in","published_address","postcode","position"],"type":"string"},"qualifiers":{"type":"object","default":{},"additionalProperties":true},"subject_id":{"type":"string","format":"uuid"},"valid_from":{"type":"string","format":"date-time"},"visibility":{"enum":["private","unlisted","public"],"type":"string","default":"private"},"observed_at":{"type":"string","format":"date-time"},"object_place":{"type":"object","properties":{"name":{"type":"string"},"place_kind":{"type":"string"},"subject_id":{"type":"string","format":"uuid"},"identifiers":{"type":"object","additionalProperties":true},"canonical_key":{"type":"string"}},"additionalProperties":false},"idempotency_key":{"type":"string","maxLength":200,"minLength":8}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Assert an evidence-backed location"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: value. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":435,"tokensAfter":439},{"name":"correct_subject_fact","fixed":{"name":"correct_subject_fact","description":"Replace one incorrect identifier or attribute using the stable subject ID. The current value must match expected_value, authoritative evidence and a reason are mandatory, and the server preserves an immutable correction record in subject provenance. Use enrich_subject for missing facts; never use this operation merely to add a value. WORKFLOW PRECONDITION: for an existing subject, the server checks classification before mutation. The authenticated user may always enrich a subject they own or one","inputSchema":{"type":"object","required":["subject_id","field_root","field_path","expected_value","corrected_value","evidence_sources","reason","idempotency_key"],"properties":{"reason":{"type":"string","minLength":1},"field_path":{"type":"string","pattern":"^[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)*$","description":"Dot-separated path below field_root."},"field_root":{"enum":["identifiers","attributes"],"type":"string"},"subject_id":{"type":"string","format":"uuid"},"expected_value":{"type":"string"},"corrected_value":{"type":"string"},"idempotency_key":{"type":"string","maxLength":200,"minLength":8},"evidence_sources":{"type":"array","items":{"type":"string","minLength":1},"maxItems":20,"minItems":1}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":true},"title":"Correct an existing subject fact"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: expected_value, corrected_value. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":350,"tokensAfter":358}],"toolsChanged":2,"tokensSaved":0,"todo":[{"tool":"affirm_subject_classification","params":["reason","evidence","subject_id","evidence_fingerprint"]},{"tool":"assert_location","params":["value","source","valid_to","predicate","qualifiers","subject_id","valid_from","visibility","observed_at","object_place","idempotency_key"]},{"tool":"claim_deliberation","params":["source_model","deliberation_id","idempotency_key"]},{"tool":"correct_subject_fact","params":["reason","field_root","subject_id","expected_value","corrected_value","idempotency_key","evidence_sources"]},{"tool":"create_deliberation","params":["title","context","question","constraints","canonical_key","idempotency_key","acceptance_criteria"]},{"tool":"delete_experience","params":["id","idempotency_key","confirm_deletion","delete_orphan_subject"]},{"tool":"enrich_subject","params":["attributes","provenance","identifiers","source_model","subject_type","canonical_key","idempotency_key"]},{"tool":"fetch","params":["id"]},{"tool":"get_deliberation","params":["id","canonical_key"]},{"tool":"get_location_assertions","params":["subject_id"]},{"tool":"get_subject_classification","params":["subject_id"]},{"tool":"get_subject_type_path","params":["relationship","subject_type"]},{"tool":"list_child_subject_types","params":["limit","cursor","parent","relationship"]},{"tool":"list_my_mcp_interactions","params":["limit"]},{"tool":"list_my_workflows","params":["limit"]},{"tool":"list_open_deliberations","params":["limit","unclaimed_only"]},{"tool":"list_reviews_by_visibility","params":["visibility"]},{"tool":"list_root_subject_types","params":["limit","cursor","relationship"]},{"tool":"propose_subject_reclassification","params":["reason","evidence","subject_id","target_subject_type","evidence_fingerprint"]},{"tool":"record_resolution","params":["rationale","resolution","user_approved","deliberation_id","idempotency_key","unresolved_points","accepted_contribution_ids"]},{"tool":"register_field","params":["aliases","description","json_schema","subject_types","canonical_name"]},{"tool":"register_subject_type_alias","params":["alias","subject_type"]},{"tool":"reopen_subject_classification","params":["reason","trigger","evidence","subject_id","user_approved"]},{"tool":"resolve_location_assertion","params":["decision","rationale","assertion_id","user_approved","idempotency_key"]},{"tool":"resolve_subject","params":["name","limit","subject_type","canonical_key","identifier_key","identifier_value"]},{"tool":"resolve_subject_hierarchy","params":["terms","peer_decisions"]},{"tool":"resolve_subject_type","params":["term"]},{"tool":"retire_type_relationship","params":["reason","source_type","target_type","relationship"]},{"tool":"save_assessment","params":["analysis","evidence","conclusion","confidence","source_model","experience_id","assessment_type","idempotency_key"]},{"tool":"save_experience","params":["summary","headline","raw_text","visibility","identifiers","source_model","subject_name","subject_type","canonical_key","user_approved","experienced_at","idempotency_key","structured_data","subject_attributes","subject_provenance"]},{"tool":"search","params":["limit","query","subject_type","include_related"]},{"tool":"set_review_visibility","params":["visibility","experience_id"]},{"tool":"set_type_relationship","params":["source_type","target_type","relationship","peer_decision"]},{"tool":"submit_contribution","params":["content","evidence","confidence","source_model","deliberation_id","idempotency_key","contribution_type","unresolved_points","responds_to_contribution_ids"]}],"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."}