Use GitDealFlow A2A with LangChain
The most popular Python and JS agent framework. Builders chaining multiple tools across LLM providers.
Crunchbase API: $20K/yr. GitDealFlow A2A: free, no signup.
LangChain has experimental MCP support via langchain-mcp-adapters, and our MCP server works out of the box with that path. For A2A specifically, the cleanest integration is a small Tool subclass that wraps the JSON-RPC call. Both paths return the same data, pick MCP if you already use it elsewhere, A2A if you want a single HTTP dependency.
Endpoint facts for LangChain 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 LangChain path | LangChain has no native MCP client yet, so the custom-tool path below (a thin JSON-RPC call) is the way in. |
Install
pip install langchain langchain-core
# or
pip install langchain-mcp-adapters # if you prefer MCPCustom A2A Tool (Python)
from langchain_core.tools import tool
import requests
A2A_URL = "https://signals.gitdealflow.com/api/a2a"
@tool
def gitdealflow_a2a(skill: str, args: dict | None = None) -> dict:
"""Call the GitDealFlow A2A agent.
Args:
skill: One of get_trending_startups, search_startups_by_sector,
get_startup_signal, get_signals_summary, get_methodology.
args: Optional dict of skill-specific arguments.
"""
body = {
"jsonrpc": "2.0", "id": 1,
"method": "message/send",
"params": {
"message": {
"role": "user",
"parts": [{"kind": "data", "data": {"skill": skill, "args": args or {}}}],
}
},
}
return requests.post(A2A_URL, json=body, timeout=15).json()
MCP via langchain-mcp-adapters
# pip install langchain-mcp-adapters
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
client = MultiServerMCPClient({
"gitdealflow": {
"command": "npx",
"args": ["@gitdealflow/mcp-signal@latest"],
"transport": "stdio",
},
})
tools = await client.get_tools()
agent = create_react_agent("openai:gpt-4o-mini", tools)
response = await agent.ainvoke(
{"messages": [{"role": "user", "content": "What's trending in fintech?"}]}
)What you can ask
- agent.invoke({'messages': [...top 20 trending...]})
- Chain: GitDealFlow lookup → SerpAPI for press → Crunchbase API for funding → memo writer
- Filter: only return startups in user's geography
- Compose: weekly digest from get_trending_startups + LLM summarization
Gotchas
- If you use `create_react_agent`, the model occasionally calls the tool with malformed args. Validate before passing through.
- The A2A endpoint has no rate limit at the application layer, but if you call it 100x/sec from a batch loop, the upstream CDN may briefly throttle. Add a 100ms sleep between calls in tight loops.
When to pick which path
Because LangChain currently lacks a native MCP client, your two options are the custom tool below (a thin JSON-RPC wrapper you register once) or switching the session to an MCP-capable host when you need the richer tool surface. For scheduled jobs and pipelines, the raw endpoint is usually the sturdier dependency: no client versioning to track.
4example prompts are listed under "What you can ask" below, and the gotchas section covers the 2 known failure modes LangChain 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.