{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_vtrwxgafza89","handle":"testgraph","url":"https://wellknown.network/agents/testgraph","links":{"self":"https://wellknown.network/agents/testgraph/record.json","html":"https://wellknown.network/agents/testgraph","markdown":"https://wellknown.network/agents/testgraph/record.md","api":"https://wellknown.network/api/v1/agents/testgraph","status":"https://wellknown.network/api/v1/agents/testgraph/status","claim":"https://wellknown.network/agents/testgraph/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/testgraph/claim.json","badge":"https://wellknown.network/agents/testgraph/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/testgraph/history","tools":"https://wellknown.network/api/v1/agents/testgraph/tools"},"ard":{"identifier":"urn:air:testgraph.21dle.co.uk:server:testgraph","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"TestGraph","summary":"Shared semantic graph for AI reviews, classification and structured memory across AI assistants.","description":"Shared semantic graph for AI reviews, classification and structured memory across AI assistants.","publisher":{"name":"BBCBasic","url":null},"homepage":null,"repository":"https://github.com/BBCBasic/TestGraph","version":"0.1.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://testgraph.21dle.co.uk/mcp-v2","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-23T16:39:36.748258Z","publishedAt":"2026-08-23T16:39:36.748258Z","registryName":"io.github.BBCBasic/testgraph"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"code.review","name":"Code Review","confidence":0.885,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.554,"provenance":"derived"},{"slug":"research.people-companies","name":"People & Company Research","confidence":0.554,"provenance":"derived"},{"slug":"code.refactoring","name":"Refactoring","confidence":0.54,"provenance":"derived"},{"slug":"code.debugging","name":"Debugging","confidence":0.54,"provenance":"derived"},{"slug":"knowledge.reasoning","name":"Reasoning & Planning","confidence":0.54,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.525,"provenance":"derived"}],"categories":["code","dev","knowledge","research","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-10T00:28:14.459Z","lastProbedAt":"2026-10-10T00:28:14.459Z","statusComputedAt":"2026-10-10T00:29:54.287Z","reliability30d":{"probes":108,"successRate":1,"p50Ms":157,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":108,"ok":108,"authBoundaryOk":0,"serviceOk":108,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T00:28:14.459Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":159,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T17:29:00.656Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":152,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T11:26:29.122Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":152,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T05:25:20.658Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":151,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T22:23:52.609Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":153,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T15:22:29.949Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":157,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T08:29:47.409Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":175,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T02:21:17.694Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":182,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T19:23:42.202Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":172,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T12:30:20.104Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":175,"error":null,"detail":{"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"toolCount":37,"toolsHash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","serverName":"TasteGraph v2","capabilities":["tools"],"serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18"}}],"tools":[{"name":"set_review_visibility","description":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibi"},{"name":"list_reviews_by_visibility","description":"List the authenticated user's reviews in one visibility state and return stable experience IDs plus 1-based positions for conversational shorthand. Positions ar"},{"name":"list_my_mcp_interactions","description":"List the authenticated user's structured, redacted MCP interaction telemetry. This returns tool/outcome/workflow metadata and redacted summaries, not raw conver"},{"name":"list_my_workflows","description":"List durable server-owned workflow state for the authenticated TestGraph user. Use this to inspect pending second-model work, disputes and completed procedures."},{"name":"get_induction","description":"Call this when first using TestGraph, after an MCP refresh, or when you need the current shared operating guidance. It returns the server baseline plus only use"},{"name":"get_server_info","description":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or depl"},{"name":"search","description":"Search reviews plus matching reviewed or unreviewed subjects. Search is lexical rather than semantic: for an ordinary question try one discriminating keyword at"},{"name":"fetch","description":"Fetch a complete review with its stable subject type, original words and AI assessments."},{"name":"vocabulary_index","description":"Administrative and debugging export of every canonical subject type, alias, relationship and reusable field. Normal AI classification and retrieval must use the"},{"name":"list_root_subject_types","description":"Start bounded vocabulary traversal here when a direct type lookup is insufficient. Returns only root types, with aliases and immediate child counts, in determin"},{"name":"list_child_subject_types","description":"Continue bounded vocabulary traversal through one candidate branch. Returns only the immediate active children of the resolved parent, never the complete descen"},{"name":"get_subject_type_path","description":"Return the active root-to-type path, immediate parents and compact local type details for one canonical name or alias. Legacy multiple-parent data returns every"},{"name":"resolve_subject_type","description":"Resolve flexible input to one stable subject-type ID. Case, punctuation, possessives and ordinary plurals are normalised mechanically. Equivalent aliases are va"},{"name":"resolve_subject","description":"Look up a reviewed or unreviewed subject before declaring a new one. Match by stable type, canonical key, name or an authoritative identifier such as a canonica"},{"name":"get_subject_classification","description":"Read the current classification state and its decision audit. Confirmed classifications are locked and must not be routinely reassessed."},{"name":"affirm_subject_classification","description":"Review the subject's creation proposal and submit evidence-backed agreement with its existing provisional type. Agreement from a different authenticated client "},{"name":"propose_subject_reclassification","description":"Review the subject's creation proposal and submit an evidence-backed refinement to a strict descendant type. A different authenticated client's disagreement ope"},{"name":"reopen_subject_classification","description":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreemen"},{"name":"resolve_subject_hierarchy","description":"Use only after bounded root/child traversal provides enough evidence that the specific subject type does not yet exist. Submit the verified existing path plus g"},{"name":"register_subject_type_alias","description":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equival"},{"name":"set_type_relationship","description":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_"},{"name":"retire_type_relationship","description":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI"},{"name":"register_field","description":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an exist"},{"name":"enrich_subject","description":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specifi"},{"name":"save_experience","description":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources "},{"name":"delete_experience","description":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another "},{"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 "},{"name":"create_deliberation","description":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve i"},{"name":"get_deliberation","description":"Retrieve the question, constraints, attributed contributions, unresolved points and any user-approved resolution by UUID or stable canonical_key. Treat stored t"},{"name":"list_open_deliberations","description":"List this user's open deliberations so an authenticated AI can discover work without being handed a UUID or canonical key. Use target_model to find work address"},{"name":"claim_deliberation","description":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIM"},{"name":"submit_contribution","description":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reas"},{"name":"record_resolution","description":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and require"},{"name":"save_assessment","description":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurre"},{"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 "},{"name":"get_location_assertions","description":"Return all visible location assertions for one subject, including provenance, conflict state, Place identity and legacy-field migration drift."},{"name":"resolve_location_assertion","description":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval."}],"package":null,"toolSurface":{"id":"ts_2uanqqtr4fy8","endpointId":"ep_uefurvkeetr5","hash":"5ac32fae6aaa26cb59cb097d602f2341b2e2dde8d5c1bba7327f812bc8e98d8e","toolCount":37,"serverName":"TasteGraph v2","serverVersion":"3.24.0-alpha","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-20T09:28:59.916Z","lastSeenAt":"2026-10-10T00:28:14.468Z","observations":72,"toolNames":["set_review_visibility","list_reviews_by_visibility","list_my_mcp_interactions","list_my_workflows","get_induction","get_server_info","search","fetch","vocabulary_index","list_root_subject_types","list_child_subject_types","get_subject_type_path","resolve_subject_type","resolve_subject","get_subject_classification","affirm_subject_classification","propose_subject_reclassification","reopen_subject_classification","resolve_subject_hierarchy","register_subject_type_alias","set_type_relationship","retire_type_relationship","register_field","enrich_subject","save_experience","delete_experience","correct_subject_fact","create_deliberation","get_deliberation","list_open_deliberations","claim_deliberation","submit_contribution","record_resolution","save_assessment","assert_location","get_location_assertions","resolve_location_assertion"],"distinctSurfaces":6},"endpointFacts":[{"id":"ep_uefurvkeetr5","url":"https://testgraph.21dle.co.uk/mcp-v2","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T05:25:20.680Z","auth":{"observedAt":"2026-10-09T05:25:21.058Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://testgraph.21dle.co.uk/.well-known/oauth-protected-resource/mcp-v2","resource":"https://testgraph.21dle.co.uk/mcp-v2","authorizationServers":["https://testgraph.21dle.co.uk"],"scopesSupported":["reviews:read","reviews:write"]},"authorizationServer":{"url":"https://testgraph.21dle.co.uk/.well-known/oauth-authorization-server","issuer":"https://testgraph.21dle.co.uk","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-09T05:25:22.005Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"testgraph.21dle.co.uk","issuer":{"commonName":"YR1","organization":"Let's Encrypt"},"validFrom":"2026-08-23T07:02:13.000Z","validTo":"2026-11-21T07:02:12.000Z","daysToExpiry":42,"sanCount":1,"fingerprint256":"68:A8:B4:A8:A4:31:E7:78:04:9F:F7:04:B6:3F:B0:8F:E6:88:A9:0C:0A:00:8E:3B:0D:F4:60:A1:AE:26:29:1B"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.BBCBasic/testgraph","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.BBCBasic%2Ftestgraph","firstSeenAt":"2026-09-06T01:18:20.841Z","fetchedAt":"2026-10-09T17:20:33.148Z","normalizedAt":"2026-10-09T17:20:33.148Z"}]},"firstSeenAt":"2026-09-06T01:18:20.841Z","updatedAt":"2026-10-10T00:30:48.874Z"}