diff --git a/src/agent/dispatcher.rs b/src/agent/dispatcher.rs index f4581db9..95d8d711 100644 --- a/src/agent/dispatcher.rs +++ b/src/agent/dispatcher.rs @@ -688,6 +688,15 @@ impl Agent { deferred_auth = Some(instructions); } + // Stash full output so subsequent tools can reference it + if let Ok(ref output) = tool_result { + job_ctx + .tool_output_stash + .write() + .await + .insert(tc.id.clone(), output.clone()); + } + // Sanitize and add tool result to context let result_content = match tool_result { Ok(output) => { diff --git a/src/context/state.rs b/src/context/state.rs index 846ee850..5b9c200b 100644 --- a/src/context/state.rs +++ b/src/context/state.rs @@ -156,6 +156,14 @@ pub struct JobContext { /// returns pre-recorded responses. #[serde(skip)] pub http_interceptor: Option>, + /// Stash of full tool outputs keyed by tool_call_id. + /// + /// Tool outputs may be truncated before reaching the LLM context window, + /// but subsequent tools (e.g., `json`) may need the full output. This + /// stash stores the complete, unsanitized output so tools can reference + /// previous results by ID via `$tool_call_id` parameter syntax. + #[serde(skip)] + pub tool_output_stash: Arc>>, } impl JobContext { @@ -194,6 +202,7 @@ impl JobContext { extra_env: Arc::new(HashMap::new()), http_interceptor: None, metadata: serde_json::Value::Null, + tool_output_stash: Arc::new(tokio::sync::RwLock::new(HashMap::new())), } } diff --git a/src/db/libsql/jobs.rs b/src/db/libsql/jobs.rs index 92c6159d..37506b51 100644 --- a/src/db/libsql/jobs.rs +++ b/src/db/libsql/jobs.rs @@ -118,6 +118,9 @@ impl JobStore for LibSqlBackend { metadata: serde_json::Value::Null, extra_env: std::sync::Arc::new(std::collections::HashMap::new()), http_interceptor: None, + tool_output_stash: std::sync::Arc::new(tokio::sync::RwLock::new( + std::collections::HashMap::new(), + )), })) } None => Ok(None), diff --git a/src/history/store.rs b/src/history/store.rs index 3c7a3927..2ef121a3 100644 --- a/src/history/store.rs +++ b/src/history/store.rs @@ -238,6 +238,9 @@ impl Store { max_tokens: 0, extra_env: std::sync::Arc::new(std::collections::HashMap::new()), http_interceptor: None, + tool_output_stash: std::sync::Arc::new(tokio::sync::RwLock::new( + std::collections::HashMap::new(), + )), })) } None => Ok(None), diff --git a/src/llm/reasoning.rs b/src/llm/reasoning.rs index acc4b832..faf9047d 100644 --- a/src/llm/reasoning.rs +++ b/src/llm/reasoning.rs @@ -689,6 +689,8 @@ Example: - If tools return empty or irrelevant results, answer with what you already know rather than retrying ## Tool Call Style +- ALWAYS call tools via tool_calls — never just describe what you would do +- If you say "let me fetch/check/look up X", you MUST include the actual tool call in the same response - Do not narrate routine, low-risk tool calls; just call the tool - Narrate only when it helps: multi-step work, sensitive actions, or when the user asks - For multi-step tasks, call independent tools in parallel when possible @@ -1131,6 +1133,51 @@ fn recover_tool_calls_from_content( } } + // Bracket format from flatten_tool_messages: + // [Called tool `name` with arguments: {...}] + { + let mut remaining = content; + while let Some(start) = remaining.find("[Called tool `") { + let after_prefix = &remaining[start + "[Called tool `".len()..]; + let Some(backtick_end) = after_prefix.find('`') else { + break; + }; + let name = &after_prefix[..backtick_end]; + let after_name = &after_prefix[backtick_end + 1..]; + + if !tool_names.contains(name) { + remaining = after_name; + continue; + } + + // Look for " with arguments: " followed by JSON until "]" + if let Some(args_start) = after_name.strip_prefix(" with arguments: ") { + // Find the closing "]" — but the JSON itself may contain "]", + // so find the last "]" on this logical line. + if let Some(bracket_end) = args_start.rfind(']') { + let args_str = &args_start[..bracket_end]; + let arguments = serde_json::from_str::(args_str) + .unwrap_or(serde_json::Value::Object(Default::default())); + calls.push(ToolCall { + id: format!("recovered_{}", calls.len()), + name: name.to_string(), + arguments, + }); + remaining = &args_start[bracket_end + 1..]; + continue; + } + } + + // No arguments or malformed — call with empty args + calls.push(ToolCall { + id: format!("recovered_{}", calls.len()), + name: name.to_string(), + arguments: serde_json::Value::Object(Default::default()), + }); + remaining = after_name; + } + } + calls } @@ -1174,10 +1221,39 @@ fn clean_response(text: &str) -> String { result = strip_pipe_tag(&result, tag); } + // 6b. Strip bracket-format inline tool calls: [Called tool `name` with arguments: {...}] + result = strip_bracket_tool_calls(&result); + // 7. Collapse triple+ newlines, trim collapse_newlines(&result) } +/// Strip bracket-format inline tool calls produced by `flatten_tool_messages`. +/// +/// Removes patterns like `[Called tool `name` with arguments: {...}]` from text +/// so the user doesn't see raw tool call syntax when the model echoes it back. +fn strip_bracket_tool_calls(text: &str) -> String { + let mut result = String::with_capacity(text.len()); + let mut remaining = text; + while let Some(start) = remaining.find("[Called tool `") { + result.push_str(&remaining[..start]); + let after = &remaining[start..]; + // Find the closing "]" for this bracket expression + if let Some(end) = after.find("]\n").map(|i| i + 2).or_else(|| { + // If it's at the end of the string, just find "]" + after.rfind(']').map(|i| i + 1) + }) { + remaining = &after[end..]; + } else { + // Malformed — keep the rest + result.push_str(after); + return result; + } + } + result.push_str(remaining); + result +} + /// Tool-related tags stripped with simple string matching (no code-awareness needed). const TOOL_TAGS: &[&str] = &["tool_call", "function_call", "tool_calls"]; @@ -1841,4 +1917,32 @@ That's my plan."#; assert_eq!(calls.len(), 1); assert_eq!(calls[0].name, "tool_list"); } + + #[test] + fn test_recover_bracket_format_tool_call() { + let tools = make_tools(&["http"]); + let content = "Let me try that. [Called tool `http` with arguments: {\"method\":\"GET\",\"url\":\"https://example.com\"}]"; + let calls = recover_tool_calls_from_content(content, &tools); + assert_eq!(calls.len(), 1); + assert_eq!(calls[0].name, "http"); + assert_eq!(calls[0].arguments["method"], "GET"); + assert_eq!(calls[0].arguments["url"], "https://example.com"); + } + + #[test] + fn test_recover_bracket_format_unknown_tool_ignored() { + let tools = make_tools(&["http"]); + let content = "[Called tool `unknown_tool` with arguments: {}]"; + let calls = recover_tool_calls_from_content(content, &tools); + assert!(calls.is_empty()); + } + + #[test] + fn test_clean_response_strips_bracket_tool_calls() { + let input = "Let me fetch that.\n[Called tool `http` with arguments: {\"method\":\"GET\",\"url\":\"https://example.com\"}]\nHere are the results."; + let cleaned = clean_response(input); + assert!(!cleaned.contains("[Called tool")); + assert!(cleaned.contains("Let me fetch that.")); + assert!(cleaned.contains("Here are the results.")); + } } diff --git a/src/safety/mod.rs b/src/safety/mod.rs index cb4d5d55..50167fc0 100644 --- a/src/safety/mod.rs +++ b/src/safety/mod.rs @@ -47,14 +47,22 @@ impl SafetyLayer { /// Sanitize tool output before it reaches the LLM. pub fn sanitize_tool_output(&self, tool_name: &str, output: &str) -> SanitizedOutput { - // Check length limits first + // Check length limits — keep the beginning so the LLM has partial data if output.len() > self.config.max_output_length { + // Find a safe truncation point on a char boundary + let mut cut = self.config.max_output_length; + while cut > 0 && !output.is_char_boundary(cut) { + cut -= 1; + } + let truncated = &output[..cut]; + let notice = format!( + "\n\n[... truncated: showing {}/{} bytes. Use the json tool with \ + source_tool_call_id to query the full output.]", + cut, + output.len() + ); return SanitizedOutput { - content: format!( - "[Output truncated: {} bytes exceeded maximum of {} bytes]", - output.len(), - self.config.max_output_length - ), + content: format!("{}{}", truncated, notice), warnings: vec![InjectionWarning { pattern: "output_too_large".to_string(), severity: Severity::Low, diff --git a/src/tools/builtin/http.rs b/src/tools/builtin/http.rs index 49c5e694..d19aacfd 100644 --- a/src/tools/builtin/http.rs +++ b/src/tools/builtin/http.rs @@ -1,4 +1,12 @@ //! HTTP request tool. +//! +//! Unified HTTP tool that handles both simple page/API fetches (GET, no auth) +//! and full API calls (any method, custom headers, credential injection). +//! +//! - Plain GET without auth headers/body → no approval needed, follows redirects +//! - Everything else → requires approval +//! +//! Replaces the former `web_fetch` tool which was a separate GET-only tool. use std::collections::HashMap; use std::net::{IpAddr, ToSocketAddrs}; @@ -25,6 +33,16 @@ use crate::tools::builtin::convert_html_to_markdown; /// HTTP wrapper uses the same limit for consistency. const MAX_RESPONSE_SIZE: usize = 5 * 1024 * 1024; +/// Maximum number of redirects to follow for simple GET requests. +const MAX_REDIRECTS: usize = 3; + +/// Descriptive User-Agent so public APIs don't reject bare requests. +const USER_AGENT: &str = concat!( + "IronClaw-Agent/", + env!("CARGO_PKG_VERSION"), + " (https://github.com/nearai/ironclaw)" +); + /// Tool for making HTTP requests. pub struct HttpTool { client: Client, @@ -38,6 +56,7 @@ impl HttpTool { let client = Client::builder() .timeout(Duration::from_secs(30)) .redirect(reqwest::redirect::Policy::none()) + .user_agent(USER_AGENT) .build() .expect("Failed to create HTTP client"); @@ -201,7 +220,10 @@ impl Tool for HttpTool { } fn description(&self) -> &str { - "Make HTTP requests to external APIs. Supports GET, POST, PUT, DELETE methods." + "Make HTTP requests. Simple GET requests (no auth, no custom headers) run without \ + approval and follow redirects — use for fetching weather, public JSON APIs, web pages, \ + and documentation. Requests with authentication, custom headers, or non-GET methods \ + (POST, PUT, DELETE, PATCH) require user approval." } fn parameters_schema(&self) -> serde_json::Value { @@ -368,25 +390,108 @@ impl Tool for HttpTool { return Ok(ToolOutput::success(result, start.elapsed()).with_raw(recorded.body)); } - // Execute request - let response = request.send().await.map_err(|e| { - if e.is_timeout() { - ToolError::Timeout(Duration::from_secs(30)) - } else { - ToolError::ExternalService(e.to_string()) + // Determine if this is a simple GET (eligible for redirect following). + let is_simple_get = + method.eq_ignore_ascii_case("GET") && headers_vec.is_empty() && body_bytes.is_none(); + + // Execute request, optionally following redirects for simple GETs. + let response = if is_simple_get { + let mut redirects_remaining = MAX_REDIRECTS; + loop { + let resp = self + .client + .get(parsed_url.clone()) + .header( + reqwest::header::ACCEPT, + "text/markdown, text/html;q=0.9, application/json;q=0.9, */*;q=0.8", + ) + .send() + .await + .map_err(|e| { + if e.is_timeout() { + ToolError::Timeout(Duration::from_secs(30)) + } else { + ToolError::ExternalService(e.to_string()) + } + })?; + + let status = resp.status().as_u16(); + if (300..400).contains(&status) { + if redirects_remaining == 0 { + return Err(ToolError::ExecutionFailed(format!( + "too many redirects (max {})", + MAX_REDIRECTS + ))); + } + + let location = resp + .headers() + .get(reqwest::header::LOCATION) + .and_then(|v| v.to_str().ok()) + .ok_or_else(|| { + ToolError::ExecutionFailed(format!( + "redirect (HTTP {}) has no Location header", + status + )) + })?; + + let next_url_str = + if location.starts_with("http://") || location.starts_with("https://") { + location.to_string() + } else { + parsed_url + .join(location) + .map(|u| u.to_string()) + .map_err(|e| { + ToolError::ExecutionFailed(format!( + "could not resolve relative redirect '{}': {}", + location, e + )) + })? + }; + + // SSRF re-validation on every hop. + parsed_url = validate_url(&next_url_str)?; + let detector = LeakDetector::new(); + detector + .scan_http_request(parsed_url.as_str(), &[], None) + .map_err(|e| ToolError::NotAuthorized(e.to_string()))?; + + redirects_remaining -= 1; + tracing::debug!( + to = %parsed_url, + hops_left = redirects_remaining, + "http tool following redirect" + ); + continue; + } + + break resp; } - })?; + } else { + let resp = request.send().await.map_err(|e| { + if e.is_timeout() { + ToolError::Timeout(Duration::from_secs(30)) + } else { + ToolError::ExternalService(e.to_string()) + } + })?; + + let status = resp.status().as_u16(); + + // Block redirects for non-simple requests (potential SSRF) + if (300..400).contains(&status) { + return Err(ToolError::NotAuthorized(format!( + "request returned redirect (HTTP {}), which is blocked to prevent SSRF", + status + ))); + } + + resp + }; let status = response.status().as_u16(); - // Block redirects: the server tried to send us elsewhere (potential SSRF) - if (300..400).contains(&status) { - return Err(ToolError::NotAuthorized(format!( - "request returned redirect (HTTP {}), which is blocked to prevent SSRF", - status - ))); - } - let headers: HashMap = response .headers() .iter() @@ -496,6 +601,25 @@ impl Tool for HttpTool { { return ApprovalRequirement::Always; } + // 3. Plain GET without headers or body → no approval needed + let method = params + .get("method") + .and_then(|v| v.as_str()) + .unwrap_or("GET"); + let has_headers = params + .get("headers") + .map(|h| match h { + serde_json::Value::Array(a) => !a.is_empty(), + serde_json::Value::Object(o) => !o.is_empty(), + _ => false, + }) + .unwrap_or(false); + let has_body = params.get("body").is_some(); + + if method.eq_ignore_ascii_case("GET") && !has_headers && !has_body { + return ApprovalRequirement::Never; + } + // Default: outbound HTTP still needs approval unless auto-approved ApprovalRequirement::UnlessAutoApproved } @@ -622,12 +746,37 @@ mod tests { // ── Approval requirement tests ────────────────────────────────────── #[test] - fn test_no_auth_headers_returns_unless_auto_approved() { + fn test_plain_get_returns_never() { let tool = HttpTool::new(); let params = serde_json::json!({ "method": "GET", "url": "https://api.example.com/data" }); + assert_eq!(tool.requires_approval(¶ms), ApprovalRequirement::Never); + } + + #[test] + fn test_post_returns_unless_auto_approved() { + let tool = HttpTool::new(); + let params = serde_json::json!({ + "method": "POST", + "url": "https://api.example.com/data", + "body": {"key": "value"} + }); + assert_eq!( + tool.requires_approval(¶ms), + ApprovalRequirement::UnlessAutoApproved + ); + } + + #[test] + fn test_get_with_headers_returns_unless_auto_approved() { + let tool = HttpTool::new(); + let params = serde_json::json!({ + "method": "GET", + "url": "https://api.example.com/data", + "headers": [{"name": "X-Custom", "value": "test"}] + }); assert_eq!( tool.requires_approval(¶ms), ApprovalRequirement::UnlessAutoApproved @@ -725,30 +874,24 @@ mod tests { } #[test] - fn test_empty_headers_return_unless_auto_approved() { + fn test_empty_headers_get_returns_never() { let tool = HttpTool::new(); - // Empty object + // Empty object — still a plain GET let params = serde_json::json!({ "method": "GET", "url": "https://example.com", "headers": {} }); - assert_eq!( - tool.requires_approval(¶ms), - ApprovalRequirement::UnlessAutoApproved - ); + assert_eq!(tool.requires_approval(¶ms), ApprovalRequirement::Never); - // Empty array + // Empty array — still a plain GET let params = serde_json::json!({ "method": "GET", "url": "https://example.com", "headers": [] }); - assert_eq!( - tool.requires_approval(¶ms), - ApprovalRequirement::UnlessAutoApproved - ); + assert_eq!(tool.requires_approval(¶ms), ApprovalRequirement::Never); } // ── Credential registry approval tests ───────────────────────────── @@ -783,7 +926,7 @@ mod tests { } #[test] - fn test_host_without_credential_mapping_returns_unless_auto_approved() { + fn test_host_without_credential_mapping_get_returns_never() { use crate::tools::wasm::SharedCredentialRegistry; let registry = Arc::new(SharedCredentialRegistry::new()); @@ -799,10 +942,19 @@ mod tests { ))), ); + // Plain GET with no credentials → Never let params = serde_json::json!({ "method": "GET", "url": "https://api.example.com/data" }); + assert_eq!(tool.requires_approval(¶ms), ApprovalRequirement::Never); + + // POST with no credentials → UnlessAutoApproved + let params = serde_json::json!({ + "method": "POST", + "url": "https://api.example.com/data", + "body": {"key": "value"} + }); assert_eq!( tool.requires_approval(¶ms), ApprovalRequirement::UnlessAutoApproved diff --git a/src/tools/builtin/json.rs b/src/tools/builtin/json.rs index cf4c7f82..4f29fa38 100644 --- a/src/tools/builtin/json.rs +++ b/src/tools/builtin/json.rs @@ -15,7 +15,9 @@ impl Tool for JsonTool { } fn description(&self) -> &str { - "Parse, query, and transform JSON data. Supports JSONPath-like queries." + "Parse, query, and transform JSON data. Supports JSONPath-like queries. \ + Use `source_tool_call_id` to reference the full output of a previous tool call \ + (avoids truncation issues with large responses)." } fn parameters_schema(&self) -> serde_json::Value { @@ -28,27 +30,48 @@ impl Tool for JsonTool { "description": "The JSON operation to perform" }, "data": { - "description": "JSON input data. Pass a string for parse, or any JSON value (object, array, string, number, boolean, null) otherwise." + "description": "JSON input data. Pass a string for parse, or any JSON value otherwise. Not required when source_tool_call_id is provided." + }, + "source_tool_call_id": { + "type": "string", + "description": "Reference a previous tool call's full output by its ID (e.g., 'call_abc123'). Use this instead of data when the previous tool output was large and may have been truncated." }, "path": { "type": "string", "description": "JSONPath-like path for query operation (e.g., 'foo.bar[0].baz')" } }, - "required": ["operation", "data"] + "required": ["operation"] }) } async fn execute( &self, params: serde_json::Value, - _ctx: &JobContext, + ctx: &JobContext, ) -> Result { let start = std::time::Instant::now(); let operation = require_str(¶ms, "operation")?; - let data = require_param(¶ms, "data")?; + // Resolve data: from stash (via source_tool_call_id) or from params + let data_value = + if let Some(ref_id) = params.get("source_tool_call_id").and_then(|v| v.as_str()) { + let stash = ctx.tool_output_stash.read().await; + let full_output = stash.get(ref_id).ok_or_else(|| { + ToolError::InvalidParameters(format!( + "no tool output found for call ID '{}'. Available IDs: {:?}", + ref_id, + stash.keys().collect::>() + )) + })?; + // Parse the stashed output as JSON, or wrap as string + serde_json::from_str::(full_output) + .unwrap_or_else(|_| serde_json::Value::String(full_output.clone())) + } else { + require_param(¶ms, "data")?.clone() + }; + let data = &data_value; let result = match operation { "parse" => { @@ -64,7 +87,11 @@ impl Tool for JsonTool { parsed } "stringify" => { - let value = parse_json_input(data)?; + let value = if data.is_string() { + parse_json_input(data)? + } else { + data.clone() + }; let json_str = serde_json::to_string_pretty(&value).map_err(|e| { ToolError::ExecutionFailed(format!("failed to stringify: {}", e)) })?; @@ -76,7 +103,11 @@ impl Tool for JsonTool { ToolError::InvalidParameters("missing 'path' parameter for query".to_string()) })?; - let value = parse_json_input(data)?; + let value = if data.is_string() { + parse_json_input(data)? + } else { + data.clone() + }; query_json(&value, path)? } "validate" => { @@ -190,6 +221,54 @@ mod tests { assert!(err.to_string().contains("invalid JSON input")); } + #[tokio::test] + async fn test_query_with_object_data_from_stash() { + use crate::context::JobContext; + + let ctx = JobContext::with_user("test", "chat", "test-session"); + + // Simulate stashed output: the http tool stores serialized JSON + // containing {"status": 200, "body": {"leagues": [{"name": "MLB"}]}} + let stashed = r#"{"status": 200, "body": {"leagues": [{"name": "MLB"}]}}"#; + ctx.tool_output_stash + .write() + .await + .insert("call_http_01".to_string(), stashed.to_string()); + + let tool = JsonTool; + let params = serde_json::json!({ + "operation": "query", + "source_tool_call_id": "call_http_01", + "path": "body.leagues[0].name" + }); + + let result = tool.execute(params, &ctx).await.unwrap(); + assert_eq!(result.result, serde_json::json!("MLB")); + } + + #[tokio::test] + async fn test_stringify_with_object_data_from_stash() { + use crate::context::JobContext; + + let ctx = JobContext::with_user("test", "chat", "test-session"); + + let stashed = r#"{"key": "value"}"#; + ctx.tool_output_stash + .write() + .await + .insert("call_01".to_string(), stashed.to_string()); + + let tool = JsonTool; + let params = serde_json::json!({ + "operation": "stringify", + "source_tool_call_id": "call_01" + }); + + let result = tool.execute(params, &ctx).await.unwrap(); + let stringified = result.result.as_str().unwrap(); + assert!(stringified.contains("\"key\": \"value\"")); + } + #[test] fn test_json_tool_schema_data_is_freeform() { let schema = JsonTool.parameters_schema(); diff --git a/src/tools/builtin/mod.rs b/src/tools/builtin/mod.rs index 6373a876..d0d6f2c1 100644 --- a/src/tools/builtin/mod.rs +++ b/src/tools/builtin/mod.rs @@ -14,7 +14,6 @@ pub mod secrets_tools; pub(crate) mod shell; pub mod skill_tools; mod time; -mod web_fetch; pub use echo::EchoTool; pub use extension_tools::{ @@ -36,8 +35,6 @@ pub use secrets_tools::{SecretDeleteTool, SecretListTool}; pub use shell::ShellTool; pub use skill_tools::{SkillInstallTool, SkillListTool, SkillRemoveTool, SkillSearchTool}; pub use time::TimeTool; -pub use web_fetch::WebFetchTool; - mod html_converter; pub use html_converter::convert_html_to_markdown; diff --git a/src/tools/builtin/web_fetch.rs b/src/tools/builtin/web_fetch.rs deleted file mode 100644 index 0a49766d..00000000 --- a/src/tools/builtin/web_fetch.rs +++ /dev/null @@ -1,378 +0,0 @@ -//! Web fetch tool — GET a URL and return its content as clean Markdown. -//! -//! Distinct from the generic `http` tool (which handles API calls with full -//! method/header/body control). `web_fetch` is purpose-built for reading web -//! pages, articles, and documentation: -//! -//! - GET-only, no custom headers or body -//! - Always attempts HTML → Markdown conversion via Readability -//! - Returns structured output: `{url, final_url, status, title, content, word_count}` -//! - Auto-approved (no confirmation prompt) -//! - Follows up to 3 redirects, SSRF-validating each hop -//! -//! All the same security infrastructure as `http`: -//! HTTPS-only, SSRF protection, DNS rebinding defence, outbound/inbound leak -//! scanning, 5 MB response cap. - -use std::time::{Duration, Instant}; - -use async_trait::async_trait; -use futures::StreamExt; -use reqwest::Client; - -use crate::context::JobContext; -use crate::safety::LeakDetector; -use crate::tools::builtin::http::validate_url; -use crate::tools::tool::{ApprovalRequirement, Tool, ToolError, ToolOutput, ToolRateLimitConfig}; - -#[cfg(feature = "html-to-markdown")] -use crate::tools::builtin::convert_html_to_markdown; - -/// Maximum response body size — matches the `http` tool limit. -const MAX_RESPONSE_SIZE: usize = 5 * 1024 * 1024; - -/// Maximum number of redirects to follow before giving up. -const MAX_REDIRECTS: usize = 3; - -/// Chrome-like User-Agent — many sites block default `reqwest` strings. -const USER_AGENT: &str = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) \ - AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"; - -/// Extract the `` text from raw HTML without a full DOM parser. -/// -/// Uses `to_ascii_lowercase()` (not `to_lowercase()`) so that byte offsets -/// remain valid across both strings. HTML tag names are ASCII-only, so -/// ASCII-only case folding is sufficient. Unicode `to_lowercase()` can -/// change byte lengths (e.g. `İ` → `i\u{307}`), making offsets derived -/// from the lowercased string invalid when used to index into the original. -fn extract_title(html: &str) -> Option<String> { - let lower = html.to_ascii_lowercase(); - let tag_start = lower.find("<title")?; - let tag_end = html[tag_start..].find('>')? + tag_start + 1; - let close = lower[tag_end..].find("")? + tag_end; - let title = html[tag_end..close].trim().to_string(); - if title.is_empty() { None } else { Some(title) } -} - -/// Web fetch tool — retrieve a URL and return clean Markdown content. -pub struct WebFetchTool { - client: Client, - leak_detector: LeakDetector, -} - -impl WebFetchTool { - /// Create a new `WebFetchTool` with a Chrome-like UA and no auto-redirects. - /// - /// Redirects are followed manually (up to [`MAX_REDIRECTS`] hops) so that - /// each `Location` URL is SSRF-validated before the next request is sent. - pub fn new() -> Self { - let client = Client::builder() - .timeout(Duration::from_secs(30)) - .redirect(reqwest::redirect::Policy::none()) - .user_agent(USER_AGENT) - .build() - .expect("Failed to create HTTP client for web_fetch"); - - Self { - client, - leak_detector: LeakDetector::new(), - } - } -} - -impl Default for WebFetchTool { - fn default() -> Self { - Self::new() - } -} - -#[async_trait] -impl Tool for WebFetchTool { - fn name(&self) -> &str { - "web_fetch" - } - - fn description(&self) -> &str { - "Fetch a URL and extract its content as clean Markdown. \ - Use for reading articles, documentation, and web pages. \ - For API calls (POST, custom headers, authentication), use the `http` tool instead." - } - - fn parameters_schema(&self) -> serde_json::Value { - serde_json::json!({ - "type": "object", - "properties": { - "url": { - "type": "string", - "description": "HTTPS URL to fetch. Must be a public URL (no localhost or private IPs)." - } - }, - "required": ["url"], - "additionalProperties": false - }) - } - - async fn execute( - &self, - params: serde_json::Value, - _ctx: &JobContext, - ) -> Result { - let start = Instant::now(); - - let url_str = params - .get("url") - .and_then(|v| v.as_str()) - .ok_or_else(|| ToolError::InvalidParameters("'url' is required".to_string()))?; - - // SSRF defence: HTTPS-only, no localhost, no private IPs, DNS rebinding check. - let mut current_url = validate_url(url_str)?; - - // Outbound leak scan — reject if URL contains secrets. - self.leak_detector - .scan_http_request(current_url.as_str(), &[], None) - .map_err(|e| ToolError::NotAuthorized(e.to_string()))?; - - // Follow redirects manually so every hop is SSRF-validated. - let response = { - let mut redirects_remaining = MAX_REDIRECTS; - loop { - let resp = self - .client - .get(current_url.clone()) - .header( - reqwest::header::ACCEPT, - "text/markdown, text/html;q=0.9, */*;q=0.8", - ) - .send() - .await - .map_err(|e| { - if e.is_timeout() { - ToolError::Timeout(Duration::from_secs(30)) - } else { - ToolError::ExternalService(e.to_string()) - } - })?; - - let status = resp.status().as_u16(); - - if (300..400).contains(&status) { - if redirects_remaining == 0 { - return Err(ToolError::ExecutionFailed(format!( - "too many redirects (max {})", - MAX_REDIRECTS - ))); - } - - let location = resp - .headers() - .get(reqwest::header::LOCATION) - .and_then(|v| v.to_str().ok()) - .ok_or_else(|| { - ToolError::ExecutionFailed(format!( - "redirect (HTTP {}) has no Location header", - status - )) - })?; - - // Resolve relative redirects against the current URL. - let next_url_str = - if location.starts_with("http://") || location.starts_with("https://") { - location.to_string() - } else { - // Relative redirect — join with current URL. - current_url - .join(location) - .map(|u| u.to_string()) - .map_err(|e| { - ToolError::ExecutionFailed(format!( - "could not resolve relative redirect '{}': {}", - location, e - )) - })? - }; - - // SSRF re-validation on every hop. - current_url = validate_url(&next_url_str)?; - self.leak_detector - .scan_http_request(current_url.as_str(), &[], None) - .map_err(|e| ToolError::NotAuthorized(e.to_string()))?; - - redirects_remaining -= 1; - tracing::debug!( - to = %current_url, - hops_left = redirects_remaining, - "web_fetch following redirect" - ); - continue; - } - - break resp; - } - }; - - let status = response.status().as_u16(); - - // Detect content type before consuming the response. - let content_type = response - .headers() - .get(reqwest::header::CONTENT_TYPE) - .and_then(|v| v.to_str().ok()) - .unwrap_or("") - .to_lowercase(); - - // Pre-check Content-Length to reject obviously oversized responses. - if let Some(content_length) = response.headers().get(reqwest::header::CONTENT_LENGTH) - && let Ok(s) = content_length.to_str() - && let Ok(len) = s.parse::() - && len > MAX_RESPONSE_SIZE - { - return Err(ToolError::ExecutionFailed(format!( - "Response Content-Length ({} bytes) exceeds maximum allowed size ({} bytes)", - len, MAX_RESPONSE_SIZE - ))); - } - - // Stream body with a hard 5 MB cap. - let mut body: Vec = Vec::new(); - let mut stream = response.bytes_stream(); - while let Some(chunk) = StreamExt::next(&mut stream).await { - let chunk = chunk.map_err(|e| { - ToolError::ExternalService(format!("failed to read response body: {}", e)) - })?; - if body.len() + chunk.len() > MAX_RESPONSE_SIZE { - return Err(ToolError::ExecutionFailed(format!( - "Response body exceeds maximum allowed size ({} bytes)", - MAX_RESPONSE_SIZE - ))); - } - body.extend_from_slice(&chunk); - } - - let raw_text = String::from_utf8_lossy(&body).into_owned(); - - // HTML → Markdown conversion (always attempted for HTML responses). - let is_html = content_type.contains("text/html"); - - let (content, title) = if is_html { - let title = extract_title(&raw_text); - - #[cfg(feature = "html-to-markdown")] - let content = match convert_html_to_markdown(&raw_text, current_url.as_str()) { - Ok(md) => md, - Err(e) => { - tracing::warn!( - url = %current_url, - error = %e, - "HTML-to-markdown conversion failed, returning raw text" - ); - raw_text.clone() - } - }; - - #[cfg(not(feature = "html-to-markdown"))] - let content = raw_text.clone(); - - (content, title) - } else { - (raw_text.clone(), None) - }; - - let word_count = content.split_whitespace().count(); - - let result = serde_json::json!({ - "url": url_str, - "final_url": current_url.as_str(), - "status": status, - "title": title, - "content": content, - "word_count": word_count, - }); - - Ok(ToolOutput::success(result, start.elapsed()).with_raw(raw_text)) - } - - fn estimated_duration(&self, _params: &serde_json::Value) -> Option { - Some(Duration::from_secs(5)) - } - - fn requires_sanitization(&self) -> bool { - true // External data always needs sanitization - } - - fn requires_approval(&self, _params: &serde_json::Value) -> ApprovalRequirement { - // Web fetch is always auto-approved — the SSRF/leak protections are - // unconditional, and reading public web pages doesn't require confirmation. - ApprovalRequirement::Never - } - - fn rate_limit_config(&self) -> Option { - Some(ToolRateLimitConfig::new(30, 500)) // same as http tool - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn extract_title_finds_basic_title() { - let html = "Hello World"; - assert_eq!(extract_title(html), Some("Hello World".to_string())); - } - - #[test] - fn extract_title_trims_whitespace() { - let html = " Spaced Title "; - assert_eq!(extract_title(html), Some("Spaced Title".to_string())); - } - - #[test] - fn extract_title_returns_none_when_absent() { - let html = "No title"; - assert_eq!(extract_title(html), None); - } - - #[test] - fn extract_title_handles_case_insensitive_tag() { - let html = "Case Test"; - assert_eq!(extract_title(html), Some("Case Test".to_string())); - } - - #[test] - fn extract_title_with_non_ascii_before_tag() { - // Turkish dotless-ı (U+0131) is 2 bytes in UTF-8 and lowercases to - // ASCII 'i' (1 byte). Using to_lowercase() would shift the byte offset - // of '' so that html[tag_start..] panics at a non-char boundary. - // to_ascii_lowercase() preserves byte lengths and must not panic. - let html = "<html><head><meta charset=\"utf-8\"/><title>ıTitle"; - let result = extract_title(html); - assert!( - result.is_some(), - "should extract title with non-ASCII content" - ); - assert!(result.unwrap().contains("Title")); - } - - #[test] - fn extract_title_with_tag_attributes() { - // has attributes — ensure the '>' scan still lands correctly. - let html = "<html><head><title lang=\"en\">Attributed"; - assert_eq!(extract_title(html), Some("Attributed".to_string())); - } - - #[test] - fn web_fetch_tool_name_and_schema() { - let tool = WebFetchTool::new(); - assert_eq!(tool.name(), "web_fetch"); - let schema = tool.parameters_schema(); - assert_eq!(schema["required"][0], "url"); - assert_eq!(schema["properties"]["url"]["type"], "string"); - } - - #[test] - fn web_fetch_never_requires_approval() { - let tool = WebFetchTool::new(); - let params = serde_json::json!({"url": "https://example.com"}); - assert_eq!(tool.requires_approval(¶ms), ApprovalRequirement::Never); - } -} diff --git a/src/tools/registry.rs b/src/tools/registry.rs index a21a612c..56719ca6 100644 --- a/src/tools/registry.rs +++ b/src/tools/registry.rs @@ -20,7 +20,7 @@ use crate::tools::builtin::{ JobStatusTool, JsonTool, ListDirTool, ListJobsTool, MemoryReadTool, MemorySearchTool, MemoryTreeTool, MemoryWriteTool, PromptQueue, ReadFileTool, ShellTool, SkillInstallTool, SkillListTool, SkillRemoveTool, SkillSearchTool, TimeTool, ToolActivateTool, ToolAuthTool, - ToolInstallTool, ToolListTool, ToolRemoveTool, ToolSearchTool, WebFetchTool, WriteFileTool, + ToolInstallTool, ToolListTool, ToolRemoveTool, ToolSearchTool, WriteFileTool, }; use crate::tools::rate_limiter::RateLimiter; use crate::tools::tool::{Tool, ToolDomain}; @@ -68,7 +68,6 @@ const PROTECTED_TOOL_NAMES: &[&str] = &[ "skill_install", "skill_remove", "message", - "web_fetch", ]; /// Registry of available tools. @@ -230,7 +229,6 @@ impl ToolRegistry { http = http.with_credentials(Arc::clone(cr), Arc::clone(ss)); } self.register_sync(Arc::new(http)); - self.register_sync(Arc::new(WebFetchTool::new())); tracing::info!("Registered {} built-in tools", self.count()); } diff --git a/tests/e2e_recorded_trace.rs b/tests/e2e_recorded_trace.rs index 14e6da22..f6cf4349 100644 --- a/tests/e2e_recorded_trace.rs +++ b/tests/e2e_recorded_trace.rs @@ -15,4 +15,17 @@ mod recorded_trace_tests { async fn recorded_telegram_check() { run_recorded_trace("telegram_check.json").await; } + + /// Recorded trace: weather query for San Francisco. + #[tokio::test] + async fn recorded_weather_sf() { + run_recorded_trace("weather_sf.json").await; + } + + /// Recorded trace: baseball stats with large HTTP response exercising + /// tool_output_stash + source_tool_call_id for untruncated data access. + #[tokio::test] + async fn recorded_baseball_stats() { + run_recorded_trace("baseball_stats.json").await; + } } diff --git a/tests/fixtures/llm_traces/recorded/baseball_stats.json b/tests/fixtures/llm_traces/recorded/baseball_stats.json new file mode 100644 index 00000000..947fb68d --- /dev/null +++ b/tests/fixtures/llm_traces/recorded/baseball_stats.json @@ -0,0 +1,102 @@ +{ + "model_name": "recorded-baseball-stats", + "expects": { + "response_contains": [ + "baseball" + ], + "tools_used": [ + "http", + "json" + ], + "tools_order": [ + "http", + "json" + ], + "all_tools_succeeded": true, + "min_responses": 1 + }, + "memory_snapshot": [ + { + "path": "IDENTITY.md", + "content": "# Identity\n\nName: Alfred\nNature: A secure personal AI assistant\n\nEdit this file to give your agent a custom name and personality." + } + ], + "steps": [ + { + "response": { + "type": "user_input", + "content": "what are latest baseball stats?" + } + }, + { + "request_hint": { + "last_user_message_contains": "baseball stats" + }, + "response": { + "type": "tool_calls", + "tool_calls": [ + { + "id": "call_baseball_http_01", + "name": "http", + "arguments": { + "method": "GET", + "url": "https://site.api.espn.com/apis/site/v2/sports/baseball/mlb/scoreboard" + } + } + ], + "input_tokens": 5000, + "output_tokens": 50 + } + }, + { + "request_hint": { + "last_user_message_contains": "baseball stats" + }, + "response": { + "type": "tool_calls", + "tool_calls": [ + { + "id": "call_baseball_json_02", + "name": "json", + "arguments": { + "operation": "query", + "source_tool_call_id": "call_baseball_http_01", + "path": "body.leagues[0].name" + } + } + ], + "input_tokens": 6000, + "output_tokens": 60 + } + }, + { + "request_hint": { + "last_user_message_contains": "baseball stats" + }, + "response": { + "type": "text", + "content": "Here are the latest **baseball** stats from the MLB scoreboard:\n\n- **League:** Major League Baseball\n- **Season:** 2026\n\nThe ESPN API returned the current scoreboard data. The response was large but I was able to query the full output using the json tool's source_tool_call_id feature to access the untruncated data.", + "input_tokens": 7000, + "output_tokens": 100 + } + } + ], + "http_exchanges": [ + { + "request": { + "method": "GET", + "url": "https://site.api.espn.com/apis/site/v2/sports/baseball/mlb/scoreboard" + }, + "response": { + "status": 200, + "headers": [ + [ + "content-type", + "application/json;charset=UTF-8" + ] + ], + "body": "{\"leagues\":[{\"id\":\"10\",\"uid\":\"s:1~l:10\",\"name\":\"Major League Baseball\",\"abbreviation\":\"MLB\",\"midsizeName\":\"MLB\",\"slug\":\"mlb\",\"season\":{\"year\":2026,\"startDate\":\"2026-02-19T08:00Z\",\"endDate\":\"2026-11-12T07:59Z\",\"displayName\":\"2026\",\"type\":{\"id\":\"1\",\"type\":1,\"name\":\"Spring Training\",\"abbreviation\":\"pre\"}},\"logos\":[{\"href\":\"https://a.espncdn.com/i/teamlogos/leagues/500/mlb.png\",\"width\":500,\"height\":500,\"alt\":\"\",\"rel\":[\"full\",\"default\"],\"lastUpdated\":\"2023-03-29T12:34Z\"},{\"href\":\"https://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500-dark/mlb.png&w=500&h=500&transparent=true\",\"width\":500,\"height\":500,\"alt\":\"\",\"rel\":[\"full\",\"dark\"],\"lastUpdated\":\"2026-03-05T04:13Z\"}],\"calendarType\":\"day\",\"calendarIsWhitelist\":false,\"calendarStartDate\":\"2026-02-19T08:00Z\",\"calendarEndDate\":\"2026-11-12T07:59Z\",\"calendar\":[\"2026-02-19T08:00Z\",\"2026-07-13T07:00Z\",\"2026-07-15T07:00Z\",\"2026-09-28T07:00Z\",\"2026-09-29T07:00Z\",\"2026-09-30T07:00Z\",\"2026-10-01T07:00Z\",\"2026-10-02T07:00Z\",\"2026-10-03T07:00Z\",\"2026-10-04T07:00Z\",\"2026-10-05T07:00Z\",\"2026-10-06T07:00Z\",\"2026-10-07T07:00Z\",\"2026-10-08T07:00Z\",\"2026-10-09T07:00Z\",\"2026-10-10T07:00Z\",\"2026-10-11T07:00Z\",\"2026-10-12T07:00Z\",\"2026-10-13T07:00Z\",\"2026-10-14T07:00Z\",\"2026-10-15T07:00Z\",\"2026-10-16T07:00Z\",\"2026-10-17T07:00Z\",\"2026-10-18T07:00Z\",\"2026-10-19T07:00Z\",\"2026-10-20T07:00Z\",\"2026-10-21T07:00Z\",\"2026-10-22T07:00Z\",\"2026-10-23T07:00Z\",\"2026-10-24T07:00Z\",\"2026-10-25T07:00Z\",\"2026-10-26T07:00Z\",\"2026-10-27T07:00Z\",\"2026-10-28T07:00Z\",\"2026-10-29T07:00Z\",\"2026-10-30T07:00Z\",\"2026-10-31T07:00Z\",\"2026-11-01T07:00Z\",\"2026-11-02T08:00Z\",\"2026-11-03T08:00Z\",\"2026-11-04T08:00Z\",\"2026-11-05T08:00Z\",\"2026-11-06T08:00Z\",\"2026-11-07T08:00Z\",\"2026-11-08T08:00Z\",\"2026-11-09T08:00Z\",\"2026-11-10T08:00Z\",\"2026-11-11T08:00Z\"]}],\"season\":{\"type\":1,\"year\":2026},\"day\":{\"date\":\"2026-03-05\"},\"events\":[{\"id\":\"401833056\",\"uid\":\"s:1~l:10~e:401833056\",\"date\":\"2026-03-05T18:05Z\",\"name\":\"Toronto Blue Jays at Atlanta Braves\",\"shortName\":\"TOR @ ATL\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833056\",\"uid\":\"s:1~l:10~e:401833056~c:401833056\",\"date\":\"2026-03-05T18:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":true,\"recent\":true,\"wasSuspended\":false,\"venue\":{\"id\":\"230\",\"fullName\":\"CoolToday Park\",\"address\":{\"city\":\"North Port\",\"state\":\"Florida\"},\"indoor\":false},\"competitors\":[{\"id\":\"15\",\"uid\":\"s:1~l:10~t:15\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"15\",\"uid\":\"s:1~l:10~t:15\",\"location\":\"Atlanta\",\"name\":\"Braves\",\"abbreviation\":\"ATL\",\"displayName\":\"Atlanta Braves\",\"shortDisplayName\":\"Braves\",\"color\":\"0c2340\",\"alternateColor\":\"ba0c2f\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/atl/atlanta-braves\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/atl/atlanta-braves\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/atl/atlanta-braves\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/atl\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/atl.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"2\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".250\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"3.86\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":1.0,\"athlete\":{\"id\":\"35304\",\"fullName\":\"Mauricio Dubon\",\"displayName\":\"Mauricio Dubon\",\"shortName\":\"M. Dubon\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35304\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35304.png\",\"jersey\":\"14\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"15\"},\"active\":true},\"team\":{\"id\":\"15\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-1, K\",\"value\":0.0,\"athlete\":{\"id\":\"32767\",\"fullName\":\"Matt Olson\",\"displayName\":\"Matt Olson\",\"shortName\":\"M. Olson\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32767\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32767.png\",\"jersey\":\"28\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"15\"},\"active\":true},\"team\":{\"id\":\"15\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-1, K\",\"value\":0.0,\"athlete\":{\"id\":\"32767\",\"fullName\":\"Matt Olson\",\"displayName\":\"Matt Olson\",\"shortName\":\"M. Olson\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32767\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32767.png\",\"jersey\":\"28\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"15\"},\"active\":true},\"team\":{\"id\":\"15\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, SB\",\"value\":61.25,\"athlete\":{\"id\":\"42470\",\"fullName\":\"Michael Harris II\",\"displayName\":\"Michael Harris II\",\"shortName\":\"M. Harris II\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42470\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42470.png\",\"jersey\":\"23\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"15\"},\"active\":true},\"team\":{\"id\":\"15\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1, SB\",\"value\":61.25,\"athlete\":{\"id\":\"42470\",\"fullName\":\"Michael Harris II\",\"displayName\":\"Michael Harris II\",\"shortName\":\"M. Harris II\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42470\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42470.png\",\"jersey\":\"23\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"15\"},\"active\":true},\"team\":{\"id\":\"15\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":30948,\"athlete\":{\"id\":\"30948\",\"fullName\":\"Chris Sale\",\"displayName\":\"Chris Sale\",\"shortName\":\"C. Sale\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/30948\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/30948.png\",\"jersey\":\"51\",\"position\":\"SP\",\"team\":{\"id\":\"15\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.79\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 5.79)\"}],\"hits\":2,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"8-2-1\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"4-1\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"4-1-1\"}]},{\"id\":\"14\",\"uid\":\"s:1~l:10~t:14\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"14\",\"uid\":\"s:1~l:10~t:14\",\"location\":\"Toronto\",\"name\":\"Blue Jays\",\"abbreviation\":\"TOR\",\"displayName\":\"Toronto Blue Jays\",\"shortDisplayName\":\"Blue Jays\",\"color\":\"134a8e\",\"alternateColor\":\"6cace5\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/tor/toronto-blue-jays\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/tor/toronto-blue-jays\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/tor/toronto-blue-jays\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/tor\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/tor.png\"},\"score\":\"1\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":1.0,\"displayValue\":\"1\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"5\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"1\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".500\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1, R\",\"value\":1.0,\"athlete\":{\"id\":\"33142\",\"fullName\":\"Tyler Heineman\",\"displayName\":\"Tyler Heineman\",\"shortName\":\"T. Heineman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33142\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33142.png\",\"jersey\":\"55\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"14\"},\"active\":true},\"team\":{\"id\":\"14\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"1-1, R\",\"value\":0.0,\"athlete\":{\"id\":\"33142\",\"fullName\":\"Tyler Heineman\",\"displayName\":\"Tyler Heineman\",\"shortName\":\"T. Heineman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33142\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33142.png\",\"jersey\":\"55\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"14\"},\"active\":true},\"team\":{\"id\":\"14\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-0, RBI\",\"value\":1.0,\"athlete\":{\"id\":\"4918159\",\"fullName\":\"Jonatan Clase\",\"displayName\":\"Jonatan Clase\",\"shortName\":\"J. Clase\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4918159\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4918159.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"14\"},\"active\":true},\"team\":{\"id\":\"14\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, R\",\"value\":62.0,\"athlete\":{\"id\":\"33142\",\"fullName\":\"Tyler Heineman\",\"displayName\":\"Tyler Heineman\",\"shortName\":\"T. Heineman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33142\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33142.png\",\"jersey\":\"55\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"14\"},\"active\":true},\"team\":{\"id\":\"14\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1, R\",\"value\":62.0,\"athlete\":{\"id\":\"33142\",\"fullName\":\"Tyler Heineman\",\"displayName\":\"Tyler Heineman\",\"shortName\":\"T. Heineman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33142\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33142.png\",\"jersey\":\"55\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"14\"},\"active\":true},\"team\":{\"id\":\"14\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":34943,\"athlete\":{\"id\":\"34943\",\"fullName\":\"Dylan Cease\",\"displayName\":\"Dylan Cease\",\"shortName\":\"D. Cease\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/34943\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/34943.png\",\"jersey\":\"84\",\"position\":\"SP\",\"team\":{\"id\":\"14\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.40\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 5.40)\"}],\"hits\":5,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"2-7-2\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-4\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"0-3-2\"}]}],\"notes\":[],\"situation\":{\"lastPlay\":{\"id\":\"4018330560405020037\",\"type\":{\"id\":\"37\",\"text\":\"Strike Swinging\",\"abbreviation\":\"SS\",\"alternativeText\":\"Strikeout\",\"type\":\"strike-swinging\"},\"text\":\"Pitch 1 : Strike 1 Swinging\",\"scoreValue\":0,\"team\":{\"id\":\"15\"},\"atBatId\":\"4018330560405\",\"summaryType\":\"P\",\"athletesInvolved\":[{\"id\":\"39957\",\"fullName\":\"Jesus Sanchez\",\"displayName\":\"Jesus Sanchez\",\"shortName\":\"J. Sanchez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39957\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39957.png\",\"jersey\":\"12\",\"position\":\"RF\",\"team\":{\"id\":\"14\"}}]},\"balls\":0,\"strikes\":1,\"outs\":1,\"onFirst\":true,\"onSecond\":true,\"onThird\":true,\"pitcher\":{\"playerId\":30948,\"period\":3,\"athlete\":{\"id\":\"30948\",\"fullName\":\"Chris Sale\",\"displayName\":\"Chris Sale\",\"shortName\":\"C. Sale\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/30948\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/30948.png\",\"jersey\":\"51\",\"position\":\"SP\",\"team\":{\"id\":\"15\"}},\"summary\":\"2.1 IP, ER, 5 H, 2 K, BB\"},\"batter\":{\"playerId\":39957,\"period\":3,\"athlete\":{\"id\":\"39957\",\"fullName\":\"Jesus Sanchez\",\"displayName\":\"Jesus Sanchez\",\"shortName\":\"J. Sanchez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39957\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39957.png\",\"jersey\":\"12\",\"position\":\"RF\",\"team\":{\"id\":\"14\"}},\"summary\":\"1-1\"}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Top 3rd\",\"shortDetail\":\"Top 3rd\"}},\"broadcasts\":[{\"market\":\"national\",\"names\":[\"MLB.TV\"]},{\"market\":\"home\",\"names\":[\"Gray Media\"]}],\"leaders\":[{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, R\",\"value\":62.0,\"athlete\":{\"id\":\"33142\",\"fullName\":\"Tyler Heineman\",\"displayName\":\"Tyler Heineman\",\"shortName\":\"T. Heineman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33142\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33142.png\",\"jersey\":\"55\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"14\"},\"active\":true},\"team\":{\"id\":\"14\"}},{\"displayValue\":\"1-2, 2B\",\"value\":61.75,\"athlete\":{\"id\":\"4997589\",\"fullName\":\"Addison Barger\",\"displayName\":\"Addison Barger\",\"shortName\":\"A. Barger\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4997589\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4997589.png\",\"jersey\":\"47\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"14\"},\"active\":true},\"team\":{\"id\":\"14\"}}]}],\"format\":{\"regulation\":{\"periods\":9}},\"startDate\":\"2026-03-05T18:05Z\",\"outsText\":\"1 Out\",\"broadcast\":\"MLB.TV\",\"geoBroadcasts\":[{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB.TV\",\"logo\":\"https://a.espncdn.com/guid/0db644c3-9f87-37e7-9884-858c2ed45218/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"Gray Media\"},\"lang\":\"en\",\"region\":\"us\"}],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"live\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833056\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"boxscore\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/boxscore/_/gameId/401833056\",\"text\":\"Box Score\",\"shortText\":\"Box Score\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"pbp\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/playbyplay/_/gameId/401833056\",\"text\":\"Play-by-Play\",\"shortText\":\"Play-by-Play\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"3\",\"temperature\":86,\"highTemperature\":86,\"conditionId\":\"Partly sunny\",\"link\":{\"language\":\"en-US\",\"rel\":[\"34759\"],\"href\":\"http://www.accuweather.com/en/us/cooltoday-park-fl/34285/current-weather/209231_poi?lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Top 3rd\",\"shortDetail\":\"Top 3rd\"}}},{\"id\":\"401833064\",\"uid\":\"s:1~l:10~e:401833064\",\"date\":\"2026-03-05T18:05Z\",\"name\":\"Minnesota Twins at New York Yankees\",\"shortName\":\"MIN @ NYY\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833064\",\"uid\":\"s:1~l:10~e:401833064~c:401833064\",\"date\":\"2026-03-05T18:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":true,\"recent\":true,\"wasSuspended\":false,\"venue\":{\"id\":\"72\",\"fullName\":\"George M. Steinbrenner Field\",\"address\":{\"city\":\"Tampa\",\"state\":\"Florida\"},\"indoor\":false},\"competitors\":[{\"id\":\"10\",\"uid\":\"s:1~l:10~t:10\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"10\",\"uid\":\"s:1~l:10~t:10\",\"location\":\"New York\",\"name\":\"Yankees\",\"abbreviation\":\"NYY\",\"displayName\":\"New York Yankees\",\"shortDisplayName\":\"Yankees\",\"color\":\"132448\",\"alternateColor\":\"c4ced4\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/nyy/new-york-yankees\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/nyy/new-york-yankees\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/nyy/new-york-yankees\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/nyy\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/nyy.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"1\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".167\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"6.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":1.0,\"athlete\":{\"id\":\"42401\",\"fullName\":\"Jasson Dominguez\",\"displayName\":\"Jasson Dominguez\",\"shortName\":\"J. Dominguez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42401\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42401.png\",\"jersey\":\"24\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"10\"},\"active\":true},\"team\":{\"id\":\"10\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-1\",\"value\":0.0,\"athlete\":{\"id\":\"30583\",\"fullName\":\"Giancarlo Stanton\",\"displayName\":\"Giancarlo Stanton\",\"shortName\":\"G. Stanton\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/30583\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/30583.png\",\"jersey\":\"27\",\"position\":{\"abbreviation\":\"DH\"},\"team\":{\"id\":\"10\"},\"active\":true},\"team\":{\"id\":\"10\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-1\",\"value\":0.0,\"athlete\":{\"id\":\"30583\",\"fullName\":\"Giancarlo Stanton\",\"displayName\":\"Giancarlo Stanton\",\"shortName\":\"G. Stanton\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/30583\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/30583.png\",\"jersey\":\"27\",\"position\":{\"abbreviation\":\"DH\"},\"team\":{\"id\":\"10\"},\"active\":true},\"team\":{\"id\":\"10\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":61.0,\"athlete\":{\"id\":\"42401\",\"fullName\":\"Jasson Dominguez\",\"displayName\":\"Jasson Dominguez\",\"shortName\":\"J. Dominguez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42401\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42401.png\",\"jersey\":\"24\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"10\"},\"active\":true},\"team\":{\"id\":\"10\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":61.0,\"athlete\":{\"id\":\"42401\",\"fullName\":\"Jasson Dominguez\",\"displayName\":\"Jasson Dominguez\",\"shortName\":\"J. Dominguez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42401\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42401.png\",\"jersey\":\"24\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"10\"},\"active\":true},\"team\":{\"id\":\"10\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":32776,\"athlete\":{\"id\":\"32776\",\"fullName\":\"Paul Blackburn\",\"displayName\":\"Paul Blackburn\",\"shortName\":\"P. Blackburn\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32776\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32776.png\",\"jersey\":\"58\",\"position\":\"RP\",\"team\":{\"id\":\"10\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 0.00)\"}],\"hits\":1,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"9-2\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"4-1\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"5-1\"}]},{\"id\":\"9\",\"uid\":\"s:1~l:10~t:9\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"9\",\"uid\":\"s:1~l:10~t:9\",\"location\":\"Minnesota\",\"name\":\"Twins\",\"abbreviation\":\"MIN\",\"displayName\":\"Minnesota Twins\",\"shortDisplayName\":\"Twins\",\"color\":\"031f40\",\"alternateColor\":\"e20e32\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/min/minnesota-twins\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/min/minnesota-twins\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/min/minnesota-twins\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/min\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/min.png\"},\"score\":\"2\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":1.0,\"displayValue\":\"1\",\"period\":2},{\"value\":1.0,\"displayValue\":\"1\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"4\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"2\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".308\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1, 2B, RBI\",\"value\":1.0,\"athlete\":{\"id\":\"39918\",\"fullName\":\"Tristan Gray\",\"displayName\":\"Tristan Gray\",\"shortName\":\"T. Gray\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39918\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39918.png\",\"jersey\":\"4\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"9\"},\"active\":true},\"team\":{\"id\":\"9\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"1-2, HR, RBI, R\",\"value\":1.0,\"athlete\":{\"id\":\"4977664\",\"fullName\":\"Luke Keaschall\",\"displayName\":\"Luke Keaschall\",\"shortName\":\"L. Keaschall\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4977664\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4977664.png\",\"jersey\":\"15\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"9\"},\"active\":true},\"team\":{\"id\":\"9\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"1-1, 2B, RBI\",\"value\":1.0,\"athlete\":{\"id\":\"39918\",\"fullName\":\"Tristan Gray\",\"displayName\":\"Tristan Gray\",\"shortName\":\"T. Gray\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39918\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39918.png\",\"jersey\":\"4\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"9\"},\"active\":true},\"team\":{\"id\":\"9\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-2, HR, RBI, R\",\"value\":65.75,\"athlete\":{\"id\":\"4977664\",\"fullName\":\"Luke Keaschall\",\"displayName\":\"Luke Keaschall\",\"shortName\":\"L. Keaschall\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4977664\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4977664.png\",\"jersey\":\"15\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"9\"},\"active\":true},\"team\":{\"id\":\"9\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-2, HR, RBI, R\",\"value\":65.75,\"athlete\":{\"id\":\"4977664\",\"fullName\":\"Luke Keaschall\",\"displayName\":\"Luke Keaschall\",\"shortName\":\"L. Keaschall\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4977664\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4977664.png\",\"jersey\":\"15\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"9\"},\"active\":true},\"team\":{\"id\":\"9\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":42480,\"athlete\":{\"id\":\"42480\",\"fullName\":\"Taj Bradley\",\"displayName\":\"Taj Bradley\",\"shortName\":\"T. Bradley\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42480\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42480.png\",\"jersey\":\"26\",\"position\":\"SP\",\"team\":{\"id\":\"9\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"10.80\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-1, 10.80)\"}],\"hits\":4,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"2-8-1\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"0-5-1\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"2-3\"}]}],\"notes\":[],\"situation\":{\"lastPlay\":{\"id\":\"4018330640501080005\",\"type\":{\"id\":\"5\",\"text\":\"Ball\",\"abbreviation\":\"B\",\"alternativeText\":\"Walk\",\"type\":\"ball\"},\"text\":\"Pitch 7 : Ball 4\",\"scoreValue\":0,\"team\":{\"id\":\"9\"},\"atBatId\":\"4018330640501\",\"summaryType\":\"P\",\"athletesInvolved\":[{\"id\":\"3962127\",\"fullName\":\"Max Schuemann\",\"displayName\":\"Max Schuemann\",\"shortName\":\"M. Schuemann\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/3962127\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/3962127.png\",\"jersey\":\"30\",\"position\":\"3B\",\"team\":{\"id\":\"10\"}}]},\"balls\":4,\"strikes\":2,\"outs\":0,\"pitcher\":{\"playerId\":42480,\"period\":3,\"athlete\":{\"id\":\"42480\",\"fullName\":\"Taj Bradley\",\"displayName\":\"Taj Bradley\",\"shortName\":\"T. Bradley\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42480\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42480.png\",\"jersey\":\"26\",\"position\":\"SP\",\"team\":{\"id\":\"9\"}},\"summary\":\"2.0 IP, 0 ER, H, 0 BB\"},\"batter\":{\"playerId\":3962127,\"period\":3,\"athlete\":{\"id\":\"3962127\",\"fullName\":\"Max Schuemann\",\"displayName\":\"Max Schuemann\",\"shortName\":\"M. Schuemann\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/3962127\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/3962127.png\",\"jersey\":\"30\",\"position\":\"3B\",\"team\":{\"id\":\"10\"}},\"summary\":\"0-0\"},\"onFirst\":false,\"onSecond\":false,\"onThird\":false},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Bottom 3rd\",\"shortDetail\":\"Bot 3rd\"}},\"broadcasts\":[{\"market\":\"national\",\"names\":[\"MLB.TV\"]},{\"market\":\"away\",\"names\":[\"Twins.TV\"]},{\"market\":\"home\",\"names\":[\"YES\",\"Gotham Sports App\"]}],\"leaders\":[{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-2, HR, RBI, R\",\"value\":65.75,\"athlete\":{\"id\":\"4977664\",\"fullName\":\"Luke Keaschall\",\"displayName\":\"Luke Keaschall\",\"shortName\":\"L. Keaschall\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4977664\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4977664.png\",\"jersey\":\"15\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"9\"},\"active\":true},\"team\":{\"id\":\"9\"}},{\"displayValue\":\"1-1, 2B, RBI\",\"value\":63.0,\"athlete\":{\"id\":\"39918\",\"fullName\":\"Tristan Gray\",\"displayName\":\"Tristan Gray\",\"shortName\":\"T. Gray\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39918\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39918.png\",\"jersey\":\"4\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"9\"},\"active\":true},\"team\":{\"id\":\"9\"}}]}],\"format\":{\"regulation\":{\"periods\":9}},\"startDate\":\"2026-03-05T18:05Z\",\"outsText\":\"0 Outs\",\"broadcast\":\"MLB.TV\",\"geoBroadcasts\":[{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB.TV\",\"logo\":\"https://a.espncdn.com/guid/0db644c3-9f87-37e7-9884-858c2ed45218/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"3\",\"type\":\"Away\"},\"media\":{\"shortName\":\"Twins.TV\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"1\",\"shortName\":\"TV\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"YES\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"Gotham Sports App\"},\"lang\":\"en\",\"region\":\"us\"}],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"live\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833064\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"boxscore\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/boxscore/_/gameId/401833064\",\"text\":\"Box Score\",\"shortText\":\"Box Score\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"pbp\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/playbyplay/_/gameId/401833064\",\"text\":\"Play-by-Play\",\"shortText\":\"Play-by-Play\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"6\",\"temperature\":86,\"highTemperature\":86,\"conditionId\":\"Mostly cloudy\",\"link\":{\"language\":\"en-US\",\"rel\":[\"33697\"],\"href\":\"http://www.accuweather.com/en/us/george-m-steinbrenner-field-fl/33602/current-weather/209237_poi?lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Bottom 3rd\",\"shortDetail\":\"Bot 3rd\"}}},{\"id\":\"401833065\",\"uid\":\"s:1~l:10~e:401833065\",\"date\":\"2026-03-05T18:05Z\",\"name\":\"Boston Red Sox at Philadelphia Phillies\",\"shortName\":\"BOS @ PHI\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833065\",\"uid\":\"s:1~l:10~e:401833065~c:401833065\",\"date\":\"2026-03-05T18:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":true,\"recent\":true,\"wasSuspended\":false,\"venue\":{\"id\":\"4218\",\"fullName\":\"BayCare Ballpark\",\"address\":{\"city\":\"Clearwater\",\"state\":\"Florida\"},\"indoor\":false},\"competitors\":[{\"id\":\"22\",\"uid\":\"s:1~l:10~t:22\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"22\",\"uid\":\"s:1~l:10~t:22\",\"location\":\"Philadelphia\",\"name\":\"Phillies\",\"abbreviation\":\"PHI\",\"displayName\":\"Philadelphia Phillies\",\"shortDisplayName\":\"Phillies\",\"color\":\"e81828\",\"alternateColor\":\"003278\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/phi/philadelphia-phillies\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/phi/philadelphia-phillies\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/phi/philadelphia-phillies\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/phi\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/phi.png\"},\"score\":\"3\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":3.0,\"displayValue\":\"3\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"5\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"3\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".417\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1, R\",\"value\":1.0,\"athlete\":{\"id\":\"35537\",\"fullName\":\"Adolis Garcia\",\"displayName\":\"Adolis Garcia\",\"shortName\":\"A. Garcia\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35537\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35537.png\",\"jersey\":\"53\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"22\"},\"active\":true},\"team\":{\"id\":\"22\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-2, K\",\"value\":0.0,\"athlete\":{\"id\":\"32177\",\"fullName\":\"J.T. Realmuto\",\"displayName\":\"J.T. Realmuto\",\"shortName\":\"J.T. Realmuto\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32177\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32177.png\",\"jersey\":\"10\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"22\"},\"active\":true},\"team\":{\"id\":\"22\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"1-1, 2 RBI, SB\",\"value\":2.0,\"athlete\":{\"id\":\"40593\",\"fullName\":\"Dylan Moore\",\"displayName\":\"Dylan Moore\",\"shortName\":\"D. Moore\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40593\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40593.png\",\"jersey\":\"25\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"22\"},\"active\":false},\"team\":{\"id\":\"22\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, 2 RBI, SB\",\"value\":63.25,\"athlete\":{\"id\":\"40593\",\"fullName\":\"Dylan Moore\",\"displayName\":\"Dylan Moore\",\"shortName\":\"D. Moore\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40593\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40593.png\",\"jersey\":\"25\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"22\"},\"active\":false},\"team\":{\"id\":\"22\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1, 2 RBI, SB\",\"value\":63.25,\"athlete\":{\"id\":\"40593\",\"fullName\":\"Dylan Moore\",\"displayName\":\"Dylan Moore\",\"shortName\":\"D. Moore\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40593\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40593.png\",\"jersey\":\"25\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"22\"},\"active\":false},\"team\":{\"id\":\"22\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":39667,\"athlete\":{\"id\":\"39667\",\"fullName\":\"Jesus Luzardo\",\"displayName\":\"Jesus Luzardo\",\"shortName\":\"J. Luzardo\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39667\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39667.png\",\"jersey\":\"44\",\"position\":\"SP\",\"team\":{\"id\":\"22\"}},\"statistics\":[],\"record\":\"\"}],\"hits\":5,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"3-7-1\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-2\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"0-5-1\"}]},{\"id\":\"2\",\"uid\":\"s:1~l:10~t:2\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"2\",\"uid\":\"s:1~l:10~t:2\",\"location\":\"Boston\",\"name\":\"Red Sox\",\"abbreviation\":\"BOS\",\"displayName\":\"Boston Red Sox\",\"shortDisplayName\":\"Red Sox\",\"color\":\"0d2b56\",\"alternateColor\":\"bd3039\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/bos/boston-red-sox\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/bos/boston-red-sox\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/bos/boston-red-sox\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/bos\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/bos.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"2\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".182\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"11.57\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"2-2, 2 SB\",\"value\":1.0,\"athlete\":{\"id\":\"4346317\",\"fullName\":\"Braiden Ward\",\"displayName\":\"Braiden Ward\",\"shortName\":\"B. Ward\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4346317\"}],\"jersey\":\"92\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"2\"},\"active\":false},\"team\":{\"id\":\"2\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-1, K\",\"value\":0.0,\"athlete\":{\"id\":\"36176\",\"fullName\":\"Matt Thaiss\",\"displayName\":\"Matt Thaiss\",\"shortName\":\"M. Thaiss\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/36176\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/36176.png\",\"jersey\":\"25\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"2\"},\"active\":false},\"team\":{\"id\":\"2\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-1, K\",\"value\":0.0,\"athlete\":{\"id\":\"36176\",\"fullName\":\"Matt Thaiss\",\"displayName\":\"Matt Thaiss\",\"shortName\":\"M. Thaiss\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/36176\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/36176.png\",\"jersey\":\"25\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"2\"},\"active\":false},\"team\":{\"id\":\"2\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"2-2, 2 SB\",\"value\":63.5,\"athlete\":{\"id\":\"4346317\",\"fullName\":\"Braiden Ward\",\"displayName\":\"Braiden Ward\",\"shortName\":\"B. Ward\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4346317\"}],\"jersey\":\"92\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"2\"},\"active\":false},\"team\":{\"id\":\"2\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"2-2, 2 SB\",\"value\":63.5,\"athlete\":{\"id\":\"4346317\",\"fullName\":\"Braiden Ward\",\"displayName\":\"Braiden Ward\",\"shortName\":\"B. Ward\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4346317\"}],\"jersey\":\"92\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"2\"},\"active\":false},\"team\":{\"id\":\"2\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":4081274,\"athlete\":{\"id\":\"4081274\",\"fullName\":\"T.J. Sikkema\",\"displayName\":\"T.J. Sikkema\",\"shortName\":\"T.J. Sikkema\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4081274\"}],\"jersey\":\"74\",\"position\":\"SP\",\"team\":{\"id\":\"2\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"6.75\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-31st\"}],\"record\":\"(0-0, 6.75)\"}],\"hits\":2,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"6-5\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-3\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"3-2\"}]}],\"notes\":[],\"situation\":{\"lastPlay\":{\"id\":\"4018330650502010001\",\"type\":{\"id\":\"1\",\"text\":\"Start Batter/Pitcher\",\"alternativeText\":\"Now at bat\",\"type\":\"start-batterpitcher\"},\"text\":\"T.J. Sikkema pitches to Brandon Marsh\",\"scoreValue\":0,\"team\":{\"id\":\"22\"},\"atBatId\":\"4018330650502\",\"summaryType\":\"A\",\"athletesInvolved\":[]},\"balls\":0,\"strikes\":0,\"outs\":1,\"pitcher\":{\"playerId\":4081274,\"period\":3,\"athlete\":{\"id\":\"4081274\",\"fullName\":\"T.J. Sikkema\",\"displayName\":\"T.J. Sikkema\",\"shortName\":\"T.J. Sikkema\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4081274\"}],\"jersey\":\"74\",\"position\":\"SP\",\"team\":{\"id\":\"2\"}},\"summary\":\"1.2 IP, 3 ER, 5 H, K, 0 BB\"},\"batter\":{\"playerId\":40803,\"period\":3,\"athlete\":{\"id\":\"40803\",\"fullName\":\"Brandon Marsh\",\"displayName\":\"Brandon Marsh\",\"shortName\":\"B. Marsh\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40803\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40803.png\",\"jersey\":\"16\",\"position\":\"CF\",\"team\":{\"id\":\"22\"}},\"summary\":\"0-1\"},\"onFirst\":false,\"onSecond\":false,\"onThird\":false},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Bottom 3rd\",\"shortDetail\":\"Bot 3rd\"}},\"broadcasts\":[{\"market\":\"national\",\"names\":[\"MLB.TV\",\"MLB Net\"]},{\"market\":\"home\",\"names\":[\"NBC Sports Phil +\",\"MLBN\"]}],\"leaders\":[{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"2-2, 2 SB\",\"value\":63.5,\"athlete\":{\"id\":\"4346317\",\"fullName\":\"Braiden Ward\",\"displayName\":\"Braiden Ward\",\"shortName\":\"B. Ward\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4346317\"}],\"jersey\":\"92\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"2\"},\"active\":false},\"team\":{\"id\":\"2\"}},{\"displayValue\":\"1-1, 2 RBI, SB\",\"value\":63.25,\"athlete\":{\"id\":\"40593\",\"fullName\":\"Dylan Moore\",\"displayName\":\"Dylan Moore\",\"shortName\":\"D. Moore\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40593\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40593.png\",\"jersey\":\"25\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"22\"},\"active\":false},\"team\":{\"id\":\"22\"}}]}],\"format\":{\"regulation\":{\"periods\":9}},\"startDate\":\"2026-03-05T18:05Z\",\"outsText\":\"1 Out\",\"broadcast\":\"MLB.TV/MLB Net\",\"geoBroadcasts\":[{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB.TV\",\"logo\":\"https://a.espncdn.com/guid/0db644c3-9f87-37e7-9884-858c2ed45218/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"1\",\"shortName\":\"TV\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"NBC Sports Phil +\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"1\",\"shortName\":\"TV\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB Net\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"1\",\"shortName\":\"TV\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"MLBN\"},\"lang\":\"en\",\"region\":\"us\"}],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"live\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833065\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"boxscore\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/boxscore/_/gameId/401833065\",\"text\":\"Box Score\",\"shortText\":\"Box Score\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"pbp\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/playbyplay/_/gameId/401833065\",\"text\":\"Play-by-Play\",\"shortText\":\"Play-by-Play\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"6\",\"temperature\":82,\"highTemperature\":82,\"conditionId\":\"Mostly cloudy\",\"link\":{\"language\":\"en-US\",\"rel\":[\"33765\"],\"href\":\"http://www.accuweather.com/en/us/baycare-ballpark-fl/33755/current-weather/209227_poi?lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Bottom 3rd\",\"shortDetail\":\"Bot 3rd\"}}},{\"id\":\"401833066\",\"uid\":\"s:1~l:10~e:401833066\",\"date\":\"2026-03-05T18:05Z\",\"name\":\"St. Louis Cardinals at Pittsburgh Pirates\",\"shortName\":\"STL @ PIT\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833066\",\"uid\":\"s:1~l:10~e:401833066~c:401833066\",\"date\":\"2026-03-05T18:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":true,\"recent\":true,\"wasSuspended\":false,\"venue\":{\"id\":\"74\",\"fullName\":\"LECOM Park\",\"address\":{\"city\":\"Bradenton\",\"state\":\"Florida\"},\"indoor\":false},\"competitors\":[{\"id\":\"23\",\"uid\":\"s:1~l:10~t:23\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"23\",\"uid\":\"s:1~l:10~t:23\",\"location\":\"Pittsburgh\",\"name\":\"Pirates\",\"abbreviation\":\"PIT\",\"displayName\":\"Pittsburgh Pirates\",\"shortDisplayName\":\"Pirates\",\"color\":\"000000\",\"alternateColor\":\"fdb827\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/pit/pittsburgh-pirates\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/pit/pittsburgh-pirates\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/pit/pittsburgh-pirates\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/pit\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/pit.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"1\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".111\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":1.0,\"athlete\":{\"id\":\"35183\",\"fullName\":\"Ryan O'Hearn\",\"displayName\":\"Ryan O'Hearn\",\"shortName\":\"R. O'Hearn\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35183\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35183.png\",\"jersey\":\"29\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"23\"},\"active\":true},\"team\":{\"id\":\"23\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":0.0,\"athlete\":{\"id\":\"35183\",\"fullName\":\"Ryan O'Hearn\",\"displayName\":\"Ryan O'Hearn\",\"shortName\":\"R. O'Hearn\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35183\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35183.png\",\"jersey\":\"29\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"23\"},\"active\":true},\"team\":{\"id\":\"23\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":0.0,\"athlete\":{\"id\":\"35183\",\"fullName\":\"Ryan O'Hearn\",\"displayName\":\"Ryan O'Hearn\",\"shortName\":\"R. O'Hearn\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35183\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35183.png\",\"jersey\":\"29\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"23\"},\"active\":true},\"team\":{\"id\":\"23\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":61.0,\"athlete\":{\"id\":\"35183\",\"fullName\":\"Ryan O'Hearn\",\"displayName\":\"Ryan O'Hearn\",\"shortName\":\"R. O'Hearn\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35183\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35183.png\",\"jersey\":\"29\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"23\"},\"active\":true},\"team\":{\"id\":\"23\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1\",\"value\":61.0,\"athlete\":{\"id\":\"35183\",\"fullName\":\"Ryan O'Hearn\",\"displayName\":\"Ryan O'Hearn\",\"shortName\":\"R. O'Hearn\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35183\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35183.png\",\"jersey\":\"29\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"23\"},\"active\":true},\"team\":{\"id\":\"23\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":33722,\"athlete\":{\"id\":\"33722\",\"fullName\":\"Mitch Keller\",\"displayName\":\"Mitch Keller\",\"shortName\":\"M. Keller\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33722\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33722.png\",\"jersey\":\"23\",\"position\":\"SP\",\"team\":{\"id\":\"23\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 0.00)\"}],\"hits\":1,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"9-2\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"4-1\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"5-1\"}]},{\"id\":\"24\",\"uid\":\"s:1~l:10~t:24\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"24\",\"uid\":\"s:1~l:10~t:24\",\"location\":\"St. Louis\",\"name\":\"Cardinals\",\"abbreviation\":\"STL\",\"displayName\":\"St. Louis Cardinals\",\"shortDisplayName\":\"Cardinals\",\"color\":\"be0a14\",\"alternateColor\":\"001541\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/stl/st-louis-cardinals\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/stl/st-louis-cardinals\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/stl/st-louis-cardinals\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/stl\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/stl.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"1\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".100\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1, BB\",\"value\":1.0,\"athlete\":{\"id\":\"4941056\",\"fullName\":\"JJ Wetherholt\",\"displayName\":\"JJ Wetherholt\",\"shortName\":\"J. Wetherholt\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4941056\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4941056.png\",\"jersey\":\"77\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"24\"},\"active\":false},\"team\":{\"id\":\"24\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-1\",\"value\":0.0,\"athlete\":{\"id\":\"38851\",\"fullName\":\"Jose Fermin\",\"displayName\":\"Jose Fermin\",\"shortName\":\"J. Fermin\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/38851\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/38851.png\",\"jersey\":\"15\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"24\"},\"active\":true},\"team\":{\"id\":\"24\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-1\",\"value\":0.0,\"athlete\":{\"id\":\"38851\",\"fullName\":\"Jose Fermin\",\"displayName\":\"Jose Fermin\",\"shortName\":\"J. Fermin\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/38851\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/38851.png\",\"jersey\":\"15\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"24\"},\"active\":true},\"team\":{\"id\":\"24\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, BB\",\"value\":61.25,\"athlete\":{\"id\":\"4941056\",\"fullName\":\"JJ Wetherholt\",\"displayName\":\"JJ Wetherholt\",\"shortName\":\"J. Wetherholt\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4941056\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4941056.png\",\"jersey\":\"77\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"24\"},\"active\":false},\"team\":{\"id\":\"24\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1, BB\",\"value\":61.25,\"athlete\":{\"id\":\"4941056\",\"fullName\":\"JJ Wetherholt\",\"displayName\":\"JJ Wetherholt\",\"shortName\":\"J. Wetherholt\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4941056\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4941056.png\",\"jersey\":\"77\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"24\"},\"active\":false},\"team\":{\"id\":\"24\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":40937,\"athlete\":{\"id\":\"40937\",\"fullName\":\"Dustin May\",\"displayName\":\"Dustin May\",\"shortName\":\"D. May\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40937\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40937.png\",\"jersey\":\"3\",\"position\":\"SP\",\"team\":{\"id\":\"24\"}},\"statistics\":[],\"record\":\"\"}],\"hits\":1,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"6-4\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-3\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"3-1\"}]}],\"notes\":[],\"situation\":{\"lastPlay\":{\"id\":\"4018330660599990058\",\"type\":{\"id\":\"58\",\"text\":\"End Inning\",\"type\":\"end-inning\"},\"text\":\"End of the 3rd inning\",\"scoreValue\":0,\"team\":{\"id\":\"23\"},\"atBatId\":\"4018330660504\"},\"balls\":0,\"strikes\":0,\"outs\":0,\"dueUp\":[{\"playerId\":41174,\"period\":3,\"athlete\":{\"id\":\"41174\",\"fullName\":\"Nolan Gorman\",\"displayName\":\"Nolan Gorman\",\"shortName\":\"N. Gorman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/41174\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/41174.png\",\"jersey\":\"16\",\"position\":\"2B\",\"team\":{\"id\":\"24\"}},\"batOrder\":4,\"summary\":\"0-1, K\"},{\"playerId\":4684778,\"period\":3,\"athlete\":{\"id\":\"4684778\",\"fullName\":\"Jordan Walker\",\"displayName\":\"Jordan Walker\",\"shortName\":\"J. Walker\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4684778\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4684778.png\",\"jersey\":\"18\",\"position\":\"RF\",\"team\":{\"id\":\"24\"}},\"batOrder\":5,\"summary\":\"0-1, K\"},{\"playerId\":40610,\"period\":3,\"athlete\":{\"id\":\"40610\",\"fullName\":\"Ramon Urias\",\"displayName\":\"Ramon Urias\",\"shortName\":\"R. Urias\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40610\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40610.png\",\"jersey\":\"33\",\"position\":\"3B\",\"team\":{\"id\":\"24\"}},\"batOrder\":6,\"summary\":\"0-0, BB\"}],\"onFirst\":false,\"onSecond\":false,\"onThird\":false},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"End 3rd\",\"shortDetail\":\"End 3rd\"}},\"broadcasts\":[{\"market\":\"national\",\"names\":[\"MLB.TV\"]},{\"market\":\"away\",\"names\":[\"Cardinals.TV\"]}],\"leaders\":[{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, BB\",\"value\":61.25,\"athlete\":{\"id\":\"4941056\",\"fullName\":\"JJ Wetherholt\",\"displayName\":\"JJ Wetherholt\",\"shortName\":\"J. Wetherholt\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4941056\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4941056.png\",\"jersey\":\"77\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"24\"},\"active\":false},\"team\":{\"id\":\"24\"}},{\"displayValue\":\"1-1\",\"value\":61.0,\"athlete\":{\"id\":\"35183\",\"fullName\":\"Ryan O'Hearn\",\"displayName\":\"Ryan O'Hearn\",\"shortName\":\"R. O'Hearn\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35183\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35183.png\",\"jersey\":\"29\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"23\"},\"active\":true},\"team\":{\"id\":\"23\"}}]}],\"format\":{\"regulation\":{\"periods\":9}},\"startDate\":\"2026-03-05T18:05Z\",\"outsText\":\"0 Outs\",\"broadcast\":\"MLB.TV\",\"geoBroadcasts\":[{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB.TV\",\"logo\":\"https://a.espncdn.com/guid/0db644c3-9f87-37e7-9884-858c2ed45218/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"3\",\"type\":\"Away\"},\"media\":{\"shortName\":\"Cardinals.TV\"},\"lang\":\"en\",\"region\":\"us\"}],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"live\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833066\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"boxscore\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/boxscore/_/gameId/401833066\",\"text\":\"Box Score\",\"shortText\":\"Box Score\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"pbp\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/playbyplay/_/gameId/401833066\",\"text\":\"Play-by-Play\",\"shortText\":\"Play-by-Play\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"2\",\"temperature\":85,\"highTemperature\":85,\"conditionId\":\"Mostly sunny\",\"link\":{\"language\":\"en-US\",\"rel\":[\"34282\"],\"href\":\"http://www.accuweather.com/en/us/lecom-park-fl/34205/current-weather/209235_poi?lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"End 3rd\",\"shortDetail\":\"End 3rd\"}}},{\"id\":\"401833068\",\"uid\":\"s:1~l:10~e:401833068\",\"date\":\"2026-03-05T18:05Z\",\"name\":\"Baltimore Orioles at Tampa Bay Rays\",\"shortName\":\"BAL @ TB\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833068\",\"uid\":\"s:1~l:10~e:401833068~c:401833068\",\"date\":\"2026-03-05T18:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":true,\"recent\":true,\"wasSuspended\":false,\"venue\":{\"id\":\"205\",\"fullName\":\"Charlotte Sports Park\",\"address\":{\"city\":\"Port Charlotte\",\"state\":\"Florida\"},\"indoor\":true},\"competitors\":[{\"id\":\"30\",\"uid\":\"s:1~l:10~t:30\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"30\",\"uid\":\"s:1~l:10~t:30\",\"location\":\"Tampa Bay\",\"name\":\"Rays\",\"abbreviation\":\"TB\",\"displayName\":\"Tampa Bay Rays\",\"shortDisplayName\":\"Rays\",\"color\":\"092c5c\",\"alternateColor\":\"8fbce6\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/tb/tampa-bay-rays\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/tb/tampa-bay-rays\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/tb/tampa-bay-rays\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/tb\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/tb.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"1\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".143\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1, 2B\",\"value\":1.0,\"athlete\":{\"id\":\"40960\",\"fullName\":\"Ryan Vilade\",\"displayName\":\"Ryan Vilade\",\"shortName\":\"R. Vilade\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40960\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40960.png\",\"jersey\":\"26\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"30\"},\"active\":true},\"team\":{\"id\":\"30\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-0\",\"value\":0.0,\"athlete\":{\"id\":\"33481\",\"fullName\":\"Yandy Diaz\",\"displayName\":\"Yandy Diaz\",\"shortName\":\"Y. Diaz\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33481\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33481.png\",\"jersey\":\"2\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"30\"},\"active\":true},\"team\":{\"id\":\"30\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-0\",\"value\":0.0,\"athlete\":{\"id\":\"33481\",\"fullName\":\"Yandy Diaz\",\"displayName\":\"Yandy Diaz\",\"shortName\":\"Y. Diaz\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33481\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33481.png\",\"jersey\":\"2\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"30\"},\"active\":true},\"team\":{\"id\":\"30\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, 2B\",\"value\":62.0,\"athlete\":{\"id\":\"40960\",\"fullName\":\"Ryan Vilade\",\"displayName\":\"Ryan Vilade\",\"shortName\":\"R. Vilade\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40960\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40960.png\",\"jersey\":\"26\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"30\"},\"active\":true},\"team\":{\"id\":\"30\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1, 2B\",\"value\":62.0,\"athlete\":{\"id\":\"40960\",\"fullName\":\"Ryan Vilade\",\"displayName\":\"Ryan Vilade\",\"shortName\":\"R. Vilade\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40960\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40960.png\",\"jersey\":\"26\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"30\"},\"active\":true},\"team\":{\"id\":\"30\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":4208281,\"athlete\":{\"id\":\"4208281\",\"fullName\":\"Ryan Pepiot\",\"displayName\":\"Ryan Pepiot\",\"shortName\":\"R. Pepiot\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4208281\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4208281.png\",\"jersey\":\"44\",\"position\":\"SP\",\"team\":{\"id\":\"30\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 0.00)\"}],\"hits\":1,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-7\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"4-2\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"1-5\"}]},{\"id\":\"1\",\"uid\":\"s:1~l:10~t:1\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"1\",\"uid\":\"s:1~l:10~t:1\",\"location\":\"Baltimore\",\"name\":\"Orioles\",\"abbreviation\":\"BAL\",\"displayName\":\"Baltimore Orioles\",\"shortDisplayName\":\"Orioles\",\"color\":\"df4601\",\"alternateColor\":\"000000\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/bal/baltimore-orioles\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/bal/baltimore-orioles\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/bal/baltimore-orioles\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/bal\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/bal.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"1\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".111\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-2\",\"value\":0.5,\"athlete\":{\"id\":\"42822\",\"fullName\":\"Bryan Ramos\",\"displayName\":\"Bryan Ramos\",\"shortName\":\"B. Ramos\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42822\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42822.png\",\"jersey\":\"67\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"1\"},\"active\":true},\"team\":{\"id\":\"1\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-1, BB\",\"value\":0.0,\"athlete\":{\"id\":\"34951\",\"fullName\":\"Leody Taveras\",\"displayName\":\"Leody Taveras\",\"shortName\":\"L. Taveras\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/34951\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/34951.png\",\"jersey\":\"30\",\"position\":{\"abbreviation\":\"OF\"},\"team\":{\"id\":\"1\"},\"active\":true},\"team\":{\"id\":\"1\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-1, BB\",\"value\":0.0,\"athlete\":{\"id\":\"34951\",\"fullName\":\"Leody Taveras\",\"displayName\":\"Leody Taveras\",\"shortName\":\"L. Taveras\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/34951\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/34951.png\",\"jersey\":\"30\",\"position\":{\"abbreviation\":\"OF\"},\"team\":{\"id\":\"1\"},\"active\":true},\"team\":{\"id\":\"1\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-2\",\"value\":60.75,\"athlete\":{\"id\":\"42822\",\"fullName\":\"Bryan Ramos\",\"displayName\":\"Bryan Ramos\",\"shortName\":\"B. Ramos\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42822\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42822.png\",\"jersey\":\"67\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"1\"},\"active\":true},\"team\":{\"id\":\"1\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-2\",\"value\":60.75,\"athlete\":{\"id\":\"42822\",\"fullName\":\"Bryan Ramos\",\"displayName\":\"Bryan Ramos\",\"shortName\":\"B. Ramos\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42822\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42822.png\",\"jersey\":\"67\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"1\"},\"active\":true},\"team\":{\"id\":\"1\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":32804,\"athlete\":{\"id\":\"32804\",\"fullName\":\"Zach Eflin\",\"displayName\":\"Zach Eflin\",\"shortName\":\"Z. Eflin\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32804\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32804.png\",\"jersey\":\"24\",\"position\":\"SP\",\"team\":{\"id\":\"1\"}},\"statistics\":[],\"record\":\"\"}],\"hits\":1,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-5-1\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-4\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"2-1-1\"}]}],\"notes\":[],\"situation\":{\"lastPlay\":{\"id\":\"4018330680502010001\",\"type\":{\"id\":\"1\",\"text\":\"Start Batter/Pitcher\",\"alternativeText\":\"Now at bat\",\"type\":\"start-batterpitcher\"},\"text\":\"Andrew Magno pitches to Gregory Barrios\",\"scoreValue\":0,\"team\":{\"id\":\"30\"},\"atBatId\":\"4018330680502\",\"summaryType\":\"A\",\"athletesInvolved\":[]},\"balls\":0,\"strikes\":0,\"outs\":0,\"onFirst\":true,\"pitcher\":{\"playerId\":4345629,\"period\":3,\"athlete\":{\"id\":\"4345629\",\"fullName\":\"Andrew Magno\",\"displayName\":\"Andrew Magno\",\"shortName\":\"A. Magno\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4345629\"}],\"jersey\":\"94\",\"position\":\"RP\",\"team\":{\"id\":\"1\"}},\"summary\":\"0.0 IP, 0 ER, 0 H, 0 BB\"},\"batter\":{\"playerId\":5138163,\"period\":3,\"athlete\":{\"id\":\"5138163\",\"fullName\":\"Gregory Barrios\",\"displayName\":\"Gregory Barrios\",\"shortName\":\"G. Barrios\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5138163\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/5138163.png\",\"jersey\":\"75\",\"position\":\"SS\",\"team\":{\"id\":\"30\"}},\"summary\":\"0-0\"},\"onSecond\":false,\"onThird\":false},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Bottom 3rd\",\"shortDetail\":\"Bot 3rd\"}},\"broadcasts\":[],\"leaders\":[{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, 2B\",\"value\":62.0,\"athlete\":{\"id\":\"40960\",\"fullName\":\"Ryan Vilade\",\"displayName\":\"Ryan Vilade\",\"shortName\":\"R. Vilade\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40960\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40960.png\",\"jersey\":\"26\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"30\"},\"active\":true},\"team\":{\"id\":\"30\"}},{\"displayValue\":\"1-2\",\"value\":60.75,\"athlete\":{\"id\":\"42822\",\"fullName\":\"Bryan Ramos\",\"displayName\":\"Bryan Ramos\",\"shortName\":\"B. Ramos\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42822\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42822.png\",\"jersey\":\"67\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"1\"},\"active\":true},\"team\":{\"id\":\"1\"}}]}],\"format\":{\"regulation\":{\"periods\":9}},\"startDate\":\"2026-03-05T18:05Z\",\"outsText\":\"0 Outs\",\"broadcast\":\"\",\"geoBroadcasts\":[],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"live\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833068\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"boxscore\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/boxscore/_/gameId/401833068\",\"text\":\"Box Score\",\"shortText\":\"Box Score\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"pbp\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/playbyplay/_/gameId/401833068\",\"text\":\"Play-by-Play\",\"shortText\":\"Play-by-Play\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"3\",\"temperature\":89,\"highTemperature\":89,\"conditionId\":\"Partly sunny\",\"link\":{\"language\":\"en-US\",\"rel\":[\"33948\"],\"href\":\"http://www.accuweather.com/en/us/charlotte-sports-park-fl/33952/current-weather/209229_poi?lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Bottom 3rd\",\"shortDetail\":\"Bot 3rd\"}}},{\"id\":\"401833069\",\"uid\":\"s:1~l:10~e:401833069\",\"date\":\"2026-03-05T18:05Z\",\"name\":\"New York Mets at Washington Nationals\",\"shortName\":\"NYM @ WSH\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833069\",\"uid\":\"s:1~l:10~e:401833069~c:401833069\",\"date\":\"2026-03-05T18:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":true,\"recent\":true,\"wasSuspended\":false,\"venue\":{\"id\":\"221\",\"fullName\":\"CACTI Park of the Palm Beaches\",\"address\":{\"city\":\"Palm Beach\",\"state\":\"Florida\"},\"indoor\":false},\"competitors\":[{\"id\":\"20\",\"uid\":\"s:1~l:10~t:20\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"20\",\"uid\":\"s:1~l:10~t:20\",\"location\":\"Washington\",\"name\":\"Nationals\",\"abbreviation\":\"WSH\",\"displayName\":\"Washington Nationals\",\"shortDisplayName\":\"Nationals\",\"color\":\"ab0003\",\"alternateColor\":\"11225b\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/wsh/washington-nationals\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/wsh/washington-nationals\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/wsh/washington-nationals\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/wsh\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/wsh.png\"},\"score\":\"2\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":2.0,\"displayValue\":\"2\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"3\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"2\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".300\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"9.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1, HR, 2 RBI, R\",\"value\":1.0,\"athlete\":{\"id\":\"42105\",\"fullName\":\"Jose Tena\",\"displayName\":\"Jose Tena\",\"shortName\":\"J. Tena\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42105\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42105.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"20\"},\"active\":true},\"team\":{\"id\":\"20\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"1-1, HR, 2 RBI, R\",\"value\":1.0,\"athlete\":{\"id\":\"42105\",\"fullName\":\"Jose Tena\",\"displayName\":\"Jose Tena\",\"shortName\":\"J. Tena\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42105\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42105.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"20\"},\"active\":true},\"team\":{\"id\":\"20\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"1-1, HR, 2 RBI, R\",\"value\":2.0,\"athlete\":{\"id\":\"42105\",\"fullName\":\"Jose Tena\",\"displayName\":\"Jose Tena\",\"shortName\":\"J. Tena\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42105\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42105.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"20\"},\"active\":true},\"team\":{\"id\":\"20\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, HR, 2 RBI, R\",\"value\":67.0,\"athlete\":{\"id\":\"42105\",\"fullName\":\"Jose Tena\",\"displayName\":\"Jose Tena\",\"shortName\":\"J. Tena\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42105\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42105.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"20\"},\"active\":true},\"team\":{\"id\":\"20\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1, HR, 2 RBI, R\",\"value\":67.0,\"athlete\":{\"id\":\"42105\",\"fullName\":\"Jose Tena\",\"displayName\":\"Jose Tena\",\"shortName\":\"J. Tena\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42105\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42105.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"20\"},\"active\":true},\"team\":{\"id\":\"20\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":32116,\"athlete\":{\"id\":\"32116\",\"fullName\":\"Miles Mikolas\",\"displayName\":\"Miles Mikolas\",\"shortName\":\"M. Mikolas\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32116\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32116.png\",\"jersey\":\"36\",\"position\":\"SP\",\"team\":{\"id\":\"20\"}},\"statistics\":[{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 0.00)\"}],\"hits\":3,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-3-3\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-1-2\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"3-2-1\"}]},{\"id\":\"21\",\"uid\":\"s:1~l:10~t:21\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"21\",\"uid\":\"s:1~l:10~t:21\",\"location\":\"New York\",\"name\":\"Mets\",\"abbreviation\":\"NYM\",\"displayName\":\"New York Mets\",\"shortDisplayName\":\"Mets\",\"color\":\"002d72\",\"alternateColor\":\"ff5910\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/nym/new-york-mets\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/nym/new-york-mets\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/nym/new-york-mets\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/nym\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/nym.png\"},\"score\":\"3\",\"linescores\":[{\"value\":3.0,\"displayValue\":\"3\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"3\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"3\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".250\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"7.71\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1, 2B, R\",\"value\":1.0,\"athlete\":{\"id\":\"33956\",\"fullName\":\"Mike Tauchman\",\"displayName\":\"Mike Tauchman\",\"shortName\":\"M. Tauchman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33956\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33956.png\",\"jersey\":\"50\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"21\"},\"active\":false},\"team\":{\"id\":\"21\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"1-2, HR, 2 RBI, R\",\"value\":1.0,\"athlete\":{\"id\":\"42414\",\"fullName\":\"Brett Baty\",\"displayName\":\"Brett Baty\",\"shortName\":\"B. Baty\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42414\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42414.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"21\"},\"active\":true},\"team\":{\"id\":\"21\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"1-2, HR, 2 RBI, R\",\"value\":2.0,\"athlete\":{\"id\":\"42414\",\"fullName\":\"Brett Baty\",\"displayName\":\"Brett Baty\",\"shortName\":\"B. Baty\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42414\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42414.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"21\"},\"active\":true},\"team\":{\"id\":\"21\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-2, HR, 2 RBI, R\",\"value\":66.75,\"athlete\":{\"id\":\"42414\",\"fullName\":\"Brett Baty\",\"displayName\":\"Brett Baty\",\"shortName\":\"B. Baty\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42414\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42414.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"21\"},\"active\":true},\"team\":{\"id\":\"21\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-2, HR, 2 RBI, R\",\"value\":66.75,\"athlete\":{\"id\":\"42414\",\"fullName\":\"Brett Baty\",\"displayName\":\"Brett Baty\",\"shortName\":\"B. Baty\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42414\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42414.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"21\"},\"active\":true},\"team\":{\"id\":\"21\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":4991251,\"athlete\":{\"id\":\"4991251\",\"fullName\":\"Justin Hagenman\",\"displayName\":\"Justin Hagenman\",\"shortName\":\"J. Hagenman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4991251\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4991251.png\",\"jersey\":\"47\",\"position\":\"RP\",\"team\":{\"id\":\"21\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.06\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 5.06)\"}],\"hits\":3,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-3-1\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"1-3-1\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"4-0\"}]}],\"notes\":[],\"situation\":{\"lastPlay\":{\"id\":\"4018330690502040036\",\"type\":{\"id\":\"36\",\"text\":\"Strike Looking\",\"abbreviation\":\"SL\",\"alternativeText\":\"Strikeout\",\"type\":\"strike-looking\"},\"text\":\"Pitch 3 : Strike 2 Looking\",\"scoreValue\":0,\"team\":{\"id\":\"21\"},\"atBatId\":\"4018330690502\",\"summaryType\":\"P\",\"athletesInvolved\":[{\"id\":\"5205764\",\"fullName\":\"Seaver King\",\"displayName\":\"Seaver King\",\"shortName\":\"S. King\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5205764\"}],\"jersey\":\"66\",\"position\":\"SS\",\"team\":{\"id\":\"20\"}}]},\"balls\":1,\"strikes\":2,\"outs\":1,\"pitcher\":{\"playerId\":4991251,\"period\":3,\"athlete\":{\"id\":\"4991251\",\"fullName\":\"Justin Hagenman\",\"displayName\":\"Justin Hagenman\",\"shortName\":\"J. Hagenman\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4991251\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4991251.png\",\"jersey\":\"47\",\"position\":\"RP\",\"team\":{\"id\":\"21\"}},\"summary\":\"2.1 IP, 2 ER, 3 H, 4 K, 0 BB\"},\"batter\":{\"playerId\":5205764,\"period\":3,\"athlete\":{\"id\":\"5205764\",\"fullName\":\"Seaver King\",\"displayName\":\"Seaver King\",\"shortName\":\"S. King\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5205764\"}],\"jersey\":\"66\",\"position\":\"SS\",\"team\":{\"id\":\"20\"}},\"summary\":\"0-1, K\"},\"onFirst\":false,\"onSecond\":false,\"onThird\":false},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Bottom 3rd\",\"shortDetail\":\"Bot 3rd\"}},\"broadcasts\":[{\"market\":\"national\",\"names\":[\"MLB.TV\"]},{\"market\":\"home\",\"names\":[\"Nationals.TV\"]}],\"leaders\":[{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"1-1, HR, 2 RBI, R\",\"value\":67.0,\"athlete\":{\"id\":\"42105\",\"fullName\":\"Jose Tena\",\"displayName\":\"Jose Tena\",\"shortName\":\"J. Tena\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42105\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42105.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"20\"},\"active\":true},\"team\":{\"id\":\"20\"}},{\"displayValue\":\"1-2, HR, 2 RBI, R\",\"value\":66.75,\"athlete\":{\"id\":\"42414\",\"fullName\":\"Brett Baty\",\"displayName\":\"Brett Baty\",\"shortName\":\"B. Baty\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42414\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42414.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"21\"},\"active\":true},\"team\":{\"id\":\"21\"}}]}],\"format\":{\"regulation\":{\"periods\":9}},\"startDate\":\"2026-03-05T18:05Z\",\"outsText\":\"1 Out\",\"broadcast\":\"MLB.TV\",\"geoBroadcasts\":[{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB.TV\",\"logo\":\"https://a.espncdn.com/guid/0db644c3-9f87-37e7-9884-858c2ed45218/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"Nationals.TV\"},\"lang\":\"en\",\"region\":\"us\"}],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"live\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833069\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"boxscore\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/boxscore/_/gameId/401833069\",\"text\":\"Box Score\",\"shortText\":\"Box Score\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"pbp\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/playbyplay/_/gameId/401833069\",\"text\":\"Play-by-Play\",\"shortText\":\"Play-by-Play\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"6\",\"temperature\":83,\"highTemperature\":83,\"conditionId\":\"Mostly cloudy\",\"link\":{\"language\":\"en-US\",\"rel\":[\"33407\"],\"href\":\"http://www.accuweather.com/en/us/the-ballpark-of-the-palm-beaches-fl/33401/current-weather/209239_poi?lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Bottom 3rd\",\"shortDetail\":\"Bot 3rd\"}}},{\"id\":\"401833063\",\"uid\":\"s:1~l:10~e:401833063\",\"date\":\"2026-03-05T18:10Z\",\"name\":\"Houston Astros at Miami Marlins\",\"shortName\":\"HOU @ MIA\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833063\",\"uid\":\"s:1~l:10~e:401833063~c:401833063\",\"date\":\"2026-03-05T18:10Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":true,\"recent\":true,\"wasSuspended\":false,\"venue\":{\"id\":\"70\",\"fullName\":\"Roger Dean Chevrolet Stadium\",\"address\":{\"city\":\"Jupiter\",\"state\":\"Florida\"},\"indoor\":false},\"competitors\":[{\"id\":\"28\",\"uid\":\"s:1~l:10~t:28\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"28\",\"uid\":\"s:1~l:10~t:28\",\"location\":\"Miami\",\"name\":\"Marlins\",\"abbreviation\":\"MIA\",\"displayName\":\"Miami Marlins\",\"shortDisplayName\":\"Marlins\",\"color\":\"00a3e0\",\"alternateColor\":\"000000\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/mia/miami-marlins\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/mia/miami-marlins\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/mia/miami-marlins\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/mia\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/mia.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"1\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".143\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1-1, SB\",\"value\":1.0,\"athlete\":{\"id\":\"42927\",\"fullName\":\"Christopher Morel\",\"displayName\":\"Christopher Morel\",\"shortName\":\"C. Morel\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42927\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42927.png\",\"jersey\":\"5\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"28\"},\"active\":true},\"team\":{\"id\":\"28\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-0, BB, SB\",\"value\":0.0,\"athlete\":{\"id\":\"39680\",\"fullName\":\"Esteury Ruiz\",\"displayName\":\"Esteury Ruiz\",\"shortName\":\"E. Ruiz\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39680\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39680.png\",\"jersey\":\"3\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"28\"},\"active\":true},\"team\":{\"id\":\"28\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-0, BB, SB\",\"value\":0.0,\"athlete\":{\"id\":\"39680\",\"fullName\":\"Esteury Ruiz\",\"displayName\":\"Esteury Ruiz\",\"shortName\":\"E. Ruiz\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39680\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39680.png\",\"jersey\":\"3\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"28\"},\"active\":true},\"team\":{\"id\":\"28\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"3.0 IP, 0 ER, 0 H, 4 K, 0 BB\",\"value\":63.0,\"athlete\":{\"id\":\"35241\",\"fullName\":\"Sandy Alcantara\",\"displayName\":\"Sandy Alcantara\",\"shortName\":\"S. Alcantara\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35241\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35241.png\",\"jersey\":\"22\",\"position\":{\"abbreviation\":\"SP\"},\"team\":{\"id\":\"28\"},\"active\":true},\"team\":{\"id\":\"28\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"1-1, SB\",\"value\":61.25,\"athlete\":{\"id\":\"42927\",\"fullName\":\"Christopher Morel\",\"displayName\":\"Christopher Morel\",\"shortName\":\"C. Morel\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42927\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42927.png\",\"jersey\":\"5\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"28\"},\"active\":true},\"team\":{\"id\":\"28\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":35241,\"athlete\":{\"id\":\"35241\",\"fullName\":\"Sandy Alcantara\",\"displayName\":\"Sandy Alcantara\",\"shortName\":\"S. Alcantara\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35241\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35241.png\",\"jersey\":\"22\",\"position\":\"SP\",\"team\":{\"id\":\"28\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"27.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-1, 27.00)\"}],\"hits\":1,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"4-6\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"1-3\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"3-3\"}]},{\"id\":\"18\",\"uid\":\"s:1~l:10~t:18\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"18\",\"uid\":\"s:1~l:10~t:18\",\"location\":\"Houston\",\"name\":\"Astros\",\"abbreviation\":\"HOU\",\"displayName\":\"Houston Astros\",\"shortDisplayName\":\"Astros\",\"color\":\"002d62\",\"alternateColor\":\"eb6e1f\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/hou/houston-astros\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/hou/houston-astros\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/hou/houston-astros\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/hou\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/hou.png\"},\"score\":\"0\",\"linescores\":[{\"value\":0.0,\"displayValue\":\"0\",\"period\":1},{\"value\":0.0,\"displayValue\":\"0\",\"period\":2},{\"value\":0.0,\"displayValue\":\"0\",\"period\":3}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"0-1, K\",\"value\":0.0,\"athlete\":{\"id\":\"31662\",\"fullName\":\"Jose Altuve\",\"displayName\":\"Jose Altuve\",\"shortName\":\"J. Altuve\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/31662\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/31662.png\",\"jersey\":\"27\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"18\"},\"active\":true},\"team\":{\"id\":\"18\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"0-1, K\",\"value\":0.0,\"athlete\":{\"id\":\"31662\",\"fullName\":\"Jose Altuve\",\"displayName\":\"Jose Altuve\",\"shortName\":\"J. Altuve\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/31662\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/31662.png\",\"jersey\":\"27\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"18\"},\"active\":true},\"team\":{\"id\":\"18\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"0-1, K\",\"value\":0.0,\"athlete\":{\"id\":\"31662\",\"fullName\":\"Jose Altuve\",\"displayName\":\"Jose Altuve\",\"shortName\":\"J. Altuve\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/31662\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/31662.png\",\"jersey\":\"27\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"18\"},\"active\":true},\"team\":{\"id\":\"18\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"0-1\",\"value\":58.75,\"athlete\":{\"id\":\"32758\",\"fullName\":\"Christian Walker\",\"displayName\":\"Christian Walker\",\"shortName\":\"C. Walker\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32758\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32758.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"18\"},\"active\":true},\"team\":{\"id\":\"18\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"0-1\",\"value\":58.75,\"athlete\":{\"id\":\"32758\",\"fullName\":\"Christian Walker\",\"displayName\":\"Christian Walker\",\"shortName\":\"C. Walker\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32758\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32758.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"18\"},\"active\":true},\"team\":{\"id\":\"18\"}}]}],\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":5330833,\"athlete\":{\"id\":\"5330833\",\"fullName\":\"Tatsuya Imai\",\"displayName\":\"Tatsuya Imai\",\"shortName\":\"T. Imai\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5330833\"}],\"jersey\":\"45\",\"position\":\"SP\",\"team\":{\"id\":\"18\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 0.00)\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"2-6-3\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"0-3-1\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"2-3-2\"}]}],\"notes\":[],\"situation\":{\"lastPlay\":{\"id\":\"4018330630499990058\",\"type\":{\"id\":\"58\",\"text\":\"End Inning\",\"type\":\"end-inning\"},\"text\":\"Middle of the 3rd inning\",\"scoreValue\":0,\"team\":{\"id\":\"18\"},\"atBatId\":\"4018330630403\"},\"balls\":0,\"strikes\":0,\"outs\":0,\"dueUp\":[{\"playerId\":5272331,\"period\":3,\"athlete\":{\"id\":\"5272331\",\"fullName\":\"Dillon Lewis\",\"displayName\":\"Dillon Lewis\",\"shortName\":\"D. Lewis\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5272331\"}],\"jersey\":\"91\",\"position\":\"OF\",\"team\":{\"id\":\"28\"}},\"batOrder\":9,\"summary\":\"0-0\"},{\"playerId\":41326,\"period\":3,\"athlete\":{\"id\":\"41326\",\"fullName\":\"Xavier Edwards\",\"displayName\":\"Xavier Edwards\",\"shortName\":\"X. Edwards\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/41326\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/41326.png\",\"jersey\":\"9\",\"position\":\"SS\",\"team\":{\"id\":\"28\"}},\"batOrder\":1,\"summary\":\"0-1\"},{\"playerId\":42927,\"period\":3,\"athlete\":{\"id\":\"42927\",\"fullName\":\"Christopher Morel\",\"displayName\":\"Christopher Morel\",\"shortName\":\"C. Morel\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42927\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42927.png\",\"jersey\":\"5\",\"position\":\"LF\",\"team\":{\"id\":\"28\"}},\"batOrder\":2,\"summary\":\"1-1, SB\"}],\"onFirst\":false,\"onSecond\":false,\"onThird\":false},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Middle 3rd\",\"shortDetail\":\"Mid 3rd\"}},\"broadcasts\":[],\"leaders\":[{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"RAT\",\"abbreviation\":\"RAT\",\"leaders\":[{\"displayValue\":\"3.0 IP, 0 ER, 0 H, 4 K, 0 BB\",\"value\":63.0,\"athlete\":{\"id\":\"35241\",\"fullName\":\"Sandy Alcantara\",\"displayName\":\"Sandy Alcantara\",\"shortName\":\"S. Alcantara\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35241\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35241.png\",\"jersey\":\"22\",\"position\":{\"abbreviation\":\"SP\"},\"team\":{\"id\":\"28\"},\"active\":true},\"team\":{\"id\":\"28\"}},{\"displayValue\":\"1-1, SB\",\"value\":61.25,\"athlete\":{\"id\":\"42927\",\"fullName\":\"Christopher Morel\",\"displayName\":\"Christopher Morel\",\"shortName\":\"C. Morel\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42927\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42927.png\",\"jersey\":\"5\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"28\"},\"active\":true},\"team\":{\"id\":\"28\"}}]}],\"format\":{\"regulation\":{\"periods\":9}},\"startDate\":\"2026-03-05T18:10Z\",\"outsText\":\"0 Outs\",\"broadcast\":\"\",\"geoBroadcasts\":[],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"live\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833063\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"boxscore\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/boxscore/_/gameId/401833063\",\"text\":\"Box Score\",\"shortText\":\"Box Score\",\"isExternal\":false,\"isPremium\":false},{\"language\":\"en-US\",\"rel\":[\"pbp\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/playbyplay/_/gameId/401833063\",\"text\":\"Play-by-Play\",\"shortText\":\"Play-by-Play\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"3\",\"temperature\":82,\"highTemperature\":82,\"conditionId\":\"Partly sunny\",\"link\":{\"language\":\"en-US\",\"rel\":[\"33478\"],\"href\":\"http://www.accuweather.com/en/us/roger-dean-stadium-fl/33458/current-weather/209236_poi?lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":3,\"type\":{\"id\":\"2\",\"name\":\"STATUS_IN_PROGRESS\",\"state\":\"in\",\"completed\":false,\"description\":\"In Progress\",\"detail\":\"Middle 3rd\",\"shortDetail\":\"Mid 3rd\"}}},{\"id\":\"401833059\",\"uid\":\"s:1~l:10~e:401833059\",\"date\":\"2026-03-05T20:00Z\",\"name\":\"Los Angeles Dodgers at Cincinnati Reds\",\"shortName\":\"LAD @ CIN\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833059\",\"uid\":\"s:1~l:10~e:401833059~c:401833059\",\"date\":\"2026-03-05T20:00Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":false,\"recent\":false,\"wasSuspended\":false,\"venue\":{\"id\":\"206\",\"fullName\":\"Goodyear Ballpark\",\"address\":{\"city\":\"Goodyear\",\"state\":\"Arizona\"},\"indoor\":false},\"competitors\":[{\"id\":\"17\",\"uid\":\"s:1~l:10~t:17\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"17\",\"uid\":\"s:1~l:10~t:17\",\"location\":\"Cincinnati\",\"name\":\"Reds\",\"abbreviation\":\"CIN\",\"displayName\":\"Cincinnati Reds\",\"shortDisplayName\":\"Reds\",\"color\":\"c6011f\",\"alternateColor\":\"ffffff\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/cin/cincinnati-reds\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/cin/cincinnati-reds\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/cin/cincinnati-reds\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/cin\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/cin.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":5195257,\"athlete\":{\"id\":\"5195257\",\"fullName\":\"Julian Aguiar\",\"displayName\":\"Julian Aguiar\",\"shortName\":\"J. Aguiar\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5195257\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/5195257.png\",\"jersey\":\"39\",\"position\":\"SP\",\"team\":{\"id\":\"17\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"9.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-1, 9.00)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"83\",\"rankDisplayValue\":\"Tied-24th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"62\",\"rankDisplayValue\":\"13th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".271\",\"rankDisplayValue\":\"10th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"3\",\"rankDisplayValue\":\"Tied-8th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"4\",\"rankDisplayValue\":\"Tied-8th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-12th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"7.52\",\"rankDisplayValue\":\"30th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-4\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-2\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"2-2\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".571\",\"value\":0.5714284777641296,\"athlete\":{\"id\":\"4422899\",\"fullName\":\"Matt McLain\",\"displayName\":\"Matt McLain\",\"shortName\":\"M. McLain\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4422899\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4422899.png\",\"jersey\":\"9\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"17\"},\"active\":true},\"team\":{\"id\":\"17\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"3\",\"value\":3.0,\"athlete\":{\"id\":\"4422899\",\"fullName\":\"Matt McLain\",\"displayName\":\"Matt McLain\",\"shortName\":\"M. McLain\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4422899\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4422899.png\",\"jersey\":\"9\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"17\"},\"active\":true},\"team\":{\"id\":\"17\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"9\",\"value\":9.0,\"athlete\":{\"id\":\"4422899\",\"fullName\":\"Matt McLain\",\"displayName\":\"Matt McLain\",\"shortName\":\"M. McLain\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4422899\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4422899.png\",\"jersey\":\"9\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"17\"},\"active\":true},\"team\":{\"id\":\"17\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"100.0\",\"value\":100.0,\"athlete\":{\"id\":\"4422899\",\"fullName\":\"Matt McLain\",\"displayName\":\"Matt McLain\",\"shortName\":\"M. McLain\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4422899\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4422899.png\",\"jersey\":\"9\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"17\"},\"active\":true},\"team\":{\"id\":\"17\"}}]}]},{\"id\":\"19\",\"uid\":\"s:1~l:10~t:19\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"19\",\"uid\":\"s:1~l:10~t:19\",\"location\":\"Los Angeles\",\"name\":\"Dodgers\",\"abbreviation\":\"LAD\",\"displayName\":\"Los Angeles Dodgers\",\"shortDisplayName\":\"Dodgers\",\"color\":\"005a9c\",\"alternateColor\":\"ffffff\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/lad/los-angeles-dodgers\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/lad/los-angeles-dodgers\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/lad/los-angeles-dodgers\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/lad\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/lad.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":39869,\"athlete\":{\"id\":\"39869\",\"fullName\":\"Cole Irvin\",\"displayName\":\"Cole Irvin\",\"shortName\":\"C. Irvin\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39869\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39869.png\",\"jersey\":\"38\",\"position\":\"RP\",\"team\":{\"id\":\"19\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"3.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 3.00)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"118\",\"rankDisplayValue\":\"4th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"79\",\"rankDisplayValue\":\"3rd\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".279\",\"rankDisplayValue\":\"6th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-2nd\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"3\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"9\",\"rankDisplayValue\":\"Tied-1st\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"4.25\",\"rankDisplayValue\":\"10th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"9-3\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"4-1\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"5-2\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".462\",\"value\":0.4615384042263031,\"athlete\":{\"id\":\"5134614\",\"fullName\":\"Hyeseong Kim\",\"displayName\":\"Hyeseong Kim\",\"shortName\":\"H. Kim\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5134614\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/5134614.png\",\"jersey\":\"6\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"19\"},\"active\":true},\"team\":{\"id\":\"19\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"4619839\",\"fullName\":\"Dalton Rushing\",\"displayName\":\"Dalton Rushing\",\"shortName\":\"D. Rushing\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4619839\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4619839.png\",\"jersey\":\"68\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"19\"},\"active\":true},\"team\":{\"id\":\"19\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"5\",\"value\":5.0,\"athlete\":{\"id\":\"5134614\",\"fullName\":\"Hyeseong Kim\",\"displayName\":\"Hyeseong Kim\",\"shortName\":\"H. Kim\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5134614\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/5134614.png\",\"jersey\":\"6\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"19\"},\"active\":true},\"team\":{\"id\":\"19\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"79.5\",\"value\":79.5,\"athlete\":{\"id\":\"5134614\",\"fullName\":\"Hyeseong Kim\",\"displayName\":\"Hyeseong Kim\",\"shortName\":\"H. Kim\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5134614\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/5134614.png\",\"jersey\":\"6\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"19\"},\"active\":true},\"team\":{\"id\":\"19\"}}]}]}],\"notes\":[],\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:00 PM EST\"}},\"broadcasts\":[{\"market\":\"national\",\"names\":[\"ESPN\",\"MLB.TV\"]},{\"market\":\"away\",\"names\":[\"Sportsnet LA\"]}],\"format\":{\"regulation\":{\"periods\":9}},\"tickets\":[{\"summary\":\"Tickets as low as $31\",\"numberAvailable\":1210,\"links\":[{\"href\":\"https://www.vividseats.com/cincinnati-reds-tickets-goodyear-ballpark-3-5-2026--sports-mlb-baseball/production/6261325?wsUser=717\"},{\"href\":\"https://www.vividseats.com/goodyear-ballpark-tickets/venue/6429?wsUser=717\"}]}],\"startDate\":\"2026-03-05T20:00Z\",\"broadcast\":\"ESPN/MLB.TV\",\"geoBroadcasts\":[{\"type\":{\"id\":\"1\",\"shortName\":\"TV\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"ESPN\",\"logo\":\"https://a.espncdn.com/guid/335fd2d2-97b9-336b-81ee-573eb6bdcffc/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB.TV\",\"logo\":\"https://a.espncdn.com/guid/0db644c3-9f87-37e7-9884-858c2ed45218/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"1\",\"shortName\":\"TV\"},\"market\":{\"id\":\"3\",\"type\":\"Away\"},\"media\":{\"shortName\":\"Sportsnet LA\"},\"lang\":\"en\",\"region\":\"us\"}],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"summary\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833059/dodgers-reds\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"Mostly sunny\",\"temperature\":76,\"highTemperature\":76,\"conditionId\":\"2\",\"link\":{\"language\":\"en-US\",\"rel\":[\"85338\"],\"href\":\"http://www.accuweather.com/en/us/goodyear-ballpark-az/85338/hourly-weather-forecast/209219_poi?day=1&hbhhour=13&lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:00 PM EST\"}}},{\"id\":\"401833057\",\"uid\":\"s:1~l:10~e:401833057\",\"date\":\"2026-03-05T20:05Z\",\"name\":\"Arizona Diamondbacks at Chicago Cubs\",\"shortName\":\"ARI @ CHC\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833057\",\"uid\":\"s:1~l:10~e:401833057~c:401833057\",\"date\":\"2026-03-05T20:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":false,\"recent\":false,\"wasSuspended\":false,\"venue\":{\"id\":\"220\",\"fullName\":\"Sloan Park\",\"address\":{\"city\":\"Mesa\",\"state\":\"Arizona\"},\"indoor\":false},\"competitors\":[{\"id\":\"16\",\"uid\":\"s:1~l:10~t:16\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"16\",\"uid\":\"s:1~l:10~t:16\",\"location\":\"Chicago\",\"name\":\"Cubs\",\"abbreviation\":\"CHC\",\"displayName\":\"Chicago Cubs\",\"shortDisplayName\":\"Cubs\",\"color\":\"0e3386\",\"alternateColor\":\"cc3433\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/chc/chicago-cubs\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/chc/chicago-cubs\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/chc/chicago-cubs\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/chc\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/chc.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":33950,\"athlete\":{\"id\":\"33950\",\"fullName\":\"Colin Rea\",\"displayName\":\"Colin Rea\",\"shortName\":\"C. Rea\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33950\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33950.png\",\"jersey\":\"53\",\"position\":\"SP\",\"team\":{\"id\":\"16\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"1.93\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-1, 1.93)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"102\",\"rankDisplayValue\":\"Tied-12th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"53\",\"rankDisplayValue\":\"19th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".258\",\"rankDisplayValue\":\"15th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-2nd\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"7\",\"rankDisplayValue\":\"Tied-20th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-12th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.83\",\"rankDisplayValue\":\"23rd\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-7\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-4\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"3-3\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".500\",\"value\":0.5,\"athlete\":{\"id\":\"4142424\",\"fullName\":\"Seiya Suzuki\",\"displayName\":\"Seiya Suzuki\",\"shortName\":\"S. Suzuki\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4142424\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4142424.png\",\"jersey\":\"27\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"16\"},\"active\":true},\"team\":{\"id\":\"16\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"1\",\"value\":1.0,\"athlete\":{\"id\":\"32797\",\"fullName\":\"Carson Kelly\",\"displayName\":\"Carson Kelly\",\"shortName\":\"C. Kelly\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32797\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32797.png\",\"jersey\":\"15\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"16\"},\"active\":true},\"team\":{\"id\":\"16\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"4\",\"value\":4.0,\"athlete\":{\"id\":\"4917690\",\"fullName\":\"James Triantos\",\"displayName\":\"James Triantos\",\"shortName\":\"J. Triantos\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4917690\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4917690.png\",\"jersey\":\"95\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"16\"},\"active\":true},\"team\":{\"id\":\"16\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"76.8\",\"value\":76.75,\"athlete\":{\"id\":\"4917690\",\"fullName\":\"James Triantos\",\"displayName\":\"James Triantos\",\"shortName\":\"J. Triantos\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4917690\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4917690.png\",\"jersey\":\"95\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"16\"},\"active\":true},\"team\":{\"id\":\"16\"}}]}]},{\"id\":\"29\",\"uid\":\"s:1~l:10~t:29\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"29\",\"uid\":\"s:1~l:10~t:29\",\"location\":\"Arizona\",\"name\":\"Diamondbacks\",\"abbreviation\":\"ARI\",\"displayName\":\"Arizona Diamondbacks\",\"shortDisplayName\":\"Diamondbacks\",\"color\":\"aa182c\",\"alternateColor\":\"000000\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/ari/arizona-diamondbacks\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/ari/arizona-diamondbacks\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/ari/arizona-diamondbacks\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/ari\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/ari.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":4916269,\"athlete\":{\"id\":\"4916269\",\"fullName\":\"Ryne Nelson\",\"displayName\":\"Ryne Nelson\",\"shortName\":\"R. Nelson\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4916269\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4916269.png\",\"jersey\":\"19\",\"position\":\"SP\",\"team\":{\"id\":\"29\"}},\"statistics\":[{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-6th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(1-0, 0.00)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"120\",\"rankDisplayValue\":\"3rd\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"72\",\"rankDisplayValue\":\"Tied-6th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".302\",\"rankDisplayValue\":\"2nd\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"7\",\"rankDisplayValue\":\"1st\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"4\",\"rankDisplayValue\":\"Tied-8th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"7\",\"rankDisplayValue\":\"Tied-6th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.79\",\"rankDisplayValue\":\"22nd\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"7-4\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-3\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"5-1\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1.000\",\"value\":1.0,\"athlete\":{\"id\":\"5338997\",\"fullName\":\"Wallace Clark\",\"displayName\":\"Wallace Clark\",\"shortName\":\"W. Clark\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5338997\"}],\"jersey\":\"12\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"29\"},\"active\":true},\"team\":{\"id\":\"29\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"4872649\",\"fullName\":\"Jordan Lawlar\",\"displayName\":\"Jordan Lawlar\",\"shortName\":\"J. Lawlar\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4872649\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4872649.png\",\"jersey\":\"10\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"29\"},\"active\":true},\"team\":{\"id\":\"29\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"5\",\"value\":5.0,\"athlete\":{\"id\":\"5010500\",\"fullName\":\"Jose Fernandez\",\"displayName\":\"Jose Fernandez\",\"shortName\":\"J. Fernandez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5010500\"}],\"jersey\":\"79\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"29\"},\"active\":true},\"team\":{\"id\":\"29\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"81.0\",\"value\":81.0,\"athlete\":{\"id\":\"5010500\",\"fullName\":\"Jose Fernandez\",\"displayName\":\"Jose Fernandez\",\"shortName\":\"J. Fernandez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5010500\"}],\"jersey\":\"79\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"29\"},\"active\":true},\"team\":{\"id\":\"29\"}}]}]}],\"notes\":[],\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:05 PM EST\"}},\"broadcasts\":[],\"format\":{\"regulation\":{\"periods\":9}},\"tickets\":[{\"summary\":\"Tickets as low as $28\",\"numberAvailable\":416,\"links\":[{\"href\":\"https://www.vividseats.com/chicago-cubs-tickets-sloan-park-3-5-2026--sports-mlb-baseball/production/6261291?wsUser=717\"},{\"href\":\"https://www.vividseats.com/sloan-park-tickets/venue/11263?wsUser=717\"}]}],\"startDate\":\"2026-03-05T20:05Z\",\"broadcast\":\"\",\"geoBroadcasts\":[],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"summary\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833057/diamondbacks-cubs\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"Sunny\",\"temperature\":79,\"highTemperature\":79,\"conditionId\":\"1\",\"link\":{\"language\":\"en-US\",\"rel\":[\"85201\"],\"href\":\"http://www.accuweather.com/en/us/sloan-park-az/85201/hourly-weather-forecast/209224_poi?day=1&hbhhour=13&lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:05 PM EST\"}}},{\"id\":\"401833060\",\"uid\":\"s:1~l:10~e:401833060\",\"date\":\"2026-03-05T20:10Z\",\"name\":\"Milwaukee Brewers at Colorado Rockies\",\"shortName\":\"MIL @ COL\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833060\",\"uid\":\"s:1~l:10~e:401833060~c:401833060\",\"date\":\"2026-03-05T20:10Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":false,\"recent\":false,\"wasSuspended\":false,\"venue\":{\"id\":\"211\",\"fullName\":\"Salt River Fields at Talking Stick\",\"address\":{\"city\":\"Scottsdale\",\"state\":\"Arizona\"},\"indoor\":false},\"competitors\":[{\"id\":\"27\",\"uid\":\"s:1~l:10~t:27\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"27\",\"uid\":\"s:1~l:10~t:27\",\"location\":\"Colorado\",\"name\":\"Rockies\",\"abbreviation\":\"COL\",\"displayName\":\"Colorado Rockies\",\"shortDisplayName\":\"Rockies\",\"color\":\"33006f\",\"alternateColor\":\"000000\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/col/colorado-rockies\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/col/colorado-rockies\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/col/colorado-rockies\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/col\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/col.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":33252,\"athlete\":{\"id\":\"33252\",\"fullName\":\"Michael Lorenzen\",\"displayName\":\"Michael Lorenzen\",\"shortName\":\"M. Lorenzen\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33252\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33252.png\",\"jersey\":\"24\",\"position\":\"SP\",\"team\":{\"id\":\"27\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"15.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-1, 15.00)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"108\",\"rankDisplayValue\":\"8th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"69\",\"rankDisplayValue\":\"9th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".284\",\"rankDisplayValue\":\"4th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-24th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-11th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"6\",\"rankDisplayValue\":\"Tied-9th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"6.03\",\"rankDisplayValue\":\"25th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"6-5\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-3\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"3-2\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".636\",\"value\":0.6363636255264282,\"athlete\":{\"id\":\"34230\",\"fullName\":\"Willi Castro\",\"displayName\":\"Willi Castro\",\"shortName\":\"W. Castro\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/34230\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/34230.png\",\"jersey\":\"3\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"27\"},\"active\":true},\"team\":{\"id\":\"27\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"36181\",\"fullName\":\"Mickey Moniak\",\"displayName\":\"Mickey Moniak\",\"shortName\":\"M. Moniak\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/36181\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/36181.png\",\"jersey\":\"22\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"27\"},\"active\":true},\"team\":{\"id\":\"27\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"6\",\"value\":6.0,\"athlete\":{\"id\":\"5196606\",\"fullName\":\"Ryan Ritter\",\"displayName\":\"Ryan Ritter\",\"shortName\":\"R. Ritter\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5196606\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/5196606.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"27\"},\"active\":true},\"team\":{\"id\":\"27\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"88.0\",\"value\":88.0,\"athlete\":{\"id\":\"5196606\",\"fullName\":\"Ryan Ritter\",\"displayName\":\"Ryan Ritter\",\"shortName\":\"R. Ritter\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5196606\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/5196606.png\",\"jersey\":\"8\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"27\"},\"active\":true},\"team\":{\"id\":\"27\"}}]}]},{\"id\":\"8\",\"uid\":\"s:1~l:10~t:8\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"8\",\"uid\":\"s:1~l:10~t:8\",\"location\":\"Milwaukee\",\"name\":\"Brewers\",\"abbreviation\":\"MIL\",\"displayName\":\"Milwaukee Brewers\",\"shortDisplayName\":\"Brewers\",\"color\":\"13294b\",\"alternateColor\":\"ffc72c\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/mil/milwaukee-brewers\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/mil/milwaukee-brewers\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/mil/milwaukee-brewers\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/mil\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/mil.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":4918251,\"athlete\":{\"id\":\"4918251\",\"fullName\":\"Robert Gasser\",\"displayName\":\"Robert Gasser\",\"shortName\":\"R. Gasser\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4918251\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4918251.png\",\"jersey\":\"54\",\"position\":\"SP\",\"team\":{\"id\":\"8\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 0.00)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"109\",\"rankDisplayValue\":\"7th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"58\",\"rankDisplayValue\":\"16th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".284\",\"rankDisplayValue\":\"5th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"2\",\"rankDisplayValue\":\"Tied-15th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"7\",\"rankDisplayValue\":\"Tied-20th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"4\",\"rankDisplayValue\":\"Tied-22nd\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.12\",\"rankDisplayValue\":\"15th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"4-7\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-4\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"2-3\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\"1.000\",\"value\":1.0,\"athlete\":{\"id\":\"31283\",\"fullName\":\"Christian Yelich\",\"displayName\":\"Christian Yelich\",\"shortName\":\"C. Yelich\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/31283\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/31283.png\",\"jersey\":\"22\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"8\"},\"active\":true},\"team\":{\"id\":\"8\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"41179\",\"fullName\":\"Brice Turang\",\"displayName\":\"Brice Turang\",\"shortName\":\"B. Turang\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/41179\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/41179.png\",\"jersey\":\"2\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"8\"},\"active\":true},\"team\":{\"id\":\"8\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"8\",\"value\":8.0,\"athlete\":{\"id\":\"4414183\",\"fullName\":\"Tyler Black\",\"displayName\":\"Tyler Black\",\"shortName\":\"T. Black\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4414183\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4414183.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"8\"},\"active\":true},\"team\":{\"id\":\"8\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"93.5\",\"value\":93.5,\"athlete\":{\"id\":\"4414183\",\"fullName\":\"Tyler Black\",\"displayName\":\"Tyler Black\",\"shortName\":\"T. Black\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4414183\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4414183.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"8\"},\"active\":true},\"team\":{\"id\":\"8\"}}]}]}],\"notes\":[],\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:10 PM EST\"}},\"broadcasts\":[],\"format\":{\"regulation\":{\"periods\":9}},\"tickets\":[{\"summary\":\"Tickets as low as $18\",\"numberAvailable\":589,\"links\":[{\"href\":\"https://www.vividseats.com/colorado-rockies-tickets-salt-river-fields-at-talking-stick-3-5-2026--sports-mlb-baseball/production/6261499?wsUser=717\"},{\"href\":\"https://www.vividseats.com/salt-river-fields-at-talking-stick-tickets/venue/8824?wsUser=717\"}]}],\"startDate\":\"2026-03-05T20:10Z\",\"broadcast\":\"\",\"geoBroadcasts\":[],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"summary\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833060/brewers-rockies\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"Sunny\",\"temperature\":77,\"highTemperature\":77,\"conditionId\":\"1\",\"link\":{\"language\":\"en-US\",\"rel\":[\"85258\"],\"href\":\"http://www.accuweather.com/en/us/salt-river-fields-at-talking-stick-az/85251/hourly-weather-forecast/209222_poi?day=1&hbhhour=13&lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:10 PM EST\"}}},{\"id\":\"401833062\",\"uid\":\"s:1~l:10~e:401833062\",\"date\":\"2026-03-05T20:10Z\",\"name\":\"Athletics Athletics at Los Angeles Angels\",\"shortName\":\"ATH @ LAA\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833062\",\"uid\":\"s:1~l:10~e:401833062~c:401833062\",\"date\":\"2026-03-05T20:10Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":false,\"recent\":false,\"wasSuspended\":false,\"venue\":{\"id\":\"50\",\"fullName\":\"Tempe Diablo Stadium\",\"address\":{\"city\":\"Tempe\",\"state\":\"Arizona\"},\"indoor\":false},\"competitors\":[{\"id\":\"3\",\"uid\":\"s:1~l:10~t:3\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"3\",\"uid\":\"s:1~l:10~t:3\",\"location\":\"Los Angeles\",\"name\":\"Angels\",\"abbreviation\":\"LAA\",\"displayName\":\"Los Angeles Angels\",\"shortDisplayName\":\"Angels\",\"color\":\"ba0021\",\"alternateColor\":\"c4ced4\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/laa/los-angeles-angels\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/laa/los-angeles-angels\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/laa/los-angeles-angels\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/laa\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/laa.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":42436,\"athlete\":{\"id\":\"42436\",\"fullName\":\"Alek Manoah\",\"displayName\":\"Alek Manoah\",\"shortName\":\"A. Manoah\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42436\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42436.png\",\"jersey\":\"47\",\"position\":\"SP\",\"team\":{\"id\":\"3\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 0.00)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"96\",\"rankDisplayValue\":\"17th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"50\",\"rankDisplayValue\":\"21st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".239\",\"rankDisplayValue\":\"22nd\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"3\",\"rankDisplayValue\":\"Tied-8th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"7\",\"rankDisplayValue\":\"Tied-20th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-12th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"6.43\",\"rankDisplayValue\":\"26th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-7\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-4\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"3-3\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".375\",\"value\":0.375,\"athlete\":{\"id\":\"4666100\",\"fullName\":\"Zach Neto\",\"displayName\":\"Zach Neto\",\"shortName\":\"Z. Neto\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4666100\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4666100.png\",\"jersey\":\"9\",\"position\":{\"abbreviation\":\"SS\"},\"team\":{\"id\":\"3\"},\"active\":true},\"team\":{\"id\":\"3\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"42047\",\"fullName\":\"Logan O'Hoppe\",\"displayName\":\"Logan O'Hoppe\",\"shortName\":\"L. O'Hoppe\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42047\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42047.png\",\"jersey\":\"14\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"3\"},\"active\":true},\"team\":{\"id\":\"3\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"7\",\"value\":7.0,\"athlete\":{\"id\":\"42047\",\"fullName\":\"Logan O'Hoppe\",\"displayName\":\"Logan O'Hoppe\",\"shortName\":\"L. O'Hoppe\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42047\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42047.png\",\"jersey\":\"14\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"3\"},\"active\":true},\"team\":{\"id\":\"3\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"83.2\",\"value\":83.25,\"athlete\":{\"id\":\"42047\",\"fullName\":\"Logan O'Hoppe\",\"displayName\":\"Logan O'Hoppe\",\"shortName\":\"L. O'Hoppe\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42047\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42047.png\",\"jersey\":\"14\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"3\"},\"active\":true},\"team\":{\"id\":\"3\"}}]}]},{\"id\":\"11\",\"uid\":\"s:1~l:10~t:11\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"11\",\"uid\":\"s:1~l:10~t:11\",\"location\":\"Athletics\",\"name\":\"Athletics\",\"abbreviation\":\"ATH\",\"displayName\":\"Athletics\",\"shortDisplayName\":\"Athletics\",\"color\":\"003831\",\"alternateColor\":\"efb21e\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/ath/athletics\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/ath/athletics\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/ath/athletics\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/ath\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/ath.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":5150939,\"athlete\":{\"id\":\"5150939\",\"fullName\":\"Luis Morales\",\"displayName\":\"Luis Morales\",\"shortName\":\"L. Morales\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/5150939\"}],\"jersey\":\"19\",\"position\":\"SP\",\"team\":{\"id\":\"11\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"12.27\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-1, 12.27)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"88\",\"rankDisplayValue\":\"Tied-21st\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"39\",\"rankDisplayValue\":\"28th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".258\",\"rankDisplayValue\":\"16th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-29th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"7\",\"rankDisplayValue\":\"Tied-20th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"3\",\"rankDisplayValue\":\"Tied-24th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.59\",\"rankDisplayValue\":\"20th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"3-7\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-4\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"1-3\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".455\",\"value\":0.45454540848731995,\"athlete\":{\"id\":\"43025\",\"fullName\":\"Darell Hernaiz\",\"displayName\":\"Darell Hernaiz\",\"shortName\":\"D. Hernaiz\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/43025\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/43025.png\",\"jersey\":\"2\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"11\"},\"active\":true},\"team\":{\"id\":\"11\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"1\",\"value\":1.0,\"athlete\":{\"id\":\"35314\",\"fullName\":\"Austin Wynns\",\"displayName\":\"Austin Wynns\",\"shortName\":\"A. Wynns\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35314\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35314.png\",\"jersey\":\"29\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"11\"},\"active\":true},\"team\":{\"id\":\"11\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"5\",\"value\":5.0,\"athlete\":{\"id\":\"42598\",\"fullName\":\"Shea Langeliers\",\"displayName\":\"Shea Langeliers\",\"shortName\":\"S. Langeliers\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42598\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42598.png\",\"jersey\":\"23\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"11\"},\"active\":true},\"team\":{\"id\":\"11\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"85.0\",\"value\":85.0,\"athlete\":{\"id\":\"4686066\",\"fullName\":\"Tyler Soderstrom\",\"displayName\":\"Tyler Soderstrom\",\"shortName\":\"T. Soderstrom\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4686066\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4686066.png\",\"jersey\":\"21\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"11\"},\"active\":true},\"team\":{\"id\":\"11\"}}]}]}],\"notes\":[],\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:10 PM EST\"}},\"broadcasts\":[],\"format\":{\"regulation\":{\"periods\":9}},\"tickets\":[{\"summary\":\"Tickets as low as $8\",\"numberAvailable\":485,\"links\":[{\"href\":\"https://www.vividseats.com/los-angeles-angels-tickets-tempe-diablo-stadium-3-5-2026--sports-mlb-baseball/production/6261571?wsUser=717\"},{\"href\":\"https://www.vividseats.com/tempe-diablo-stadium-tickets/venue/1670?wsUser=717\"}]}],\"startDate\":\"2026-03-05T20:10Z\",\"broadcast\":\"\",\"geoBroadcasts\":[],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"summary\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833062/athletics-angels\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"Sunny\",\"temperature\":77,\"highTemperature\":77,\"conditionId\":\"1\",\"link\":{\"language\":\"en-US\",\"rel\":[\"85289\"],\"href\":\"http://www.accuweather.com/en/us/tempe-diablo-stadium-az/85281/hourly-weather-forecast/209226_poi?day=1&hbhhour=13&lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:10 PM EST\"}}},{\"id\":\"401833067\",\"uid\":\"s:1~l:10~e:401833067\",\"date\":\"2026-03-05T20:10Z\",\"name\":\"San Diego Padres at Seattle Mariners\",\"shortName\":\"SD @ SEA\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833067\",\"uid\":\"s:1~l:10~e:401833067~c:401833067\",\"date\":\"2026-03-05T20:10Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":false,\"recent\":false,\"wasSuspended\":false,\"venue\":{\"id\":\"58\",\"fullName\":\"Peoria Stadium\",\"address\":{\"city\":\"Peoria\",\"state\":\"Arizona\"},\"indoor\":false},\"competitors\":[{\"id\":\"12\",\"uid\":\"s:1~l:10~t:12\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"12\",\"uid\":\"s:1~l:10~t:12\",\"location\":\"Seattle\",\"name\":\"Mariners\",\"abbreviation\":\"SEA\",\"displayName\":\"Seattle Mariners\",\"shortDisplayName\":\"Mariners\",\"color\":\"005c5c\",\"alternateColor\":\"0c2c56\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/sea/seattle-mariners\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/sea/seattle-mariners\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/sea/seattle-mariners\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/sea\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/sea.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":35124,\"athlete\":{\"id\":\"35124\",\"fullName\":\"Luis Castillo\",\"displayName\":\"Luis Castillo\",\"shortName\":\"L. Castillo\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35124\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35124.png\",\"jersey\":\"58\",\"position\":\"SP\",\"team\":{\"id\":\"12\"}},\"statistics\":[{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"20.25\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-1, 20.25)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"112\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"68\",\"rankDisplayValue\":\"10th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".270\",\"rankDisplayValue\":\"11th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-24th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"8\",\"rankDisplayValue\":\"Tied-28th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"3\",\"rankDisplayValue\":\"Tied-24th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"7.20\",\"rankDisplayValue\":\"29th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"3-8-1\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-5\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"1-3-1\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".556\",\"value\":0.555555522441864,\"athlete\":{\"id\":\"41044\",\"fullName\":\"Julio Rodriguez\",\"displayName\":\"Julio Rodriguez\",\"shortName\":\"J. Rodriguez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/41044\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/41044.png\",\"jersey\":\"44\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"12\"},\"active\":true},\"team\":{\"id\":\"12\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"4672794\",\"fullName\":\"Rhylan Thomas\",\"displayName\":\"Rhylan Thomas\",\"shortName\":\"R. Thomas\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4672794\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4672794.png\",\"jersey\":\"31\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"12\"},\"active\":true},\"team\":{\"id\":\"12\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"4\",\"value\":4.0,\"athlete\":{\"id\":\"40900\",\"fullName\":\"Miles Mastrobuoni\",\"displayName\":\"Miles Mastrobuoni\",\"shortName\":\"M. Mastrobuoni\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/40900\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/40900.png\",\"jersey\":\"21\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"12\"},\"active\":true},\"team\":{\"id\":\"12\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"78.2\",\"value\":78.25,\"athlete\":{\"id\":\"4672794\",\"fullName\":\"Rhylan Thomas\",\"displayName\":\"Rhylan Thomas\",\"shortName\":\"R. Thomas\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4672794\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4672794.png\",\"jersey\":\"31\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"12\"},\"active\":true},\"team\":{\"id\":\"12\"}}]}]},{\"id\":\"25\",\"uid\":\"s:1~l:10~t:25\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"25\",\"uid\":\"s:1~l:10~t:25\",\"location\":\"San Diego\",\"name\":\"Padres\",\"abbreviation\":\"SD\",\"displayName\":\"San Diego Padres\",\"shortDisplayName\":\"Padres\",\"color\":\"2f241d\",\"alternateColor\":\"ffc425\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/sd/san-diego-padres\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/sd/san-diego-padres\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/sd/san-diego-padres\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/sd\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/sd.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":39251,\"athlete\":{\"id\":\"39251\",\"fullName\":\"Walker Buehler\",\"displayName\":\"Walker Buehler\",\"shortName\":\"W. Buehler\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/39251\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/39251.png\",\"jersey\":\"10\",\"position\":\"SP\",\"team\":{\"id\":\"25\"}},\"statistics\":[],\"record\":\"\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"102\",\"rankDisplayValue\":\"Tied-12th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"60\",\"rankDisplayValue\":\"Tied-14th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".254\",\"rankDisplayValue\":\"18th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"2\",\"rankDisplayValue\":\"Tied-15th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"7\",\"rankDisplayValue\":\"Tied-20th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-12th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.31\",\"rankDisplayValue\":\"16th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-7\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-2\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"2-5\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".294\",\"value\":0.29411759972572327,\"athlete\":{\"id\":\"33743\",\"fullName\":\"Miguel Andujar\",\"displayName\":\"Miguel Andujar\",\"shortName\":\"M. Andujar\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/33743\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/33743.png\",\"jersey\":\"41\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"25\"},\"active\":true},\"team\":{\"id\":\"25\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"31097\",\"fullName\":\"Manny Machado\",\"displayName\":\"Manny Machado\",\"shortName\":\"M. Machado\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/31097\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/31097.png\",\"jersey\":\"13\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"25\"},\"active\":true},\"team\":{\"id\":\"25\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"7\",\"value\":7.0,\"athlete\":{\"id\":\"31097\",\"fullName\":\"Manny Machado\",\"displayName\":\"Manny Machado\",\"shortName\":\"M. Machado\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/31097\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/31097.png\",\"jersey\":\"13\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"25\"},\"active\":true},\"team\":{\"id\":\"25\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"77.8\",\"value\":77.75,\"athlete\":{\"id\":\"31097\",\"fullName\":\"Manny Machado\",\"displayName\":\"Manny Machado\",\"shortName\":\"M. Machado\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/31097\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/31097.png\",\"jersey\":\"13\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"25\"},\"active\":true},\"team\":{\"id\":\"25\"}}]}]}],\"notes\":[],\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:10 PM EST\"}},\"broadcasts\":[{\"market\":\"national\",\"names\":[\"MLB.TV\"]},{\"market\":\"away\",\"names\":[\"Padres.TV\"]},{\"market\":\"home\",\"names\":[\"Mariners.TV\",\"MLBN\"]}],\"format\":{\"regulation\":{\"periods\":9}},\"tickets\":[{\"summary\":\"Tickets as low as $48\",\"numberAvailable\":80,\"links\":[{\"href\":\"https://www.vividseats.com/seattle-mariners-tickets-peoria-sports-complex-3-5-2026--sports-mlb-baseball/production/6261077?wsUser=717\"},{\"href\":\"https://www.vividseats.com/peoria-sports-complex-tickets/venue/1313?wsUser=717\"}]}],\"startDate\":\"2026-03-05T20:10Z\",\"broadcast\":\"MLB.TV\",\"geoBroadcasts\":[{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB.TV\",\"logo\":\"https://a.espncdn.com/guid/0db644c3-9f87-37e7-9884-858c2ed45218/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"3\",\"type\":\"Away\"},\"media\":{\"shortName\":\"Padres.TV\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"Mariners.TV\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"1\",\"shortName\":\"TV\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"MLBN\"},\"lang\":\"en\",\"region\":\"us\"}],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"summary\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833067/padres-mariners\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"Sunny\",\"temperature\":77,\"highTemperature\":77,\"conditionId\":\"1\",\"link\":{\"language\":\"en-US\",\"rel\":[\"85385\"],\"href\":\"http://www.accuweather.com/en/us/peoria-stadium-az/85345/hourly-weather-forecast/209221_poi?day=1&hbhhour=13&lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 3:10 PM EST\"}}},{\"id\":\"401833058\",\"uid\":\"s:1~l:10~e:401833058\",\"date\":\"2026-03-06T01:05Z\",\"name\":\"Cleveland Guardians at Chicago White Sox\",\"shortName\":\"CLE @ CHW\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833058\",\"uid\":\"s:1~l:10~e:401833058~c:401833058\",\"date\":\"2026-03-06T01:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":false,\"recent\":false,\"wasSuspended\":false,\"venue\":{\"id\":\"227\",\"fullName\":\"Camelback Ranch - Glendale\",\"address\":{\"city\":\"Phoenix\",\"state\":\"Arizona\"},\"indoor\":false},\"competitors\":[{\"id\":\"4\",\"uid\":\"s:1~l:10~t:4\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"4\",\"uid\":\"s:1~l:10~t:4\",\"location\":\"Chicago\",\"name\":\"White Sox\",\"abbreviation\":\"CHW\",\"displayName\":\"Chicago White Sox\",\"shortDisplayName\":\"White Sox\",\"color\":\"000000\",\"alternateColor\":\"c4ced4\",\"isActive\":true,\"venue\":{\"id\":\"4\"},\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/chw/chicago-white-sox\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/chw/chicago-white-sox\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/chw/chicago-white-sox\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/chw\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/chw.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":4867679,\"athlete\":{\"id\":\"4867679\",\"fullName\":\"Sean Burke\",\"displayName\":\"Sean Burke\",\"shortName\":\"S. Burke\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4867679\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4867679.png\",\"jersey\":\"59\",\"position\":\"SP\",\"team\":{\"id\":\"4\"}},\"statistics\":[],\"record\":\"\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"127\",\"rankDisplayValue\":\"1st\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"73\",\"rankDisplayValue\":\"Tied-4th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".285\",\"rankDisplayValue\":\"3rd\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"4\",\"rankDisplayValue\":\"Tied-6th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"6\",\"rankDisplayValue\":\"Tied-16th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"7\",\"rankDisplayValue\":\"Tied-6th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"3.85\",\"rankDisplayValue\":\"6th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"7-6\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-3\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"4-3\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".500\",\"value\":0.5,\"athlete\":{\"id\":\"42411\",\"fullName\":\"Luisangel Acuna\",\"displayName\":\"Luisangel Acuna\",\"shortName\":\"L. Acuna\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42411\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42411.png\",\"jersey\":\"0\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"4\"},\"active\":true},\"team\":{\"id\":\"4\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"36928\",\"fullName\":\"Austin Hays\",\"displayName\":\"Austin Hays\",\"shortName\":\"A. Hays\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/36928\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/36928.png\",\"jersey\":\"21\",\"position\":{\"abbreviation\":\"LF\"},\"team\":{\"id\":\"4\"},\"active\":true},\"team\":{\"id\":\"4\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"9\",\"value\":9.0,\"athlete\":{\"id\":\"4917824\",\"fullName\":\"Edgar Quero\",\"displayName\":\"Edgar Quero\",\"shortName\":\"E. Quero\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4917824\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4917824.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"4\"},\"active\":true},\"team\":{\"id\":\"4\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"91.2\",\"value\":91.25,\"athlete\":{\"id\":\"4917824\",\"fullName\":\"Edgar Quero\",\"displayName\":\"Edgar Quero\",\"shortName\":\"E. Quero\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4917824\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4917824.png\",\"jersey\":\"7\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"4\"},\"active\":true},\"team\":{\"id\":\"4\"}}]}]},{\"id\":\"5\",\"uid\":\"s:1~l:10~t:5\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"5\",\"uid\":\"s:1~l:10~t:5\",\"location\":\"Cleveland\",\"name\":\"Guardians\",\"abbreviation\":\"CLE\",\"displayName\":\"Cleveland Guardians\",\"shortDisplayName\":\"Guardians\",\"color\":\"002b5c\",\"alternateColor\":\"e31937\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/cle/cleveland-guardians\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/cle/cleveland-guardians\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/cle/cleveland-guardians\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/cle\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/cle.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":4345278,\"athlete\":{\"id\":\"4345278\",\"fullName\":\"Tanner Bibee\",\"displayName\":\"Tanner Bibee\",\"shortName\":\"T. Bibee\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4345278\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4345278.png\",\"jersey\":\"28\",\"position\":\"SP\",\"team\":{\"id\":\"5\"}},\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-979th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-851st\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".000\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"1\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.40\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-1, 5.40)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"112\",\"rankDisplayValue\":\"Tied-5th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"72\",\"rankDisplayValue\":\"Tied-6th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".254\",\"rankDisplayValue\":\"17th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"2\",\"rankDisplayValue\":\"Tied-15th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"8\",\"rankDisplayValue\":\"Tied-28th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-12th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"6.03\",\"rankDisplayValue\":\"24th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-8\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-3\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"2-5\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".625\",\"value\":0.625,\"athlete\":{\"id\":\"4619649\",\"fullName\":\"Chase DeLauter\",\"displayName\":\"Chase DeLauter\",\"shortName\":\"C. DeLauter\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4619649\"}],\"jersey\":\"24\",\"position\":{\"abbreviation\":\"RF\"},\"team\":{\"id\":\"5\"},\"active\":true},\"team\":{\"id\":\"5\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"32801\",\"fullName\":\"Jose Ramirez\",\"displayName\":\"Jose Ramirez\",\"shortName\":\"J. Ramirez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32801\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32801.png\",\"jersey\":\"11\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"5\"},\"active\":true},\"team\":{\"id\":\"5\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"6\",\"value\":6.0,\"athlete\":{\"id\":\"32801\",\"fullName\":\"Jose Ramirez\",\"displayName\":\"Jose Ramirez\",\"shortName\":\"J. Ramirez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/32801\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/32801.png\",\"jersey\":\"11\",\"position\":{\"abbreviation\":\"3B\"},\"team\":{\"id\":\"5\"},\"active\":true},\"team\":{\"id\":\"5\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"79.5\",\"value\":79.5,\"athlete\":{\"id\":\"42497\",\"fullName\":\"Angel Martinez\",\"displayName\":\"Angel Martinez\",\"shortName\":\"A. Martinez\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/42497\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/42497.png\",\"jersey\":\"1\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"5\"},\"active\":true},\"team\":{\"id\":\"5\"}}]}]}],\"notes\":[],\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 8:05 PM EST\"}},\"broadcasts\":[],\"format\":{\"regulation\":{\"periods\":9}},\"startDate\":\"2026-03-06T01:05Z\",\"broadcast\":\"\",\"geoBroadcasts\":[],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"summary\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833058/guardians-white-sox\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"Sunny\",\"temperature\":74,\"highTemperature\":74,\"conditionId\":\"1\",\"link\":{\"language\":\"en-US\",\"rel\":[\"85037\"],\"href\":\"http://www.accuweather.com/en/us/camelback-ranch-az/85003/hourly-weather-forecast/209218_poi?day=1&hbhhour=18&lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 8:05 PM EST\"}}},{\"id\":\"401833061\",\"uid\":\"s:1~l:10~e:401833061\",\"date\":\"2026-03-06T01:05Z\",\"name\":\"Texas Rangers at Kansas City Royals\",\"shortName\":\"TEX @ KC\",\"season\":{\"year\":2026,\"type\":1,\"slug\":\"preseason\"},\"competitions\":[{\"id\":\"401833061\",\"uid\":\"s:1~l:10~e:401833061~c:401833061\",\"date\":\"2026-03-06T01:05Z\",\"attendance\":0,\"type\":{\"id\":\"18\",\"abbreviation\":\"EXH\"},\"timeValid\":true,\"neutralSite\":false,\"conferenceCompetition\":false,\"playByPlayAvailable\":false,\"recent\":false,\"wasSuspended\":false,\"venue\":{\"id\":\"173\",\"fullName\":\"Surprise Stadium\",\"address\":{\"city\":\"Surprise\",\"state\":\"Arizona\"},\"indoor\":false},\"competitors\":[{\"id\":\"7\",\"uid\":\"s:1~l:10~t:7\",\"type\":\"team\",\"order\":0,\"homeAway\":\"home\",\"team\":{\"id\":\"7\",\"uid\":\"s:1~l:10~t:7\",\"location\":\"Kansas City\",\"name\":\"Royals\",\"abbreviation\":\"KC\",\"displayName\":\"Kansas City Royals\",\"shortDisplayName\":\"Royals\",\"color\":\"004687\",\"alternateColor\":\"7ab2dd\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/kc/kansas-city-royals\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/kc/kansas-city-royals\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/kc/kansas-city-royals\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/kc\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/kc.png\"},\"score\":\"0\",\"probables\":[{\"name\":\"probableStartingPitcher\",\"displayName\":\"Probable Starting Pitcher\",\"shortDisplayName\":\"Starter\",\"abbreviation\":\"SP\",\"playerId\":41054,\"athlete\":{\"id\":\"41054\",\"fullName\":\"Cole Ragans\",\"displayName\":\"Cole Ragans\",\"shortName\":\"C. Ragans\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/41054\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/41054.png\",\"jersey\":\"55\",\"position\":\"SP\",\"team\":{\"id\":\"7\"}},\"statistics\":[{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-78th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-155th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-154th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"0.00\"},{\"name\":\"errors\",\"abbreviation\":\"E\",\"displayValue\":\"0\",\"rankDisplayValue\":\"Tied-203rd\"}],\"record\":\"(0-0, 0.00)\"}],\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"103\",\"rankDisplayValue\":\"11th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"71\",\"rankDisplayValue\":\"8th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".275\",\"rankDisplayValue\":\"7th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"2\",\"rankDisplayValue\":\"Tied-15th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-11th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-12th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"5.47\",\"rankDisplayValue\":\"18th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"5-5-1\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"2-2-1\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"3-3\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".471\",\"value\":0.47058820724487305,\"athlete\":{\"id\":\"4109223\",\"fullName\":\"Michael Massey\",\"displayName\":\"Michael Massey\",\"shortName\":\"M. Massey\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4109223\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4109223.png\",\"jersey\":\"19\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"7\"},\"active\":true},\"team\":{\"id\":\"7\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"2\",\"value\":2.0,\"athlete\":{\"id\":\"4917812\",\"fullName\":\"Carter Jensen\",\"displayName\":\"Carter Jensen\",\"shortName\":\"C. Jensen\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4917812\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4917812.png\",\"jersey\":\"22\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"7\"},\"active\":true},\"team\":{\"id\":\"7\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"7\",\"value\":7.0,\"athlete\":{\"id\":\"36409\",\"fullName\":\"Lane Thomas\",\"displayName\":\"Lane Thomas\",\"shortName\":\"L. Thomas\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/36409\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/36409.png\",\"jersey\":\"15\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"7\"},\"active\":true},\"team\":{\"id\":\"7\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"84.5\",\"value\":84.5,\"athlete\":{\"id\":\"4109223\",\"fullName\":\"Michael Massey\",\"displayName\":\"Michael Massey\",\"shortName\":\"M. Massey\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4109223\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4109223.png\",\"jersey\":\"19\",\"position\":{\"abbreviation\":\"2B\"},\"team\":{\"id\":\"7\"},\"active\":true},\"team\":{\"id\":\"7\"}}]}]},{\"id\":\"13\",\"uid\":\"s:1~l:10~t:13\",\"type\":\"team\",\"order\":1,\"homeAway\":\"away\",\"team\":{\"id\":\"13\",\"uid\":\"s:1~l:10~t:13\",\"location\":\"Texas\",\"name\":\"Rangers\",\"abbreviation\":\"TEX\",\"displayName\":\"Texas Rangers\",\"shortDisplayName\":\"Rangers\",\"color\":\"003278\",\"alternateColor\":\"c0111f\",\"isActive\":true,\"links\":[{\"rel\":[\"clubhouse\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/_/name/tex/texas-rangers\",\"text\":\"Clubhouse\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"roster\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/roster/_/name/tex/texas-rangers\",\"text\":\"Roster\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"stats\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/stats/_/name/tex/texas-rangers\",\"text\":\"Statistics\",\"isExternal\":false,\"isPremium\":false},{\"rel\":[\"schedule\",\"desktop\",\"team\"],\"href\":\"https://www.espn.com/mlb/team/schedule/_/name/tex\",\"text\":\"Schedule\",\"isExternal\":false,\"isPremium\":false}],\"logo\":\"https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/tex.png\"},\"score\":\"0\",\"statistics\":[{\"name\":\"hits\",\"abbreviation\":\"H\",\"displayValue\":\"106\",\"rankDisplayValue\":\"9th\"},{\"name\":\"runs\",\"abbreviation\":\"R\",\"displayValue\":\"60\",\"rankDisplayValue\":\"Tied-14th\"},{\"name\":\"avg\",\"abbreviation\":\"AVG\",\"displayValue\":\".264\",\"rankDisplayValue\":\"13th\"},{\"name\":\"saves\",\"abbreviation\":\"SV\",\"displayValue\":\"3\",\"rankDisplayValue\":\"Tied-8th\"},{\"name\":\"losses\",\"abbreviation\":\"L\",\"displayValue\":\"5\",\"rankDisplayValue\":\"Tied-11th\"},{\"name\":\"wins\",\"abbreviation\":\"W\",\"displayValue\":\"7\",\"rankDisplayValue\":\"Tied-6th\"},{\"name\":\"ERA\",\"abbreviation\":\"ERA\",\"displayValue\":\"4.08\",\"rankDisplayValue\":\"9th\"}],\"hits\":0,\"errors\":0,\"records\":[{\"name\":\"overall\",\"abbreviation\":\"Total\",\"type\":\"total\",\"summary\":\"7-5\"},{\"name\":\"Home\",\"abbreviation\":\"Home\",\"type\":\"home\",\"summary\":\"3-3\"},{\"name\":\"Road\",\"abbreviation\":\"AWAY\",\"type\":\"road\",\"summary\":\"4-2\"}],\"leaders\":[{\"name\":\"avg\",\"displayName\":\"Batting Average\",\"shortDisplayName\":\"BA\",\"abbreviation\":\"AVG\",\"leaders\":[{\"displayValue\":\".571\",\"value\":0.5714284777641296,\"athlete\":{\"id\":\"4298639\",\"fullName\":\"Justin Foscue\",\"displayName\":\"Justin Foscue\",\"shortName\":\"J. Foscue\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/4298639\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/4298639.png\",\"jersey\":\"56\",\"position\":{\"abbreviation\":\"1B\"},\"team\":{\"id\":\"13\"},\"active\":true},\"team\":{\"id\":\"13\"}}]},{\"name\":\"homeRuns\",\"displayName\":\"Home Runs\",\"shortDisplayName\":\"HR\",\"abbreviation\":\"HR\",\"leaders\":[{\"displayValue\":\"1\",\"value\":1.0,\"athlete\":{\"id\":\"35004\",\"fullName\":\"Danny Jansen\",\"displayName\":\"Danny Jansen\",\"shortName\":\"D. Jansen\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/35004\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/35004.png\",\"jersey\":\"9\",\"position\":{\"abbreviation\":\"C\"},\"team\":{\"id\":\"13\"},\"active\":true},\"team\":{\"id\":\"13\"}}]},{\"name\":\"RBIs\",\"displayName\":\"Runs Batted In\",\"shortDisplayName\":\"RBI\",\"abbreviation\":\"RBI\",\"leaders\":[{\"displayValue\":\"7\",\"value\":7.0,\"athlete\":{\"id\":\"38347\",\"fullName\":\"Sam Haggerty\",\"displayName\":\"Sam Haggerty\",\"shortName\":\"S. Haggerty\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/38347\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/38347.png\",\"jersey\":\"0\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"13\"},\"active\":true},\"team\":{\"id\":\"13\"}}]},{\"name\":\"MLBRating\",\"displayName\":\"MLB Rating\",\"shortDisplayName\":\"MLB\",\"abbreviation\":\"MLB\",\"leaders\":[{\"displayValue\":\"85.0\",\"value\":85.0,\"athlete\":{\"id\":\"38347\",\"fullName\":\"Sam Haggerty\",\"displayName\":\"Sam Haggerty\",\"shortName\":\"S. Haggerty\",\"links\":[{\"rel\":[\"playercard\",\"desktop\",\"athlete\"],\"href\":\"https://www.espn.com/mlb/player/_/id/38347\"}],\"headshot\":\"https://a.espncdn.com/i/headshots/mlb/players/full/38347.png\",\"jersey\":\"0\",\"position\":{\"abbreviation\":\"CF\"},\"team\":{\"id\":\"13\"},\"active\":true},\"team\":{\"id\":\"13\"}}]}]}],\"notes\":[],\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 8:05 PM EST\"}},\"broadcasts\":[{\"market\":\"national\",\"names\":[\"MLB.TV\"]},{\"market\":\"home\",\"names\":[\"Royals.TV\"]}],\"format\":{\"regulation\":{\"periods\":9}},\"tickets\":[{\"summary\":\"Tickets as low as $17\",\"numberAvailable\":3113,\"links\":[{\"href\":\"https://www.vividseats.com/kansas-city-royals-tickets-surprise-stadium-3-5-2026--sports-mlb-baseball/production/6261025?wsUser=717\"},{\"href\":\"https://www.vividseats.com/surprise-stadium-tickets/venue/2738?wsUser=717\"}]}],\"startDate\":\"2026-03-06T01:05Z\",\"broadcast\":\"MLB.TV\",\"geoBroadcasts\":[{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"1\",\"type\":\"National\"},\"media\":{\"shortName\":\"MLB.TV\",\"logo\":\"https://a.espncdn.com/guid/0db644c3-9f87-37e7-9884-858c2ed45218/logos/default.png\",\"darkLogo\":\"\"},\"lang\":\"en\",\"region\":\"us\"},{\"type\":{\"id\":\"4\",\"shortName\":\"Streaming\"},\"market\":{\"id\":\"2\",\"type\":\"Home\"},\"media\":{\"shortName\":\"Royals.TV\"},\"lang\":\"en\",\"region\":\"us\"}],\"highlights\":[]}],\"links\":[{\"language\":\"en-US\",\"rel\":[\"summary\",\"desktop\",\"event\"],\"href\":\"https://www.espn.com/mlb/game/_/gameId/401833061/rangers-royals\",\"text\":\"Gamecast\",\"shortText\":\"Gamecast\",\"isExternal\":false,\"isPremium\":false}],\"weather\":{\"displayValue\":\"Sunny\",\"temperature\":73,\"highTemperature\":73,\"conditionId\":\"1\",\"link\":{\"language\":\"en-US\",\"rel\":[\"85387\"],\"href\":\"http://www.accuweather.com/en/us/surprise-stadium-az/85378/hourly-weather-forecast/209225_poi?day=1&hbhhour=18&lang=en-us\",\"text\":\"Weather\",\"shortText\":\"Weather\",\"isExternal\":true,\"isPremium\":false}},\"status\":{\"clock\":0.0,\"displayClock\":\"0:00\",\"period\":1,\"type\":{\"id\":\"1\",\"name\":\"STATUS_SCHEDULED\",\"state\":\"pre\",\"completed\":false,\"description\":\"Scheduled\",\"detail\":\"Scheduled\",\"shortDetail\":\"3/5 - 8:05 PM EST\"}}}],\"provider\":{\"id\":\"100\",\"name\":\"Draft Kings\",\"displayName\":\"Draft Kings\",\"priority\":1,\"logos\":[{\"href\":\"https://a.espncdn.com/i/betting/Draftkings_Light.svg\",\"rel\":[\"light\"]},{\"href\":\"https://a.espncdn.com/i/betting/Draftkings_Dark.svg\",\"rel\":[\"dark\"]}]}}" + } + } + ] +} \ No newline at end of file diff --git a/tests/fixtures/llm_traces/recorded/weather_sf.json b/tests/fixtures/llm_traces/recorded/weather_sf.json new file mode 100644 index 00000000..404ea545 --- /dev/null +++ b/tests/fixtures/llm_traces/recorded/weather_sf.json @@ -0,0 +1,77 @@ +{ + "model_name": "recorded-weather-sf", + "expects": { + "response_contains": [ + "San Francisco", + "Weather" + ], + "tools_used": [ + "http" + ], + "all_tools_succeeded": true, + "min_responses": 1 + }, + "memory_snapshot": [ + { + "path": "IDENTITY.md", + "content": "# Identity\n\nName: Alfred\nNature: A secure personal AI assistant\n\nEdit this file to give your agent a custom name and personality." + } + ], + "steps": [ + { + "response": { + "type": "user_input", + "content": "check weather in SF today" + } + }, + { + "request_hint": { + "last_user_message_contains": "check weather in SF today" + }, + "response": { + "type": "tool_calls", + "tool_calls": [ + { + "id": "call_11acdd18a2324b06a8610054", + "name": "http", + "arguments": { + "method": "GET", + "url": "https://wttr.in/San%20Francisco?format=j1" + } + } + ], + "input_tokens": 82100, + "output_tokens": 71 + } + }, + { + "request_hint": { + "last_user_message_contains": "check weather in SF today" + }, + "response": { + "type": "text", + "content": "**San Francisco Weather Today** \u2600\ufe0f\n\n**Current Conditions (as of 8:00 AM)**\n- **Temperature:** 9\u00b0C (49\u00b0F)\n- **Feels Like:** 8\u00b0C (46\u00b0F)\n- **Conditions:** Sunny \u2600\ufe0f\n- **Humidity:** 71%\n- **Wind:** N at 11 km/h (7 mph)\n- **UV Index:** 3 (Moderate)\n- **Visibility:** 16 km (9 miles)\n\n---\n\n**Today's Forecast (Thursday, March 5, 2026)**\n- **High:** 22\u00b0C (71\u00b0F) \ud83c\udf21\ufe0f\n- **Low:** 8\u00b0C (47\u00b0F)\n- **Sunrise:** 6:35 AM | **Sunset:** 6:07 PM\n- **Conditions:** Clear and sunny all day\n- **Rain:** 0% chance\n\n---\n\n**Summary:** Beautiful sunny day ahead! Clear skies all day with temperatures warming up nicely. Perfect weather for outdoor activities. No rain expected. \ud83c\udf24\ufe0f", + "input_tokens": 93290, + "output_tokens": 489 + } + } + ], + "http_exchanges": [ + { + "request": { + "method": "GET", + "url": "https://wttr.in/San%20Francisco?format=j1" + }, + "response": { + "status": 200, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "body": "{\n \"current_condition\": [\n {\n \"FeelsLikeC\": \"8\",\n \"FeelsLikeF\": \"46\",\n \"cloudcover\": \"0\",\n \"humidity\": \"71\",\n \"localObsDateTime\": \"2026-03-05 08:00 AM\",\n \"observation_time\": \"04:00 PM\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1023\",\n \"pressureInches\": \"30\",\n \"temp_C\": \"9\",\n \"temp_F\": \"49\",\n \"uvIndex\": \"3\",\n \"visibility\": \"16\",\n \"visibilityMiles\": \"9\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"N\",\n \"winddirDegree\": \"352\",\n \"windspeedKmph\": \"11\",\n \"windspeedMiles\": \"7\"\n }\n ],\n \"nearest_area\": [\n {\n \"areaName\": [\n {\n \"value\": \"San Francisco\"\n }\n ],\n \"country\": [\n {\n \"value\": \"United States of America\"\n }\n ],\n \"latitude\": \"37.775\",\n \"longitude\": \"-122.418\",\n \"population\": \"732072\",\n \"region\": [\n {\n \"value\": \"California\"\n }\n ],\n \"weatherUrl\": [\n {\n \"value\": \"\"\n }\n ]\n }\n ],\n \"request\": [\n {\n \"query\": \"Lat 37.78 and Lon -122.42\",\n \"type\": \"LatLon\"\n }\n ],\n \"weather\": [\n {\n \"astronomy\": [\n {\n \"moon_illumination\": \"97\",\n \"moon_phase\": \"Waning Gibbous\",\n \"moonrise\": \"08:47 PM\",\n \"moonset\": \"07:30 AM\",\n \"sunrise\": \"06:35 AM\",\n \"sunset\": \"06:07 PM\"\n }\n ],\n \"avgtempC\": \"14\",\n \"avgtempF\": \"57\",\n \"date\": \"2026-03-05\",\n \"hourly\": [\n {\n \"DewPointC\": \"4\",\n \"DewPointF\": \"39\",\n \"FeelsLikeC\": \"8\",\n \"FeelsLikeF\": \"46\",\n \"HeatIndexC\": \"10\",\n \"HeatIndexF\": \"51\",\n \"WindChillC\": \"8\",\n \"WindChillF\": \"46\",\n \"WindGustKmph\": \"27\",\n \"WindGustMiles\": \"17\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"82\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"94\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"66\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1023\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"10\",\n \"tempF\": \"51\",\n \"time\": \"0\",\n \"uvIndex\": \"0\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NNW\",\n \"winddirDegree\": \"332\",\n \"windspeedKmph\": \"18\",\n \"windspeedMiles\": \"11\"\n },\n {\n \"DewPointC\": \"4\",\n \"DewPointF\": \"40\",\n \"FeelsLikeC\": \"7\",\n \"FeelsLikeF\": \"45\",\n \"HeatIndexC\": \"9\",\n \"HeatIndexF\": \"48\",\n \"WindChillC\": \"7\",\n \"WindChillF\": \"45\",\n \"WindGustKmph\": \"18\",\n \"WindGustMiles\": \"11\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"82\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"93\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"71\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"9\",\n \"tempF\": \"48\",\n \"time\": \"300\",\n \"uvIndex\": \"0\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"N\",\n \"winddirDegree\": \"349\",\n \"windspeedKmph\": \"12\",\n \"windspeedMiles\": \"7\"\n },\n {\n \"DewPointC\": \"2\",\n \"DewPointF\": \"35\",\n \"FeelsLikeC\": \"6\",\n \"FeelsLikeF\": \"43\",\n \"HeatIndexC\": \"9\",\n \"HeatIndexF\": \"47\",\n \"WindChillC\": \"6\",\n \"WindChillF\": \"43\",\n \"WindGustKmph\": \"15\",\n \"WindGustMiles\": \"10\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"88\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"88\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"63\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"9\",\n \"tempF\": \"47\",\n \"time\": \"600\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NNW\",\n \"winddirDegree\": \"332\",\n \"windspeedKmph\": \"9\",\n \"windspeedMiles\": \"6\"\n },\n {\n \"DewPointC\": \"2\",\n \"DewPointF\": \"36\",\n \"FeelsLikeC\": \"9\",\n \"FeelsLikeF\": \"47\",\n \"HeatIndexC\": \"11\",\n \"HeatIndexF\": \"52\",\n \"WindChillC\": \"9\",\n \"WindChillF\": \"47\",\n \"WindGustKmph\": \"12\",\n \"WindGustMiles\": \"7\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"81\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"93\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"58\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1023\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"11\",\n \"tempF\": \"52\",\n \"time\": \"900\",\n \"uvIndex\": \"4\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"N\",\n \"winddirDegree\": \"355\",\n \"windspeedKmph\": \"9\",\n \"windspeedMiles\": \"6\"\n },\n {\n \"DewPointC\": \"6\",\n \"DewPointF\": \"42\",\n \"FeelsLikeC\": \"18\",\n \"FeelsLikeF\": \"64\",\n \"HeatIndexC\": \"18\",\n \"HeatIndexF\": \"64\",\n \"WindChillC\": \"18\",\n \"WindChillF\": \"64\",\n \"WindGustKmph\": \"14\",\n \"WindGustMiles\": \"9\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"87\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"90\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"44\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1023\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"18\",\n \"tempF\": \"64\",\n \"time\": \"1200\",\n \"uvIndex\": \"5\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NNW\",\n \"winddirDegree\": \"328\",\n \"windspeedKmph\": \"10\",\n \"windspeedMiles\": \"6\"\n },\n {\n \"DewPointC\": \"5\",\n \"DewPointF\": \"41\",\n \"FeelsLikeC\": \"21\",\n \"FeelsLikeF\": \"69\",\n \"HeatIndexC\": \"21\",\n \"HeatIndexF\": \"70\",\n \"WindChillC\": \"21\",\n \"WindChillF\": \"69\",\n \"WindGustKmph\": \"28\",\n \"WindGustMiles\": \"18\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"83\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"92\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"34\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"21\",\n \"tempF\": \"69\",\n \"time\": \"1500\",\n \"uvIndex\": \"6\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"WNW\",\n \"winddirDegree\": \"297\",\n \"windspeedKmph\": \"20\",\n \"windspeedMiles\": \"13\"\n },\n {\n \"DewPointC\": \"10\",\n \"DewPointF\": \"50\",\n \"FeelsLikeC\": \"19\",\n \"FeelsLikeF\": \"66\",\n \"HeatIndexC\": \"19\",\n \"HeatIndexF\": \"66\",\n \"WindChillC\": \"19\",\n \"WindChillF\": \"66\",\n \"WindGustKmph\": \"32\",\n \"WindGustMiles\": \"20\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"82\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"89\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"54\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1020\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"19\",\n \"tempF\": \"66\",\n \"time\": \"1800\",\n \"uvIndex\": \"5\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"WNW\",\n \"winddirDegree\": \"302\",\n \"windspeedKmph\": \"20\",\n \"windspeedMiles\": \"12\"\n },\n {\n \"DewPointC\": \"8\",\n \"DewPointF\": \"46\",\n \"FeelsLikeC\": \"13\",\n \"FeelsLikeF\": \"55\",\n \"HeatIndexC\": \"14\",\n \"HeatIndexF\": \"57\",\n \"WindChillC\": \"13\",\n \"WindChillF\": \"55\",\n \"WindGustKmph\": \"22\",\n \"WindGustMiles\": \"14\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"82\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"88\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"68\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"14\",\n \"tempF\": \"57\",\n \"time\": \"2100\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NW\",\n \"winddirDegree\": \"310\",\n \"windspeedKmph\": \"12\",\n \"windspeedMiles\": \"8\"\n }\n ],\n \"maxtempC\": \"22\",\n \"maxtempF\": \"71\",\n \"mintempC\": \"8\",\n \"mintempF\": \"47\",\n \"sunHour\": \"11.7\",\n \"totalSnow_cm\": \"0.0\",\n \"uvIndex\": \"0\"\n },\n {\n \"astronomy\": [\n {\n \"moon_illumination\": \"93\",\n \"moon_phase\": \"Waning Gibbous\",\n \"moonrise\": \"09:50 PM\",\n \"moonset\": \"07:54 AM\",\n \"sunrise\": \"06:34 AM\",\n \"sunset\": \"06:08 PM\"\n }\n ],\n \"avgtempC\": \"14\",\n \"avgtempF\": \"57\",\n \"date\": \"2026-03-06\",\n \"hourly\": [\n {\n \"DewPointC\": \"9\",\n \"DewPointF\": \"48\",\n \"FeelsLikeC\": \"12\",\n \"FeelsLikeF\": \"53\",\n \"HeatIndexC\": \"13\",\n \"HeatIndexF\": \"55\",\n \"WindChillC\": \"12\",\n \"WindChillF\": \"53\",\n \"WindGustKmph\": \"20\",\n \"WindGustMiles\": \"12\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"93\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"89\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"1\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"80\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"13\",\n \"tempF\": \"55\",\n \"time\": \"0\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NNW\",\n \"winddirDegree\": \"347\",\n \"windspeedKmph\": \"10\",\n \"windspeedMiles\": \"6\"\n },\n {\n \"DewPointC\": \"7\",\n \"DewPointF\": \"44\",\n \"FeelsLikeC\": \"11\",\n \"FeelsLikeF\": \"51\",\n \"HeatIndexC\": \"12\",\n \"HeatIndexF\": \"54\",\n \"WindChillC\": \"11\",\n \"WindChillF\": \"51\",\n \"WindGustKmph\": \"30\",\n \"WindGustMiles\": \"19\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"36\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"90\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"75\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"28\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"68\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"12\",\n \"tempF\": \"54\",\n \"time\": \"300\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"116\",\n \"weatherDesc\": [\n {\n \"value\": \"Partly Cloudy \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NNW\",\n \"winddirDegree\": \"343\",\n \"windspeedKmph\": \"16\",\n \"windspeedMiles\": \"10\"\n },\n {\n \"DewPointC\": \"4\",\n \"DewPointF\": \"38\",\n \"FeelsLikeC\": \"10\",\n \"FeelsLikeF\": \"49\",\n \"HeatIndexC\": \"11\",\n \"HeatIndexF\": \"53\",\n \"WindChillC\": \"10\",\n \"WindChillF\": \"49\",\n \"WindGustKmph\": \"16\",\n \"WindGustMiles\": \"10\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"82\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"91\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"1\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"58\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1022\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"11\",\n \"tempF\": \"53\",\n \"time\": \"600\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NNE\",\n \"winddirDegree\": \"20\",\n \"windspeedKmph\": \"9\",\n \"windspeedMiles\": \"5\"\n },\n {\n \"DewPointC\": \"3\",\n \"DewPointF\": \"38\",\n \"FeelsLikeC\": \"9\",\n \"FeelsLikeF\": \"49\",\n \"HeatIndexC\": \"11\",\n \"HeatIndexF\": \"52\",\n \"WindChillC\": \"9\",\n \"WindChillF\": \"49\",\n \"WindGustKmph\": \"8\",\n \"WindGustMiles\": \"5\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"88\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"87\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"1\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"59\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1023\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"11\",\n \"tempF\": \"52\",\n \"time\": \"900\",\n \"uvIndex\": \"4\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NE\",\n \"winddirDegree\": \"42\",\n \"windspeedKmph\": \"6\",\n \"windspeedMiles\": \"4\"\n },\n {\n \"DewPointC\": \"7\",\n \"DewPointF\": \"45\",\n \"FeelsLikeC\": \"14\",\n \"FeelsLikeF\": \"58\",\n \"HeatIndexC\": \"15\",\n \"HeatIndexF\": \"59\",\n \"WindChillC\": \"14\",\n \"WindChillF\": \"58\",\n \"WindGustKmph\": \"15\",\n \"WindGustMiles\": \"9\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"85\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"85\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"59\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1023\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"15\",\n \"tempF\": \"59\",\n \"time\": \"1200\",\n \"uvIndex\": \"5\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NNE\",\n \"winddirDegree\": \"16\",\n \"windspeedKmph\": \"11\",\n \"windspeedMiles\": \"7\"\n },\n {\n \"DewPointC\": \"11\",\n \"DewPointF\": \"52\",\n \"FeelsLikeC\": \"18\",\n \"FeelsLikeF\": \"64\",\n \"HeatIndexC\": \"18\",\n \"HeatIndexF\": \"64\",\n \"WindChillC\": \"18\",\n \"WindChillF\": \"64\",\n \"WindGustKmph\": \"16\",\n \"WindGustMiles\": \"10\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"81\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"90\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"64\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1022\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"18\",\n \"tempF\": \"64\",\n \"time\": \"1500\",\n \"uvIndex\": \"5\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NW\",\n \"winddirDegree\": \"313\",\n \"windspeedKmph\": \"11\",\n \"windspeedMiles\": \"7\"\n },\n {\n \"DewPointC\": \"11\",\n \"DewPointF\": \"52\",\n \"FeelsLikeC\": \"17\",\n \"FeelsLikeF\": \"63\",\n \"HeatIndexC\": \"17\",\n \"HeatIndexF\": \"62\",\n \"WindChillC\": \"17\",\n \"WindChillF\": \"63\",\n \"WindGustKmph\": \"22\",\n \"WindGustMiles\": \"14\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"90\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"90\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"69\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"17\",\n \"tempF\": \"62\",\n \"time\": \"1800\",\n \"uvIndex\": \"5\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"WNW\",\n \"winddirDegree\": \"290\",\n \"windspeedKmph\": \"12\",\n \"windspeedMiles\": \"7\"\n },\n {\n \"DewPointC\": \"11\",\n \"DewPointF\": \"51\",\n \"FeelsLikeC\": \"16\",\n \"FeelsLikeF\": \"60\",\n \"HeatIndexC\": \"15\",\n \"HeatIndexF\": \"59\",\n \"WindChillC\": \"16\",\n \"WindChillF\": \"60\",\n \"WindGustKmph\": \"14\",\n \"WindGustMiles\": \"8\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"92\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"89\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"77\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"15\",\n \"tempF\": \"59\",\n \"time\": \"2100\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"N\",\n \"winddirDegree\": \"350\",\n \"windspeedKmph\": \"6\",\n \"windspeedMiles\": \"4\"\n }\n ],\n \"maxtempC\": \"19\",\n \"maxtempF\": \"65\",\n \"mintempC\": \"11\",\n \"mintempF\": \"51\",\n \"sunHour\": \"11.7\",\n \"totalSnow_cm\": \"0.0\",\n \"uvIndex\": \"4\"\n },\n {\n \"astronomy\": [\n {\n \"moon_illumination\": \"87\",\n \"moon_phase\": \"Waning Gibbous\",\n \"moonrise\": \"10:52 PM\",\n \"moonset\": \"08:19 AM\",\n \"sunrise\": \"06:32 AM\",\n \"sunset\": \"06:09 PM\"\n }\n ],\n \"avgtempC\": \"16\",\n \"avgtempF\": \"60\",\n \"date\": \"2026-03-07\",\n \"hourly\": [\n {\n \"DewPointC\": \"11\",\n \"DewPointF\": \"51\",\n \"FeelsLikeC\": \"14\",\n \"FeelsLikeF\": \"58\",\n \"HeatIndexC\": \"14\",\n \"HeatIndexF\": \"58\",\n \"WindChillC\": \"14\",\n \"WindChillF\": \"58\",\n \"WindGustKmph\": \"16\",\n \"WindGustMiles\": \"10\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"81\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"91\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"80\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"14\",\n \"tempF\": \"58\",\n \"time\": \"0\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NNE\",\n \"winddirDegree\": \"17\",\n \"windspeedKmph\": \"8\",\n \"windspeedMiles\": \"5\"\n },\n {\n \"DewPointC\": \"9\",\n \"DewPointF\": \"48\",\n \"FeelsLikeC\": \"13\",\n \"FeelsLikeF\": \"56\",\n \"HeatIndexC\": \"14\",\n \"HeatIndexF\": \"57\",\n \"WindChillC\": \"13\",\n \"WindChillF\": \"56\",\n \"WindGustKmph\": \"19\",\n \"WindGustMiles\": \"12\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"93\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"88\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"72\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"14\",\n \"tempF\": \"57\",\n \"time\": \"300\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NE\",\n \"winddirDegree\": \"39\",\n \"windspeedKmph\": \"10\",\n \"windspeedMiles\": \"6\"\n },\n {\n \"DewPointC\": \"7\",\n \"DewPointF\": \"45\",\n \"FeelsLikeC\": \"13\",\n \"FeelsLikeF\": \"55\",\n \"HeatIndexC\": \"14\",\n \"HeatIndexF\": \"56\",\n \"WindChillC\": \"13\",\n \"WindChillF\": \"55\",\n \"WindGustKmph\": \"16\",\n \"WindGustMiles\": \"10\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"89\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"91\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"67\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"14\",\n \"tempF\": \"56\",\n \"time\": \"600\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"ENE\",\n \"winddirDegree\": \"57\",\n \"windspeedKmph\": \"9\",\n \"windspeedMiles\": \"5\"\n },\n {\n \"DewPointC\": \"8\",\n \"DewPointF\": \"46\",\n \"FeelsLikeC\": \"13\",\n \"FeelsLikeF\": \"56\",\n \"HeatIndexC\": \"14\",\n \"HeatIndexF\": \"57\",\n \"WindChillC\": \"13\",\n \"WindChillF\": \"56\",\n \"WindGustKmph\": \"20\",\n \"WindGustMiles\": \"12\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"85\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"85\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"66\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1022\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"14\",\n \"tempF\": \"57\",\n \"time\": \"900\",\n \"uvIndex\": \"4\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NE\",\n \"winddirDegree\": \"49\",\n \"windspeedKmph\": \"14\",\n \"windspeedMiles\": \"9\"\n },\n {\n \"DewPointC\": \"10\",\n \"DewPointF\": \"49\",\n \"FeelsLikeC\": \"16\",\n \"FeelsLikeF\": \"60\",\n \"HeatIndexC\": \"16\",\n \"HeatIndexF\": \"61\",\n \"WindChillC\": \"16\",\n \"WindChillF\": \"60\",\n \"WindGustKmph\": \"29\",\n \"WindGustMiles\": \"18\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"86\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"87\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"65\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1022\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"16\",\n \"tempF\": \"61\",\n \"time\": \"1200\",\n \"uvIndex\": \"5\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NE\",\n \"winddirDegree\": \"47\",\n \"windspeedKmph\": \"19\",\n \"windspeedMiles\": \"12\"\n },\n {\n \"DewPointC\": \"12\",\n \"DewPointF\": \"53\",\n \"FeelsLikeC\": \"19\",\n \"FeelsLikeF\": \"66\",\n \"HeatIndexC\": \"19\",\n \"HeatIndexF\": \"66\",\n \"WindChillC\": \"19\",\n \"WindChillF\": \"66\",\n \"WindGustKmph\": \"24\",\n \"WindGustMiles\": \"15\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"90\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"93\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"62\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1021\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"19\",\n \"tempF\": \"66\",\n \"time\": \"1500\",\n \"uvIndex\": \"5\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"NE\",\n \"winddirDegree\": \"38\",\n \"windspeedKmph\": \"14\",\n \"windspeedMiles\": \"9\"\n },\n {\n \"DewPointC\": \"12\",\n \"DewPointF\": \"53\",\n \"FeelsLikeC\": \"19\",\n \"FeelsLikeF\": \"65\",\n \"HeatIndexC\": \"19\",\n \"HeatIndexF\": \"65\",\n \"WindChillC\": \"19\",\n \"WindChillF\": \"65\",\n \"WindGustKmph\": \"14\",\n \"WindGustMiles\": \"8\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"89\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"94\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"64\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1020\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"19\",\n \"tempF\": \"65\",\n \"time\": \"1800\",\n \"uvIndex\": \"5\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Sunny\"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"WNW\",\n \"winddirDegree\": \"282\",\n \"windspeedKmph\": \"7\",\n \"windspeedMiles\": \"4\"\n },\n {\n \"DewPointC\": \"12\",\n \"DewPointF\": \"54\",\n \"FeelsLikeC\": \"17\",\n \"FeelsLikeF\": \"62\",\n \"HeatIndexC\": \"17\",\n \"HeatIndexF\": \"62\",\n \"WindChillC\": \"17\",\n \"WindChillF\": \"62\",\n \"WindGustKmph\": \"12\",\n \"WindGustMiles\": \"8\",\n \"chanceoffog\": \"0\",\n \"chanceoffrost\": \"0\",\n \"chanceofhightemp\": \"0\",\n \"chanceofovercast\": \"0\",\n \"chanceofrain\": \"0\",\n \"chanceofremdry\": \"94\",\n \"chanceofsnow\": \"0\",\n \"chanceofsunshine\": \"92\",\n \"chanceofthunder\": \"0\",\n \"chanceofwindy\": \"0\",\n \"cloudcover\": \"0\",\n \"diffRad\": \"0.0\",\n \"humidity\": \"75\",\n \"precipInches\": \"0.0\",\n \"precipMM\": \"0.0\",\n \"pressure\": \"1020\",\n \"pressureInches\": \"30\",\n \"shortRad\": \"0.0\",\n \"tempC\": \"17\",\n \"tempF\": \"62\",\n \"time\": \"2100\",\n \"uvIndex\": \"1\",\n \"visibility\": \"10\",\n \"visibilityMiles\": \"6\",\n \"weatherCode\": \"113\",\n \"weatherDesc\": [\n {\n \"value\": \"Clear \"\n }\n ],\n \"weatherIconUrl\": [\n {\n \"value\": \"\"\n }\n ],\n \"winddir16Point\": \"WNW\",\n \"winddirDegree\": \"294\",\n \"windspeedKmph\": \"6\",\n \"windspeedMiles\": \"4\"\n }\n ],\n \"maxtempC\": \"20\",\n \"maxtempF\": \"68\",\n \"mintempC\": \"13\",\n \"mintempF\": \"56\",\n \"sunHour\": \"11.8\",\n \"totalSnow_cm\": \"0.0\",\n \"uvIndex\": \"5\"\n }\n ]\n}\n" + } + } + ] +} \ No newline at end of file diff --git a/tests/support/test_rig.rs b/tests/support/test_rig.rs index 9266e1d7..5aa17e65 100644 --- a/tests/support/test_rig.rs +++ b/tests/support/test_rig.rs @@ -429,7 +429,13 @@ impl TestRigBuilder { let session = Arc::new(SessionManager::new(SessionConfig::default())); let log_broadcaster = Arc::new(LogBroadcaster::new()); - // 4. Create TraceLlm + InstrumentedLlm. + // 4. Create TraceLlm + InstrumentedLlm, extract HTTP exchanges for replay. + let http_exchanges = self + .trace + .as_ref() + .map(|t| t.http_exchanges.clone()) + .unwrap_or_default(); + let base_llm: Arc = if let Some(llm) = self.llm { llm } else if let Some(trace) = self.trace { @@ -483,7 +489,13 @@ impl TestRigBuilder { hooks: components.hooks, cost_guard: components.cost_guard, sse_tx: None, - http_interceptor: None, + http_interceptor: if http_exchanges.is_empty() { + None + } else { + Some(Arc::new( + ironclaw::llm::recording::ReplayingHttpInterceptor::new(http_exchanges), + )) + }, }; // 7. Create TestChannel and ChannelManager. diff --git a/tests/tool_schema_validation.rs b/tests/tool_schema_validation.rs index 263952d1..8f1495cd 100644 --- a/tests/tool_schema_validation.rs +++ b/tests/tool_schema_validation.rs @@ -68,7 +68,6 @@ async fn core_registration_covers_expected_tools() { "read_file", "shell", "time", - "web_fetch", "write_file", ];