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.
Files changed (106) hide show
  1. package/LICENSE +31 -0
  2. package/README.md +184 -24
  3. package/dist/a2aHandler.d.ts +20 -0
  4. package/dist/a2aHandler.d.ts.map +1 -0
  5. package/dist/a2aHandler.js +343 -0
  6. package/dist/a2aHandler.js.map +1 -0
  7. package/dist/agents/fodda-researcher/index.d.ts +38 -0
  8. package/dist/agents/fodda-researcher/index.d.ts.map +1 -0
  9. package/dist/agents/fodda-researcher/index.js +81 -0
  10. package/dist/agents/fodda-researcher/index.js.map +1 -0
  11. package/dist/agents/fodda-researcher/skills.d.ts +16 -0
  12. package/dist/agents/fodda-researcher/skills.d.ts.map +1 -0
  13. package/dist/agents/fodda-researcher/skills.js +163 -0
  14. package/dist/agents/fodda-researcher/skills.js.map +1 -0
  15. package/dist/brandTemplate.d.ts +14 -0
  16. package/dist/brandTemplate.d.ts.map +1 -0
  17. package/dist/brandTemplate.js +742 -0
  18. package/dist/brandTemplate.js.map +1 -0
  19. package/dist/catalogCache.d.ts +207 -0
  20. package/dist/catalogCache.d.ts.map +1 -0
  21. package/dist/catalogCache.js +837 -0
  22. package/dist/catalogCache.js.map +1 -0
  23. package/dist/editorialFill.d.ts +44 -0
  24. package/dist/editorialFill.d.ts.map +1 -0
  25. package/dist/editorialFill.js +377 -0
  26. package/dist/editorialFill.js.map +1 -0
  27. package/dist/enrichment.d.ts +74 -0
  28. package/dist/enrichment.d.ts.map +1 -0
  29. package/dist/enrichment.js +211 -0
  30. package/dist/enrichment.js.map +1 -0
  31. package/dist/errorHandling.d.ts +52 -0
  32. package/dist/errorHandling.d.ts.map +1 -0
  33. package/dist/errorHandling.js +338 -0
  34. package/dist/errorHandling.js.map +1 -0
  35. package/dist/index.d.ts +0 -1
  36. package/dist/index.js +672 -577
  37. package/dist/index.js.map +1 -1
  38. package/dist/pricingCache.d.ts +111 -0
  39. package/dist/pricingCache.d.ts.map +1 -0
  40. package/dist/pricingCache.js +454 -0
  41. package/dist/pricingCache.js.map +1 -0
  42. package/dist/queryCache.d.ts +25 -0
  43. package/dist/queryCache.d.ts.map +1 -0
  44. package/dist/queryCache.js +195 -0
  45. package/dist/queryCache.js.map +1 -0
  46. package/dist/searchTemplate.d.ts +16 -0
  47. package/dist/searchTemplate.d.ts.map +1 -0
  48. package/dist/searchTemplate.js +318 -0
  49. package/dist/searchTemplate.js.map +1 -0
  50. package/dist/sessionTracker.d.ts +39 -0
  51. package/dist/sessionTracker.d.ts.map +1 -0
  52. package/dist/sessionTracker.js +187 -0
  53. package/dist/sessionTracker.js.map +1 -0
  54. package/dist/skillClient.d.ts +142 -0
  55. package/dist/skillClient.d.ts.map +1 -0
  56. package/dist/skillClient.js +256 -0
  57. package/dist/skillClient.js.map +1 -0
  58. package/dist/svgVisuals.d.ts +77 -0
  59. package/dist/svgVisuals.d.ts.map +1 -0
  60. package/dist/svgVisuals.js +323 -0
  61. package/dist/svgVisuals.js.map +1 -0
  62. package/dist/systemPrompt.d.ts +26 -0
  63. package/dist/systemPrompt.d.ts.map +1 -0
  64. package/dist/systemPrompt.js +574 -0
  65. package/dist/systemPrompt.js.map +1 -0
  66. package/dist/test-waverunner-response.d.ts +2 -0
  67. package/dist/test-waverunner-response.d.ts.map +1 -0
  68. package/dist/test-waverunner-response.js +20 -0
  69. package/dist/test-waverunner-response.js.map +1 -0
  70. package/dist/test_analyst.d.ts +2 -0
  71. package/dist/test_analyst.d.ts.map +1 -0
  72. package/dist/test_analyst.js +39 -0
  73. package/dist/test_analyst.js.map +1 -0
  74. package/dist/test_analyst_local.d.ts +2 -0
  75. package/dist/test_analyst_local.d.ts.map +1 -0
  76. package/dist/test_analyst_local.js +51 -0
  77. package/dist/test_analyst_local.js.map +1 -0
  78. package/dist/test_live_mcp.js +1 -1
  79. package/dist/test_skills.d.ts +9 -0
  80. package/dist/test_skills.d.ts.map +1 -0
  81. package/dist/test_skills.js +267 -0
  82. package/dist/test_skills.js.map +1 -0
  83. package/dist/toolHandlers.d.ts +15 -0
  84. package/dist/toolHandlers.d.ts.map +1 -0
  85. package/dist/toolHandlers.js +2986 -0
  86. package/dist/toolHandlers.js.map +1 -0
  87. package/dist/tools.d.ts +78 -3
  88. package/dist/tools.d.ts.map +1 -1
  89. package/dist/tools.js +85 -292
  90. package/dist/tools.js.map +1 -1
  91. package/dist/trialTracker.d.ts +58 -0
  92. package/dist/trialTracker.d.ts.map +1 -0
  93. package/dist/trialTracker.js +179 -0
  94. package/dist/trialTracker.js.map +1 -0
  95. package/dist/types.d.ts +1 -0
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/verify_hmac.js +1 -1
  98. package/dist/verify_hmac.js.map +1 -1
  99. package/dist/verify_tools_endpoint.js +5 -5
  100. package/dist/verify_tools_endpoint.js.map +1 -1
  101. package/dist/widgetShell.d.ts +15 -0
  102. package/dist/widgetShell.d.ts.map +1 -0
  103. package/dist/widgetShell.js +151 -0
  104. package/dist/widgetShell.js.map +1 -0
  105. package/package.json +8 -4
  106. 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
