Chicago White Sox 1, Texas Rangers 2

baseball game fileFinal
Globe Life Field · Arlington

Game flow

Every swing in the score.

The line is the running run differential: above the center favors Chicago White Sox, below favors Texas Rangers. It runs across every plate appearance and is marked by inning along the bottom. Select a scoring marker to jump to the play.

Score differential over the gameA positive differential means Chicago White Sox led; a negative differential means Texas Rangers led.Run differential+20−2123456789
  1. 01top 1: Mike Tauchman grounds out, third baseman Ezequiel Duran to first baseman Jake Burger.00
  2. 02top 1: Chase Meidroth singles on a ground ball to center fielder Evan Carter.00
  3. 03top 1: Andrew Benintendi pops out to shortstop Corey Seager.00
  4. 04top 1: Miguel Vargas called out on strikes.00
  5. 05bottom 1: Josh Smith walks.00
  6. 06bottom 1: Wyatt Langford grounds into a double play, shortstop Chase Meidroth to second baseman Josh Rojas to first baseman Ryan Noda. Josh Smith out at 2nd. Wyatt Langford out at 1st.00
  7. 07bottom 1: Corey Seager walks.00
  8. 08bottom 1: Marcus Semien walks. Corey Seager to 2nd.00
  9. 09bottom 1: Evan Carter flies out to right fielder Mike Tauchman.00
  10. 10top 2: Kyle Teel strikes out swinging.00
  11. 11top 2: Edgar Quero strikes out swinging.00
  12. 12top 2: Ryan Noda walks.00
  13. 13top 2: Michael A. Taylor singles on a line drive to left fielder Wyatt Langford. Ryan Noda to 2nd.00
  14. 14top 2: Josh Rojas lines out, pitcher Kumar Rocker to first baseman Jake Burger.00
  15. 15bottom 2: Jake Burger strikes out on a foul tip.00
  16. 16bottom 2: Adolis García walks.00
  17. 17bottom 2: Kyle Higashioka flies out to center fielder Michael A. Taylor.00
  18. 18bottom 2: Ezequiel Duran doubles (2) on a fly ball to right fielder Mike Tauchman. Adolis García scores.01
  19. 19bottom 2: Josh Smith called out on strikes.01
  20. 20top 3: Mike Tauchman singles on a line drive to center fielder Evan Carter.01
  21. 21top 3: Chase Meidroth grounds out, third baseman Ezequiel Duran to first baseman Jake Burger. Mike Tauchman to 2nd.01
  22. 22top 3: Andrew Benintendi flies out to third baseman Ezequiel Duran in foul territory.01
  23. 23top 3: Miguel Vargas flies out to center fielder Evan Carter.01
  24. 24bottom 3: Wyatt Langford singles on a soft ground ball to first baseman Ryan Noda.01
  25. 25bottom 3: Corey Seager strikes out swinging.01
  26. 26bottom 3: Marcus Semien pops out to shortstop Chase Meidroth.01
  27. 27bottom 3: Evan Carter grounds out, catcher Kyle Teel to first baseman Ryan Noda.01
  28. 28top 4: Kyle Teel pops out to third baseman Ezequiel Duran.01
  29. 29top 4: Edgar Quero called out on strikes.01
  30. 30top 4: Ryan Noda called out on strikes.01
  31. 31bottom 4: Jake Burger grounds out, shortstop Chase Meidroth to first baseman Ryan Noda.01
  32. 32bottom 4: Adolis García doubles (15) on a ground ball to shortstop Chase Meidroth.01
  33. 33bottom 4: Kyle Higashioka flies out to left fielder Andrew Benintendi.01
  34. 34bottom 4: Ezequiel Duran flies out to left fielder Andrew Benintendi.01
  35. 35top 5: Michael A. Taylor strikes out on a foul tip.01
  36. 36top 5: Josh Rojas singles on a ground ball to center fielder Evan Carter.01
  37. 37top 5: Mike Tauchman grounds out to first baseman Jake Burger. Josh Rojas to 3rd.01
  38. 38top 5: Chase Meidroth grounds out, shortstop Corey Seager to first baseman Jake Burger.01
  39. 39bottom 5: Josh Smith singles on a ground ball to third baseman Miguel Vargas.01
  40. 40bottom 5: Wyatt Langford pops out to second baseman Josh Rojas in foul territory.01
  41. 41bottom 5: Corey Seager singles on a line drive to left fielder Andrew Benintendi. Josh Smith to 3rd. Josh Smith advances to 3rd, on a fielding error by left fielder Andrew Benintendi.01
  42. 42bottom 5: Marcus Semien out on a sacrifice fly to center fielder Michael A. Taylor. Josh Smith scores.02
  43. 43bottom 5: Evan Carter hits a ground-rule double (3) on a line drive down the right-field line. Corey Seager to 3rd.02
  44. 44bottom 5: Jake Burger strikes out swinging.02
  45. 45top 6: Andrew Benintendi grounds out, second baseman Marcus Semien to first baseman Jake Burger.02
  46. 46top 6: Miguel Vargas homers (10) on a fly ball to left field.12
  47. 47top 6: Kyle Teel strikes out swinging.12
  48. 48top 6: Edgar Quero strikes out swinging.12
  49. 49bottom 6: Adolis García grounds out, shortstop Chase Meidroth to first baseman Ryan Noda.12
  50. 50bottom 6: Kyle Higashioka flies out to left fielder Andrew Benintendi.12
  51. 51bottom 6: Ezequiel Duran walks.12
  52. 52bottom 6: Josh Smith flies out to left fielder Andrew Benintendi.12
  53. 53top 7: Ryan Noda walks.12
  54. 54top 7: Michael A. Taylor strikes out swinging.12
  55. 55top 7: Josh Rojas singles on a fly ball to right fielder Adolis García. Ryan Noda to 3rd.12
  56. 56top 7: Mike Tauchman called out on strikes.12
  57. 57bottom 7: Wyatt Langford grounds out, third baseman Miguel Vargas to first baseman Ryan Noda.12
  58. 58bottom 7: Corey Seager flies out to right fielder Mike Tauchman.12
  59. 59bottom 7: Marcus Semien doubles (7) on a line drive to left fielder Andrew Benintendi.12
  60. 60bottom 7: Evan Carter pops out to second baseman Josh Rojas.12
  61. 61top 8: Chase Meidroth strikes out swinging.12
  62. 62top 8: Andrew Benintendi doubles (9) on a ground ball to first baseman Jake Burger.12
  63. 63top 8: Miguel Vargas flies out to left fielder Wyatt Langford.12
  64. 64top 8: Kyle Teel singles on a ground ball to second baseman Marcus Semien. Luis Robert Jr. to 3rd.12
  65. 65top 8: Edgar Quero lines out to shortstop Corey Seager.12
  66. 66bottom 8: Jake Burger singles on a line drive to left fielder Michael A. Taylor.12
  67. 67bottom 8: Adolis García lines into a force out, shortstop Chase Meidroth to second baseman Josh Rojas. Jake Burger out at 2nd. Adolis García to 1st.12
  68. 68bottom 8: Kyle Higashioka lines out to left fielder Michael A. Taylor.12
  69. 69bottom 8: Ezequiel Duran doubles (3) on a line drive to right fielder Mike Tauchman. Adolis García to 3rd.12
  70. 70bottom 8: Sam Haggerty grounds out, pitcher Brandon Eisert to first baseman Ryan Noda.12
  71. 71top 9: Ryan Noda grounds out to first baseman Jake Burger.12
  72. 72top 9: Brooks Baldwin strikes out swinging.12
  73. 73top 9: Josh Rojas flies out to center fielder Evan Carter.12
