Skip to content

Commit 404be69

Browse files
authored
Add tool-feedback survey page (#943)
1 parent 563d153 commit 404be69

9 files changed

Lines changed: 105 additions & 36 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"use client";
2+
3+
import posthog, { type Survey } from "posthog-js";
4+
import { useEffect, useState } from "react";
5+
import DynamicSurvey from "./dynamic-survey";
6+
7+
const SURVEY_ID = "019db7ed-8745-0000-6627-84950f734a99";
8+
9+
export const ToolFeedbackSurvey = () => {
10+
const [surveyData, setSurveyData] = useState<Survey | null>(null);
11+
const [completed, setCompleted] = useState(false);
12+
13+
useEffect(() => {
14+
const unsubscribe = posthog.onFeatureFlags(() => {
15+
posthog.getSurveys((surveys) => {
16+
const survey = surveys.find((s) => s.id === SURVEY_ID);
17+
if (survey) {
18+
setSurveyData(survey);
19+
}
20+
}, true);
21+
});
22+
return unsubscribe;
23+
}, []);
24+
25+
const handleSurveyComplete = () => {
26+
setCompleted(true);
27+
};
28+
29+
const handleSurveyBack = () => {
30+
/* no-op */
31+
};
32+
33+
return (
34+
<>
35+
<h2 className="mb-4 font-bold text-2xl" id="tool-feedback-survey-header">
36+
Tool feedback survey
37+
</h2>
38+
{completed && (
39+
<p className="mb-4 text-gray-500 text-sm">
40+
Thank you! We will review your feedback soon.
41+
</p>
42+
)}
43+
{!completed && (
44+
<DynamicSurvey
45+
onBack={handleSurveyBack}
46+
onComplete={handleSurveyComplete}
47+
surveyData={surveyData}
48+
/>
49+
)}
50+
</>
51+
);
52+
};

app/en/resources/integrations/_meta.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ const meta: MetaRecord = {
4242
"customer-support": {
4343
title: "Customer Support",
4444
},
45-
"-- Submit your Server": {
45+
"-- Feedback": {
4646
type: "separator",
47-
title: "Submit your server",
47+
title: "Feedback",
4848
},
49-
"contribute-a-server": {
50-
title: "Contribute a Server",
49+
"tool-feedback": {
50+
title: "Tool Feedback",
5151
},
5252
};
5353

app/en/resources/integrations/contribute-a-server/page.mdx

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: "Tool feedback"
3+
description: "Request missing tools, suggest features for existing tools, or report bugs in Arcade tools"
4+
---
5+
6+
import { ToolFeedbackSurvey } from "@/app/_components/tool-feedback-survey";
7+
import { TakeSurvey } from "./take-survey";
8+
9+
# Tool feedback
10+
11+
Tell us what's missing or broken. Whether you need a tool Arcade doesn't yet support, want a new capability added to an existing tool, or have hit a bug, we want to hear about it.
12+
13+
<TakeSurvey />
14+
15+
Your input helps us prioritize what to build and fix next. Submit the form below and the Arcade team will follow up.
16+
17+
<ToolFeedbackSurvey />
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"use client";
2+
3+
import { Button } from "@arcadeai/design-system";
4+
5+
export const TakeSurvey = () => (
6+
<Button
7+
className="my-6 inline-flex items-center justify-center rounded-md bg-primary px-4 font-medium text-primary-foreground text-sm hover:bg-primary/90"
8+
onClick={() => {
9+
document
10+
.getElementById("tool-feedback-survey-header")
11+
?.scrollIntoView({ behavior: "smooth" });
12+
}}
13+
>
14+
Take the survey
15+
</Button>
16+
);

next.config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,11 @@ const nextConfig: NextConfig = withLlmsTxt({
292292
destination: "/:locale/resources/registry-early-access",
293293
permanent: true,
294294
},
295+
{
296+
source: "/:locale/resources/integrations/contribute-a-server",
297+
destination: "/:locale/resources/registry-early-access",
298+
permanent: true,
299+
},
295300
// Moved MCP Gateway UI guide to guides
296301
{
297302
source: "/:locale/guides/create-tools/mcp-gateways",

public/llms.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- git-sha: 092a1d24ef247a2445c0a30324be1aee483db75f generation-date: 2026-04-07T19:44:18.457Z -->
1+
<!-- git-sha: 027403fb15a72f497ccba09bcf6f03e5766dbf3a generation-date: 2026-04-23T01:29:18.671Z -->
22

33
# Arcade
44

@@ -110,7 +110,6 @@ Arcade delivers three core capabilities: Deploy agents even your security team w
110110
- [Handle Errors](https://docs.arcade.dev/en/guides/create-tools/error-handling): This documentation page teaches users how to implement effective error handling in their tools to enhance user experience and ensure resilience in production environments. It outlines strategies for managing various types of errors and promotes the use of smart retry behaviors. By following these guidelines, developers can
111111
- [Hosting Options Overview](https://docs.arcade.dev/en/guides/deployment-hosting): This documentation page provides an overview of the various hosting options available for the Arcade platform, including the Arcade Cloud service and on-premise deployments. Users can learn how to quickly set up and manage their Arcade environment, whether they prefer a cloud-based solution with
112112
- [How Hooks Work](https://docs.arcade.dev/en/guides/contextual-access/how-hooks-work): This documentation page provides a comprehensive overview of how to configure and utilize hook points within the Arcade platform, detailing the execution order, extensions, and handling of failures. Users will learn how to implement access, pre-execution, and post-execution hooks to
113-
- [How to contribute a MCP Server](https://docs.arcade.dev/en/resources/integrations/contribute-a-server): This documentation page provides a step-by-step guide for developers on how to contribute their MCP Server to the Arcade documentation, enhancing visibility and usability for other users. It outlines prerequisites, submission procedures through a pull request, and the review process to ensure successful integration
114113
- [In Custom Applications](https://docs.arcade.dev/en/guides/tool-calling/custom-apps): This documentation page provides guidance on integrating Arcade tools into custom applications, focusing on user authentication, authorization status checks, and retrieving tool definitions. It is designed to assist developers in creating their own tool-calling interfaces effectively.
115114
- [MCP Gateways](https://docs.arcade.dev/en/guides/mcp-gateways): The MCP Gateways documentation provides users with guidance on connecting multiple MCP servers to their agents, applications, or IDEs, enabling the federation of tools for streamlined management and access. It outlines the benefits of using MCP Gateways, including simplified configuration and customizable
116115
- [Migrate from toolkits to MCP servers](https://docs.arcade.dev/en/guides/create-tools/migrate-toolkits): This documentation page provides a comprehensive guide for users looking to migrate their existing Arcade toolkits to the new MCP Server framework. It outlines necessary changes in terminology, package updates, and detailed steps for updating dependencies, imports, and entrypoint files to ensure a
@@ -145,6 +144,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w
145144
- [Setup Arcade with OpenAI Agents SDK](https://docs.arcade.dev/en/get-started/agent-frameworks/openai-agents/setup-python): This documentation page guides users on how to set up and integrate Arcade tools within OpenAI Agents applications using the OpenAI Agents SDK. It covers the necessary prerequisites, provides step-by-step instructions for creating a CLI agent, and explains how to implement tool authorization
146145
- [The Arcade Registry](https://docs.arcade.dev/en/resources/registry-early-access): The Arcade Registry documentation provides an overview of a platform where developers can share and monetize their tools for agentic applications, similar to HuggingFace or Pypi. It explains how the registry integrates runtime metrics and user feedback to enhance tool development and usage
147146
- [Tool error handling](https://docs.arcade.dev/en/guides/tool-calling/error-handling): This documentation page provides guidance on effectively handling errors when using tools with Arcade's Tool Development Kit (TDK). It explains the error handling philosophy, outlines best practices, and offers code examples for managing output errors in various programming languages. Users will learn how
147+
- [Tool feedback](https://docs.arcade.dev/en/resources/integrations/tool-feedback): Documentation page
148148
- [Tools](https://docs.arcade.dev/en/resources/tools): This documentation page provides an overview of Arcade's ecosystem for AI tools, enabling users to explore a catalog of pre-built integrations, create custom tools, and contribute their own tools to the community. It outlines the benefits of using Arcade tools, such as built
149149
- [Types of Tools](https://docs.arcade.dev/en/guides/create-tools/improve/types-of-tools): This documentation page explains the two types of tools offered by Arcade: Optimized and Unoptimized tools. It highlights the differences in design and functionality, emphasizing that Optimized tools are tailored for AI-powered chat interfaces to enhance performance and reliability, while Unoptimized
150150
- [Understanding `Context` and tools](https://docs.arcade.dev/en/guides/create-tools/tool-basics/runtime-data-access): This documentation page explains the purpose and usage of the `Context` class in Arcade's Tool framework, which provides tools with access to runtime capabilities and tool-specific data. Users will learn how to utilize the `Context` object to retrieve OAuth tokens, secrets

toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -483,12 +483,12 @@ const meta: MetaRecord = {
483483
},
484484
},
485485
${categoryEntries},
486-
"-- Submit your Server": {
486+
"-- Feedback": {
487487
type: "separator",
488-
title: "Submit your server",
488+
title: "Feedback",
489489
},
490-
"contribute-a-server": {
491-
title: "Contribute a Server",
490+
"tool-feedback": {
491+
title: "Tool Feedback",
492492
},
493493
};
494494
@@ -534,8 +534,7 @@ export function syncToolkitSidebar(options: SyncOptions = {}): SyncResult {
534534
? readdirSync(CONFIG.integrationsDir, { withFileTypes: true })
535535
.filter((d) => d.isDirectory())
536536
.filter(
537-
(d) =>
538-
!["components", "contribute-a-server", "_lib"].includes(d.name)
537+
(d) => !["components", "tool-feedback", "_lib"].includes(d.name)
539538
)
540539
.map((d) => d.name)
541540
: [];

toolkit-docs-generator/tests/scripts/sync-toolkit-sidebar.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ describe("generateMainMeta", () => {
645645
expect(result).toContain('title: "Productivity & Docs"');
646646
expect(result).toContain("social: {");
647647
expect(result).toContain('title: "Social & Communication"');
648-
expect(result).toContain('"contribute-a-server"');
648+
expect(result).toContain('"tool-feedback"');
649649
expect(result).not.toContain("preview:");
650650
});
651651

@@ -681,7 +681,7 @@ describe("generateMainMeta", () => {
681681

682682
expect(result).toContain("const meta: MetaRecord = {");
683683
expect(result).toContain("index:");
684-
expect(result).toContain('"contribute-a-server"');
684+
expect(result).toContain('"tool-feedback"');
685685
});
686686

687687
it("does not mutate the input array", () => {
@@ -698,8 +698,8 @@ describe("generateMainMeta", () => {
698698

699699
expect(result).toContain('"*":'); // Theme config
700700
expect(result).toContain("index:"); // Overview
701-
expect(result).toContain('"-- Submit your Server"'); // Separator
702-
expect(result).toContain('"contribute-a-server"'); // Contribute page
701+
expect(result).toContain('"-- Feedback"'); // Separator
702+
expect(result).toContain('"tool-feedback"'); // Feedback page
703703
expect(result).not.toContain("preview:"); // Preview page removed
704704
});
705705
});

0 commit comments

Comments
 (0)