Use GitDealFlow A2A with Mastra
TypeScript agent framework with first-class MCP support. TypeScript builders shipping agents alongside their Next.js or Hono apps.
Crunchbase API: $20K/yr. GitDealFlow A2A: free, no signup.
Mastra has native MCP via MCPClient as of v0.4. Add our package once and every Mastra agent in the project can call all five skills. The A2A endpoint is the cleaner fallback when you want to call the agent without MCP overhead from a serverless edge handler.
Endpoint facts for Mastra users
Whatever wiring you choose, the target is the same single endpoint. These are the fixed facts; nothing on this page changes them:
| Protocol | A2A JSON-RPC 2.0 (protocolVersion 0.3.0) |
| Endpoint URL | https://signals.gitdealflow.com/api/a2a |
| Skills exposed | 5, mirrored 1:1 with the MCP server tools (trending, sector, lookup, summary, methodology) |
| Auth | None; free in perpetuity, read-only |
| Freshness | Recomputed weekly; responses carry the data-as-of date |
| Best Mastra path | Mastra speaks MCP natively, so the MCP server is the shortest path (below); raw A2A remains available for sub-agents and curl. |
Install
npm install @mastra/core @mastra/mcpMCP via @mastra/mcp
import { MCPClient } from "@mastra/mcp";
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
const mcp = new MCPClient({
servers: {
gitdealflow: {
command: "npx",
args: ["@gitdealflow/mcp-signal@latest"],
},
},
});
const tools = await mcp.getTools();
export const scoutAgent = new Agent({
name: "VC Scout",
model: openai("gpt-4o-mini"),
instructions: "Use the gitdealflow tools to surface live engineering signals.",
tools,
});Direct A2A fetch tool
import { createTool } from "@mastra/core/tools";
import { z } from "zod";
export const gitdealflowA2A = createTool({
id: "gitdealflow-a2a",
description: "Call GitDealFlow's A2A endpoint for VC signals.",
inputSchema: z.object({
skill: z.enum([
"get_trending_startups",
"search_startups_by_sector",
"get_startup_signal",
"get_signals_summary",
"get_methodology",
]),
args: z.record(z.string(), z.any()).optional(),
}),
execute: async ({ context }) => {
const r = await fetch("https://signals.gitdealflow.com/api/a2a", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0", id: 1, method: "message/send",
params: { message: { role: "user", parts: [
{ kind: "data", data: { skill: context.skill, args: context.args ?? {} } },
]}},
}),
});
return (await r.json()).result.artifacts[0].parts[0].data;
},
});What you can ask
- Inside a Mastra workflow: chain trending → memo-writer → email-sender steps.
- Inside a Hono route: surface 'is this startup tracked?' for logged-in users.
- Inside a cron job: write a Monday digest to the team's Slack.
- Inside a multi-step agent: scout → analyst → verifier with shared context.
Gotchas
- Mastra MCPClient holds long-lived stdio processes, call `await mcp.disconnect()` in serverless teardown to avoid orphaned children.
- If your edge runtime can't spawn child processes, use the A2A fallback tool, it's pure fetch, edge-safe.
When to pick which path
Because Mastra supports MCP natively, the split is simple: use the MCP server for anything you want persistent and always-available (it reconnects, caches, and shows up as first-class tools), and the raw A2A endpoint for one-off curls, sub-agents without MCP access, or quick tests from CI.
4example prompts are listed under "What you can ask" below, and the gotchas section covers the 2 known failure modes Mastra users hit with this endpoint. If a prompt fails, check the gotchas first: most misses are shape mismatches, not endpoint outages.
References
Try it without setup
The interactive playground lets you send live JSON-RPC requests against the A2A endpoint with no install, no auth. Pick a skill, hit send, see the response.
Full launch story: I made my VC deal flow callable by Claude.