Boxscore

Key evidence.

Every reported player line, kept in the API’s sport-specific stat vocabulary.

Chicago White Sox boxscore
PlayerPosabavgb2b3bbbfcsererahhbphriplobpopsoutspapitchesrrbisbsfslgsosvtotal baseswwhip
Miguel Vargas3B40.25000001010.2501.25041100114
Kyle TeelC40.25000001000.2500.500400100.25021
Andrew BenintendiLF40.25010001000.2500.750400000.50002
Chase MeidrothSS40.25000001000.2500.500400000.25011
Josh Rojas2B40.50000012000.5001400100.50002
Aaron CivaleP42423.60060511510424002
Brandon EisertP0100000.33301600000
Cam BooserP0300100.667021400001.500
Ryan Noda1B2000200000.5000.50040000010
Mike TauchmanRF40.25000001000.2500.500400000.25011
Edgar QueroDH4000000000040000030
Brooks BaldwinPH1000000000010000010
Luis Robert Jr.CF000000000000000
Dan AltavillaP1500001.333042500000.750
Steven WilsonP0400200.667021300003
Michael A. TaylorLF30.33300001000.3330.667300000.33321

Team line

Texas Rangers
Texas Rangers boxscore
PlayerPosabavgb2b3bbbfcsererahhbphriplobpopsoutspapitchesrrbisbsfslgsosvtotal baseswwhip
Corey SeagerSS30.33300101000.5000.833400000.33311
Jake Burger1B40.25000001000.2500.500400000.25021
Ezequiel Duran3B30.66720102000.7502.083401001.33304
Evan CarterCF40.25010001000.2500.750400000.50002
Kumar RockerP120004050158206011
Cole WinnP0600201.667052702001.200
Jacob WebbP1716.750211.333042713002.250
Kyle HigashiokaC4000000000040000000
Wyatt LangfordLF40.25000001000.2500.500400000.25001
Marcus Semien2B20.50010101000.5001.50040101102
Adolis GarcíaRF30.33310101000.5001.167410000.66702
Sam HaggertyDH1000000000010000000
Josh SmithDH30.33300101000.5000.833410000.33311
Luke JacksonP0300001031601100

