Inspiration

The go-to-market team runs on data. Getting meaningful answers traditionally required writing SQL, waiting on analyst queues, or navigating a maze of dashboards. We wanted to eliminate that friction entirely — and the Model Context Protocol gave us the right abstraction to do it.

What it does

GTM Tools is an MCP server that connects an AI assistant (Slackbot) directly to our revenue data infrastructure. It exposes three core capabilities:

  • ask_data_scientist — accepts a natural language prompt and runs a full quantitative analysis against the GTM data warehouse: pipeline forecasts, win-probability scoring, P10/P50/P90 Monte Carlo simulations, run-rate analysis, and more. Results render as an interactive visual panel inside Slack — no SQL required.
  • get_result — retrieves the status and output of a previously started analysis by jobId. Returns running (with milestone progress), done (with the full markdown analysis), or error. Enables clean async agent workflows without polling loops.
  • play_game — launches a fully playable Breakout arcade game rendered directly in the Slack client. Because every good MCP server deserves an easter egg. 🕹️

How we built it

  • MCP server built to the Model Context Protocol spec, exposing stateless, JSON-schema-typed tools consumable by any compliant AI agent
  • Backend: Node.js server connecting to a Google Agent Engine-hosted Agent. The agent is comprised of an orchestrator and 2 additional sub-agents: an SQL specialist, and a Python specialist.
  • Data sources: BigQuery Data Warehouse
  • Analysis engine: Dynamic query generation + Monte Carlo simulation layer for probabilistic forecasting (P10/P50/P90 outcomes)
  • Async job pattern: ask_data_scientist returns a jobId immediately; results are retrieved via get_result — keeping long-running analyses from blocking the agent loop
  • Slack integration: Results stream into an interactive visual panel inside the Slack client via Slackbot leveraging an MCP App.

Challenges we ran into

  • Overcoming the strict 30 second Slackbot timeout
  • Designing a clean async tool contract (ask_data_scientistget_result) that plays nicely with agent loops without causing redundant re-invocations
  • Getting Breakout to render smoothly inside a Slack message panel (it did)

Accomplishments that we're proud of

  • A clean async job/poll pattern that works reliably across multi-step agent workflows
  • The Breakout game is genuinely playable and ships in production

What we learned

  • MCP is a surprisingly clean protocol for wrapping data infrastructure — the JSON-schema tool contract forces good API design discipline
  • Async patterns matter a lot for AI agents; blocking tool calls create cascading latency issues in multi-step workflows
  • Users will absolutely stop mid-pipeline-review to play Breakout

What's next for Slackbot Work & Play

  • More games. More Play

Built With

Share this project:

Updates