GitDealFlowsignals
A2A INTEGRATION · CUSTOM TOOL

Use GitDealFlow A2A with Pydantic AI

Type-safe Python agent framework. Python builders who want strict typing on every agent input and output.

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

Pydantic AI's Tool decorator enforces typed args and return shapes. Wrap our A2A endpoint as a single Tool that takes a skill enum and a typed args dict, and the agent gets compile-time checking on every call. The MCP server also works via pydantic-ai's experimental MCP support if you prefer.

Endpoint facts for Pydantic AI 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 Pydantic AI pathPydantic AI has no native MCP client yet, so the custom-tool path below (a thin JSON-RPC call) is the way in.

Install

pip install pydantic-ai

Typed Tool

from pydantic_ai import Agent, Tool, RunContext
from pydantic import BaseModel
from typing import Literal
import requests

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

Skill = Literal[
    "get_trending_startups",
    "search_startups_by_sector",
    "get_startup_signal",
    "get_signals_summary",
    "get_methodology",
]

class A2AArgs(BaseModel):
    skill: Skill
    args: dict | None = None

async def gitdealflow_query(ctx: RunContext, params: A2AArgs) -> dict:
    """Call GitDealFlow A2A for live VC engineering signals."""
    body = {
        "jsonrpc": "2.0", "id": 1,
        "method": "message/send",
        "params": {"message": {"role": "user", "parts": [
            {"kind": "data", "data": {"skill": params.skill, "args": params.args or {}}},
        ]}},
    }
    return requests.post(A2A_URL, json=body, timeout=15).json()

agent = Agent(
    "openai:gpt-4o-mini",
    tools=[Tool(gitdealflow_query)],
    system_prompt="Use gitdealflow_query for live engineering signals.",
)

What you can ask

  • result = await agent.run('Who is trending in fintech?')
  • Compose with other Pydantic AI tools (web search, vector store) for an end-to-end deal-memo flow.
  • Stream tokens with agent.run_stream() while the tool fetches in the background.
  • Validate output with a result_type=DealMemo Pydantic model.

Gotchas

  • Pydantic AI revalidates tool args on every call, keep your A2AArgs model lean to avoid latency.
  • If you want the agent to use multiple skills in one turn, raise tool_call_limit (default 10) in Agent config.

When to pick which path

Because Pydantic AI 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 Pydantic AI 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.