Comparison

Side by side.

Final

Matchup

Before first pitch.

Probable pitchers and posted lineup context from the matchup card.

Lineups available2025-06-15T18:35:00Z · Final

Chicago White Sox

Probable pitcher: Aaron Civale (R)

Texas Rangers

Probable pitcher: Kumar Rocker (R)

Play-by-play

The game, at bat by at bat.

top 1st(4)
  • Mike Tauchman vs Kumar Rocker0-0

    Mike Tauchman grounds out, third baseman Ezequiel Duran to first baseman Jake Burger.

    1-2, 5 pitches · 0 outs before

  • Chase Meidroth vs Kumar Rocker0-0

    Chase Meidroth singles on a ground ball to center fielder Evan Carter.

    0-1, 2 pitches · 1 out before

  • Andrew Benintendi vs Kumar Rocker0-0

    Andrew Benintendi pops out to shortstop Corey Seager.

    1-0, 2 pitches · 1 out before

  • Miguel Vargas vs Kumar Rocker0-0

    Miguel Vargas called out on strikes.

    1-3, 5 pitches · 2 outs before

bottom 1st(5)
  • Josh Smith vs Aaron Civale0-0

    Josh Smith walks.

    4-2, 6 pitches · 0 outs before

  • Wyatt Langford vs Aaron Civale0-0

    Wyatt Langford grounds into a double play, shortstop Chase Meidroth to second baseman Josh Rojas to first baseman Ryan Noda. Josh Smith out at 2nd. Wyatt Langford out at 1st.

    1-0, 2 pitches · 0 outs before

  • Corey Seager vs Aaron Civale0-0

    Corey Seager walks.

    4-2, 6 pitches · 2 outs before

  • Marcus Semien vs Aaron Civale0-0

    Marcus Semien walks. Corey Seager to 2nd.

    4-1, 5 pitches · 2 outs before

  • Evan Carter vs Aaron Civale0-0

    Evan Carter flies out to right fielder Mike Tauchman.

    0-1, 2 pitches · 2 outs before

top 2nd(5)
  • Kyle Teel vs Kumar Rocker0-0

    Kyle Teel strikes out swinging.

    1-3, 5 pitches · 0 outs before

  • Edgar Quero vs Kumar Rocker0-0

    Edgar Quero strikes out swinging.

    0-3, 4 pitches · 1 out before

  • Ryan Noda vs Kumar Rocker0-0

    Ryan Noda walks.

    4-1, 5 pitches · 2 outs before

  • Michael A. Taylor vs Kumar Rocker0-0

    Michael A. Taylor singles on a line drive to left fielder Wyatt Langford. Ryan Noda to 2nd.

    0-0, 1 pitch · 2 outs before

  • Josh Rojas vs Kumar Rocker0-0

    Josh Rojas lines out, pitcher Kumar Rocker to first baseman Jake Burger.

    2-1, 4 pitches · 2 outs before

