Use GitDealFlow A2A with Semantic Kernel
Microsoft's enterprise AI orchestration SDK. Enterprise .NET / Python builders who need governed agent workflows over corporate signals.
Crunchbase API: $20K/yr. GitDealFlow A2A: free, no signup.
Semantic Kernel registers our A2A endpoint as a native function/plugin so that any Kernel-driven agent (Microsoft 365 Copilot extension, Azure-hosted assistant, internal chatbot) can call GitDealFlow as a first-class tool. The SDK handles function-calling schema, prompt assembly, and orchestration; you supply a thin HTTP wrapper around the JSON-RPC POST and SK does the rest. Best fit when you already run Azure OpenAI and want VC engineering signals inside a governed Copilot stack.
Endpoint facts for Semantic Kernel 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 Semantic Kernel path | Semantic Kernel has no native MCP client yet, so the custom-tool path below (a thin JSON-RPC call) is the way in. |
C# native function (Kernel plugin)
// dotnet add package Microsoft.SemanticKernel
using Microsoft.SemanticKernel;
using System.ComponentModel;
class GitDealFlowPlugin {
private static readonly HttpClient _http = new();
private const string A2A = "https://signals.gitdealflow.com/api/a2a";
[KernelFunction, Description("Query GitDealFlow for startup engineering signals: trending, sector lookup, named startup, methodology, or scout receipts.")]
public async Task<string> QueryAsync(
[Description("One of: trending, sector, startup, methodology, receipts")] string skill,
[Description("Optional args, e.g. sector slug or startup name")] Dictionary<string, object>? args = null) {
var body = new {
jsonrpc = "2.0", id = 1,
method = "message/send",
@params = new {
message = new { role = "user", parts = new[] {
new { kind = "data", data = new { skill, args = args ?? new() } }
}}
}
};
var resp = await _http.PostAsJsonAsync(A2A, body);
return await resp.Content.ReadAsStringAsync();
}
}
var kernel = Kernel.CreateBuilder()
// Use your Azure OpenAI deployment name (e.g. gpt-5, gpt-4.1, or whatever you've deployed)
.AddAzureOpenAIChatCompletion("<your-deployment-name>", endpoint, apiKey)
.Build();
kernel.Plugins.AddFromObject(new GitDealFlowPlugin());Python, KernelFunction decorator
# pip install semantic-kernel
import semantic_kernel as sk
import requests
from semantic_kernel.functions import kernel_function
A2A = "https://signals.gitdealflow.com/api/a2a"
class GitDealFlowPlugin:
@kernel_function(description="Query GitDealFlow A2A for VC engineering signals.")
def query(self, skill: str, args: dict = None) -> str:
body = {"jsonrpc":"2.0","id":1,"method":"message/send",
"params":{"message":{"role":"user","parts":[
{"kind":"data","data":{"skill": skill, "args": args or {}}}
]}}}
return str(requests.post(A2A, json=body, timeout=15).json())
kernel = sk.Kernel()
kernel.add_plugin(GitDealFlowPlugin(), plugin_name="gitdealflow")What you can ask
- Add VC signal lookup to a Microsoft 365 Copilot extension for the deal team.
- Surface trending startups inside an internal Azure-hosted agent with audit logging.
- Run a planner that asks GitDealFlow for fintech trending, then writes a memo via your default model.
- Chain SK function-calling: classify user intent → call GitDealFlow → format response in corporate template.
- Plug into a Teams bot so analysts can /signal Roboflow without leaving chat.
Gotchas
- SK's auto-function-invocation requires planner mode (`FunctionChoiceBehavior.Auto()` in C#). Manual invoke works without it but skips the LLM picking the tool.
- Azure OpenAI's tool-call response format differs slightly from OpenAI's, SK abstracts this but expect occasional schema drift on minor SDK versions.
- Compliance: our A2A endpoint is no-auth public, fine for read-only signal lookups but log-everything if you wire into an audited Copilot stack.
When to pick which path
Because Semantic Kernel 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.
5example prompts are listed under "What you can ask" below, and the gotchas section covers the 3 known failure modes Semantic Kernel 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.