fodda-mcp 1.46.31 → 1.46.97
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/README.md +14 -94
- package/dist/agents/fodda-researcher/skills.d.ts +1 -1
- package/dist/agents/fodda-researcher/skills.d.ts.map +1 -1
- package/dist/agents/fodda-researcher/skills.js +1 -1
- package/dist/brandTemplate.d.ts +1 -1
- package/dist/brandTemplate.d.ts.map +1 -1
- package/dist/brandTemplate.js +162 -74
- package/dist/brandTemplate.js.map +1 -1
- package/dist/catalogCache.d.ts +29 -1
- package/dist/catalogCache.d.ts.map +1 -1
- package/dist/catalogCache.js +267 -16
- package/dist/catalogCache.js.map +1 -1
- package/dist/coverageRelevance.d.ts +97 -2
- package/dist/coverageRelevance.d.ts.map +1 -1
- package/dist/coverageRelevance.js +959 -164
- package/dist/coverageRelevance.js.map +1 -1
- package/dist/editorialFill.d.ts +5 -0
- package/dist/editorialFill.d.ts.map +1 -1
- package/dist/editorialFill.js +1 -1
- package/dist/editorialFill.js.map +1 -1
- package/dist/enrichment.d.ts +26 -0
- package/dist/enrichment.d.ts.map +1 -1
- package/dist/enrichment.js +394 -31
- package/dist/enrichment.js.map +1 -1
- package/dist/errorHandling.d.ts +35 -7
- package/dist/errorHandling.d.ts.map +1 -1
- package/dist/errorHandling.js +225 -155
- package/dist/errorHandling.js.map +1 -1
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +351 -143
- package/dist/index.js.map +1 -1
- package/dist/jobs/jlens_quarterly_sweep.d.ts +62 -0
- package/dist/jobs/jlens_quarterly_sweep.d.ts.map +1 -0
- package/dist/jobs/jlens_quarterly_sweep.js +160 -0
- package/dist/jobs/jlens_quarterly_sweep.js.map +1 -0
- package/dist/pricingCache.d.ts.map +1 -1
- package/dist/pricingCache.js +41 -1
- package/dist/pricingCache.js.map +1 -1
- package/dist/queryCache.d.ts.map +1 -1
- package/dist/queryCache.js +2 -0
- package/dist/queryCache.js.map +1 -1
- package/dist/reportBriefing.d.ts +89 -0
- package/dist/reportBriefing.d.ts.map +1 -0
- package/dist/reportBriefing.js +662 -0
- package/dist/reportBriefing.js.map +1 -0
- package/dist/searchTemplate.d.ts.map +1 -1
- package/dist/searchTemplate.js +65 -53
- package/dist/searchTemplate.js.map +1 -1
- package/dist/services/graphRouter.d.ts +7 -0
- package/dist/services/graphRouter.d.ts.map +1 -0
- package/dist/services/graphRouter.js +7 -0
- package/dist/services/graphRouter.js.map +1 -0
- package/dist/services/notifications.d.ts +49 -0
- package/dist/services/notifications.d.ts.map +1 -0
- package/dist/services/notifications.js +206 -0
- package/dist/services/notifications.js.map +1 -0
- package/dist/sessionTracker.d.ts +19 -2
- package/dist/sessionTracker.d.ts.map +1 -1
- package/dist/sessionTracker.js +69 -16
- package/dist/sessionTracker.js.map +1 -1
- package/dist/skillClient.d.ts.map +1 -1
- package/dist/skillClient.js +11 -6
- package/dist/skillClient.js.map +1 -1
- package/dist/svgVisuals.d.ts +17 -19
- package/dist/svgVisuals.d.ts.map +1 -1
- package/dist/svgVisuals.js +189 -233
- package/dist/svgVisuals.js.map +1 -1
- package/dist/systemPrompt.d.ts +7 -2
- package/dist/systemPrompt.d.ts.map +1 -1
- package/dist/systemPrompt.js +110 -68
- package/dist/systemPrompt.js.map +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +15 -0
- package/dist/telemetry.js.map +1 -1
- package/dist/test_adjacent_trends_polymorphic.d.ts +2 -0
- package/dist/test_adjacent_trends_polymorphic.d.ts.map +1 -0
- package/dist/test_adjacent_trends_polymorphic.js +154 -0
- package/dist/test_adjacent_trends_polymorphic.js.map +1 -0
- package/dist/test_book_a_call_live.js +18 -5
- package/dist/test_book_a_call_live.js.map +1 -1
- package/dist/test_byo_mcp_submission_clarity.d.ts +2 -0
- package/dist/test_byo_mcp_submission_clarity.d.ts.map +1 -0
- package/dist/test_byo_mcp_submission_clarity.js +142 -0
- package/dist/test_byo_mcp_submission_clarity.js.map +1 -0
- package/dist/test_capabilities_guidance.d.ts +2 -0
- package/dist/test_capabilities_guidance.d.ts.map +1 -0
- package/dist/test_capabilities_guidance.js +372 -0
- package/dist/test_capabilities_guidance.js.map +1 -0
- package/dist/test_client_provenance.d.ts +2 -0
- package/dist/test_client_provenance.d.ts.map +1 -0
- package/dist/test_client_provenance.js +77 -0
- package/dist/test_client_provenance.js.map +1 -0
- package/dist/test_connection_surface_cleanup.d.ts +2 -0
- package/dist/test_connection_surface_cleanup.d.ts.map +1 -0
- package/dist/test_connection_surface_cleanup.js +203 -0
- package/dist/test_connection_surface_cleanup.js.map +1 -0
- package/dist/test_consult_routing.d.ts +2 -0
- package/dist/test_consult_routing.d.ts.map +1 -0
- package/dist/test_consult_routing.js +86 -0
- package/dist/test_consult_routing.js.map +1 -0
- package/dist/test_consult_split.d.ts +2 -0
- package/dist/test_consult_split.d.ts.map +1 -0
- package/dist/test_consult_split.js +30 -0
- package/dist/test_consult_split.js.map +1 -0
- package/dist/test_coverage_relevance.js +111 -70
- package/dist/test_coverage_relevance.js.map +1 -1
- package/dist/test_coverage_replay.d.ts +2 -0
- package/dist/test_coverage_replay.d.ts.map +1 -0
- package/dist/test_coverage_replay.js +170 -0
- package/dist/test_coverage_replay.js.map +1 -0
- package/dist/test_dcr_and_legacy_deprecation.js +45 -50
- package/dist/test_dcr_and_legacy_deprecation.js.map +1 -1
- package/dist/test_demand_signal_logging.d.ts +2 -0
- package/dist/test_demand_signal_logging.d.ts.map +1 -0
- package/dist/test_demand_signal_logging.js +92 -0
- package/dist/test_demand_signal_logging.js.map +1 -0
- package/dist/test_earnings_activity_scope.d.ts +5 -0
- package/dist/test_earnings_activity_scope.d.ts.map +1 -0
- package/dist/test_earnings_activity_scope.js +101 -0
- package/dist/test_earnings_activity_scope.js.map +1 -0
- package/dist/test_earnings_divergence_live.d.ts +5 -0
- package/dist/test_earnings_divergence_live.d.ts.map +1 -0
- package/dist/test_earnings_divergence_live.js +135 -0
- package/dist/test_earnings_divergence_live.js.map +1 -0
- package/dist/test_earnings_hygiene_and_binding.d.ts +5 -0
- package/dist/test_earnings_hygiene_and_binding.d.ts.map +1 -0
- package/dist/test_earnings_hygiene_and_binding.js +104 -0
- package/dist/test_earnings_hygiene_and_binding.js.map +1 -0
- package/dist/test_exec_quotes_render.d.ts +2 -0
- package/dist/test_exec_quotes_render.d.ts.map +1 -0
- package/dist/test_exec_quotes_render.js +86 -0
- package/dist/test_exec_quotes_render.js.map +1 -0
- package/dist/test_expert_intro.d.ts +2 -0
- package/dist/test_expert_intro.d.ts.map +1 -0
- package/dist/test_expert_intro.js +57 -0
- package/dist/test_expert_intro.js.map +1 -0
- package/dist/test_expert_layer.d.ts +11 -0
- package/dist/test_expert_layer.d.ts.map +1 -0
- package/dist/test_expert_layer.js +356 -0
- package/dist/test_expert_layer.js.map +1 -0
- package/dist/test_gap_alert.js +8 -0
- package/dist/test_gap_alert.js.map +1 -1
- package/dist/test_grok_offering_surfaces.d.ts +2 -0
- package/dist/test_grok_offering_surfaces.d.ts.map +1 -0
- package/dist/test_grok_offering_surfaces.js +155 -0
- package/dist/test_grok_offering_surfaces.js.map +1 -0
- package/dist/test_human_agent_live.d.ts +2 -0
- package/dist/test_human_agent_live.d.ts.map +1 -0
- package/dist/test_human_agent_live.js +48 -0
- package/dist/test_human_agent_live.js.map +1 -0
- package/dist/test_identity_gap.d.ts +2 -0
- package/dist/test_identity_gap.d.ts.map +1 -0
- package/dist/test_identity_gap.js +171 -0
- package/dist/test_identity_gap.js.map +1 -0
- package/dist/test_intelligence_and_verifier.d.ts +17 -0
- package/dist/test_intelligence_and_verifier.d.ts.map +1 -0
- package/dist/test_intelligence_and_verifier.js +162 -0
- package/dist/test_intelligence_and_verifier.js.map +1 -0
- package/dist/test_latency_mcp_brief5.d.ts +12 -0
- package/dist/test_latency_mcp_brief5.d.ts.map +1 -0
- package/dist/test_latency_mcp_brief5.js +200 -0
- package/dist/test_latency_mcp_brief5.js.map +1 -0
- package/dist/test_limit_and_credit_card_capture.d.ts +21 -0
- package/dist/test_limit_and_credit_card_capture.d.ts.map +1 -0
- package/dist/test_limit_and_credit_card_capture.js +216 -0
- package/dist/test_limit_and_credit_card_capture.js.map +1 -0
- package/dist/test_list_graphs_topics.js +1 -1
- package/dist/test_list_graphs_topics.js.map +1 -1
- package/dist/test_live_deployed_mcp_search.d.ts +2 -0
- package/dist/test_live_deployed_mcp_search.d.ts.map +1 -0
- package/dist/test_live_deployed_mcp_search.js +85 -0
- package/dist/test_live_deployed_mcp_search.js.map +1 -0
- package/dist/test_live_deployed_split.d.ts +2 -0
- package/dist/test_live_deployed_split.d.ts.map +1 -0
- package/dist/test_live_deployed_split.js +72 -0
- package/dist/test_live_deployed_split.js.map +1 -0
- package/dist/test_live_endpoint_runner.js +2 -2
- package/dist/test_live_endpoint_runner.js.map +1 -1
- package/dist/test_live_mcp.js +1 -1
- package/dist/test_live_mcp.js.map +1 -1
- package/dist/test_live_neil_widget.d.ts +2 -0
- package/dist/test_live_neil_widget.d.ts.map +1 -0
- package/dist/test_live_neil_widget.js +84 -0
- package/dist/test_live_neil_widget.js.map +1 -0
- package/dist/test_longpoll_status.d.ts +2 -0
- package/dist/test_longpoll_status.d.ts.map +1 -0
- package/dist/test_longpoll_status.js +117 -0
- package/dist/test_longpoll_status.js.map +1 -0
- package/dist/test_mcp_find_expert_and_vocabulary_routing.d.ts +2 -0
- package/dist/test_mcp_find_expert_and_vocabulary_routing.d.ts.map +1 -0
- package/dist/test_mcp_find_expert_and_vocabulary_routing.js +130 -0
- package/dist/test_mcp_find_expert_and_vocabulary_routing.js.map +1 -0
- package/dist/test_next_moves.js +644 -279
- package/dist/test_next_moves.js.map +1 -1
- package/dist/test_next_moves_transcripts.js +122 -40
- package/dist/test_next_moves_transcripts.js.map +1 -1
- package/dist/test_on_request_caller_identity.d.ts +13 -0
- package/dist/test_on_request_caller_identity.d.ts.map +1 -0
- package/dist/test_on_request_caller_identity.js +131 -0
- package/dist/test_on_request_caller_identity.js.map +1 -0
- package/dist/test_on_request_intercept.d.ts +10 -0
- package/dist/test_on_request_intercept.d.ts.map +1 -0
- package/dist/test_on_request_intercept.js +95 -0
- package/dist/test_on_request_intercept.js.map +1 -0
- package/dist/test_onboarding_consent_and_errors.d.ts +2 -0
- package/dist/test_onboarding_consent_and_errors.d.ts.map +1 -0
- package/dist/test_onboarding_consent_and_errors.js +110 -0
- package/dist/test_onboarding_consent_and_errors.js.map +1 -0
- package/dist/test_onboarding_live_scenarios.d.ts +2 -0
- package/dist/test_onboarding_live_scenarios.d.ts.map +1 -0
- package/dist/test_onboarding_live_scenarios.js +189 -0
- package/dist/test_onboarding_live_scenarios.js.map +1 -0
- package/dist/test_referral_live.d.ts +2 -0
- package/dist/test_referral_live.d.ts.map +1 -0
- package/dist/test_referral_live.js +33 -0
- package/dist/test_referral_live.js.map +1 -0
- package/dist/test_referral_piers.d.ts +2 -0
- package/dist/test_referral_piers.d.ts.map +1 -0
- package/dist/test_referral_piers.js +33 -0
- package/dist/test_referral_piers.js.map +1 -0
- package/dist/test_report_editorial_briefing.d.ts +21 -0
- package/dist/test_report_editorial_briefing.d.ts.map +1 -0
- package/dist/test_report_editorial_briefing.js +356 -0
- package/dist/test_report_editorial_briefing.js.map +1 -0
- package/dist/test_search_graph_quality.d.ts +2 -0
- package/dist/test_search_graph_quality.d.ts.map +1 -0
- package/dist/test_search_graph_quality.js +493 -0
- package/dist/test_search_graph_quality.js.map +1 -0
- package/dist/test_service_to_service_auth.d.ts +2 -0
- package/dist/test_service_to_service_auth.d.ts.map +1 -0
- package/dist/test_service_to_service_auth.js +199 -0
- package/dist/test_service_to_service_auth.js.map +1 -0
- package/dist/test_sources_live.d.ts +2 -0
- package/dist/test_sources_live.d.ts.map +1 -0
- package/dist/test_sources_live.js +30 -0
- package/dist/test_sources_live.js.map +1 -0
- package/dist/test_specialist_and_analyst_tiers.d.ts +2 -0
- package/dist/test_specialist_and_analyst_tiers.d.ts.map +1 -0
- package/dist/test_specialist_and_analyst_tiers.js +155 -0
- package/dist/test_specialist_and_analyst_tiers.js.map +1 -0
- package/dist/test_v2_2_visual_hardening.d.ts +5 -0
- package/dist/test_v2_2_visual_hardening.d.ts.map +1 -0
- package/dist/test_v2_2_visual_hardening.js +333 -0
- package/dist/test_v2_2_visual_hardening.js.map +1 -0
- package/dist/test_verify_deprecate_render_spec.d.ts +2 -0
- package/dist/test_verify_deprecate_render_spec.d.ts.map +1 -0
- package/dist/test_verify_deprecate_render_spec.js +217 -0
- package/dist/test_verify_deprecate_render_spec.js.map +1 -0
- package/dist/test_verify_neil_demo.d.ts +2 -0
- package/dist/test_verify_neil_demo.d.ts.map +1 -0
- package/dist/test_verify_neil_demo.js +149 -0
- package/dist/test_verify_neil_demo.js.map +1 -0
- package/dist/test_waitable_research_and_grounded_links.d.ts +2 -0
- package/dist/test_waitable_research_and_grounded_links.d.ts.map +1 -0
- package/dist/test_waitable_research_and_grounded_links.js +129 -0
- package/dist/test_waitable_research_and_grounded_links.js.map +1 -0
- package/dist/test_widget_guards.d.ts +2 -0
- package/dist/test_widget_guards.d.ts.map +1 -0
- package/dist/test_widget_guards.js +229 -0
- package/dist/test_widget_guards.js.map +1 -0
- package/dist/test_zero_retention_alerts.d.ts +14 -0
- package/dist/test_zero_retention_alerts.d.ts.map +1 -0
- package/dist/test_zero_retention_alerts.js +76 -0
- package/dist/test_zero_retention_alerts.js.map +1 -0
- package/dist/toolHandlers.d.ts +38 -1
- package/dist/toolHandlers.d.ts.map +1 -1
- package/dist/toolHandlers.js +3856 -938
- package/dist/toolHandlers.js.map +1 -1
- package/dist/tools.d.ts +20 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +25 -4
- package/dist/tools.js.map +1 -1
- package/dist/verify_discoverability.d.ts +2 -0
- package/dist/verify_discoverability.d.ts.map +1 -0
- package/dist/verify_discoverability.js +53 -0
- package/dist/verify_discoverability.js.map +1 -0
- package/dist/verify_tools_endpoint.js +16 -3
- package/dist/verify_tools_endpoint.js.map +1 -1
- package/dist/widgetShell.d.ts +2 -2
- package/dist/widgetShell.d.ts.map +1 -1
- package/dist/widgetShell.js +1 -1
- package/dist/widgetShell.js.map +1 -1
- package/package.json +1 -1
- package/server.json +4 -32
- package/dist/oauthRegisterShim.d.ts +0 -13
- package/dist/oauthRegisterShim.d.ts.map +0 -1
- package/dist/oauthRegisterShim.js +0 -83
- package/dist/oauthRegisterShim.js.map +0 -1
package/dist/tools.d.ts
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* Tool Metadata — version constants for the Fodda MCP server.
|
|
3
3
|
*
|
|
4
4
|
* The actual tool registrations live in toolHandlers.ts.
|
|
5
|
+
* Research and consult tools return clean data payloads accompanied by
|
|
6
|
+
* structured `next_moves` recommendations (thread, specific, shelf, scope)
|
|
7
|
+
* rather than imperative server-rendered closing blocks.
|
|
5
8
|
* This file provides version strings used by index.ts and toolHandlers.ts.
|
|
6
9
|
*/
|
|
7
10
|
export declare const MCP_SERVER_VERSION: string;
|
|
@@ -82,6 +85,8 @@ export declare const TOOL_VERSIONS: {
|
|
|
82
85
|
deep_research_topic: string;
|
|
83
86
|
read_url: string;
|
|
84
87
|
list_analysts: string;
|
|
88
|
+
find_expert: string;
|
|
89
|
+
request_expert_intro: string;
|
|
85
90
|
consult_analyst: string;
|
|
86
91
|
consult_human_agent: string;
|
|
87
92
|
toggle_graph_preference: string;
|
|
@@ -89,7 +94,22 @@ export declare const TOOL_VERSIONS: {
|
|
|
89
94
|
get_validated_trends: string;
|
|
90
95
|
get_capabilities: string;
|
|
91
96
|
expert_onboarding_research: string;
|
|
97
|
+
get_domain_intelligence: string;
|
|
98
|
+
get_specialist_intelligence: string;
|
|
99
|
+
get_expert_intelligence: string;
|
|
100
|
+
get_report_intelligence: string;
|
|
92
101
|
draft_linkedin_post: string;
|
|
93
102
|
draft_linkedin_article: string;
|
|
103
|
+
begin_expert_onboarding: string;
|
|
104
|
+
submit_basic_info: string;
|
|
105
|
+
submit_mcp_source: string;
|
|
106
|
+
finalize_byo_mcp_onboarding: string;
|
|
107
|
+
submit_expertise_analysis: string;
|
|
108
|
+
get_detected_themes: string;
|
|
109
|
+
confirm_themes: string;
|
|
110
|
+
get_onboarding_status: string;
|
|
111
|
+
schedule_interview: string;
|
|
112
|
+
verify_market_claim: string;
|
|
113
|
+
get_intelligence_dossier: string;
|
|
94
114
|
};
|
|
95
115
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,eAAO,MAAM,kBAAkB,EAAE,MAAoB,CAAC;AAEtD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8GzB,CAAC"}
|
package/dist/tools.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* Tool Metadata — version constants for the Fodda MCP server.
|
|
3
3
|
*
|
|
4
4
|
* The actual tool registrations live in toolHandlers.ts.
|
|
5
|
+
* Research and consult tools return clean data payloads accompanied by
|
|
6
|
+
* structured `next_moves` recommendations (thread, specific, shelf, scope)
|
|
7
|
+
* rather than imperative server-rendered closing blocks.
|
|
5
8
|
* This file provides version strings used by index.ts and toolHandlers.ts.
|
|
6
9
|
*/
|
|
7
10
|
import { createRequire } from 'module';
|
|
@@ -16,7 +19,7 @@ export const TOOL_VERSIONS = {
|
|
|
16
19
|
get_node: "1.0.0",
|
|
17
20
|
get_label_values: "1.2.0",
|
|
18
21
|
psfk_overview: "1.0.0",
|
|
19
|
-
discover_adjacent_trends: "1.
|
|
22
|
+
discover_adjacent_trends: "1.1.0",
|
|
20
23
|
brand_tracker: "1.0.0",
|
|
21
24
|
get_census_retail_snapshot: "1.0.0",
|
|
22
25
|
get_census_demographics_snapshot: "1.1.0",
|
|
@@ -89,16 +92,34 @@ export const TOOL_VERSIONS = {
|
|
|
89
92
|
update_user_profile: "1.0.0",
|
|
90
93
|
deep_research_topic: "1.0.0",
|
|
91
94
|
read_url: "1.0.0",
|
|
92
|
-
list_analysts: "1.
|
|
95
|
+
list_analysts: "1.2.0",
|
|
96
|
+
find_expert: "1.1.0",
|
|
97
|
+
request_expert_intro: "1.0.0",
|
|
93
98
|
consult_analyst: "1.0.0",
|
|
94
|
-
consult_human_agent: "1.
|
|
99
|
+
consult_human_agent: "1.2.0",
|
|
95
100
|
toggle_graph_preference: "1.0.0",
|
|
96
101
|
get_company_earnings: "1.0.0",
|
|
97
102
|
get_validated_trends: "1.0.0",
|
|
98
103
|
get_capabilities: "1.0.0",
|
|
99
|
-
expert_onboarding_research: "1.
|
|
104
|
+
expert_onboarding_research: "1.2.0",
|
|
105
|
+
get_domain_intelligence: "1.0.0",
|
|
106
|
+
get_specialist_intelligence: "1.0.0",
|
|
107
|
+
get_expert_intelligence: "1.0.0",
|
|
108
|
+
get_report_intelligence: "1.1.0",
|
|
100
109
|
// v1.33.0 — LinkedIn content tools (evidence engine heads)
|
|
101
110
|
draft_linkedin_post: "1.0.0",
|
|
102
111
|
draft_linkedin_article: "1.0.0",
|
|
112
|
+
// Expert Onboarding tools
|
|
113
|
+
begin_expert_onboarding: "1.1.0",
|
|
114
|
+
submit_basic_info: "1.2.0",
|
|
115
|
+
submit_mcp_source: "1.1.0",
|
|
116
|
+
finalize_byo_mcp_onboarding: "1.1.0",
|
|
117
|
+
submit_expertise_analysis: "1.1.0",
|
|
118
|
+
get_detected_themes: "1.2.0",
|
|
119
|
+
confirm_themes: "1.2.0",
|
|
120
|
+
get_onboarding_status: "1.2.0",
|
|
121
|
+
schedule_interview: "1.1.0",
|
|
122
|
+
verify_market_claim: "1.0.0",
|
|
123
|
+
get_intelligence_dossier: "1.0.0",
|
|
103
124
|
};
|
|
104
125
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAW,GAAG,CAAC,OAAO,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,OAAO;IACrB,aAAa,EAAE,OAAO;IACtB,YAAY,EAAE,OAAO;IACrB,QAAQ,EAAE,OAAO;IACjB,gBAAgB,EAAE,OAAO;IACzB,aAAa,EAAE,OAAO;IACtB,wBAAwB,EAAE,OAAO;IACjC,aAAa,EAAE,OAAO;IACtB,0BAA0B,EAAE,OAAO;IACnC,gCAAgC,EAAE,OAAO;IACzC,0BAA0B,EAAE,OAAO;IACnC,uBAAuB,EAAE,OAAO;IAChC,6BAA6B,EAAE,OAAO;IACtC,yBAAyB,EAAE,OAAO;IAClC,eAAe,EAAE,OAAO;IACxB,mBAAmB,EAAE,OAAO;IAC5B,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,OAAO;IAClC,mBAAmB,EAAE,OAAO;IAC5B,0BAA0B,EAAE,OAAO;IACnC,4BAA4B,EAAE,OAAO;IACrC,iBAAiB,EAAE,OAAO;IAC1B,eAAe,EAAE,OAAO;IACxB,sBAAsB,EAAE,OAAO;IAC/B,mBAAmB,EAAE,OAAO;IAC5B,0BAA0B,EAAE,OAAO;IACnC,4BAA4B,EAAE,OAAO;IACrC,yBAAyB,EAAE,OAAO;IAClC,0BAA0B,EAAE,OAAO;IACnC,4BAA4B,EAAE,OAAO;IACrC,0BAA0B,EAAE,OAAO;IACnC,mBAAmB,EAAE,OAAO;IAC5B,sBAAsB,EAAE,OAAO;IAC/B,+BAA+B;IAC/B,wBAAwB,EAAE,OAAO;IACjC,qBAAqB,EAAE,OAAO;IAC9B,mBAAmB,EAAE,OAAO;IAC5B,yBAAyB,EAAE,OAAO;IAClC,0BAA0B,EAAE,OAAO;IACnC,mBAAmB,EAAE,OAAO;IAC5B,qBAAqB,EAAE,OAAO;IAC9B,mBAAmB,EAAE,OAAO;IAC5B,uBAAuB,EAAE,OAAO;IAChC,+BAA+B;IAC/B,mBAAmB,EAAE,OAAO;IAC5B,oBAAoB,EAAE,OAAO;IAC7B,mBAAmB,EAAE,OAAO;IAC5B,uBAAuB,EAAE,OAAO;IAChC,mBAAmB,EAAE,OAAO;IAC5B,mBAAmB,EAAE,OAAO;IAC5B,uBAAuB,EAAE,OAAO;IAChC,oBAAoB,EAAE,OAAO;IAC7B,uBAAuB,EAAE,OAAO;IAChC,mCAAmC;IACnC,mBAAmB,EAAE,OAAO;IAC5B,mBAAmB,EAAE,OAAO;IAC5B,wBAAwB,EAAE,OAAO;IACjC,mBAAmB,EAAE,OAAO;IAC5B,oBAAoB,EAAE,OAAO;IAC7B,qBAAqB,EAAE,OAAO;IAC9B,mBAAmB,EAAE,OAAO;IAC5B,mBAAmB,EAAE,OAAO;IAC5B,mBAAmB,EAAE,OAAO;IAC5B,mBAAmB,EAAE,OAAO;IAC5B,eAAe,EAAE,OAAO;IACxB,qBAAqB,EAAE,OAAO;IAC9B,qBAAqB,EAAE,OAAO;IAC9B,2CAA2C;IAC3C,qBAAqB,EAAE,OAAO;IAC9B,uBAAuB,EAAE,OAAO;IAChC,mBAAmB,EAAE,OAAO;IAC5B,oBAAoB,EAAE,OAAO;IAC7B,gBAAgB;IAChB,oBAAoB,EAAE,OAAO;IAC7B,aAAa,EAAE,OAAO;IACtB,cAAc,EAAE,OAAO;IACvB,mBAAmB,EAAE,OAAO;IAC5B,mBAAmB,EAAE,OAAO;IAC5B,QAAQ,EAAE,OAAO;IACjB,aAAa,EAAE,OAAO;IACtB,WAAW,EAAE,OAAO;IACpB,oBAAoB,EAAE,OAAO;IAC7B,eAAe,EAAE,OAAO;IACxB,mBAAmB,EAAE,OAAO;IAC5B,uBAAuB,EAAE,OAAO;IAChC,oBAAoB,EAAE,OAAO;IAC7B,oBAAoB,EAAE,OAAO;IAC7B,gBAAgB,EAAE,OAAO;IACzB,0BAA0B,EAAE,OAAO;IACnC,uBAAuB,EAAE,OAAO;IAChC,2BAA2B,EAAE,OAAO;IACpC,uBAAuB,EAAE,OAAO;IAChC,uBAAuB,EAAE,OAAO;IAChC,2DAA2D;IAC3D,mBAAmB,EAAE,OAAO;IAC5B,sBAAsB,EAAE,OAAO;IAC/B,0BAA0B;IAC1B,uBAAuB,EAAE,OAAO;IAChC,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,2BAA2B,EAAE,OAAO;IACpC,yBAAyB,EAAE,OAAO;IAClC,mBAAmB,EAAE,OAAO;IAC5B,cAAc,EAAE,OAAO;IACvB,qBAAqB,EAAE,OAAO;IAC9B,kBAAkB,EAAE,OAAO;IAC3B,mBAAmB,EAAE,OAAO;IAC5B,wBAAwB,EAAE,OAAO;CACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify_discoverability.d.ts","sourceRoot":"","sources":["../src/verify_discoverability.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { buildSystemPrompt } from './systemPrompt.js';
|
|
2
|
+
import { OFFERING_SCOPED_TOOLS } from './index.js';
|
|
3
|
+
async function verify() {
|
|
4
|
+
console.log('=== VERIFYING FODDA MCP DISCOVERABILITY REFACTOR ===\n');
|
|
5
|
+
// 1. Verify buildSystemPrompt() output
|
|
6
|
+
const prompt = buildSystemPrompt();
|
|
7
|
+
console.log(`[Instructions Length]: ${prompt.length} characters (previously ~65,834)`);
|
|
8
|
+
if (prompt.length > 35000) {
|
|
9
|
+
console.error('❌ Instructions length is too large (> 35k characters)');
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
console.log('✅ Instructions size substantially reduced');
|
|
14
|
+
}
|
|
15
|
+
const first600 = prompt.slice(0, 650);
|
|
16
|
+
console.log('\n[Opening Instructions Block (First 600 Chars)]:\n' + first600);
|
|
17
|
+
if (!prompt.includes("Fodda's main capabilities / features")) {
|
|
18
|
+
console.error('❌ Instructions missing marquee capabilities opener!');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.log('✅ Marquee capabilities opener present in front position');
|
|
23
|
+
}
|
|
24
|
+
if (!prompt.includes('If asked — in any words — what Fodda offers')) {
|
|
25
|
+
console.error('❌ Instructions missing phrasing scope rule!');
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
console.log('✅ Phrasing scope rule present');
|
|
30
|
+
}
|
|
31
|
+
// 2. Verify scoped endpoints have get_capabilities
|
|
32
|
+
const endpoints = ['brand-intelligence', 'topic-research', 'deep-research', 'earnings-intelligence', 'expert-consult'];
|
|
33
|
+
for (const ep of endpoints) {
|
|
34
|
+
const tools = OFFERING_SCOPED_TOOLS[ep];
|
|
35
|
+
if (!tools || !tools.includes('get_capabilities')) {
|
|
36
|
+
console.error(`❌ get_capabilities missing from scoped endpoint: ${ep}`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
console.log('✅ get_capabilities present on all 5 scoped endpoints in OFFERING_SCOPED_TOOLS');
|
|
41
|
+
if (!OFFERING_SCOPED_TOOLS['earnings-intelligence']?.includes('get_validated_trends') ||
|
|
42
|
+
!OFFERING_SCOPED_TOOLS['topic-research']?.includes('get_validated_trends')) {
|
|
43
|
+
console.error('❌ get_validated_trends missing from earnings-intelligence or topic-research endpoints');
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
console.log('✅ get_validated_trends present on earnings-intelligence and topic-research endpoints');
|
|
47
|
+
console.log('\n✅ ALL DISCOVERABILITY CHECKS PASSED SUCCESSFULLY!');
|
|
48
|
+
}
|
|
49
|
+
verify().catch(err => {
|
|
50
|
+
console.error('❌ Verification failed:', err);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=verify_discoverability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify_discoverability.js","sourceRoot":"","sources":["../src/verify_discoverability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,KAAK,UAAU,MAAM;IACjB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IAEtE,uCAAuC;IACvC,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,MAAM,kCAAkC,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,qDAAqD,GAAG,QAAQ,CAAC,CAAC;IAE9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sCAAsC,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,6CAA6C,CAAC,EAAE,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACjD,CAAC;IAED,mDAAmD;IACnD,MAAM,SAAS,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;IACvH,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAE7F,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC;QACjF,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;QACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;IAEpG,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -9,10 +9,23 @@ async function runTest() {
|
|
|
9
9
|
});
|
|
10
10
|
mcp.stdout.on('data', (data) => console.log(`[Server]: ${data}`));
|
|
11
11
|
mcp.stderr.on('data', (data) => console.error(`[Server Error]: ${data}`));
|
|
12
|
-
//
|
|
13
|
-
|
|
12
|
+
// Poll /health with retries up to 30s to allow async catalog loading
|
|
13
|
+
let response = null;
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
while (Date.now() - startTime < 30000) {
|
|
16
|
+
try {
|
|
17
|
+
response = await axios.get(`http://127.0.0.1:${testPort}/health`, { timeout: 1500 });
|
|
18
|
+
if (response && response.status === 200)
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
await new Promise(resolve => setTimeout(resolve, 400));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
14
25
|
try {
|
|
15
|
-
|
|
26
|
+
if (!response) {
|
|
27
|
+
throw new Error(`Server did not respond with HTTP 200 within 30 seconds on port ${testPort}`);
|
|
28
|
+
}
|
|
16
29
|
console.log('✅ Response Code:', response.status);
|
|
17
30
|
console.log('✅ Health Status:', response.data.status);
|
|
18
31
|
console.log('✅ Server Version:', response.data.version);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify_tools_endpoint.js","sourceRoot":"","sources":["../src/verify_tools_endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,KAAK,UAAU,OAAO;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,uEAAuE,QAAQ,KAAK,CAAC,CAAC;IAClG,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;QACzC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC1C,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;IAE1E,
|
|
1
|
+
{"version":3,"file":"verify_tools_endpoint.js","sourceRoot":"","sources":["../src/verify_tools_endpoint.ts"],"names":[],"mappings":"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"}
|
package/dist/widgetShell.d.ts
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Shared wrapper for all Fodda widget responses.
|
|
5
5
|
* Provides consistent branding: logo, header, footer, base CSS.
|
|
6
6
|
*/
|
|
7
|
-
export declare const FODDA_LOGO_URL = "https://
|
|
7
|
+
export declare const FODDA_LOGO_URL = "https://app.fodda.ai/fodda-mini-logo-claude.png";
|
|
8
8
|
export declare const PLAYFAIR_LINK = "";
|
|
9
9
|
declare function esc(s: string): string;
|
|
10
10
|
export { esc };
|
|
11
11
|
export declare const FODDA_SHELL_CSS = "\n:root{--p:#663399;--pl:#F5F0FF;--pm:#9B72CC;--pl-on:#663399;--font-display:var(--font-serif);}\n@media(prefers-color-scheme:dark){:root{--p:#9B72CC;--pl:rgba(155,114,204,0.14);--pm:#663399;--pl-on:#C4A7E8;}}\n.w{border:1px solid var(--p);border-top:3px solid var(--p);border-radius:6px;padding:1.25rem;font-family:var(--font-mono);}\n.hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:.5px solid var(--color-border-tertiary);}\n.logo{display:flex;align-items:center;gap:10px;}\n.logo img{height:24px;width:auto;display:block;}\n.lt{font-size:13px;font-weight:500;}.ls{font-size:10px;color:var(--color-text-secondary);}\n.bfolio{font-family:var(--font-mono);font-size:10px;letter-spacing:0.18em;text-transform:uppercase;color:var(--color-text-secondary);}\n.gf{display:flex;gap:5px;flex-wrap:wrap;margin-top:1.5rem;padding-top:1rem;border-top:.5px solid var(--color-border-tertiary);align-items:center;}\n.gfl{font-size:10px;color:var(--color-text-secondary);margin-right:2px;}\n.gp{font-size:10px;padding:2px 9px;border-radius:20px;background:var(--pl);color:var(--pl-on);border:.5px solid var(--pm);}\n.note{font-size:10px;color:var(--color-text-secondary);margin-bottom:1.25rem;}\n.sl2{font-size:13px;font-weight:500;color:var(--color-text-primary);margin:1.25rem 0 8px;}.sl2:first-child{margin-top:0;}\n.eyebrow{font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:0.18em;text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:6px;display:flex;gap:8px;align-items:baseline;}\n.eyebrow .sep{color:var(--color-border-tertiary);}\n.eyebrow.brand{color:var(--p);}\n.stamp{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:0.18em;text-transform:uppercase;padding:3px 8px;border:1px solid currentColor;border-radius:2px;background:transparent;color:var(--color-text-secondary);}\n.stamp.brand{color:var(--p);}\n.stamp.success{color:var(--color-text-success);}\n.stamp.warning{color:var(--color-text-warning);}\n.editors-note{background:var(--pl);border:1px solid var(--p);border-left-width:3px;border-radius:4px;padding:14px 16px;color:var(--color-text-primary);}\n.editors-note::before{content:\"Editor's note\";display:block;font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:0.18em;text-transform:uppercase;color:var(--p);margin-bottom:6px;}\n";
|
|
12
12
|
export declare function wrapWidget(subtitle: string, contentHtml: string, sources: string[], extraCss?: string): string;
|
|
13
|
-
export declare const FODDA_COMPONENT_GUIDE = "\n\u2500\u2500 FODDA COMPONENT LIBRARY \u2500\u2500\nWhen rendering Fodda data via show_widget, ALWAYS use the branded shell below.\n\nDESIGN LANGUAGE: editorial briefing. Mono base, italic serif accent. No gradients on surfaces. Lines, not lifts \u2014 no box-shadows. Paper, not pillow.\n\nSHELL: 1px border + 3px top spine. Folio timestamp top-right. 6px radius (not 12).\nBRANDING: ALWAYS include the Fodda logo (<img src=\"https://
|
|
13
|
+
export declare const FODDA_COMPONENT_GUIDE = "\n\u2500\u2500 FODDA COMPONENT LIBRARY \u2500\u2500\nWhen rendering Fodda data via show_widget, ALWAYS use the branded shell below.\n\nDESIGN LANGUAGE: editorial briefing. Mono base, italic serif accent. No gradients on surfaces. Lines, not lifts \u2014 no box-shadows. Paper, not pillow.\n\nSHELL: 1px border + 3px top spine. Folio timestamp top-right. 6px radius (not 12).\nBRANDING: ALWAYS include the Fodda logo (<img src=\"https://app.fodda.ai/fodda-mini-logo-claude.png\" height=\"24\" width=\"24\"/>) and \"Fodda\" wordmark in the header. The logo+wordmark must appear in every widget \u2014 it's the first thing the user sees.\n\nTYPOGRAPHY:\n- Display (brand name, stat values, insight blocks): var(--font-display) italic 400\n- Body/cards: system sans\n- UI chrome/tabs/pills: var(--font-mono)\n\nAVAILABLE COMPONENTS:\nCards: .card{border:1px solid var(--color-border-tertiary);border-radius:4px;padding:1rem 1.25rem;margin-bottom:8px;}\nEyebrow: .eyebrow{font-mono 10px 700 uppercase 0.18em tracking} \u2014 above every card title: \"[GRAPH] \u00B7 [STAGE]\"\nStamp badges: .stamp{border:1px solid currentColor;radius:2px;9px mono uppercase} \u2014 for status/stage/category (not source pills)\nSource pills: .gp{radius:20px;bg:var(--pl);color:var(--pl-on)} \u2014 keep rounded, navigational\nEditors note: .editors-note{bg:var(--pl);border-left:3px solid var(--p);radius:4px} \u2014 for LLM-authored insight/analysis\nStat grid: .sg .sk \u2014 same as before. .skv{font-family:var(--font-display);font-style:italic;font-size:22px;}\nBar rows: .br .brl .brt .brf \u2014 same as before\nTabs: .tb .t \u2014 same as before\n\nCOLORS: var(--p) primary (auto-switches: #663399 light, #9B72CC dark). var(--pl) light bg (auto-switches). var(--pl-on) text-on-light-bg.\nDARK MODE RULE: Always use var(--pl-on) for text on var(--pl) backgrounds. Never hardcode #663399 for dark-mode text.\nRULES: <12KB HTML, no CDN (except Google Fonts), graph attribution on every card, never say \"the Fodda graph\"\n";
|
|
14
14
|
export declare function getShellTemplate(subtitle?: string, sources?: string[]): string;
|
|
15
15
|
//# sourceMappingURL=widgetShell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetShell.d.ts","sourceRoot":"","sources":["../src/widgetShell.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"widgetShell.d.ts","sourceRoot":"","sources":["../src/widgetShell.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,cAAc,oDAAoD,CAAC;AAGhF,eAAO,MAAM,aAAa,KAAK,CAAC;AAKhC,iBAAS,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9B;AAED,OAAO,EAAE,GAAG,EAAE,CAAC;AAKf,eAAO,MAAM,eAAe,u5EAuB3B,CAAC;AAKF,wBAAgB,UAAU,CACtB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,GAAE,MAAW,GACtB,MAAM,CAqCR;AAKD,eAAO,MAAM,qBAAqB,49DA2BjC,CAAC;AAMF,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAgC9E"}
|
package/dist/widgetShell.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
// Logo (CDN-hosted — saves ~5KB per widget)
|
|
8
8
|
// ---------------------------------------------------------------------------
|
|
9
|
-
export const FODDA_LOGO_URL = 'https://
|
|
9
|
+
export const FODDA_LOGO_URL = 'https://app.fodda.ai/fodda-mini-logo-claude.png';
|
|
10
10
|
// Playfair Display italic — brand display font (removed, using Claude's built-in serif)
|
|
11
11
|
export const PLAYFAIR_LINK = '';
|
|
12
12
|
// ---------------------------------------------------------------------------
|
package/dist/widgetShell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetShell.js","sourceRoot":"","sources":["../src/widgetShell.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"widgetShell.js","sourceRoot":"","sources":["../src/widgetShell.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "ai.fodda/mcp-server",
|
|
4
4
|
"title": "Fodda Knowledge Graphs",
|
|
5
|
-
"description": "Expert-curated knowledge, brand, research & earnings intelligence —
|
|
5
|
+
"description": "Expert-curated knowledge, brand, research & earnings intelligence — 46 tools, 220+ graphs.",
|
|
6
6
|
"websiteUrl": "https://www.fodda.ai",
|
|
7
7
|
"privacyPolicyUrl": "https://www.fodda.ai/privacy",
|
|
8
8
|
"termsOfServiceUrl": "https://www.fodda.ai/terms",
|
|
@@ -15,43 +15,15 @@
|
|
|
15
15
|
]
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
|
-
"version": "1.46.
|
|
18
|
+
"version": "1.46.90",
|
|
19
19
|
"repository": {
|
|
20
20
|
"url": "https://github.com/piers-fawkes/fodda-mcp",
|
|
21
21
|
"source": "github"
|
|
22
22
|
},
|
|
23
23
|
"remotes": [
|
|
24
24
|
{
|
|
25
|
-
"
|
|
26
|
-
"url": "https://mcp.fodda.ai/mcp"
|
|
27
|
-
"authorizationServerMetadataUrl": "https://mcp.fodda.ai/.well-known/oauth-authorization-server",
|
|
28
|
-
"clientAuthentication": {
|
|
29
|
-
"type": "oauth2"
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
],
|
|
33
|
-
"packages": [
|
|
34
|
-
{
|
|
35
|
-
"registryType": "npm",
|
|
36
|
-
"identifier": "fodda-mcp",
|
|
37
|
-
"version": "1.46.31",
|
|
38
|
-
"transport": {
|
|
39
|
-
"type": "stdio"
|
|
40
|
-
},
|
|
41
|
-
"environmentVariables": [
|
|
42
|
-
{
|
|
43
|
-
"name": "FODDA_API_KEY",
|
|
44
|
-
"description": "Your Fodda API key",
|
|
45
|
-
"isRequired": true,
|
|
46
|
-
"isSecret": true
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"name": "FODDA_API_URL",
|
|
50
|
-
"description": "Upstream Fodda API URL",
|
|
51
|
-
"isRequired": false,
|
|
52
|
-
"default": "https://api.fodda.ai"
|
|
53
|
-
}
|
|
54
|
-
]
|
|
25
|
+
"type": "streamable-http",
|
|
26
|
+
"url": "https://mcp.fodda.ai/mcp"
|
|
55
27
|
}
|
|
56
28
|
]
|
|
57
29
|
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Request, Response } from 'express';
|
|
2
|
-
/**
|
|
3
|
-
* Dynamic Client Registration (DCR) Shim Handler
|
|
4
|
-
*
|
|
5
|
-
* Gemini (and other DCR clients) register against Clerk via DCR. By default, Google's DCR body
|
|
6
|
-
* omits the `scope` field, so Clerk grants only default scopes (`email profile offline_access`),
|
|
7
|
-
* causing Clerk to reject subsequent authorization requests asking for `openid` with `invalid_scope`.
|
|
8
|
-
*
|
|
9
|
-
* This shim intercepts DCR requests at `/oauth/register`, injects `"openid email profile offline_access"`
|
|
10
|
-
* into the forwarded request body, and forwards it to Clerk.
|
|
11
|
-
*/
|
|
12
|
-
export declare function handleOauthRegister(req: Request, res: Response): Promise<void>;
|
|
13
|
-
//# sourceMappingURL=oauthRegisterShim.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauthRegisterShim.d.ts","sourceRoot":"","sources":["../src/oauthRegisterShim.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAoBjD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DpF"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
const CLERK_ISSUER = process.env.CLERK_ISSUER_URL || 'https://clerk.fodda.ai';
|
|
3
|
-
/**
|
|
4
|
-
* Ensures the target scopes (openid, email, profile, offline_access) are present
|
|
5
|
-
* in the space-separated scope string.
|
|
6
|
-
*/
|
|
7
|
-
function ensureRequiredScopes(scopeInput) {
|
|
8
|
-
const defaultScopes = ['openid', 'email', 'profile', 'offline_access'];
|
|
9
|
-
const currentScopes = (scopeInput || '').split(/\s+/).filter(Boolean);
|
|
10
|
-
for (const s of defaultScopes) {
|
|
11
|
-
if (!currentScopes.includes(s)) {
|
|
12
|
-
currentScopes.push(s);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return currentScopes.join(' ');
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Dynamic Client Registration (DCR) Shim Handler
|
|
19
|
-
*
|
|
20
|
-
* Gemini (and other DCR clients) register against Clerk via DCR. By default, Google's DCR body
|
|
21
|
-
* omits the `scope` field, so Clerk grants only default scopes (`email profile offline_access`),
|
|
22
|
-
* causing Clerk to reject subsequent authorization requests asking for `openid` with `invalid_scope`.
|
|
23
|
-
*
|
|
24
|
-
* This shim intercepts DCR requests at `/oauth/register`, injects `"openid email profile offline_access"`
|
|
25
|
-
* into the forwarded request body, and forwards it to Clerk.
|
|
26
|
-
*/
|
|
27
|
-
export async function handleOauthRegister(req, res) {
|
|
28
|
-
try {
|
|
29
|
-
const body = req.body || {};
|
|
30
|
-
const clientName = body.client_name || 'unnamed-dcr-client';
|
|
31
|
-
// 1. Inject required openid scopes into body
|
|
32
|
-
const requestedScope = body.scope;
|
|
33
|
-
const finalScope = ensureRequiredScopes(requestedScope);
|
|
34
|
-
const forwardedBody = {
|
|
35
|
-
...body,
|
|
36
|
-
scope: finalScope,
|
|
37
|
-
};
|
|
38
|
-
console.error(`[dcr-shim] Forwarding DCR for "${clientName}" to Clerk with scope: "${finalScope}"`);
|
|
39
|
-
// 2. Forward to Clerk DCR endpoint
|
|
40
|
-
const clerkUrl = `${CLERK_ISSUER}/oauth/register`;
|
|
41
|
-
let clerkResp;
|
|
42
|
-
try {
|
|
43
|
-
clerkResp = await axios.post(clerkUrl, forwardedBody, {
|
|
44
|
-
headers: {
|
|
45
|
-
'Content-Type': req.headers['content-type'] || 'application/json',
|
|
46
|
-
},
|
|
47
|
-
timeout: 10000,
|
|
48
|
-
validateStatus: () => true, // Pass through non-2xx status codes honestly (e.g. 429)
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
console.error(`[dcr-shim] Network error contacting Clerk DCR:`, err.message);
|
|
53
|
-
res.status(502).json({
|
|
54
|
-
error: 'server_error',
|
|
55
|
-
error_description: 'Failed to contact authorization server registration endpoint.',
|
|
56
|
-
});
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
// 3. Pass through Clerk's status code honestly without retrying in a loop
|
|
60
|
-
if (clerkResp.status < 200 || clerkResp.status >= 300) {
|
|
61
|
-
console.error(`[dcr-shim] Clerk returned HTTP ${clerkResp.status}:`, clerkResp.data);
|
|
62
|
-
res.status(clerkResp.status).json(clerkResp.data);
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
// 4. On success (200/201), inspect response JSON and ensure `scope` includes openid
|
|
66
|
-
const respData = { ...clerkResp.data };
|
|
67
|
-
if (respData && typeof respData === 'object') {
|
|
68
|
-
if ('scope' in respData) {
|
|
69
|
-
respData.scope = ensureRequiredScopes(respData.scope);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
respData.scope = finalScope;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
console.error(`[dcr-shim] Successfully registered DCR client ${respData.client_id || ''} with scopes: "${respData.scope}"`);
|
|
76
|
-
res.status(clerkResp.status).json(respData);
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
console.error(`[dcr-shim] Unexpected exception:`, error);
|
|
80
|
-
res.status(500).json({ error: 'internal_server_error', error_description: error?.message || 'Registration failed' });
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=oauthRegisterShim.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauthRegisterShim.js","sourceRoot":"","sources":["../src/oauthRegisterShim.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,wBAAwB,CAAC;AAE9E;;;GAGG;AACH,SAAS,oBAAoB,CAAC,UAAmB;IAC7C,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAY,EAAE,GAAa;IACjE,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,oBAAoB,CAAC;QAE5D,6CAA6C;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,MAAM,UAAU,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG;YAClB,GAAG,IAAI;YACP,KAAK,EAAE,UAAU;SACpB,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,kCAAkC,UAAU,2BAA2B,UAAU,GAAG,CAAC,CAAC;QAEpG,mCAAmC;QACnC,MAAM,QAAQ,GAAG,GAAG,YAAY,iBAAiB,CAAC;QAClD,IAAI,SAAc,CAAC;QACnB,IAAI,CAAC;YACD,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE;gBAClD,OAAO,EAAE;oBACL,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,kBAAkB;iBACpE;gBACD,OAAO,EAAE,KAAK;gBACd,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,wDAAwD;aACvF,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE,cAAc;gBACrB,iBAAiB,EAAE,+DAA+D;aACrF,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,0EAA0E;QAC1E,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACpD,OAAO,CAAC,KAAK,CAAC,kCAAkC,SAAS,CAAC,MAAM,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACrF,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClD,OAAO;QACX,CAAC;QAED,oFAAoF;QACpF,MAAM,QAAQ,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3C,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACtB,QAAQ,CAAC,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC;YAChC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,iDAAiD,QAAQ,CAAC,SAAS,IAAI,EAAE,kBAAkB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5H,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,IAAI,qBAAqB,EAAE,CAAC,CAAC;IACzH,CAAC;AACL,CAAC"}
|