- [![MCP Registry](https://img.shields.io/badge/MCP_Registry-io.github.piers--fawkes%2Ffodda-blue)](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.piers-fawkes/fodda)
8
+ [![MCP Registry](https://img.shields.io/badge/MCP_Registry-ai.fodda%2Fmcp--server-blue)](https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.fodda/mcp-server)
9
9
  [![npm](https://img.shields.io/npm/v/fodda-mcp)](https://www.npmjs.com/package/fodda-mcp)
10
- [![Version](https://img.shields.io/badge/version-1.4.0-green)](./CHANGELOG.md)
10
+ [![Version](https://img.shields.io/badge/version-1.30.0-green)](./CHANGELOG.md)
11
11
  [![License](https://img.shields.io/badge/license-Proprietary-red)](https://fodda.ai)
12
12
 
13
13
  </div>
@@ -16,16 +16,82 @@
16
16
 
17
17
  ## Quick Start
18
18
 
19
- ### Claude Code (Streamable HTTP fallback to SSE)
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
- ### OpenAI Frontier or Streamable HTTP Client
27
- Connect to the `/mcp` endpoint using HTTP `GET` to establish a stream and `POST` to execute:
28
- ```bash
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
- | `search_graph` | Hybrid keyword + semantic search on a knowledge graph | ❌ |
56
- | `get_neighbors` | Traverse from seed nodes to discover related concepts | ✅ |
57
- | `get_evidence` | Source signals, articles, and provenance for a node | ✅ |
58
- | `get_node` | Retrieve metadata for a single node by ID | ✅ |
59
- | `get_label_values` | Discover valid values for a node label/category | ✅ |
60
- | `psfk_overview` | Structured macro overview across industries and sectors | ❌ |
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
- All tools require `userId` and — except `psfk_overview` — a `graphId`.
175
+ ---
63
176
 
64
177
  ### Discovery Endpoints
65
178
 
66
179
  | Endpoint | Description |
67
180
  |----------|-------------|
68
- | `GET /mcp/tools` | Full tool schemas, versions, and capabilities |
69
- | `GET /health` | Health check (`{ "status": "ok" }`) |
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 fk_live_...
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 fk_live_..." } }
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 `io.github.piers-fawkes/fodda`.
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=io.github.piers-fawkes/fodda"
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"}