=== MCP Toolbox functional verification log === Date: 2026-07-19 Host: macOS aarch64 Version: 1.7.0+binary.darwin.arm64.fbe2b21 (via pip install toolbox-server) TEST CORPUS: SQLite test.db - table: hotels (id, name, city) - rows: Hilton SF / San Francisco, Marriott NYC / New York, Hyatt LA / Los Angeles === Test 1: pip install toolbox-server === $ pip3 install --quiet toolbox-server Successfully installed toolbox-server-0.18.0 (wraps Go binary v1.7.0) $ toolbox-server --version toolbox version 1.7.0+binary.darwin.arm64.fbe2b21 PASS === Test 2: skills-generate from YAML config === $ toolbox-server skills-generate --config tools-new.yaml \ --name hotel-lookup \ --description "Look up hotels" \ --toolset hotels-set \ --output-dir ./generated-skills INFO "Generating skillagent skills..." INFO "Initialized 2 tools: list-hotels, find-hotel-by-city" INFO "Initialized 2 toolsets: hotels-set, default" INFO "Successfully generated skill 'hotel-lookup' with 2 tools." PASS (3 files: SKILL.md, scripts/list-hotels.js, scripts/find-hotel-by-city.js) === Generated SKILL.md === --- name: hotel-lookup description: Look up hotels in the test database --- ## Usage All scripts can be executed using Node.js. Replace `` and `` with actual values. **Bash:** `node /scripts/.js '{"": ""}'` ## Scripts ### find-hotel-by-city Find hotels by city. #### Parameters | Name | Type | Description | Required | Default | | city | string | The city to filter by. | Yes | | ### list-hotels List all hotels in the database. PASS: valid frontmatter, correct parameter schema table === Test 3: Server starts via HTTP streamable-http transport === $ toolbox-server --config tools-new.yaml --address 127.0.0.1 --port 5099 INFO "Initialized 1 sources: test-sqlite" INFO "Initialized 2 tools: list-hotels, find-hotel-by-city" INFO "Initialized 2 toolsets: default, hotels-set" INFO "Initialized 1 promptsets: default" WARN "wildcard (*) allows any website to access the resources..." INFO "Server ready to serve!" PASS (server listens on localhost:5099) === Test 4: MCP initialize handshake (HTTP transport) === POST /mcp {method:initialize, protocolVersion:2025-03-26} RESPONSE: {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26", "capabilities":{"tools":{"listChanged":false},"prompts":{"listChanged":false}}, "serverInfo":{"name":"Toolbox","version":"1.7.0+binary.darwin.arm64.fbe2b21"}}} PASS (announces MCP 2025-03-26, tools + prompts capabilities) === Test 5: MCP tools/list === RESPONSE: 2 tools - list-hotels (description="List all hotels in the database.", inputSchema: object/empty) - find-hotel-by-city (description="Find hotels by city.", inputSchema: object/properties.city={type:string,...}, required:[city]) annotations: {readOnlyHint:false, destructiveHint:true} PASS (proper JSON Schema, required fields, MCP annotations present) === Test 6: MCP tools/call list-hotels (returns real data) === RESPONSE: 3 content blocks: {"id":1,"name":"Hilton SF","city":"San Francisco"} {"id":2,"name":"Marriott NYC","city":"New York"} {"id":3,"name":"Hyatt LA","city":"Los Angeles"} PASS (real query, real rows, JSON-per-row format) === Test 7: MCP tools/call find-hotel-by-city {city:"New York"} === RESPONSE: 1 content block: {"id":2,"name":"Marriott NYC","city":"New York"} PASS (parameterized ? placeholder binding works, returns filtered row) === Test 8: CLI invoke (no MCP client needed) === $ toolbox-server invoke --config tools-new.yaml find-hotel-by-city '{"city":"San Francisco"}' [ {"id":1,"name":"Hilton SF","city":"San Francisco"} ] PASS === Test 9: Prebuilt sqlite config (no manual YAML) === $ SQLITE_DATABASE=$(pwd)/prebuilt.db toolbox-server --prebuilt sqlite --port 5100 INFO "Using prebuilt tool configurations for: sqlite" WARN "These prebuilt configs are intended for 'build-time' use cases..." INFO "Initialized 1 sources: sqlite-source" INFO "Initialized 2 tools: execute_sql, list_tables" INFO "Initialized 2 toolsets: sqlite_database_tools, default" PASS (zero-config path works, builds warning surfaces) === Test 10: Prebuilt execute_sql === POST tools/call execute_sql {sql:"SELECT * FROM users"} RESPONSE: {"id":1,"email":"alice@example.com"} , {"id":2,"email":"bob@example.com"} PASS === Test 11: Prebuilt list_tables (information schema) === POST tools/call list_tables {output_format:"simple"} RESPONSE: {"object_details":{"name":"users"}} PASS (complex information_schema query template works) === Test 12: MCP stdio transport === $ echo '{...initialize...}' | toolbox-server --config tools-new.yaml --stdio RESPONSE: {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26", "capabilities":{"tools":{"listChanged":false},"prompts":{"listChanged":false}}, "serverInfo":{"name":"Toolbox","version":"1.7.0+binary.darwin.arm64.fbe2b21"}}} PASS (stdio transport works identically to HTTP) === SUMMARY === 12 of 12 functional checks PASS. End-to-end MCP flow verified across: - HTTP streamable-http transport - stdio transport - skills-generate SKILL.md output - prebuilt sqlite config (zero-config path) - custom YAML config (parameterized queries) - CLI invoke (direct tool execution) Real SQLite data returned by every parameterized tool call.