Wire VC engineering signals into any LangChain agent in 20 lines of Python.
POST https://signals.gitdealflow.com/api/a2aIf you ship LangChain agents and you also write angel checks, you sit in the rarest segment of the deal-flow market. The default playbook — Crunchbase Pro, PitchBook, hand-rolled scrapers — is built for analysts, not for builders. None of it is callable from your agent loop. None of it knows what Series A milestone a 14-day commit-velocity spike actually predicts. The data was never designed to flow through an LLM.
GitDealFlow signals are. The corpus is 985+ venture-backed startups across 20 sectors, refreshed weekly, ranked by the kind of GitHub momentum that historically precedes fundraises by three to six weeks. The MCP server and the public A2A endpoint expose the same five skills your LangChain ReAct loop needs: trending, sector slice, named-startup lookup, dataset summary, methodology citation. Drop the tool in, point your agent at OpenAI or Anthropic, and you're shipping deal-flow conviction by Sunday.
When the analyst agent picks a startup, it can demand the methodology paper for the deal memo. get_methodology returns the same SSRN-anchored text every time, so citation lines are stable across reruns.
Compose with web search, Crunchbase free-tier, GitHub REST, and a memo-writer LLM call. GitDealFlow contributes the 'is this team actually shipping' signal that no other free source surfaces.
The five skills are stateless and idempotent — drop them into a LangGraph node and they replay safely on retry. Same response for the same args inside a refresh window.
If you're on langchain-mcp-adapters, our published @gitdealflow/mcp-signal package works as a drop-in MCP server. Same tools, stdio transport, no auth.
# pip install langchain langchain-openai langchain-core requests
from langchain_core.tools import tool
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
import requests
A2A = "https://signals.gitdealflow.com/api/a2a"
@tool
def gitdealflow(skill: str, args: dict | None = None) -> dict:
"""Live VC engineering signals from GitDealFlow.
skill: get_trending_startups | search_startups_by_sector |
get_startup_signal | get_signals_summary | get_methodology
args: skill-specific dict (e.g. {"sector": "ai-ml"})
"""
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, json=body, timeout=15).json()
agent = create_react_agent(
ChatOpenAI(model="gpt-5.4"),
tools=[gitdealflow],
)
result = agent.invoke({
"messages": [("user", "Who's accelerating in fintech this week? Cite methodology.")]
})
print(result["messages"][-1].content)# Two-node graph: scout pulls signals, analyst writes a memo.
from langgraph.graph import StateGraph, END
from typing import TypedDict
import requests
A2A = "https://signals.gitdealflow.com/api/a2a"
class State(TypedDict):
sector: str
signals: list
memo: str
def scout(state: State) -> State:
body = {"jsonrpc":"2.0","id":1,"method":"message/send",
"params":{"message":{"role":"user","parts":[
{"kind":"data","data":{
"skill":"search_startups_by_sector",
"args":{"sector": state["sector"]}
}},
]}}}
data = requests.post(A2A, json=body, timeout=15).json()
return {"signals": data["result"]["artifacts"][0]["parts"][0]["data"]["startups"][:5]}
def analyst(state: State) -> State:
# ...your LLM-call here, given state["signals"]...
return {"memo": f"Top 5 in {state['sector']}: " + ", ".join(s["name"] for s in state["signals"])}
graph = StateGraph(State)
graph.add_node("scout", scout)
graph.add_node("analyst", analyst)
graph.set_entry_point("scout")
graph.add_edge("scout", "analyst")
graph.add_edge("analyst", END)
app = graph.compile()
out = app.invoke({"sector": "ai-ml"})
print(out["memo"])Crunchbase Pro is $20K/yr and surfaces post-fact data — funding announcements, headcount changes, press. GitDealFlow surfaces leading indicators: commit velocity changes, contributor growth, infrastructure buildout, all from public GitHub. The two are complementary; GitDealFlow gets you to the deal three to six weeks before Crunchbase has the round announced.
Yes. The tool is model-agnostic — it's a plain Python callable wrapped by @tool. It works with ChatOpenAI, ChatAnthropic, ChatVertexAI, ChatBedrock, or any LangChain chat model. The tool calling format is normalized by LangChain before the model sees it.
The public A2A endpoint has no application-layer rate limit, but the upstream CDN may briefly throttle bursts above ~100 req/sec from a single IP. For batch enrichment loops, add a 100ms sleep or use the dataset.jsonl bulk endpoint instead. The dataset is updated weekly, so caching for a few hours is safe.
Email signal@gitdealflow.com — replies within 24 hours, EU business time. Include the framework name and the error in the message body and a snippet of your tool definition.
Email support