GitDealFlowsignals
A2A INTEGRATION · CUSTOM TOOL

Use GitDealFlow A2A with OpenAI Agents SDK

openai-agents Python and TypeScript packages. Builders shipping agent workflows on OpenAI models with first-class tool use.

Crunchbase API: $20K/yr. GitDealFlow A2A: free, no signup.

The OpenAI Agents SDK gives you a clean primitive for tool use. A2A is not natively supported by the SDK as of April 2026, so the integration is a custom function tool that POSTs JSON-RPC to our endpoint. The whole tool fits in 30 lines and exposes all five skills behind a single dispatch function.

Endpoint facts for OpenAI Agents SDK users

Whatever wiring you choose, the target is the same single endpoint. These are the fixed facts; nothing on this page changes them:

ProtocolA2A JSON-RPC 2.0 (protocolVersion 0.3.0)
Endpoint URLhttps://signals.gitdealflow.com/api/a2a
Skills exposed5, mirrored 1:1 with the MCP server tools (trending, sector, lookup, summary, methodology)
AuthNone; free in perpetuity, read-only
FreshnessRecomputed weekly; responses carry the data-as-of date
Best OpenAI Agents SDK pathOpenAI Agents SDK has no native MCP client yet, so the custom-tool path below (a thin JSON-RPC call) is the way in.

Install

pip install openai-agents
# or
npm install @openai/agents

Custom function tool (Python)

# pip install openai-agents requests
from openai_agents import Agent, function_tool
import requests

A2A_URL = "https://signals.gitdealflow.com/api/a2a"

@function_tool
def gitdealflow_query(skill: str, args: dict | None = None) -> dict:
    """
    Call the GitDealFlow A2A agent.
    skill: one of get_trending_startups, search_startups_by_sector,
           get_startup_signal, get_signals_summary, get_methodology
    args:  skill-specific arguments (e.g. {"sector": "fintech"})
    """
    body = {
        "jsonrpc": "2.0", "id": 1,
        "method": "message/send",
        "params": {
            "message": {
                "role": "user",
                "parts": [{"kind": "data", "data": {"skill": skill, "args": args or {}}}],
            }
        },
    }
    r = requests.post(A2A_URL, json=body, timeout=15)
    r.raise_for_status()
    return r.json()["result"]["artifacts"][0]["parts"][0]["data"]

agent = Agent(
    name="VC scout",
    tools=[gitdealflow_query],
    instructions="Use gitdealflow_query to fetch live startup engineering signals.",
)

TypeScript custom tool

// npm install @openai/agents
import { Agent, tool } from "@openai/agents";
import { z } from "zod";

const A2A_URL = "https://signals.gitdealflow.com/api/a2a";

const gitdealflow = tool({
  name: "gitdealflow_query",
  description: "Call the GitDealFlow A2A agent for startup engineering signals.",
  parameters: 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 ({ skill, args }) => {
    const r = await fetch(A2A_URL, {
      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, args: args ?? {} } }],
          },
        },
      }),
    });
    const json = await r.json();
    return json.result.artifacts[0].parts[0].data;
  },
});

What you can ask

  • Pass {skill: 'get_trending_startups'} for weekly top 20.
  • Pass {skill: 'search_startups_by_sector', args: {sector: 'ai-ml'}}.
  • Pass {skill: 'get_startup_signal', args: {name: 'Roboflow'}}.
  • Pass {skill: 'get_methodology'} when an analyst questions the ranking.

Gotchas

  • The endpoint returns JSON-RPC envelopes. Always reach into result.artifacts[0].parts[0].data for the structured payload, or .parts[1].text for the plaintext fallback.
  • Sector slugs are normalized aliases (crypto → web3, AI → ai-ml). If you accept user free-text, route it through search_startups_by_sector and let the endpoint resolve.

When to pick which path

Because OpenAI Agents SDK 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 OpenAI Agents SDK 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.

Other framework integrations

🚀 Explore Our Network

21-47 days
Signal Lead Time (median 31d)
$80M+
Rounds Tracked
90 sec
Per Scan
5,000+
Founders Tracked

One missed signal is a missed round. Get the Velocity Verdict in your inbox every Sunday free.

Get Free Signals

Free weekly digest. Cancel anytime. No spam, no VC pitches just data.