The Challenge
Keeping up with cryptocurrency prices, historical highs/lows, and significant events like halving is time‑consuming and error‑prone. I wanted to build an agent that could:
- Fetch live pricing for any coin
 - Answer questions like “When was the all‑time high for SHIB?” or “When is the next BTC halving?”
 - Integrate seamlessly into Telex.im so users can chat in a familiar workspace
 
This is the story of how I built CryptoMate, using the Mastra agent framework and integrated it via Telex’s A2A protocol.
đź§Ş Tech Stack
Here’s what I used:
- Mastra: for defining the agent and workflows
 - Telex.im: for chat‑agent integration via JSON‑RPC A2A
 - Node.js + Express: backend server for the agent
 - Axios: to fetch data from the CoinGecko API
 - Railway.app: cloud hosting and deployment
 
⚙️ Architecture Overview
🧑‍💻 User message (via Telex)
        ↓
📡 JSON-RPC Request
        ↓
đź§  Express Server (Node.js)
        ↓
⚙️ Logic Layer 
      ├─ CoinGecko API (for live crypto data)
      └─ Mastra Agent (for natural-language handling)
        ↓
đź’¬ JSON-RPC Response
        ↓
📱 Message displayed on Telex
đź§ Building CryptoMate with Mastra
Step 1. Install Mastra
In the project folder, run:
npm install @mastra/core
This installed the core Mastra package which includes agent, tools, workflows and more. ([npmjs.com][1])
Step 2: Agent setup
import { Agent } from "@mastra/core/agent";
import dotenv from "dotenv";
dotenv.config();
export const cryptoTrackerBot = new Agent({
  name: "crypto-tracker-bot",
  instructions: `
    You are a helpful cryptocurrency assistant.
    You can answer general crypto-related questions,
    provide insights about Bitcoin, Ethereum, and other coins,
    and guide users about the crypto market.
    If the user asks for a price, the data will be fetched from an API,
    so just confirm it politely.
    Keep your responses short, clear, and friendly.
  `,
  model: "gpt-4o-mini",
  openaiApiKey: process.env.OPENAI_API_KEY
});
Step 3: I Used the agent in theserver/backend
In server.js, when you receive a message from Telex, call:
const aiResponse = await cryptoTrackerBot.run(text);
This sends the user’s input to Mastra, gets a response, and you can then send that reply back to Telex in the correct JSON-RPC format.
Step 4: I created the Mastra workflow.json file
This file communicates with Telex the location and function of the Ai agent
{
  "active": true,
  "category": "utilities",
  "description": "A crypto tracker bot that provides real-time prices for cryptocurrencies.",
  "id": "cryptoTrackerBot123",
  "long_description": "You are a helpful crypto tracker bot that fetches live cryptocurrency prices and market information using the CoinGecko API. Users can ask for the price of any coin by name or symbol.",
  "name": "crypto-tracker-bot",
  "nodes": [
    {
      "id": "crypto_tracker_bot_node",
      "name": "crypto-tracker-bot",
      "parameters": {},
      "position": [500, 100],
      "type": "a2a/mastra-a2a-node",
      "typeVersion": 1,
      "url": "cryptomate-production.up.railway.app"
    }
  ],
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "short_description": "Tracks live crypto prices using CoinGecko"
}
đź”— Deploying & Telex Integration
- Deployed to Railway.app and updated the 
workflow.jsonwith the live URL - Added the agent on Telex.im and published it đź”— Link to my agent: [https://telex.im/telex-ai-intergration/colleagues/019a4767-aadf-7e17-99e9-954eaa1d3545/019a4767-1277-7d2d-8e9e-714192aff16e] (What the agent does: provides live crypto pricing and insights, handles coin history and concept questions.)
 
And of course: https://telex.im/ — an AI agent platform like Make, a Slack alternative for bootcamps and communities.
🧠What Worked & What Didn’t
âś… Worked
- Mastra made creating the agent straightforward
 - Telex A2A protocol integration was smooth once the JSON format was correct
 - CoinGecko provided reliable price data
 
❌ Challenges
- Initial Mastra install issue: had to install via GitHub because 
npm install mastrafailed - Workflow trigger sometimes showed “Will the workflow run: False” — resolved by re‑uploading the updated 
workflow.jsonand ensuring the URL matched deployment - Handling non‑price questions gracefully required adding the timeout logic so Mastra fallback didn’t hang
 
📌 Tips for Your Own Agent
- Start simple: price queries first, fallback logic later
 - Test locally with Postman or curl before Telex
 - Use environment variables — never hardcode API keys
 - Monitor logs: what Telex sends vs what your endpoint receives
 - Re‑upload your workflow every time you change the URL
 
đź’ˇ The project is open to the community!
Feel free to:
- Check out the source code
 - Open issues or share feedback
 - Contribute enhancements
 - Fork it and build your own version
 
👉 https://github.com/GodlyPatrick/CryptoMate.git
🎉 Conclusion
Building CryptoMate showed me just how powerful the combination of Mastra + Telex can be for agents. Whether you’re tracking prices, building a dev‑assistant, or automating community workflows, this stack gives you a fast path from idea → live chatbot.
Go ahead and build something cool!
    
Top comments (0)