{ "api": { "@context": { "ApiDocumentation": "hydra:ApiDocumentation", "Class": "hydra:Class", "Operation": "hydra:Operation", "Status": "hydra:Status", "SupportedProperty": "hydra:SupportedProperty", "code": "hydra:code", "description": "hydra:description", "entrypoint": { "@id": "hydra:entrypoint", "@type": "@id" }, "expects": { "@id": "hydra:expects", "@type": "@id" }, "hydra": "http://www.w3.org/ns/hydra/core#", "jc": "https://jouleclaw.transaction.science/vocab/v1#", "jc_mutating": { "@id": "jc:mutating", "@type": "xsd:boolean" }, "jc_tool_id": { "@id": "jc:toolId", "@type": "xsd:string" }, "method": "hydra:method", "property": { "@id": "hydra:property", "@type": "@id" }, "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "readable": "hydra:readable", "required": "hydra:required", "returns": { "@id": "hydra:returns", "@type": "@id" }, "statusCodes": { "@id": "hydra:statusCodes" }, "supportedClass": { "@id": "hydra:supportedClass", "@type": "@id" }, "supportedOperation": { "@id": "hydra:supportedOperation", "@type": "@id" }, "supportedProperty": { "@id": "hydra:supportedProperty", "@type": "@id" }, "title": "hydra:title", "writable": "hydra:writable", "xsd": "http://www.w3.org/2001/XMLSchema#" }, "@id": "https://example.com/api", "@type": [ "ApiDocumentation" ], "description": "Cross-language Hydra-client conformance vectors.", "supportedClass": [ { "@id": "_:JouleClawMcpServer", "@type": [ "Class" ], "description": "A JouleClaw tool surface carrying the operations published below.", "supportedOperation": [ { "@id": "_:op_jouleclaw_list_nodes", "@type": [ "Operation" ], "description": "List nodes", "expects": "http://www.w3.org/2002/07/owl#Nothing", "jc_mutating": false, "jc_tool_id": "jouleclaw:list_nodes", "method": "GET", "returns": "https://jouleclaw.transaction.science/vocab/v1#ToolResponse", "statusCodes": [ { "@type": [ "Status" ], "code": 200, "description": "OK" }, { "@type": [ "Status" ], "code": 400, "description": "Bad Request" }, { "@type": [ "Status" ], "code": 500, "description": "Internal Server Error" } ], "title": "jouleclaw:list_nodes" }, { "@id": "_:op_jouleclaw_append_child", "@type": [ "Operation" ], "description": "Mutate node", "expects": "https://example.com/Tool#AppendInput", "jc_mutating": true, "jc_tool_id": "jouleclaw:append_child", "method": "POST", "returns": "https://jouleclaw.transaction.science/vocab/v1#ToolResponse", "statusCodes": [ { "@type": [ "Status" ], "code": 200, "description": "OK" }, { "@type": [ "Status" ], "code": 400, "description": "Bad Request" }, { "@type": [ "Status" ], "code": 500, "description": "Internal Server Error" } ], "title": "jouleclaw:append_child" }, { "@id": "_:op_jouleclaw_noop", "@type": [ "Operation" ], "description": "Parameterless", "expects": "http://www.w3.org/2002/07/owl#Nothing", "jc_mutating": false, "jc_tool_id": "jouleclaw:noop", "method": "GET", "returns": "https://jouleclaw.transaction.science/vocab/v1#ToolResponse", "statusCodes": [ { "@type": [ "Status" ], "code": 200, "description": "OK" }, { "@type": [ "Status" ], "code": 400, "description": "Bad Request" }, { "@type": [ "Status" ], "code": 500, "description": "Internal Server Error" } ], "title": "jouleclaw:noop" } ], "title": "JouleClaw MCP server" } ], "title": "Conformance test" }, "call_reports": [ { "expected": { "body": { "echo": {} }, "input_hash": "6e46dd10defc9b56c29a6ec56b508c21f54c08192194e4df25bf36f0c9c3c279", "output_hash": "77278ccf46f29dfffe609f294474287740eed318bcb9fdf725d828586faae56d", "status": 200, "status_matches_contract": true, "tool_id": "jouleclaw:list_nodes" }, "input": {}, "label": "list_nodes_empty", "operation": "jouleclaw:list_nodes" }, { "expected": { "body": { "echo": { "completed": true } }, "input_hash": "6ddef95fc91972d07cbf56b0bc2ac94d8ef02bae51604822d5c9cc47817cb58d", "output_hash": "307329d2fb010a49e9e6eb8acd7baf8c43d4da471fab8ce4ede73e04db2604f2", "status": 200, "status_matches_contract": true, "tool_id": "jouleclaw:list_nodes" }, "input": { "completed": true }, "label": "list_nodes_with_filter", "operation": "jouleclaw:list_nodes" }, { "expected": { "body": { "echo": { "kind": "blob", "parent": "n1" } }, "input_hash": "baf3081ebc9851a0e3956f18b2ed3897e77631d9db52e40377f6adf2dddc9650", "output_hash": "01a46ba1459176c427124780b57a296b6ae551566703efc01a75e3a090fa21bf", "status": 200, "status_matches_contract": true, "tool_id": "jouleclaw:append_child" }, "input": { "kind": "blob", "parent": "n1" }, "label": "append_child_blob", "operation": "jouleclaw:append_child" }, { "expected": { "body": { "echo": { "kind": "text", "parent": "n2" } }, "input_hash": "ca17ab517b1dc7242c12425156c7abe2fa603336268ccc3ccafb109f6888b5f1", "output_hash": "2d3bcddb5d464cc9b136fe0e2178da564b91d3ec05040511330a058b7ecbe2da", "status": 200, "status_matches_contract": true, "tool_id": "jouleclaw:append_child" }, "input": { "kind": "text", "parent": "n2" }, "label": "append_child_text", "operation": "jouleclaw:append_child" }, { "expected": { "body": { "echo": {} }, "input_hash": "6e46dd10defc9b56c29a6ec56b508c21f54c08192194e4df25bf36f0c9c3c279", "output_hash": "77278ccf46f29dfffe609f294474287740eed318bcb9fdf725d828586faae56d", "status": 200, "status_matches_contract": true, "tool_id": "jouleclaw:noop" }, "input": {}, "label": "noop_parameterless", "operation": "jouleclaw:noop" } ], "schema": "hydra-client/1", "shapes_source": "minimal shapes for https://example.com/Tool#AppendInput; see gen_conformance_vectors.rs for the exact ShapeGraph used.", "spec": "JouleClaw Hydra Client v1 — cross-language conformance vectors", "validation_reports": [ { "expected_conforms": true, "input": { "kind": "blob", "parent": "n1" }, "label": "append_child_valid", "operation": "jouleclaw:append_child" }, { "expected_conforms": false, "input": { "kind": "blob" }, "label": "append_child_missing_field", "operation": "jouleclaw:append_child" }, { "expected_conforms": false, "input": { "kind": "video", "parent": "n" }, "label": "append_child_bad_enum", "operation": "jouleclaw:append_child" }, { "expected_conforms": true, "input": { "random": 1 }, "label": "list_nodes_anything_passes", "operation": "jouleclaw:list_nodes" } ] }