INNER CODE UNIT · Rust
build_tool_arguments
modelcontextprotocol/rust-sdk · conformance/src/bin/client.rs:881
fn build_tool_arguments(tool: &Tool) -> Option<serde_json::Map<String, Value>> {
let schema = &tool.input_schema;
let properties = schema.get("properties").and_then(|p| p.as_object());
let required = schema
.get("required")
.and_then(|r| r.as_array())
.map(|arr| {
arr.iter()
.filter_map(|v| v.as_str().map(String::from))
.collect::<Vec<_>>()
})
.unwrap_or_default();
let properties = properties?;
if properties.is_empty() && required.is_empty() {
return None;
}