[INFO] fetching crate turul-mcp-server 0.4.4...
[INFO] testing turul-mcp-server-0.4.4 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate turul-mcp-server 0.4.4 into /workspace/builds/worker-1-tc1/source
[INFO] started tweaking crates.io crate turul-mcp-server 0.4.4
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate turul-mcp-server 0.4.4
[INFO] tweaked toml for crates.io crate turul-mcp-server 0.4.4 written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate turul-mcp-server 0.4.4 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate turul-mcp-server 0.4.4 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded turul-rpc-jsonrpc v0.2.3
[INFO] [stderr]   Downloaded turul-rpc-server v0.2.3
[INFO] [stderr]   Downloaded turul-mcp-task-storage v0.4.0
[INFO] [stderr]   Downloaded turul-rpc v0.2.3
[INFO] [stderr]   Downloaded turul-rpc-core v0.2.3
[INFO] [stderr]   Downloaded turul-mcp-json-rpc-server v0.3.47
[INFO] [stderr]   Downloaded turul-rpc-server v0.1.0
[INFO] [stderr]   Downloaded turul-rpc-core v0.1.0
[INFO] [stderr]   Downloaded turul-rpc-jsonrpc v0.1.0
[INFO] [stderr]   Downloaded turul-mcp-protocol v0.4.0
[INFO] [stderr]   Downloaded turul-rpc v0.1.0
[INFO] [stderr]   Downloaded rustls-webpki v0.103.14
[INFO] [stderr]   Downloaded turul-mcp-protocol-2025-11-25 v0.3.47
[INFO] [stderr]   Downloaded turul-mcp-protocol-2026-07-28 v0.4.0
[INFO] [stderr]   Downloaded whoami v2.1.3
[INFO] [stderr]   Downloaded aws-types v1.5.0
[INFO] [stderr]   Downloaded regex-lite v0.1.9
[INFO] [stderr]   Downloaded aws-smithy-types v1.6.2
[INFO] [stderr]   Downloaded base64-simd v0.8.0
[INFO] [stderr]   Downloaded aws-smithy-observability v0.3.0
[INFO] [stderr]   Downloaded bytes-utils v0.1.4
[INFO] [stderr]   Downloaded aws-smithy-runtime-api-macros v1.1.0
[INFO] [stderr]   Downloaded aws-smithy-async v1.3.0
[INFO] [stderr]   Downloaded aws-credential-types v1.3.0
[INFO] [stderr]   Downloaded aws-smithy-runtime v1.13.1
[INFO] [stderr]   Downloaded aws-smithy-schema v0.2.0
[INFO] [stderr]   Downloaded aws-smithy-runtime-api v1.14.0
[INFO] [stderr]   Downloaded aws-smithy-http-client v1.3.0
[INFO] [stderr]   Downloaded rustls-webpki v0.101.7
[INFO] [stderr]   Downloaded aws-sdk-dynamodb v1.120.0
[INFO] [stderr]   Downloaded rustls v0.21.12
[INFO] [stderr]   Downloaded hdrhistogram v7.6.0
[INFO] [stderr]   Downloaded hyper-rustls v0.24.2
[INFO] [stderr]   Downloaded tokio-rustls v0.24.1
[INFO] [stderr]   Downloaded aws-smithy-http v0.64.0
[INFO] [stderr]   Downloaded aws-smithy-json v0.63.0
[INFO] [stderr]   Downloaded aws-sigv4 v1.5.1
[INFO] [stderr]   Downloaded xmlparser v0.13.6
[INFO] [stderr]   Downloaded aws-smithy-query v0.62.0
[INFO] [stderr]   Downloaded aws-runtime v1.9.1
[INFO] [stderr]   Downloaded aws-smithy-xml v0.62.0
[INFO] [stderr]   Downloaded aws-sdk-sts v1.110.0
[INFO] [stderr]   Downloaded aws-config v1.10.1
[INFO] [stderr]   Downloaded turul-mcp-server-state-storage v0.4.0
[INFO] [stderr]   Downloaded turul-mcp-session-storage v0.4.0
[INFO] [stderr]   Downloaded aws-sdk-sso v1.105.0
[INFO] [stderr]   Downloaded aws-sdk-ssooidc v1.107.0
[INFO] [stderr]   Downloaded micromap v0.3.0
[INFO] [stderr]   Downloaded turul-mcp-schema-validation v0.4.0
[INFO] [stderr]   Downloaded referencing v0.49.9
[INFO] [stderr]   Downloaded jsonschema v0.49.9
[INFO] [stderr]   Downloaded libsqlite3-sys v0.37.0
[INFO] [stderr]   Downloaded jsonschema-value v0.49.9
[INFO] [stderr]   Downloaded turul-mcp-oauth v0.4.0
[INFO] [stderr]   Downloaded jsonschema-regex v0.49.9
[INFO] [stderr]   Downloaded fancy-regex v0.19.0
[INFO] [stderr]   Downloaded turul-jwt-validator v0.3.2
[INFO] [stderr]   Downloaded simple_asn1 v0.6.4
[INFO] [stderr]   Downloaded jsonwebtoken v11.0.0
[INFO] [stderr]   Downloaded turul-mcp-builders v0.4.0
[INFO] [stderr]   Downloaded turul-mcp-ext-tasks v0.1.3
[INFO] [stderr]   Downloaded turul-http-mcp-server v0.4.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea
[INFO] running `Command { std: "docker" "start" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling futures-io v0.3.34
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling cc v1.4.3
[INFO] [stderr]    Compiling zerocopy v0.8.56
[INFO] [stderr]    Compiling num-integer v0.1.47
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling aws-lc-rs v1.18.0
[INFO] [stderr]    Compiling base16ct v0.2.0
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling ff v0.13.1
[INFO] [stderr]    Compiling hdrhistogram v7.6.0
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling group v0.13.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling num-iter v0.1.46
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling uuid v1.24.0
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling micromap v0.3.0
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling sec1 v0.7.3
[INFO] [stderr]    Compiling crypto-bigint v0.5.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling jsonschema-regex v0.49.9
[INFO] [stderr]    Compiling data-encoding v2.11.1
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling rfc6979 v0.4.0
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling aws-lc-sys v0.44.0
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling time v0.3.55
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling fraction v0.15.4
[INFO] [stderr]    Compiling elliptic-curve v0.13.8
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling primeorder v0.13.6
[INFO] [stderr]    Compiling ecdsa v0.16.9
[INFO] [stderr]    Compiling p384 v0.13.1
[INFO] [stderr]    Compiling p256 v0.13.2
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling fancy-regex v0.19.0
[INFO] [stderr]    Compiling serde_derive_internals v0.30.0
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling futures-macro v0.3.34
[INFO] [stderr]    Compiling zerovec-derive v0.11.4
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ref-cast-impl v1.0.26
[INFO] [stderr]    Compiling zerotrie v0.2.5
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling schemars_derive v1.2.2
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling ref-cast v1.0.26
[INFO] [stderr]    Compiling zerovec v0.11.7
[INFO] [stderr]    Compiling rand v0.8.7
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling tinystr v0.8.4
[INFO] [stderr]    Compiling potential_utf v0.1.6
[INFO] [stderr]    Compiling icu_collections v2.3.0
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling icu_locale_core v2.3.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling icu_provider v2.3.0
[INFO] [stderr]    Compiling rsa v0.9.10
[INFO] [stderr]    Compiling icu_properties v2.3.0
[INFO] [stderr]    Compiling icu_normalizer v2.3.0
[INFO] [stderr]    Compiling turul-rpc-core v0.2.3
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling fluent-uri v0.4.1
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling jsonschema-value v0.49.9
[INFO] [stderr]    Compiling email_address v0.2.9
[INFO] [stderr]    Compiling turul-rpc-jsonrpc v0.2.3
[INFO] [stderr]    Compiling jsonwebtoken v11.0.0
[INFO] [stderr]    Compiling schemars v1.2.2
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling futures-executor v0.3.34
[INFO] [stderr]    Compiling futures v0.3.34
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling turul-rpc-server v0.2.3
[INFO] [stderr]    Compiling referencing v0.49.9
[INFO] [stderr]    Compiling turul-rpc v0.2.3
[INFO] [stderr]    Compiling turul-mcp-protocol-2026-07-28 v0.4.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling jsonschema v0.49.9
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling h2 v0.4.15
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling turul-mcp-protocol v0.4.0
[INFO] [stderr]    Compiling turul-mcp-session-storage v0.4.0
[INFO] [stderr]    Compiling turul-mcp-builders v0.4.0
[INFO] [stderr]    Compiling rustls v0.23.43
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling turul-mcp-schema-validation v0.4.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.14
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling turul-http-mcp-server v0.4.1
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.13.4
[INFO] [stderr]    Compiling turul-jwt-validator v0.3.2
[INFO] [stderr]    Compiling turul-mcp-oauth v0.4.0
[INFO] [stderr]    Compiling turul-mcp-server v0.4.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 37s
[INFO] running `Command { std: "docker" "inspect" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling turul-mcp-session-storage v0.4.0
[INFO] [stderr]    Compiling h2 v0.4.15
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling turul-http-mcp-server v0.4.1
[INFO] [stderr]    Compiling reqwest v0.13.4
[INFO] [stderr]    Compiling turul-jwt-validator v0.3.2
[INFO] [stderr]    Compiling turul-mcp-oauth v0.4.0
[INFO] [stderr]    Compiling turul-mcp-server v0.4.4 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/wire_edges_2026.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 14 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 14 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/subscriptions_listen_2026.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 22 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 22 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/subscriptions_listen_2026.rs:27:3
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[tool(name = "echo", description = "Echo back the provided message", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `param` in this scope
[INFO] [stdout]   --> tests/subscriptions_listen_2026.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 |     #[param(description = "Message to echo back")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/subscriptions_listen_2026.rs:43:3
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[tool(name = "emit_changes", description = "Broadcast change notifications", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/origin_validation_2026.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 17 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 17 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/wire_edges_2026.rs:18:3
[INFO] [stdout]    |
[INFO] [stdout] 18 | #[tool(name = "alpha_tool", description = "First tool", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/wire_edges_2026.rs:27:3
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[tool(name = "beta_tool", description = "Second tool", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/wire_edges_2026.rs:36:3
[INFO] [stdout]    |
[INFO] [stdout] 36 | #[tool(name = "gamma_tool", description = "Third tool", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/stateless_2026_http_surface.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 16 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 16 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/progress_2026.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 17 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 17 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/error_mapping_2026.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 29 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 29 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/streaming_e2e_2026.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 24 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 24 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/schema_fidelity_2026.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 16 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 16 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/error_mapping_2026.rs:34:3
[INFO] [stdout]    |
[INFO] [stdout] 34 | #[tool(name = "echo", description = "Echo back the provided message", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/notifications_2026.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 15 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 15 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `param` in this scope
[INFO] [stdout]   --> tests/error_mapping_2026.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 |     #[param(description = "Message to echo back")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/error_mapping_2026.rs:57:3
[INFO] [stdout]    |
[INFO] [stdout] 57 | #[tool(
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `param` in this scope
[INFO] [stdout]   --> tests/error_mapping_2026.rs:66:7
[INFO] [stdout]    |
[INFO] [stdout] 66 |     #[param(description = "Ignored")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/notifications_2026.rs:19:3
[INFO] [stdout]    |
[INFO] [stdout] 19 | #[tool(name = "echo", description = "Echo back the provided message", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `param` in this scope
[INFO] [stdout]   --> tests/notifications_2026.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 |     #[param(description = "Message to echo back")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/origin_validation_2026.rs:21:3
[INFO] [stdout]    |
[INFO] [stdout] 21 | #[tool(name = "echo", description = "Echo", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/tool_icons_2026.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use turul_mcp_derive::{McpTool, mcp_tool};
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 17 - use turul_mcp_derive::{McpTool, mcp_tool};
[INFO] [stdout] 17 + use turul_mcp_server::{McpTool, mcp_tool};
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/subscriptions_listen_2026.rs:117:15
[INFO] [stdout]     |
[INFO] [stdout] 117 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/subscriptions_listen_2026.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | struct EchoTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EmitChangesTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/subscriptions_listen_2026.rs:118:15
[INFO] [stdout]     |
[INFO] [stdout] 118 |         .tool(EmitChangesTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EmitChangesTool`
[INFO] [stdout]    --> tests/subscriptions_listen_2026.rs:44:1
[INFO] [stdout]     |
[INFO] [stdout]  44 | struct EmitChangesTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/progress_2026.rs:22:3
[INFO] [stdout]    |
[INFO] [stdout] 22 | #[tool(name = "worker", description = "Works with progress", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/stateless_2026_http_surface.rs:20:3
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[tool(name = "echo", description = "Echo back the provided message", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `param` in this scope
[INFO] [stdout]   --> tests/stateless_2026_http_surface.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 |     #[param(description = "Message to echo back")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/schema_fidelity_2026.rs:42:3
[INFO] [stdout]    |
[INFO] [stdout] 42 | #[tool(name = "render", description = "Render a shape", output = RenderResult)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/streaming_e2e_2026.rs:30:3
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[tool(name = "streamer", description = "Emits progress then completes", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/tool_icons_2026.rs:24:3
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[tool(
[INFO] [stdout]    |   ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `tool` is in scope, but it is a function, not an attribute
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/tool_icons_2026.rs:50:3
[INFO] [stdout]    |
[INFO] [stdout] 50 | #[tool(name = "plain_tool", description = "No icons declared", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `tool` is in scope, but it is a function, not an attribute
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: turul_mcp_server::McpTool` is not satisfied
[INFO] [stdout]    --> tests/error_mapping_2026.rs:143:15
[INFO] [stdout]     |
[INFO] [stdout] 143 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `turul_mcp_server::McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/error_mapping_2026.rs:35:1
[INFO] [stdout]     |
[INFO] [stdout]  35 | struct EchoTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `turul_mcp_server::McpTool`
[INFO] [stdout]    --> tests/error_mapping_2026.rs:124:1
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl McpTool for FailingTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `FailingTool`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `DynamicTool`
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `MacroFailingTool: turul_mcp_server::McpTool` is not satisfied
[INFO] [stdout]    --> tests/error_mapping_2026.rs:145:15
[INFO] [stdout]     |
[INFO] [stdout] 145 |         .tool(MacroFailingTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `turul_mcp_server::McpTool` is not implemented for `MacroFailingTool`
[INFO] [stdout]    --> tests/error_mapping_2026.rs:62:1
[INFO] [stdout]     |
[INFO] [stdout]  62 | struct MacroFailingTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `turul_mcp_server::McpTool`
[INFO] [stdout]    --> tests/error_mapping_2026.rs:124:1
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl McpTool for FailingTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `FailingTool`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `DynamicTool`
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/streaming_e2e_2026.rs:46:3
[INFO] [stdout]    |
[INFO] [stdout] 46 | #[tool(name = "emit", description = "Broadcast a tools list change", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/discover_stateless_2026.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use turul_mcp_derive::McpTool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `turul_mcp_derive`
[INFO] [stdout]    |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 17 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 17 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `AlphaTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/wire_edges_2026.rs:149:15
[INFO] [stdout]     |
[INFO] [stdout] 149 |         .tool(AlphaTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `AlphaTool`
[INFO] [stdout]    --> tests/wire_edges_2026.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct AlphaTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `BetaTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/wire_edges_2026.rs:150:15
[INFO] [stdout]     |
[INFO] [stdout] 150 |         .tool(BetaTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `BetaTool`
[INFO] [stdout]    --> tests/wire_edges_2026.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | struct BetaTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `GammaTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/wire_edges_2026.rs:151:15
[INFO] [stdout]     |
[INFO] [stdout] 151 |         .tool(GammaTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `GammaTool`
[INFO] [stdout]    --> tests/wire_edges_2026.rs:37:1
[INFO] [stdout]     |
[INFO] [stdout]  37 | struct GammaTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `param` in this scope
[INFO] [stdout]   --> tests/schema_fidelity_2026.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 |     #[param(description = "Shape to render")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `param` in this scope
[INFO] [stdout]   --> tests/schema_fidelity_2026.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 |     #[param(description = "Drawing title")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/notifications_2026.rs:38:15
[INFO] [stdout]     |
[INFO] [stdout]  38 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/notifications_2026.rs:20:1
[INFO] [stdout]     |
[INFO] [stdout]  20 | struct EchoTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `DerivedIconTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/tool_icons_2026.rs:66:15
[INFO] [stdout]     |
[INFO] [stdout]  66 |         .tool(DerivedIconTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `DerivedIconTool`
[INFO] [stdout]    --> tests/tool_icons_2026.rs:30:1
[INFO] [stdout]     |
[INFO] [stdout]  30 | struct DerivedIconTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `impl Future<Output = Result<std::string::String, McpError>>: McpTool` is not satisfied
[INFO] [stdout]    --> tests/tool_icons_2026.rs:67:10
[INFO] [stdout]     |
[INFO] [stdout]  67 |         .tool_fn(function_icon_tool)
[INFO] [stdout]     |          ^^^^^^^ the trait `McpTool` is not implemented for `impl Future<Output = Result<std::string::String, McpError>>`
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool_fn`
[INFO] [stdout]    --> src/builder.rs:614:12
[INFO] [stdout]     |
[INFO] [stdout] 611 |     pub fn tool_fn<F, T>(self, func: F) -> Self
[INFO] [stdout]     |            ------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout] 614 |         T: McpTool + 'static,
[INFO] [stdout]     |            ^^^^^^^ required by this bound in `McpServerBuilder::tool_fn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `PlainTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/tool_icons_2026.rs:68:15
[INFO] [stdout]     |
[INFO] [stdout]  68 |         .tool(PlainTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `PlainTool`
[INFO] [stdout]    --> tests/tool_icons_2026.rs:51:1
[INFO] [stdout]     |
[INFO] [stdout]  51 | struct PlainTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/origin_validation_2026.rs:37:15
[INFO] [stdout]     |
[INFO] [stdout]  37 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/origin_validation_2026.rs:22:1
[INFO] [stdout]     |
[INFO] [stdout]  22 | struct EchoTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WorkerTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/progress_2026.rs:41:15
[INFO] [stdout]     |
[INFO] [stdout]  41 |         .tool(WorkerTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `WorkerTool`
[INFO] [stdout]    --> tests/progress_2026.rs:23:1
[INFO] [stdout]     |
[INFO] [stdout]  23 | struct WorkerTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/stateless_2026_http_surface.rs:41:15
[INFO] [stdout]     |
[INFO] [stdout]  41 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/stateless_2026_http_surface.rs:21:1
[INFO] [stdout]     |
[INFO] [stdout]  21 | struct EchoTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/discover_stateless_2026.rs:21:3
[INFO] [stdout]    |
[INFO] [stdout] 21 | #[tool(name = "echo", description = "Echo back the provided message", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `param` in this scope
[INFO] [stdout]   --> tests/discover_stateless_2026.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 |     #[param(description = "Message to echo back")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `StreamerTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/streaming_e2e_2026.rs:74:15
[INFO] [stdout]     |
[INFO] [stdout]  74 |         .tool(StreamerTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `StreamerTool`
[INFO] [stdout]    --> tests/streaming_e2e_2026.rs:31:1
[INFO] [stdout]     |
[INFO] [stdout]  31 | struct StreamerTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EmitTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/streaming_e2e_2026.rs:75:15
[INFO] [stdout]     |
[INFO] [stdout]  75 |         .tool(EmitTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EmitTool`
[INFO] [stdout]    --> tests/streaming_e2e_2026.rs:47:1
[INFO] [stdout]     |
[INFO] [stdout]  47 | struct EmitTool {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "notifications_2026") due to 4 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/subscriptions_listen_2026.rs:368:15
[INFO] [stdout]     |
[INFO] [stdout] 368 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/subscriptions_listen_2026.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | struct EchoTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "tool_icons_2026") due to 6 previous errors
[INFO] [stdout] error[E0277]: the trait bound `RenderTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/schema_fidelity_2026.rs:71:15
[INFO] [stdout]     |
[INFO] [stdout]  71 |         .tool(RenderTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `RenderTool`
[INFO] [stdout]    --> tests/schema_fidelity_2026.rs:43:1
[INFO] [stdout]     |
[INFO] [stdout]  43 | struct RenderTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/discover_stateless_2026.rs:45:15
[INFO] [stdout]     |
[INFO] [stdout]  45 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/discover_stateless_2026.rs:22:1
[INFO] [stdout]     |
[INFO] [stdout]  22 | struct EchoTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "origin_validation_2026") due to 3 previous errors
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "stateless_2026_http_surface") due to 4 previous errors
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/discover_stateless_2026.rs:666:15
[INFO] [stdout]     |
[INFO] [stdout] 666 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/discover_stateless_2026.rs:22:1
[INFO] [stdout]     |
[INFO] [stdout]  22 | struct EchoTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "error_mapping_2026") due to 7 previous errors
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "wire_edges_2026") due to 7 previous errors
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "subscriptions_listen_2026") due to 7 previous errors
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "progress_2026") due to 3 previous errors
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/discover_stateless_2026.rs:518:15
[INFO] [stdout]     |
[INFO] [stdout] 518 |         .tool(EchoTool::default())
[INFO] [stdout]     |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |          |
[INFO] [stdout]     |          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]    --> tests/discover_stateless_2026.rs:22:1
[INFO] [stdout]     |
[INFO] [stdout]  22 | struct EchoTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]    --> src/lib.rs:290:1
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl McpTool for DynamicTool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]    --> src/builder.rs:430:20
[INFO] [stdout]     |
[INFO] [stdout] 430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]     |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]     --> tests/discover_stateless_2026.rs:1082:15
[INFO] [stdout]      |
[INFO] [stdout] 1082 |         .tool(EchoTool::default())
[INFO] [stdout]      |          ---- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]      |          |
[INFO] [stdout]      |          required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout] help: the trait `McpTool` is not implemented for `EchoTool`
[INFO] [stdout]     --> tests/discover_stateless_2026.rs:22:1
[INFO] [stdout]      |
[INFO] [stdout]   22 | struct EchoTool {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the trait `McpTool` is implemented for `DynamicTool`
[INFO] [stdout]     --> src/lib.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl McpTool for DynamicTool {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `McpServerBuilder::tool`
[INFO] [stdout]     --> src/builder.rs:430:20
[INFO] [stdout]      |
[INFO] [stdout]  430 |     pub fn tool<T: McpTool + 'static>(mut self, tool: T) -> Self {
[INFO] [stdout]      |                    ^^^^^^^ required by this bound in `McpServerBuilder::tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "streaming_e2e_2026") due to 5 previous errors
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "schema_fidelity_2026") due to 5 previous errors
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "discover_stateless_2026") due to 7 previous errors
[INFO] running `Command { std: "docker" "inspect" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea", kill_on_drop: false }`
[INFO] [stdout] c0b2afe1bf44b66a0246169c45021573d9bcabb620ec0ccf36417df9ebbac9ea
