Skip to content

Commit 6255499

Browse files
committed
feat: add LangGraph, Haystack, Semantic Kernel, Flowise, n8n, and Olas integrations
1 parent d0dd150 commit 6255499

17 files changed

Lines changed: 947 additions & 11 deletions

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
66
## What This Repository Is
77

8-
Drop-in integrations connecting **35 framework, wallet, and payment surfaces** to the [Agoragentic](https://agoragentic.com) capability router. Agents can autonomously discover, browse, invoke, and pay for services — settled in USDC on Base L2.
8+
Drop-in integrations connecting **41 framework, wallet, and payment surfaces** to the [Agoragentic](https://agoragentic.com) capability router. Agents can autonomously discover, browse, invoke, and pay for services — settled in USDC on Base L2.
99

1010
## Machine-Readable Index
1111

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[![PyPI](https://img.shields.io/pypi/v/agoragentic?label=Python%20SDK&color=3775A9)](https://pypi.org/project/agoragentic/)
55
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
66

7-
Drop-in integrations connecting **35 framework, wallet, and payment surfaces** to the [Agoragentic](https://agoragentic.com) capability router. Agents can autonomously discover, invoke, and pay for services with USDC settlement on Base L2.
7+
Drop-in integrations connecting **41 framework, wallet, and payment surfaces** to the [Agoragentic](https://agoragentic.com) capability router. Agents can autonomously discover, invoke, and pay for services with USDC settlement on Base L2.
88

99
## Packages
1010

@@ -20,6 +20,10 @@ Drop-in integrations connecting **35 framework, wallet, and payment surfaces** t
2020
|-----------|----------|--------|------|------|
2121
| [**LangChain**](langchain/) | Python | ✅ Ready | `langchain/agoragentic_tools.py` | [README](langchain/README.md) |
2222
| [**CrewAI**](crewai/) | Python | ✅ Ready | `crewai/agoragentic_crewai.py` | [README](crewai/README.md) |
23+
| [**LangGraph**](langgraph/) | Python | ✅ Ready | `langgraph/agoragentic_langgraph.py` | [README](langgraph/README.md) |
24+
| [**Haystack**](haystack/) | Python | ✅ Ready | `haystack/agoragentic_haystack.py` | [README](haystack/README.md) |
25+
| [**Semantic Kernel**](semantic-kernel/) | Python | ✅ Ready | `semantic-kernel/agoragentic_semantic_kernel.py` | [README](semantic-kernel/README.md) |
26+
| [**Olas / Open Autonomy**](olas/) | Python | ✅ Ready | `olas/agoragentic_olas.py` | [README](olas/README.md) |
2327
| [**MCP**](mcp/) (Claude, VS Code, Cursor) | Node.js | ✅ Ready | `mcp/mcp-server.js` | [README](mcp/README.md) |
2428
| [**AutoGen**](autogen/) (Microsoft) | Python | ✅ Ready | `autogen/agoragentic_autogen.py` | [README](autogen/README.md) |
2529
| [**OpenAI Agents SDK**](openai-agents/) | Python | ✅ Ready | `openai-agents/agoragentic_openai.py` | [README](openai-agents/README.md) |
@@ -32,6 +36,8 @@ Drop-in integrations connecting **35 framework, wallet, and payment surfaces** t
3236
| [**Google ADK**](google-adk/) | Python | ✅ Ready | `google-adk/agoragentic_google_adk.py` | [README](google-adk/README.md) |
3337
| [**Vercel AI SDK**](vercel-ai/) | JavaScript | ✅ Ready | `vercel-ai/agoragentic_vercel.js` | [README](vercel-ai/README.md) |
3438
| [**Mastra**](mastra/) | JavaScript | ✅ Ready | `mastra/agoragentic_mastra.js` | [README](mastra/README.md) |
39+
| [**Flowise**](flowise/) | JavaScript | ✅ Ready | `flowise/agoragentic_flowise.js` | [README](flowise/README.md) |
40+
| [**n8n**](n8n/) | JavaScript | ✅ Ready | `n8n/agoragentic_n8n.js` | [README](n8n/README.md) |
3541
| [**Tempo MPP**](tempo-mpp/) | TypeScript | ✅ Ready | `tempo-mpp/agoragentic_tempo_mpp.ts` | [README](tempo-mpp/README.md) |
3642
| [**Safe**](safe/) | TypeScript | ✅ Ready | `safe/agoragentic_safe.ts` | [README](safe/README.md) |
3743
| [**Superfluid**](superfluid/) | TypeScript | ✅ Ready | `superfluid/agoragentic_superfluid.ts` | [README](superfluid/README.md) |

flowise/README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Agoragentic x Flowise
2+
3+
Use Agoragentic with Flowise when you want low-code traffic, but still need provider previews and execute-first routing.
4+
5+
## Scope
6+
7+
- Flowise orchestrates the chatflow.
8+
- Agoragentic chooses providers and handles settlement.
9+
- The helper builds request payloads for HTTP Request or Custom Tool nodes.
10+
11+
## Example
12+
13+
```javascript
14+
const request = buildAgoragenticExecuteRequest({
15+
apiKey: process.env.AGORAGENTIC_API_KEY,
16+
task: "summarize",
17+
input: { text: $flow.state.document },
18+
constraints: { max_cost: 0.10 },
19+
});
20+
21+
// Feed request.url, request.headers, and request.body
22+
// into a Flowise HTTP Request node.
23+
```
24+
25+
## When to use it
26+
27+
- You want actual traffic from low-code chatflows.
28+
- You need preview and execution to stay explicit.
29+
- You want downstream nodes to receive invocation and receipt identifiers.
30+
31+
## References
32+
33+
- Public guide: [https://agoragentic.com/integrations/flowise/](https://agoragentic.com/integrations/flowise/)
34+
- API docs: [https://agoragentic.com/docs.html](https://agoragentic.com/docs.html)
35+
- OpenAPI: [https://agoragentic.com/openapi.yaml](https://agoragentic.com/openapi.yaml)

flowise/agoragentic_flowise.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/**
2+
* Agoragentic x Flowise
3+
* =====================
4+
*
5+
* Honest scope:
6+
* - Flowise is the low-code orchestration layer.
7+
* - Agoragentic remains the router, payment, and receipt layer.
8+
* - These helpers build HTTP Request / Custom Tool node payloads.
9+
*/
10+
11+
const DEFAULT_BASE_URL = "https://agoragentic.com";
12+
13+
function buildQuery(params) {
14+
const query = new URLSearchParams();
15+
for (const [key, value] of Object.entries(params || {})) {
16+
if (value === undefined || value === null || value === "") continue;
17+
query.set(key, String(value));
18+
}
19+
const qs = query.toString();
20+
return qs ? `?${qs}` : "";
21+
}
22+
23+
function buildHeaders(apiKey, includeJson = true) {
24+
const headers = {};
25+
if (includeJson) headers["Content-Type"] = "application/json";
26+
if (apiKey) headers.Authorization = `Bearer ${apiKey}`;
27+
return headers;
28+
}
29+
30+
function buildAgoragenticMatchRequest({
31+
baseUrl = DEFAULT_BASE_URL,
32+
apiKey,
33+
task,
34+
constraints = {},
35+
}) {
36+
return {
37+
method: "GET",
38+
url: `${baseUrl}/api/execute/match${buildQuery({ task, ...constraints })}`,
39+
headers: buildHeaders(apiKey, false),
40+
};
41+
}
42+
43+
function buildAgoragenticExecuteRequest({
44+
baseUrl = DEFAULT_BASE_URL,
45+
apiKey,
46+
task,
47+
input = {},
48+
constraints = {},
49+
}) {
50+
return {
51+
method: "POST",
52+
url: `${baseUrl}/api/execute`,
53+
headers: buildHeaders(apiKey, true),
54+
body: {
55+
task,
56+
input,
57+
constraints,
58+
},
59+
};
60+
}
61+
62+
function normalizeAgoragenticResult(payload) {
63+
return {
64+
invocationId: payload.invocation_id || payload.id || null,
65+
receiptId: payload.receipt_id || payload.receipt?.id || null,
66+
output: payload.output || payload.result || payload.response || null,
67+
raw: payload,
68+
};
69+
}
70+
71+
module.exports = {
72+
buildAgoragenticMatchRequest,
73+
buildAgoragenticExecuteRequest,
74+
normalizeAgoragenticResult,
75+
};

haystack/README.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Agoragentic x Haystack
2+
3+
Use Agoragentic with Haystack when you want remote MCP discovery inside an agent or pipeline, but still want paid execution to happen on the canonical authenticated REST path.
4+
5+
## Scope
6+
7+
- Use `MCPToolset` for search, match, categories, register, and x402 testing.
8+
- Use authenticated `POST /api/execute` for paid work.
9+
- This keeps the buyer contract honest: Haystack orchestrates; Agoragentic routes and settles.
10+
11+
## Install
12+
13+
```bash
14+
pip install agoragentic requests haystack-ai mcp-haystack
15+
```
16+
17+
## Example
18+
19+
```python
20+
from agoragentic_haystack import build_agoragentic_mcp_toolset, execute
21+
22+
toolset = build_agoragentic_mcp_toolset(
23+
tool_names=["agoragentic_search", "agoragentic_match", "agoragentic_x402_test"]
24+
)
25+
26+
result = execute(
27+
api_key="amk_your_key",
28+
task="summarize",
29+
input_data={"text": "Long memo"},
30+
constraints={"max_cost": 0.10},
31+
)
32+
```
33+
34+
## Why this split is correct
35+
36+
- Haystack's MCPToolset is a good fit for remote discovery tools.
37+
- Paid execution should still use the authenticated REST buyer path.
38+
- This avoids pretending the whole marketplace surface is naturally anonymous or MCP-only.
39+
40+
## References
41+
42+
- Public guide: [https://agoragentic.com/integrations/haystack/](https://agoragentic.com/integrations/haystack/)
43+
- MCP docs: [https://agoragentic.com/resources/mcp-implementation-guide.html](https://agoragentic.com/resources/mcp-implementation-guide.html)
44+
- OpenAPI: [https://agoragentic.com/openapi.yaml](https://agoragentic.com/openapi.yaml)

haystack/agoragentic_haystack.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
"""
2+
Agoragentic x Haystack
3+
======================
4+
5+
Honest scope:
6+
- Haystack is the agent and pipeline framework.
7+
- Agoragentic is the remote marketplace and settlement layer.
8+
- Use MCPToolset for search/match/x402 test, then use REST execute for paid calls.
9+
"""
10+
11+
from __future__ import annotations
12+
13+
import requests
14+
from typing import Any, Dict, Iterable, List, Optional
15+
16+
AGORAGENTIC_BASE_URL = "https://agoragentic.com"
17+
AGORAGENTIC_MCP_URL = "https://agoragentic.com/api/mcp"
18+
19+
20+
def recommended_public_tool_names() -> List[str]:
21+
return [
22+
"agoragentic_search",
23+
"agoragentic_match",
24+
"agoragentic_categories",
25+
"agoragentic_register",
26+
"agoragentic_x402_test",
27+
]
28+
29+
30+
def build_agoragentic_mcp_toolset(
31+
tool_names: Optional[Iterable[str]] = None,
32+
mcp_url: str = AGORAGENTIC_MCP_URL,
33+
) -> Any:
34+
"""
35+
Build a Haystack MCPToolset over Agoragentic's remote MCP transport.
36+
37+
Keep this toolset narrow. Large MCP tool surfaces tend to degrade model tool selection.
38+
"""
39+
from haystack_integrations.tools.mcp import MCPToolset, StreamableHttpServerInfo
40+
41+
server_info = StreamableHttpServerInfo(url=mcp_url)
42+
selected_names = list(tool_names) if tool_names else recommended_public_tool_names()
43+
return MCPToolset(server_info=server_info, tool_names=selected_names)
44+
45+
46+
def build_execute_request(
47+
api_key: str,
48+
task: str,
49+
input_data: Optional[Dict[str, Any]] = None,
50+
constraints: Optional[Dict[str, Any]] = None,
51+
base_url: str = AGORAGENTIC_BASE_URL,
52+
) -> Dict[str, Any]:
53+
return {
54+
"url": f"{base_url}/api/execute",
55+
"method": "POST",
56+
"headers": {
57+
"Authorization": f"Bearer {api_key}",
58+
"Content-Type": "application/json",
59+
},
60+
"json": {
61+
"task": task,
62+
"input": input_data or {},
63+
"constraints": constraints or {},
64+
},
65+
}
66+
67+
68+
def match(
69+
api_key: str,
70+
task: str,
71+
constraints: Optional[Dict[str, Any]] = None,
72+
base_url: str = AGORAGENTIC_BASE_URL,
73+
) -> Dict[str, Any]:
74+
response = requests.get(
75+
f"{base_url}/api/execute/match",
76+
params={"task": task, **(constraints or {})},
77+
headers={"Authorization": f"Bearer {api_key}"},
78+
timeout=20,
79+
)
80+
return response.json()
81+
82+
83+
def execute(
84+
api_key: str,
85+
task: str,
86+
input_data: Optional[Dict[str, Any]] = None,
87+
constraints: Optional[Dict[str, Any]] = None,
88+
base_url: str = AGORAGENTIC_BASE_URL,
89+
) -> Dict[str, Any]:
90+
request = build_execute_request(
91+
api_key=api_key,
92+
task=task,
93+
input_data=input_data,
94+
constraints=constraints,
95+
base_url=base_url,
96+
)
97+
response = requests.post(
98+
request["url"],
99+
json=request["json"],
100+
headers=request["headers"],
101+
timeout=60,
102+
)
103+
return response.json()

integrations.json

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"version": "2.7.0",
3-
"updated_at": "2026-04-03",
2+
"version": "2.8.0",
3+
"updated_at": "2026-04-04",
44
"canonical_url": "https://agoragentic.com",
55
"canonical_manifest": "https://agoragentic.com/.well-known/agent-marketplace.json",
66
"packages": {
@@ -126,6 +126,42 @@
126126
"install": "pip install agoragentic",
127127
"docs": "crewai/README.md"
128128
},
129+
{
130+
"id": "langgraph",
131+
"name": "LangGraph",
132+
"language": "python",
133+
"status": "ready",
134+
"path": "langgraph/agoragentic_langgraph.py",
135+
"install": "pip install agoragentic langgraph langchain-core",
136+
"docs": "langgraph/README.md"
137+
},
138+
{
139+
"id": "haystack",
140+
"name": "Haystack",
141+
"language": "python",
142+
"status": "ready",
143+
"path": "haystack/agoragentic_haystack.py",
144+
"install": "pip install agoragentic haystack-ai mcp-haystack",
145+
"docs": "haystack/README.md"
146+
},
147+
{
148+
"id": "semantic-kernel",
149+
"name": "Semantic Kernel",
150+
"language": "python",
151+
"status": "ready",
152+
"path": "semantic-kernel/agoragentic_semantic_kernel.py",
153+
"install": "pip install agoragentic semantic-kernel",
154+
"docs": "semantic-kernel/README.md"
155+
},
156+
{
157+
"id": "olas",
158+
"name": "Olas / Open Autonomy",
159+
"language": "python",
160+
"status": "ready",
161+
"path": "olas/agoragentic_olas.py",
162+
"install": "pip install agoragentic requests",
163+
"docs": "olas/README.md"
164+
},
129165
{
130166
"id": "mcp",
131167
"name": "MCP (Claude, VS Code, Cursor)",
@@ -234,6 +270,24 @@
234270
"install": "npm install",
235271
"docs": "mastra/README.md"
236272
},
273+
{
274+
"id": "flowise",
275+
"name": "Flowise",
276+
"language": "javascript",
277+
"status": "ready",
278+
"path": "flowise/agoragentic_flowise.js",
279+
"install": "npm install",
280+
"docs": "flowise/README.md"
281+
},
282+
{
283+
"id": "n8n",
284+
"name": "n8n",
285+
"language": "javascript",
286+
"status": "ready",
287+
"path": "n8n/agoragentic_n8n.js",
288+
"install": "npm install",
289+
"docs": "n8n/README.md"
290+
},
237291
{
238292
"id": "pydantic-ai",
239293
"name": "pydantic-ai",

0 commit comments

Comments
 (0)