[INFO] fetching crate turul-mcp-server 0.4.4...
[INFO] testing turul-mcp-server-0.4.4 against 1.100.0-beta.1 for beta-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2
[INFO] running `Command { std: "docker" "start" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2", 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" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2" "/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" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2", 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" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", 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 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 group v0.13.0
[INFO] [stderr]    Compiling time-core v0.1.9
[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 num-complex v0.4.6
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling num-iter v0.1.46
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-bigint v0.5.5
[INFO] [stderr]    Compiling sec1 v0.7.3
[INFO] [stderr]    Compiling uuid v1.24.0
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling indexmap v2.14.0
[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 cmake v0.1.58
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling micromap v0.3.0
[INFO] [stderr]    Compiling jsonschema-regex v0.49.9
[INFO] [stderr]    Compiling data-encoding v2.11.1
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling time v0.3.55
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling aws-lc-sys v0.44.0
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling fraction v0.15.4
[INFO] [stderr]    Compiling elliptic-curve v0.13.8
[INFO] [stderr]    Compiling primeorder v0.13.6
[INFO] [stderr]    Compiling ecdsa v0.16.9
[INFO] [stderr]    Compiling serde_derive_internals v0.30.0
[INFO] [stderr]    Compiling p384 v0.13.1
[INFO] [stderr]    Compiling p256 v0.13.2
[INFO] [stderr]    Compiling fancy-regex v0.19.0
[INFO] [stderr]    Compiling regex v1.13.1
[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 ref-cast v1.0.26
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling schemars_derive v1.2.2
[INFO] [stderr]    Compiling zerotrie v0.2.5
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling zerovec v0.11.7
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[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 rand v0.8.7
[INFO] [stderr]    Compiling icu_locale_core v2.3.0
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling serde v1.0.229
[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 chrono v0.4.45
[INFO] [stderr]    Compiling futures-executor v0.3.34
[INFO] [stderr]    Compiling icu_normalizer v2.3.0
[INFO] [stderr]    Compiling icu_properties v2.3.0
[INFO] [stderr]    Compiling turul-rpc-jsonrpc v0.2.3
[INFO] [stderr]    Compiling rsa v0.9.10
[INFO] [stderr]    Compiling fluent-uri v0.4.1
[INFO] [stderr]    Compiling jsonschema-value v0.49.9
[INFO] [stderr]    Compiling email_address v0.2.9
[INFO] [stderr]    Compiling futures v0.3.34
[INFO] [stderr]    Compiling turul-rpc-server v0.2.3
[INFO] [stderr]    Compiling schemars v1.2.2
[INFO] [stderr]    Compiling turul-rpc v0.2.3
[INFO] [stderr]    Compiling turul-mcp-protocol-2026-07-28 v0.4.0
[INFO] [stderr]    Compiling referencing v0.49.9
[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 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 tower-http v0.6.11
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling rustls v0.23.43
[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-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 `dev` profile [unoptimized + debuginfo] target(s) in 1m 38s
[INFO] running `Command { std: "docker" "inspect" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2", 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" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", 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/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[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/verify_sampling_shape_wire_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/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: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/verify_sampling_shape_wire_2026.rs:21:3
[INFO] [stdout]    |
[INFO] [stdout] 21 | #[tool(name = "mixed_user_msg", description = "user text mixed with tool_result", 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: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[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/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 `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[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/oauth_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: 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: 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/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: 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[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[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[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 `MixedUserMsgTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/verify_sampling_shape_wire_2026.rs:63:15
[INFO] [stdout]     |
[INFO] [stdout]  63 |         .tool(MixedUserMsgTool::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 `MixedUserMsgTool`
[INFO] [stdout]    --> tests/verify_sampling_shape_wire_2026.rs:22:1
[INFO] [stdout]     |
[INFO] [stdout]  22 | struct MixedUserMsgTool {}
[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: 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/oauth_2026.rs:19:3
[INFO] [stdout]    |
[INFO] [stdout] 19 | #[tool(name = "echo", description = "Echo", output = String)]
[INFO] [stdout]    |   ^^^^
[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[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: 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 `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] 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 `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] 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 `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] 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/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[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] 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/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[E0277]: the trait bound `EchoTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/oauth_2026.rs:48:15
[INFO] [stdout]     |
[INFO] [stdout]  48 |         .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/oauth_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] 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/error_mapping_2026.rs:57:3
[INFO] [stdout]    |
[INFO] [stdout] 57 | #[tool(
[INFO] [stdout]    |   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[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] 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 `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] [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] [stderr] error: could not compile `turul-mcp-server` (test "sampling_shape_2026") due to 5 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[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[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/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] 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] [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] 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 "verify_sampling_shape_wire_2026") due to 3 previous errors
[INFO] [stderr] error: could not compile `turul-mcp-server` (test "error_code_wire_2026") due to 4 previous errors
[INFO] [stdout] error[E0432]: unresolved import `turul_mcp_derive`
[INFO] [stdout]   --> tests/log_gating_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] [stderr] error: could not compile `turul-mcp-server` (test "notifications_2026") due to 4 previous errors
[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: 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: 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 `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: cannot find attribute `tool` in this scope
[INFO] [stdout]   --> tests/log_gating_2026.rs:22:3
[INFO] [stdout]    |
[INFO] [stdout] 22 | #[tool(name = "chatty", description = "Logs while working", output = String)]
[INFO] [stdout]    |   ^^^^
[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] 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] [stdout] error[E0277]: the trait bound `ChattyTool: McpTool` is not satisfied
[INFO] [stdout]    --> tests/log_gating_2026.rs:48:15
[INFO] [stdout]     |
[INFO] [stdout]  48 |         .tool(ChattyTool::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 `ChattyTool`
[INFO] [stdout]    --> tests/log_gating_2026.rs:23:1
[INFO] [stdout]     |
[INFO] [stdout]  23 | struct ChattyTool {}
[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 "oauth_2026") due to 3 previous errors
[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] 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 `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 "schema_fidelity_2026") due to 5 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 `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] 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 `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] [stderr] error: could not compile `turul-mcp-server` (test "origin_validation_2026") due to 3 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 "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] [stderr] error: could not compile `turul-mcp-server` (test "log_gating_2026") due to 3 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] help: to still use for development builds, move to `dev-dependencies`
[INFO] [stderr] warning: `turul-mcp-server` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "inspect" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2", kill_on_drop: false }`
[INFO] [stdout] 46de9c12fd65162c30c28d3480687c85c64e089766e4210f510430a2524040f2