bottom 2nd(5)
  • Jake Burger vs Aaron Civale0-0

    Jake Burger strikes out on a foul tip.

    3-3, 6 pitches · 0 outs before

  • Adolis García vs Aaron Civale0-0

    Adolis García walks.

    4-2, 6 pitches · 1 out before

  • Kyle Higashioka vs Aaron Civale0-0

    Kyle Higashioka flies out to center fielder Michael A. Taylor.

    0-2, 3 pitches · 1 out before

  • Ezequiel Duran vs Aaron Civale0-1

    Ezequiel Duran doubles (2) on a fly ball to right fielder Mike Tauchman. Adolis García scores.

    0-2, 4 pitches · 2 outs before

  • Josh Smith vs Aaron Civale0-1

    Josh Smith called out on strikes.

    1-3, 5 pitches · 2 outs before

top 3rd(4)
  • Mike Tauchman vs Kumar Rocker0-1

    Mike Tauchman singles on a line drive to center fielder Evan Carter.

    2-2, 5 pitches · 0 outs before

  • Chase Meidroth vs Kumar Rocker0-1

    Chase Meidroth grounds out, third baseman Ezequiel Duran to first baseman Jake Burger. Mike Tauchman to 2nd.

    1-1, 3 pitches · 0 outs before

  • Andrew Benintendi vs Kumar Rocker0-1

    Andrew Benintendi flies out to third baseman Ezequiel Duran in foul territory.

    3-2, 6 pitches · 1 out before

  • Miguel Vargas vs Kumar Rocker0-1

    Miguel Vargas flies out to center fielder Evan Carter.

    0-0, 1 pitch · 2 outs before

bottom 3rd(4)
  • Wyatt Langford vs Aaron Civale0-1

    Wyatt Langford singles on a soft ground ball to first baseman Ryan Noda.

    3-2, 7 pitches · 0 outs before

  • Corey Seager vs Aaron Civale0-1

    Corey Seager strikes out swinging.

    2-3, 6 pitches · 0 outs before

  • Marcus Semien vs Aaron Civale0-1

    Marcus Semien pops out to shortstop Chase Meidroth.

    2-2, 5 pitches · 1 out before

  • Evan Carter vs Aaron Civale0-1

    Evan Carter grounds out, catcher Kyle Teel to first baseman Ryan Noda.

    3-2, 7 pitches · 2 outs before

top 4th(3)
  • Kyle Teel vs Kumar Rocker0-1

    Kyle Teel pops out to third baseman Ezequiel Duran.

    0-0, 1 pitch · 0 outs before

  • Edgar Quero vs Kumar Rocker0-1

    Edgar Quero called out on strikes.

    3-3, 6 pitches · 1 out before

  • Ryan Noda vs Kumar Rocker0-1

    Ryan Noda called out on strikes.

    3-3, 7 pitches · 2 outs before

bottom 4th(4)
  • Jake Burger vs Aaron Civale0-1

    Jake Burger grounds out, shortstop Chase Meidroth to first baseman Ryan Noda.

    3-2, 7 pitches · 0 outs before

  • Adolis García vs Aaron Civale0-1

    Adolis García doubles (15) on a ground ball to shortstop Chase Meidroth.

    0-2, 3 pitches · 1 out before

  • Kyle Higashioka vs Aaron Civale0-1

    Kyle Higashioka flies out to left fielder Andrew Benintendi.

    0-1, 2 pitches · 1 out before

  • Ezequiel Duran vs Aaron Civale0-1

    Ezequiel Duran flies out to left fielder Andrew Benintendi.

    0-0, 1 pitch · 2 outs before

top 5th(4)
  • Michael A. Taylor vs Kumar Rocker0-1

    Michael A. Taylor strikes out on a foul tip.

    3-3, 6 pitches · 0 outs before

  • Josh Rojas vs Kumar Rocker0-1

    Josh Rojas singles on a ground ball to center fielder Evan Carter.

    1-2, 4 pitches · 1 out before

  • Mike Tauchman vs Kumar Rocker0-1

    Mike Tauchman grounds out to first baseman Jake Burger. Josh Rojas to 3rd.

    3-2, 7 pitches · 1 out before

  • Chase Meidroth vs Kumar Rocker0-1

    Chase Meidroth grounds out, shortstop Corey Seager to first baseman Jake Burger.

    0-2, 3 pitches · 2 outs before

