[INFO] fetching crate turul-mcp-server 0.4.4...
[INFO] testing turul-mcp-server-0.4.4 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate turul-mcp-server 0.4.4 into /workspace/builds/worker-1-tc2/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-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate turul-mcp-server 0.4.4 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:136:12
[INFO] [stderr]     |
[INFO] [stderr] 136 | homepage = "https://github.com/aussierobots/turul-mcp-framework"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 140 | repository = "https://github.com/aussierobots/turul-mcp-framework"
[INFO] [stderr]     |              -----------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `turul-mcp-server` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192
[INFO] running `Command { std: "docker" "start" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192", 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" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192", 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" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:136:12
[INFO] [stderr]     |
[INFO] [stderr] 136 | homepage = "https://github.com/aussierobots/turul-mcp-framework"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 140 | repository = "https://github.com/aussierobots/turul-mcp-framework"
[INFO] [stderr]     |              -----------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `turul-mcp-server` (manifest) generated 1 warning
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling find-msvc-tools v0.1.11
[INFO] [stderr]    Compiling zerocopy v0.8.56
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling aws-lc-rs v1.18.0
[INFO] [stderr]    Compiling ref-cast v1.0.26
[INFO] [stderr]    Compiling hdrhistogram v7.6.0
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling cc v1.4.3
[INFO] [stderr]    Compiling ff v0.13.1
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling group v0.13.0
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling borrow-or-share v0.2.4
[INFO] [stderr]    Compiling unicode-general-category v1.1.0
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling uuid v1.24.0
[INFO] [stderr]    Compiling fraction v0.15.4
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling bytecount v0.6.9
[INFO] [stderr]    Compiling micromap v0.3.0
[INFO] [stderr]    Compiling num-cmp v0.1.0
[INFO] [stderr]    Compiling vsimd v0.8.0
[INFO] [stderr]    Compiling outref v0.5.2
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling uuid-simd v0.8.0
[INFO] [stderr]    Compiling jsonschema-regex v0.49.9
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling crypto-bigint v0.5.5
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling aws-lc-sys v0.44.0
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling rfc6979 v0.4.0
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling sec1 v0.7.3
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[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 serde_derive_internals v0.30.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling fancy-regex v0.19.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 thiserror-impl v2.0.20
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]    Compiling ref-cast-impl v1.0.26
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling schemars_derive v1.2.2
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling zerotrie v0.2.5
[INFO] [stderr]    Compiling futures-util v0.3.34
[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 zerovec v0.11.7
[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 icu_locale_core v2.3.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling futures-executor v0.3.34
[INFO] [stderr]    Compiling futures v0.3.34
[INFO] [stderr]    Compiling icu_provider 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 email_address v0.2.9
[INFO] [stderr]    Compiling schemars v1.2.2
[INFO] [stderr]    Compiling jsonschema-value v0.49.9
[INFO] [stderr]    Compiling icu_properties v2.3.0
[INFO] [stderr]    Compiling icu_normalizer v2.3.0
[INFO] [stderr]    Compiling turul-rpc-jsonrpc v0.2.3
[INFO] [stderr]    Compiling rsa v0.9.10
[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 jsonwebtoken v11.0.0
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.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 hyper v1.11.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling turul-mcp-schema-validation v0.4.0
[INFO] [stderr]    Compiling turul-http-mcp-server v0.4.1
[INFO] [stderr]    Compiling rustls v0.23.43
[INFO] [stderr]    Compiling rustls-webpki v0.103.14
[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] warning: unused dependency `turul-mcp-oauth`
[INFO] [stderr]   --> Cargo.toml:54:15
[INFO] [stderr]    |
[INFO] [stderr] 54 | [dependencies.turul-mcp-oauth]
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `turul-mcp-oauth`
[INFO] [stderr] warning: `turul-mcp-server` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 4m 38s
[INFO] running `Command { std: "docker" "inspect" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192", 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" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:136:12
[INFO] [stderr]     |
[INFO] [stderr] 136 | homepage = "https://github.com/aussierobots/turul-mcp-framework"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 140 | repository = "https://github.com/aussierobots/turul-mcp-framework"
[INFO] [stderr]     |              -----------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `turul-mcp-server` (manifest) generated 1 warning
[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/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[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/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[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/mrtr_2026.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | 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] 18 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 18 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/error_code_wire_2026.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | 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] 18 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 18 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/mcp_headers_2026.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | 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] 18 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 18 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/mcp_headers_2026.rs:22:3
[INFO] [stdout]    |
[INFO] [stdout] 22 | #[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/mcp_headers_2026.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 |     #[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/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/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/mrtr_2026.rs:26:3
[INFO] [stdout]    |
[INFO] [stdout] 26 | #[tool(name = "gated_echo", description = "Echo, but ask first", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]    --> tests/mrtr_2026.rs:214:3
[INFO] [stdout]     |
[INFO] [stdout] 214 | #[tool(name = "url_gated", description = "Needs a URL elicitation", 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: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: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/error_code_wire_2026.rs:23:3
[INFO] [stdout]    |
[INFO] [stdout] 23 | #[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/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: 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/error_code_wire_2026.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 |     #[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/mrtr_2026.rs:241:3
[INFO] [stdout]     |
[INFO] [stdout] 241 | #[tool(name = "sampler", description = "Needs tool-enabled sampling", 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: cannot find attribute `tool` in this scope
[INFO] [stdout]    --> tests/mrtr_2026.rs:662:3
[INFO] [stdout]     |
[INFO] [stdout] 662 | #[tool(name = "broken_mrtr", description = "Violates the MRTR invariant", output = String)]
[INFO] [stdout]     |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mcp_headers_2026.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/mcp_headers_2026.rs:23:1
[INFO] [stdout]     |
[INFO] [stdout]  23 | 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] 145 | impl McpServerBuilder {
[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/mrtr_2026.rs:831:3
[INFO] [stdout]     |
[INFO] [stdout] 831 | #[tool(name = "roots_gated", description = "Needs roots", output = String)]
[INFO] [stdout]     |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]    --> tests/mrtr_2026.rs:854:3
[INFO] [stdout]     |
[INFO] [stdout] 854 | #[tool(name = "plain_sampler", description = "Plain sampling", 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: cannot find attribute `tool` in this scope
[INFO] [stdout]    --> tests/mrtr_2026.rs:940:3
[INFO] [stdout]     |
[INFO] [stdout] 940 | #[tool(name = "adaptive", description = "Asks only for declared capabilities", output = String)]
[INFO] [stdout]     |   ^^^^
[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] 145 | impl McpServerBuilder {
[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] 145 | impl McpServerBuilder {
[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] 145 | impl McpServerBuilder {
[INFO] [stdout] ...
[INFO] [stdout] 611 |     pub fn tool_fn<F, T>(self, func: F) -> Self
[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] 145 | impl McpServerBuilder {
[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: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[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/error_code_wire_2026.rs:70:15
[INFO] [stdout]     |
[INFO] [stdout]  70 |         .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/error_code_wire_2026.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | 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] 145 | impl McpServerBuilder {
[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[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: 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[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] 145 | impl McpServerBuilder {
[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] 145 | impl McpServerBuilder {
[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: 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: 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] 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 "mcp_headers_2026") due to 4 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[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] 145 | impl McpServerBuilder {
[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] 145 | impl McpServerBuilder {
[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/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] 145 | impl McpServerBuilder {
[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 "tool_icons_2026") due to 6 previous errors
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/sampling_shape_2026.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | 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] 13 - use turul_mcp_derive::McpTool;
[INFO] [stdout] 13 + use turul_mcp_server::McpTool;
[INFO] [stdout]    |
[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] 145 | impl McpServerBuilder {
[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 `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] 145 | impl McpServerBuilder {
[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 `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] 145 | impl McpServerBuilder {
[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_code_wire_2026") 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] 145 | impl McpServerBuilder {
[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 `GatedEchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:79:15
[INFO] [stdout]     |
[INFO] [stdout]  79 |         .tool(GatedEchoTool::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 `GatedEchoTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:27:1
[INFO] [stdout]     |
[INFO] [stdout]  27 | struct GatedEchoTool {}
[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] 145 | impl McpServerBuilder {
[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/sampling_shape_2026.rs:20:3
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[tool(name = "bad_shape_sampler", description = "Sampling with an invalid message shape", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/sampling_shape_2026.rs:56:3
[INFO] [stdout]    |
[INFO] [stdout] 56 | #[tool(name = "good_shape_sampler", description = "Sampling with a valid message shape", output = String)]
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[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] 145 | impl McpServerBuilder {
[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 "subscriptions_listen_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] 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]  145 | impl McpServerBuilder {
[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 `UrlGatedTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:279:15
[INFO] [stdout]     |
[INFO] [stdout] 279 |         .tool(UrlGatedTool::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 `UrlGatedTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:215:1
[INFO] [stdout]     |
[INFO] [stdout] 215 | struct UrlGatedTool {}
[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] 145 | impl McpServerBuilder {
[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 `SamplingGatedTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:280:15
[INFO] [stdout]     |
[INFO] [stdout] 280 |         .tool(SamplingGatedTool::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 `SamplingGatedTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:242:1
[INFO] [stdout]     |
[INFO] [stdout] 242 | struct SamplingGatedTool {}
[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] 145 | impl McpServerBuilder {
[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 "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 "progress_2026") due to 3 previous errors
[INFO] [stdout] error[E0277]: the trait bound `GatedEchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:516:15
[INFO] [stdout]     |
[INFO] [stdout] 516 |         .tool(GatedEchoTool::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 `GatedEchoTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:27:1
[INFO] [stdout]     |
[INFO] [stdout]  27 | struct GatedEchoTool {}
[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] 145 | impl McpServerBuilder {
[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 `BadShapeSamplerTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/sampling_shape_2026.rs:81:15
[INFO] [stdout]     |
[INFO] [stdout]  81 |         .tool(BadShapeSamplerTool::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 `BadShapeSamplerTool`
[INFO] [stdout]    --> tests/sampling_shape_2026.rs:21:1
[INFO] [stdout]     |
[INFO] [stdout]  21 | struct BadShapeSamplerTool {}
[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] 145 | impl McpServerBuilder {
[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 `GoodShapeSamplerTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/sampling_shape_2026.rs:82:15
[INFO] [stdout]     |
[INFO] [stdout]  82 |         .tool(GoodShapeSamplerTool::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 `GoodShapeSamplerTool`
[INFO] [stdout]    --> tests/sampling_shape_2026.rs:57:1
[INFO] [stdout]     |
[INFO] [stdout]  57 | struct GoodShapeSamplerTool {}
[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] 145 | impl McpServerBuilder {
[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 `RootsGatedTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:884:15
[INFO] [stdout]     |
[INFO] [stdout] 884 |         .tool(RootsGatedTool::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 `RootsGatedTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:832:1
[INFO] [stdout]     |
[INFO] [stdout] 832 | struct RootsGatedTool {}
[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] 145 | impl McpServerBuilder {
[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 `PlainSamplerTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:885:15
[INFO] [stdout]     |
[INFO] [stdout] 885 |         .tool(PlainSamplerTool::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 `PlainSamplerTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:855:1
[INFO] [stdout]     |
[INFO] [stdout] 855 | struct PlainSamplerTool {}
[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] 145 | impl McpServerBuilder {
[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 `AdaptiveCapabilityTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:987:15
[INFO] [stdout]     |
[INFO] [stdout] 987 |         .tool(AdaptiveCapabilityTool::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 `AdaptiveCapabilityTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:941:1
[INFO] [stdout]     |
[INFO] [stdout] 941 | struct AdaptiveCapabilityTool {}
[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] 145 | impl McpServerBuilder {
[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 "discover_stateless_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 "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 "sampling_shape_2026") due to 5 previous errors
[INFO] [stdout] error[E0277]: the trait bound `BrokenMrtrTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:684:15
[INFO] [stdout]     |
[INFO] [stdout] 684 |         .tool(BrokenMrtrTool::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 `BrokenMrtrTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:663:1
[INFO] [stdout]     |
[INFO] [stdout] 663 | struct BrokenMrtrTool {}
[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] 145 | impl McpServerBuilder {
[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 `GatedEchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/mrtr_2026.rs:782:15
[INFO] [stdout]     |
[INFO] [stdout] 782 |         .tool(GatedEchoTool::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 `GatedEchoTool`
[INFO] [stdout]    --> tests/mrtr_2026.rs:27:1
[INFO] [stdout]     |
[INFO] [stdout]  27 | struct GatedEchoTool {}
[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] 145 | impl McpServerBuilder {
[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 "mrtr_2026") due to 17 previous errors
[INFO] [stderr] warning: unused dependency `turul-mcp-oauth`
[INFO] [stderr]   --> Cargo.toml:54:15
[INFO] [stderr]    |
[INFO] [stderr] 54 | [dependencies.turul-mcp-oauth]
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `turul-mcp-oauth`
[INFO] [stderr] warning: `turul-mcp-server` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "inspect" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192", kill_on_drop: false }`
[INFO] [stdout] e33e0012122c28eb297eaa27b1c2d80803207118c73cfa92458953fdb9fb3192
