fodda-mcp 1.7.0 → 1.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +31 -0
- package/README.md +184 -24
- package/dist/a2aHandler.d.ts +20 -0
- package/dist/a2aHandler.d.ts.map +1 -0
- package/dist/a2aHandler.js +343 -0
- package/dist/a2aHandler.js.map +1 -0
- package/dist/agents/fodda-researcher/index.d.ts +38 -0
- package/dist/agents/fodda-researcher/index.d.ts.map +1 -0
- package/dist/agents/fodda-researcher/index.js +81 -0
- package/dist/agents/fodda-researcher/index.js.map +1 -0
- package/dist/agents/fodda-researcher/skills.d.ts +16 -0
- package/dist/agents/fodda-researcher/skills.d.ts.map +1 -0
- package/dist/agents/fodda-researcher/skills.js +163 -0
- package/dist/agents/fodda-researcher/skills.js.map +1 -0
- package/dist/brandTemplate.d.ts +14 -0
- package/dist/brandTemplate.d.ts.map +1 -0
- package/dist/brandTemplate.js +742 -0
- package/dist/brandTemplate.js.map +1 -0
- package/dist/catalogCache.d.ts +207 -0
- package/dist/catalogCache.d.ts.map +1 -0
- package/dist/catalogCache.js +837 -0
- package/dist/catalogCache.js.map +1 -0
- package/dist/editorialFill.d.ts +44 -0
- package/dist/editorialFill.d.ts.map +1 -0
- package/dist/editorialFill.js +377 -0
- package/dist/editorialFill.js.map +1 -0
- package/dist/enrichment.d.ts +74 -0
- package/dist/enrichment.d.ts.map +1 -0
- package/dist/enrichment.js +211 -0
- package/dist/enrichment.js.map +1 -0
- package/dist/errorHandling.d.ts +52 -0
- package/dist/errorHandling.d.ts.map +1 -0
- package/dist/errorHandling.js +338 -0
- package/dist/errorHandling.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +672 -577
- package/dist/index.js.map +1 -1
- package/dist/pricingCache.d.ts +111 -0
- package/dist/pricingCache.d.ts.map +1 -0
- package/dist/pricingCache.js +454 -0
- package/dist/pricingCache.js.map +1 -0
- package/dist/queryCache.d.ts +25 -0
- package/dist/queryCache.d.ts.map +1 -0
- package/dist/queryCache.js +195 -0
- package/dist/queryCache.js.map +1 -0
- package/dist/searchTemplate.d.ts +16 -0
- package/dist/searchTemplate.d.ts.map +1 -0
- package/dist/searchTemplate.js +318 -0
- package/dist/searchTemplate.js.map +1 -0
- package/dist/sessionTracker.d.ts +39 -0
- package/dist/sessionTracker.d.ts.map +1 -0
- package/dist/sessionTracker.js +187 -0
- package/dist/sessionTracker.js.map +1 -0
- package/dist/skillClient.d.ts +142 -0
- package/dist/skillClient.d.ts.map +1 -0
- package/dist/skillClient.js +256 -0
- package/dist/skillClient.js.map +1 -0
- package/dist/svgVisuals.d.ts +77 -0
- package/dist/svgVisuals.d.ts.map +1 -0
- package/dist/svgVisuals.js +323 -0
- package/dist/svgVisuals.js.map +1 -0
- package/dist/systemPrompt.d.ts +26 -0
- package/dist/systemPrompt.d.ts.map +1 -0
- package/dist/systemPrompt.js +574 -0
- package/dist/systemPrompt.js.map +1 -0
- package/dist/test-waverunner-response.d.ts +2 -0
- package/dist/test-waverunner-response.d.ts.map +1 -0
- package/dist/test-waverunner-response.js +20 -0
- package/dist/test-waverunner-response.js.map +1 -0
- package/dist/test_analyst.d.ts +2 -0
- package/dist/test_analyst.d.ts.map +1 -0
- package/dist/test_analyst.js +39 -0
- package/dist/test_analyst.js.map +1 -0
- package/dist/test_analyst_local.d.ts +2 -0
- package/dist/test_analyst_local.d.ts.map +1 -0
- package/dist/test_analyst_local.js +51 -0
- package/dist/test_analyst_local.js.map +1 -0
- package/dist/test_live_mcp.js +1 -1
- package/dist/test_skills.d.ts +9 -0
- package/dist/test_skills.d.ts.map +1 -0
- package/dist/test_skills.js +267 -0
- package/dist/test_skills.js.map +1 -0
- package/dist/toolHandlers.d.ts +15 -0
- package/dist/toolHandlers.d.ts.map +1 -0
- package/dist/toolHandlers.js +2986 -0
- package/dist/toolHandlers.js.map +1 -0
- package/dist/tools.d.ts +78 -3
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +85 -292
- package/dist/tools.js.map +1 -1
- package/dist/trialTracker.d.ts +58 -0
- package/dist/trialTracker.d.ts.map +1 -0
- package/dist/trialTracker.js +179 -0
- package/dist/trialTracker.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/verify_hmac.js +1 -1
- package/dist/verify_hmac.js.map +1 -1
- package/dist/verify_tools_endpoint.js +5 -5
- package/dist/verify_tools_endpoint.js.map +1 -1
- package/dist/widgetShell.d.ts +15 -0
- package/dist/widgetShell.d.ts.map +1 -0
- package/dist/widgetShell.js +151 -0
- package/dist/widgetShell.js.map +1 -0
- package/package.json +8 -4
- package/server.json +13 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Copyright (c) 2026 Fodda / PSFK. All rights reserved.
|
|
2
|
+
|
|
3
|
+
PROPRIETARY SOFTWARE LICENSE
|
|
4
|
+
|
|
5
|
+
This software and associated documentation files (the "Software") are the
|
|
6
|
+
proprietary and confidential property of Fodda / PSFK ("Fodda"). The Software
|
|
7
|
+
is licensed, not sold.
|
|
8
|
+
|
|
9
|
+
1. Grant. Subject to your compliance with these terms and the Fodda Terms of
|
|
10
|
+
Service (https://www.fodda.ai), Fodda grants you a limited, non-exclusive,
|
|
11
|
+
non-transferable, revocable license to install and run the Software solely
|
|
12
|
+
to connect to the Fodda service using a valid Fodda API key.
|
|
13
|
+
|
|
14
|
+
2. Restrictions. You may not (a) copy, modify, or create derivative works of
|
|
15
|
+
the Software except as required to run it as intended; (b) sell, sublicense,
|
|
16
|
+
rent, lease, or otherwise commercially exploit the Software; (c) reverse
|
|
17
|
+
engineer or attempt to derive the source of any non-public component; or
|
|
18
|
+
(d) remove or alter any proprietary notices.
|
|
19
|
+
|
|
20
|
+
3. Ownership. Fodda retains all right, title, and interest in and to the
|
|
21
|
+
Software, including all intellectual property rights.
|
|
22
|
+
|
|
23
|
+
4. No Warranty. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
24
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
25
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
|
|
26
|
+
|
|
27
|
+
5. Limitation of Liability. IN NO EVENT SHALL FODDA BE LIABLE FOR ANY CLAIM,
|
|
28
|
+
DAMAGES, OR OTHER LIABILITY ARISING FROM OR IN CONNECTION WITH THE SOFTWARE
|
|
29
|
+
OR ITS USE.
|
|
30
|
+
|
|
31
|
+
For licensing inquiries, contact hello@fodda.ai.
|
package/README.md
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
**Expert-curated knowledge graphs for AI agents** — PSFK Retail, Beauty, Sports and partner datasets via the Model Context Protocol.
|
|
7
7
|
|
|
8
|
-
[](https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.fodda/mcp-server)
|
|
9
9
|
[](https://www.npmjs.com/package/fodda-mcp)
|
|
10
|
-
[](./CHANGELOG.md)
|
|
11
11
|
[](https://fodda.ai)
|
|
12
12
|
|
|
13
13
|
</div>
|
|
@@ -16,16 +16,82 @@
|
|
|
16
16
|
|
|
17
17
|
## Quick Start
|
|
18
18
|
|
|
19
|
-
### Claude
|
|
19
|
+
### Claude (Web — Pro, Max, Team, Enterprise)
|
|
20
|
+
|
|
21
|
+
**⚡ Quick Connect:** Use this [Add to Claude](https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Fodda&connectorUrl=https%3A%2F%2Fmcp.fodda.ai%2Fmcp%3Fapi_key%3DYOUR_API_KEY%26user_id%3DYOUR_EMAIL) quick link (replace `YOUR_API_KEY` and `YOUR_EMAIL` in the URL before pressing enter).
|
|
22
|
+
|
|
23
|
+
**Manual Setup:**
|
|
24
|
+
1. In Claude, go to **Settings → Connectors → Add custom connector**
|
|
25
|
+
2. Enter URL: `https://mcp.fodda.ai/mcp?api_key=YOUR_API_KEY&user_id=YOUR_EMAIL`
|
|
26
|
+
3. Under **Advanced settings** — leave OAuth Client ID and Secret **blank** (Fodda uses API key auth, not OAuth)
|
|
27
|
+
4. Click **Add** — then start chatting with your Fodda knowledge graphs
|
|
28
|
+
|
|
29
|
+
> Get your API key at [app.fodda.ai](https://app.fodda.ai) → Account → MCP Integration.
|
|
30
|
+
> Your API key starts with `sk_live_...`
|
|
31
|
+
> Use the email address associated with your Fodda account for `user_id`.
|
|
32
|
+
|
|
33
|
+
### Claude Code (CLI — SSE)
|
|
20
34
|
|
|
21
35
|
```bash
|
|
22
36
|
claude mcp add --transport sse fodda https://mcp.fodda.ai/sse \
|
|
23
37
|
--header "Authorization: Bearer YOUR_API_KEY"
|
|
24
38
|
```
|
|
25
39
|
|
|
26
|
-
###
|
|
27
|
-
|
|
28
|
-
|
|
40
|
+
### Claude Enterprise
|
|
41
|
+
|
|
42
|
+
For Claude Enterprise with admin-managed connectors, your workspace admin can register the Fodda MCP server using the same Streamable HTTP endpoint (`https://mcp.fodda.ai/mcp`) via the Admin Console. See [Enterprise MCP Setup](./Enterprise_MCP_Setup.md) for full details.
|
|
43
|
+
|
|
44
|
+
### OpenAI (Responses API — Recommended)
|
|
45
|
+
|
|
46
|
+
Use OpenAI's native MCP support — no function definitions needed:
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
from openai import OpenAI
|
|
50
|
+
client = OpenAI()
|
|
51
|
+
|
|
52
|
+
resp = client.responses.create(
|
|
53
|
+
model="gpt-5",
|
|
54
|
+
tools=[{
|
|
55
|
+
"type": "mcp",
|
|
56
|
+
"server_label": "fodda",
|
|
57
|
+
"server_description": "Expert-curated knowledge graphs for retail, beauty, sports trends and earnings intelligence.",
|
|
58
|
+
"server_url": "https://mcp.fodda.ai/mcp",
|
|
59
|
+
"authorization": "Bearer YOUR_API_KEY",
|
|
60
|
+
"require_approval": "never",
|
|
61
|
+
}],
|
|
62
|
+
input="What are the top emerging retail trends?",
|
|
63
|
+
)
|
|
64
|
+
print(resp.output_text)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```javascript
|
|
68
|
+
import OpenAI from "openai";
|
|
69
|
+
const client = new OpenAI();
|
|
70
|
+
|
|
71
|
+
const resp = await client.responses.create({
|
|
72
|
+
model: "gpt-5",
|
|
73
|
+
tools: [{
|
|
74
|
+
type: "mcp",
|
|
75
|
+
server_label: "fodda",
|
|
76
|
+
server_description: "Expert-curated knowledge graphs for retail, beauty, sports trends and earnings intelligence.",
|
|
77
|
+
server_url: "https://mcp.fodda.ai/mcp",
|
|
78
|
+
authorization: "Bearer YOUR_API_KEY",
|
|
79
|
+
require_approval: "never",
|
|
80
|
+
}],
|
|
81
|
+
input: "What are the top emerging retail trends?",
|
|
82
|
+
});
|
|
83
|
+
console.log(resp.output_text);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
> **Tip:** To reduce latency with 30+ tools, use `allowed_tools` to filter:
|
|
87
|
+
> `"allowed_tools": ["search_graph", "search_statistics", "brand_tracker"]`
|
|
88
|
+
|
|
89
|
+
> **Legacy:** If you're using `chat.completions.create()` with function calling, define a custom function that calls the Fodda REST API. See [fodda.ai/connect](https://app.fodda.ai) for details.
|
|
90
|
+
|
|
91
|
+
### Generic Streamable HTTP Client
|
|
92
|
+
|
|
93
|
+
Connect to the `/mcp` endpoint using HTTP `POST` (Streamable HTTP) with `Authorization: Bearer YOUR_API_KEY`:
|
|
94
|
+
```
|
|
29
95
|
https://mcp.fodda.ai/mcp
|
|
30
96
|
```
|
|
31
97
|
|
|
@@ -50,40 +116,95 @@ Connect to `https://mcp.fodda.ai/sse` with an `Authorization: Bearer YOUR_API_KE
|
|
|
50
116
|
|
|
51
117
|
## Available Tools
|
|
52
118
|
|
|
119
|
+
The Fodda MCP server exposes a rich suite of 30 tools to search, analyze, brainstorm, and visualize trends, expert-curated knowledge graphs, and corporate documents.
|
|
120
|
+
|
|
121
|
+
### Discovery & Search
|
|
122
|
+
| Tool | Description | Deterministic |
|
|
123
|
+
|------|-------------|:---:|
|
|
124
|
+
| `list_graphs` | Discover available knowledge graphs, metadata, and routing instructions. | ✅ |
|
|
125
|
+
| `search_graph` | Hybrid keyword + semantic search across curated graphs for trend clusters and evidence. | ❌ |
|
|
126
|
+
| `search_statistics` | Search for specific quantitative metrics, indicators, and numeric data points. | ❌ |
|
|
127
|
+
| `search_insights` | Search expert quotes, qualitative signals, and professional interpretations. | ❌ |
|
|
128
|
+
| `get_label_values` | Discover valid values for a node label or category. | ✅ |
|
|
129
|
+
|
|
130
|
+
### Traversal & Graph Operations
|
|
131
|
+
| Tool | Description | Deterministic |
|
|
132
|
+
|------|-------------|:---:|
|
|
133
|
+
| `get_neighbors` | Traverse from seed nodes to discover related concept nodes and links. | ✅ |
|
|
134
|
+
| `get_node` | Retrieve detailed metadata, properties, and attributes for a single node by ID. | ✅ |
|
|
135
|
+
| `get_evidence` | Retrieve source signals, articles, citations, and provenance for a trend or node. | ✅ |
|
|
136
|
+
| `discover_adjacent_trends` | Find semantically similar trends to a given trend node. | ✅ |
|
|
137
|
+
|
|
138
|
+
### Intelligence Domains
|
|
139
|
+
| Tool | Description | Deterministic |
|
|
140
|
+
|------|-------------|:---:|
|
|
141
|
+
| `get_domain_intelligence` | Search all PSFK curated domain graphs (retail, beauty, sports, fashion, consumer electronics, F&B) in parallel. | ❌ |
|
|
142
|
+
| `get_expert_intelligence` | Query specialist industry graphs built by leading strategists and experts. | ❌ |
|
|
143
|
+
| `get_report_intelligence` | Search institutional report insights from DHL, PwC, Delta, and other partners. | ❌ |
|
|
144
|
+
|
|
145
|
+
### Earnings & Corporate Insights
|
|
146
|
+
| Tool | Description | Deterministic |
|
|
147
|
+
|------|-------------|:---:|
|
|
148
|
+
| `get_earnings_intelligence` | Query management commentary, business guidance, and Q&A from company earnings calls. | ❌ |
|
|
149
|
+
| `get_earnings_divergence` | Detect deflections, gaps, and divergence between analyst concerns and executive responses in earnings calls. | ❌ |
|
|
150
|
+
|
|
151
|
+
### Brand & Ideation
|
|
152
|
+
| Tool | Description | Deterministic |
|
|
153
|
+
|------|-------------|:---:|
|
|
154
|
+
| `brand_tracker` | Compile a comprehensive Brand Intelligence Profile across all knowledge graphs. | ❌ |
|
|
155
|
+
| `brainstorm_topic` | Graph-powered brainstorm map discovering unexpected connections and adjacent territories. | ❌ |
|
|
156
|
+
|
|
157
|
+
### Deep Research & Execution Agents
|
|
158
|
+
| Tool | Description | Deterministic |
|
|
159
|
+
|------|-------------|:---:|
|
|
160
|
+
| `deep_research_topic` | Launch an autonomous research session combining graphs with live web search. | ❌ |
|
|
161
|
+
| `check_research_status` | Check progress or retrieve the final narrative report of a deep research job. | ✅ |
|
|
162
|
+
| `get_supplemental_context` | Fetch macro context from up to 10 institutional data sources in a single query. | ❌ |
|
|
163
|
+
| `check_supplemental_status` | Retrieve output from a supplemental context job. | ✅ |
|
|
164
|
+
|
|
165
|
+
### Synthetic Analyst & Visualization
|
|
53
166
|
| Tool | Description | Deterministic |
|
|
54
167
|
|------|-------------|:---:|
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
168
|
+
| `list_analysts` | List available Synthetic Analyst expert personas. | ✅ |
|
|
169
|
+
| `consult_analyst` | Engage a Synthetic Analyst persona to synthesize answers with specialized voice. | ❌ |
|
|
170
|
+
| `generate_visual` | Generate branded SVG data visualizations (Cultural Shifts, Competitive Compass, Innovation Pathway, etc.). | ❌ |
|
|
171
|
+
> **Note on Dynamic Partner Skills:** When partner skills (such as Paralogy or Igloo) are enabled for a user's account, additional specialized tools (e.g. `paralogy_analyze_trends`, ideation tools) are dynamically registered on the MCP server and made available automatically.
|
|
172
|
+
>
|
|
173
|
+
> **Note on System Utilities:** The server also registers several helper and account management utilities (e.g., `get_my_account`, `toggle_graph_preference`, `update_user_profile`, `manage_scheduled_reports`, `send_feedback`) to allow the AI assistant to query subscription status, manage scheduled briefings, or save personalization settings directly.
|
|
61
174
|
|
|
62
|
-
|
|
175
|
+
---
|
|
63
176
|
|
|
64
177
|
### Discovery Endpoints
|
|
65
178
|
|
|
66
179
|
| Endpoint | Description |
|
|
67
180
|
|----------|-------------|
|
|
68
|
-
| `GET /
|
|
69
|
-
| `
|
|
70
|
-
| `GET /.well-known/mcp.json` | MCP server auto-discovery manifest |
|
|
181
|
+
| `GET /health` | Health check (`{ "status": "ok", "version": "..." }`) |
|
|
182
|
+
| `POST /mcp` | MCP endpoint — call the standard `tools/list` method on an initialized session to retrieve full tool schemas and capabilities |
|
|
71
183
|
|
|
72
184
|
---
|
|
73
185
|
|
|
74
186
|
## Authentication
|
|
75
187
|
|
|
188
|
+
**Preferred — HTTP header (used by the directory connection and all header-capable clients).**
|
|
76
189
|
Pass your Fodda API key as a Bearer token:
|
|
77
190
|
|
|
78
191
|
```
|
|
79
|
-
Authorization: Bearer
|
|
192
|
+
Authorization: Bearer sk_live_...
|
|
80
193
|
```
|
|
81
194
|
|
|
195
|
+
The server also accepts the key via an `X-API-Key: sk_live_...` header.
|
|
196
|
+
|
|
82
197
|
In MCP request `_meta`:
|
|
83
198
|
```json
|
|
84
|
-
{ "_meta": { "authorization": "Bearer
|
|
199
|
+
{ "_meta": { "authorization": "Bearer sk_live_..." } }
|
|
85
200
|
```
|
|
86
201
|
|
|
202
|
+
**Fallback — URL query parameter.** Some clients (e.g. the Claude.ai web *custom
|
|
203
|
+
connector* UI) cannot set custom request headers. For those, the key may be passed as
|
|
204
|
+
`?api_key=...`. This is provided only for compatibility; prefer header-based auth
|
|
205
|
+
wherever the client supports it, since URLs are more likely to be logged by
|
|
206
|
+
intermediaries. The server never returns your API key in tool output.
|
|
207
|
+
|
|
87
208
|
---
|
|
88
209
|
|
|
89
210
|
## Configuration
|
|
@@ -92,11 +213,8 @@ In MCP request `_meta`:
|
|
|
92
213
|
|----------|-------------|---------|
|
|
93
214
|
| `PORT` | HTTP server port (omit for stdio mode) | — |
|
|
94
215
|
| `FODDA_API_URL` | Upstream API base URL | `https://api.fodda.ai` |
|
|
95
|
-
| `FODDA_MCP_SECRET` | HMAC signing secret | — |
|
|
96
|
-
| `ALLOWED_TOOLS` | Comma-separated allowlist of Enterprise Tool scope | `search_graph,get_node,...` |
|
|
216
|
+
| `FODDA_MCP_SECRET` | HMAC signing secret for API requests | — |
|
|
97
217
|
| `NODE_ENV` | Environment (`development` / `production`) | `production` |
|
|
98
|
-
| `INTERNAL_TEST_KEYS` | Comma-separated keys for simulation mode | — |
|
|
99
|
-
| `RATE_LIMIT_RPM` | Requests per minute per API key | `60` |
|
|
100
218
|
|
|
101
219
|
---
|
|
102
220
|
|
|
@@ -124,15 +242,57 @@ PORT=8080 npm start
|
|
|
124
242
|
|
|
125
243
|
## MCP Registry
|
|
126
244
|
|
|
127
|
-
This server is published to the [Official MCP Registry](https://registry.modelcontextprotocol.io) as `
|
|
245
|
+
This server is published to the [Official MCP Registry](https://registry.modelcontextprotocol.io) as `ai.fodda/mcp-server`.
|
|
128
246
|
|
|
129
247
|
```bash
|
|
130
248
|
# Verify listing
|
|
131
|
-
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=
|
|
249
|
+
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.fodda/mcp-server"
|
|
132
250
|
```
|
|
133
251
|
|
|
134
252
|
---
|
|
135
253
|
|
|
254
|
+
## Privacy Policy
|
|
255
|
+
|
|
256
|
+
Full policy: **[https://www.fodda.ai/privacy](https://www.fodda.ai/privacy)**
|
|
257
|
+
|
|
258
|
+
Summary of how the Fodda MCP server handles data (the hosted policy is authoritative):
|
|
259
|
+
|
|
260
|
+
- **What we collect.** *Account information* (name, email, organization) to manage your
|
|
261
|
+
account; *usage data* — API queries (query text, graph accessed, timestamps) logged for
|
|
262
|
+
billing, service improvement, and abuse prevention; and standard *technical data* (IP,
|
|
263
|
+
browser type, referral URLs). We do **not** store the full content of AI-generated
|
|
264
|
+
responses. Your API key authenticates requests and is never returned in tool output.
|
|
265
|
+
- **How it's used.** To provide and improve the Services, process billing, enforce rate
|
|
266
|
+
limits and prevent abuse, communicate support/service updates, and meet legal
|
|
267
|
+
obligations. Requests are proxied to the Fodda API (`https://api.fodda.ai`) over TLS.
|
|
268
|
+
- **Third-party sharing.** We do **not** sell your personal information. Data is shared
|
|
269
|
+
only with service providers (e.g. payment processors, cloud hosting) under
|
|
270
|
+
confidentiality agreements, or when required by law.
|
|
271
|
+
- **AI model training.** Fodda does **not** use your queries or data to train AI models.
|
|
272
|
+
Knowledge graphs are expert-curated, not generated from user interactions.
|
|
273
|
+
- **Retention.** Account information is retained while your account is active; query logs
|
|
274
|
+
are retained for billing and analytics. You may request account/data deletion via the
|
|
275
|
+
contact below.
|
|
276
|
+
- **Security.** TLS-encrypted connections, API-key authentication, and secure cloud
|
|
277
|
+
infrastructure.
|
|
278
|
+
- **Contact.** Privacy inquiries: **[privacy@fodda.ai](mailto:privacy@fodda.ai)**.
|
|
279
|
+
|
|
280
|
+
See the [full hosted Privacy Policy](https://www.fodda.ai/privacy) (last updated
|
|
281
|
+
June 16, 2026) for the complete, authoritative terms.
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Support
|
|
286
|
+
|
|
287
|
+
- **Email:** [hello@fodda.ai](mailto:hello@fodda.ai)
|
|
288
|
+
- **Account & API keys:** [app.fodda.ai](https://app.fodda.ai) → Account → MCP Integration
|
|
289
|
+
- **Documentation:** [fodda.ai](https://www.fodda.ai)
|
|
290
|
+
|
|
291
|
+
To report a security issue, email **[hello@fodda.ai](mailto:hello@fodda.ai)** with
|
|
292
|
+
"SECURITY" in the subject line.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
136
296
|
## License
|
|
137
297
|
|
|
138
298
|
Proprietary — [fodda.ai](https://www.fodda.ai)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A (Agent-to-Agent) Protocol Handler
|
|
3
|
+
*
|
|
4
|
+
* Implements JSON-RPC 2.0 over HTTP per the A2A v1.0 specification.
|
|
5
|
+
* MVP: Supports `message/send` only — receives a natural language task,
|
|
6
|
+
* routes it through Fodda's existing tool handlers, and returns
|
|
7
|
+
* structured results as A2A Task artifacts.
|
|
8
|
+
*
|
|
9
|
+
* A2A vs MCP:
|
|
10
|
+
* - MCP: client agent calls Fodda tools directly (tool-level granularity)
|
|
11
|
+
* - A2A: client agent delegates a *task* in natural language; Fodda decides
|
|
12
|
+
* which tools to use and returns the synthesized result
|
|
13
|
+
*
|
|
14
|
+
* Spec: https://a2a-protocol.org/latest/specification/
|
|
15
|
+
*/
|
|
16
|
+
import type { Express } from 'express';
|
|
17
|
+
type FoddaRequestFn = (method: 'GET' | 'POST' | 'PATCH', path: string, apiKey: string, userId: string, body?: any) => Promise<any>;
|
|
18
|
+
export declare function registerA2ARoute(app: Express, foddaRequest: FoddaRequestFn): void;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=a2aHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2aHandler.d.ts","sourceRoot":"","sources":["../src/a2aHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAyJ1D,KAAK,cAAc,GAAG,CAClB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,GAAG,KACT,OAAO,CAAC,GAAG,CAAC,CAAC;AA4JlB,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,cAAc,GAC7B,IAAI,CA6IN"}
|