bottom 5th(6)
  • Josh Smith vs Aaron Civale0-1

    Josh Smith singles on a ground ball to third baseman Miguel Vargas.

    1-2, 7 pitches · 0 outs before

  • Wyatt Langford vs Aaron Civale0-1

    Wyatt Langford pops out to second baseman Josh Rojas in foul territory.

    1-1, 3 pitches · 0 outs before

  • Corey Seager vs Aaron Civale0-1

    Corey Seager singles on a line drive to left fielder Andrew Benintendi. Josh Smith to 3rd. Josh Smith advances to 3rd, on a fielding error by left fielder Andrew Benintendi.

    0-1, 2 pitches · 1 out before

  • Marcus Semien vs Aaron Civale0-2

    Marcus Semien out on a sacrifice fly to center fielder Michael A. Taylor. Josh Smith scores.

    0-0, 1 pitch · 1 out before

  • Evan Carter vs Aaron Civale0-2

    Evan Carter hits a ground-rule double (3) on a line drive down the right-field line. Corey Seager to 3rd.

    1-1, 3 pitches · 2 outs before

  • Jake Burger vs Aaron Civale0-2

    Jake Burger strikes out swinging.

    2-3, 5 pitches · 2 outs before

top 6th(4)
  • Andrew Benintendi vs Jacob Webb0-2

    Andrew Benintendi grounds out, second baseman Marcus Semien to first baseman Jake Burger.

    0-1, 2 pitches · 0 outs before

  • Miguel Vargas vs Jacob Webb1-2

    Miguel Vargas homers (10) on a fly ball to left field.

    0-0, 1 pitch · 1 out before

  • Kyle Teel vs Jacob Webb1-2

    Kyle Teel strikes out swinging.

    1-3, 4 pitches · 1 out before

  • Edgar Quero vs Jacob Webb1-2

    Edgar Quero strikes out swinging.

    1-3, 4 pitches · 2 outs before

bottom 6th(4)
  • Adolis García vs Dan Altavilla1-2

    Adolis García grounds out, shortstop Chase Meidroth to first baseman Ryan Noda.

    2-2, 6 pitches · 0 outs before

  • Kyle Higashioka vs Dan Altavilla1-2

    Kyle Higashioka flies out to left fielder Andrew Benintendi.

    0-0, 1 pitch · 1 out before

  • Ezequiel Duran vs Dan Altavilla1-2

    Ezequiel Duran walks.

    4-2, 6 pitches · 2 outs before

  • Josh Smith vs Dan Altavilla1-2

    Josh Smith flies out to left fielder Andrew Benintendi.

    1-0, 2 pitches · 2 outs before

top 7th(4)
  • Ryan Noda vs Jacob Webb1-2

    Ryan Noda walks.

    4-2, 8 pitches · 0 outs before

  • Michael A. Taylor vs Jacob Webb1-2

    Michael A. Taylor strikes out swinging.

    2-3, 5 pitches · 0 outs before

  • Josh Rojas vs Jacob Webb1-2

    Josh Rojas singles on a fly ball to right fielder Adolis García. Ryan Noda to 3rd.

    1-1, 3 pitches · 1 out before

  • Mike Tauchman vs Cole Winn1-2

    Mike Tauchman called out on strikes.

    2-3, 5 pitches · 1 out before

bottom 7th(4)
  • Wyatt Langford vs Dan Altavilla1-2

    Wyatt Langford grounds out, third baseman Miguel Vargas to first baseman Ryan Noda.

    3-2, 10 pitches · 0 outs before

  • Corey Seager vs Cam Booser1-2

    Corey Seager flies out to right fielder Mike Tauchman.

    3-1, 5 pitches · 1 out before

  • Marcus Semien vs Cam Booser1-2

    Marcus Semien doubles (7) on a line drive to left fielder Andrew Benintendi.

    3-2, 7 pitches · 2 outs before

  • Evan Carter vs Cam Booser1-2

    Evan Carter pops out to second baseman Josh Rojas.

    0-1, 2 pitches · 2 outs before

top 8th(5)
  • Chase Meidroth vs Cole Winn1-2

    Chase Meidroth strikes out swinging.

    0-3, 3 pitches · 0 outs before

  • Andrew Benintendi vs Cole Winn1-2

    Andrew Benintendi doubles (9) on a ground ball to first baseman Jake Burger.

    2-0, 3 pitches · 1 out before

  • Miguel Vargas vs Cole Winn1-2

    Miguel Vargas flies out to left fielder Wyatt Langford.

    3-1, 5 pitches · 1 out before

  • Kyle Teel vs Cole Winn1-2

    Kyle Teel singles on a ground ball to second baseman Marcus Semien. Luis Robert Jr. to 3rd.

    1-2, 4 pitches · 2 outs before

  • Edgar Quero vs Cole Winn1-2

    Edgar Quero lines out to shortstop Corey Seager.

    3-2, 7 pitches · 2 outs before

bottom 8th(5)
  • Jake Burger vs Steven Wilson1-2

    Jake Burger singles on a line drive to left fielder Michael A. Taylor.

    0-0, 1 pitch · 0 outs before

  • Adolis García vs Steven Wilson1-2

    Adolis García lines into a force out, shortstop Chase Meidroth to second baseman Josh Rojas. Jake Burger out at 2nd. Adolis García to 1st.

    1-1, 3 pitches · 0 outs before

  • Kyle Higashioka vs Steven Wilson1-2

    Kyle Higashioka lines out to left fielder Michael A. Taylor.

    2-1, 4 pitches · 1 out before

  • Ezequiel Duran vs Steven Wilson1-2

    Ezequiel Duran doubles (3) on a line drive to right fielder Mike Tauchman. Adolis García to 3rd.

    2-2, 5 pitches · 2 outs before

  • Sam Haggerty vs Brandon Eisert1-2

    Sam Haggerty grounds out, pitcher Brandon Eisert to first baseman Ryan Noda.

    2-2, 6 pitches · 2 outs before

top 9th(3)
  • Ryan Noda vs Luke Jackson1-2

    Ryan Noda grounds out to first baseman Jake Burger.

    1-2, 4 pitches · 0 outs before

  • Brooks Baldwin vs Luke Jackson1-2

    Brooks Baldwin strikes out swinging.

    1-3, 5 pitches · 1 out before

  • Josh Rojas vs Luke Jackson1-2

    Josh Rojas flies out to center fielder Evan Carter.

    2-2, 7 pitches · 2 outs before

Analysis preview// illustrative example, not this page's real data
sample · team comparisonexample only
a:"Team A"b:"Team B"
Offensive ratingA 114.2 · B 108.9
Recent form (L10)A 6-4 · B 6-4
Head-to-headB leads 3-1
GET /v1/analysis/compare-teams?a=…&b=…Run this yourself via the API
Built on the StatHawk API

The page is the demo.

These requests and request patterns show how this page gets data from the same REST API and MCP server you can use in your own app or agent.

View this page's API recipe

Use the authenticated requests or fill in the labeled request templates, then adapt the response in your own product.

Authenticated request · GET /v1/contests/cst_06fhn9g2a1zy13pknxqdpj8g3c
curl "https://api.statshawk.ai/v1/contests/cst_06fhn9g2a1zy13pknxqdpj8g3c" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fhn9g2a1zy13pknxqdpj8g3c/boxscore
curl "https://api.statshawk.ai/v1/contests/cst_06fhn9g2a1zy13pknxqdpj8g3c/boxscore" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fhn9g2a1zy13pknxqdpj8g3c/matchup
curl "https://api.statshawk.ai/v1/contests/cst_06fhn9g2a1zy13pknxqdpj8g3c/matchup" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Authenticated request · GET /v1/contests/cst_06fhn9g2a1zy13pknxqdpj8g3c/play-by-play?detail=full
curl "https://api.statshawk.ai/v1/contests/cst_06fhn9g2a1zy13pknxqdpj8g3c/play-by-play?detail=full" \
  -H "X-API-Key: sk_live_YOUR_KEY_HERE"
Try with MCP

Connect StatHawk to your agent, then ask it to explain and extend the data shown on this page.

Build this view in the API reference
$claude mcp add statshawk https://mcp.statshawk.ai/mcp