FeedLetter MCP by usefulapi
List surveys, votes and feedback; create surveys and read Wall of Love items in FeedLetter.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"feedletter": {
"url": "https://feedletter.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://feedletter.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(4)
🟢feedletter_list_surveys(q, page)
List or search your FeedLetter surveys (newsletter surveys, one-time polls and web rating widgets), newest first, 50 per page. q matches the name, id or external_id. Each item has id, type, name, external_id, public_title and created_at. While has_more is true, call again with page + 1. Read-only. FeedLetter API: GET /v2/surveys.
入力スキーマ
{
"type": "object",
"properties": {
"q": {
"description": "Search text: matches name, id or external_id. Omit to list all surveys.",
"type": "string",
"maxLength": 255
},
"page": {
"description": "Page number, from 1. Each page holds 50 surveys.",
"type": "integer",
"minimum": 1,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢feedletter_get_survey(survey_id, results_only)
Get one survey by its FeedLetter survey id: settings, placement code (links or embed_html), analytics (votes, daily votes, sentiment) and all feedback. Set results_only to true for just the identity, analytics and feedback. Use the survey id, not the external_id. Read-only. FeedLetter API: GET /v2/surveys/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"minLength": 1,
"description": "The survey id returned by feedletter_list_surveys or feedletter_create_survey."
},
"results_only": {
"description": "true returns only identity, analytics and feedback (no settings or placement code).",
"type": "boolean"
}
},
"required": [
"survey_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢feedletter_get_wall_of_love(wall_id)
Get the feedback that one Wall of Love shows, to build your own wall. Each item has id, comment, name (when shown), answer_label, created_at and survey_title. Comment and name are HTML-escaped. Business plan only: other plans get 403 plan_required. Read-only. FeedLetter API: GET /v2/walls-of-love/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"wall_id": {
"type": "string",
"minLength": 1,
"description": "The Wall of Love id, from its /walloflove/{id} address or embed code."
}
},
"required": [
"wall_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴feedletter_create_survey(type, name, public_title, external_id, text_template, ...)
Create a newsletter survey, a one-time poll or a web rating widget. Needs a Read & write key. Only type and name are required. Newsletter and poll responses return links (one voting link per answer) and email_html; web ratings return embed_html. Set external_id to your own stable id: a second call with the same external_id returns the existing survey (HTTP 200, already_exists) and changes nothing. Without external_id, each call creates a new survey. Do not combine copy_from with text_template. FeedLetter API: POST /v2/surveys.
入力スキーマ
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"newsletter",
"poll",
"web_rating"
],
"description": "Survey type."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Internal name (not shown to respondents)."
},
"public_title": {
"description": "Title on public pages such as the Wall of Love. Defaults to name.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"external_id": {
"description": "Your stable id for this survey, unique across the account. Reuse it when retrying the same creation.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 255
},
{
"type": "null"
}
]
},
"text_template": {
"description": "Texts style. newsletter_defaults is for newsletters only.",
"anyOf": [
{
"type": "string",
"enum": [
"friendly",
"casual",
"business",
"newsletter_defaults"
]
},
{
"type": "null"
}
]
},
"copy_from": {
"description": "Survey id of a survey of the same type to copy answers and settings from.",
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
},
"satisfaction_survey": {
"description": "Poll only: enable sentiment and email statistics.",
"type": [
"boolean",
"null"
]
},
"voting": {
"description": "Voting block for newsletter and poll surveys. Omit to keep the base answers.",
"anyOf": [
{
"type": "object",
"properties": {
"question": {
"description": "Question shown above the answers (newsletter and poll).",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"introduction": {
"description": "Text shown above the answer links.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"answers": {
"description": "Newsletter: exactly 3, ordered positive, neutral, negative. Poll: 1 to 5 answers (4 and 5 need Pro).",
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"rating": {
"description": "Rating block for web_rating surveys only.",
"anyOf": [
{
"type": "object",
"properties": {
"question": {
"description": "Question shown on the web rating widget.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"rating_type": {
"description": "Answer style for a web rating. Default thumbs.",
"type": "string",
"enum": [
"thumbs",
"five_stars",
"five_emojis"
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"extended_feedback_page": {
"description": "Extended feedback page after voting.",
"anyOf": [
{
"type": "object",
"properties": {
"message_after_voting": {
"description": "Message shown after a vote (Pro).",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"headlines_after_voting": {
"description": "One headline per answer, in answer order. Must match the answer count when answers are set.",
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
}
},
"comment_prompts": {
"description": "Web rating only: exactly 3 prompts for thumbs, 5 for stars or emojis, best to worst.",
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
}
},
"comment_field_label": {
"description": "Comment field label (Pro).",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"comment_box_hint": {
"description": "Comment box placeholder (Pro).",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"name_placeholder": {
"description": "Name placeholder. Empty hides the name field.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"email_placeholder": {
"description": "Email placeholder. Empty hides the email field.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"button_text": {
"description": "Submit button text.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"thank_you_page": {
"description": "Thank-you page shown after a vote.",
"anyOf": [
{
"type": "object",
"properties": {
"headline": {
"description": "Main thank-you text.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"subheadline": {
"description": "Supporting text.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"show_result": {
"description": "Show the voting results after a vote (links surveys).",
"type": [
"boolean",
"null"
]
},
"cta_text": {
"description": "Call-to-action caption (Pro).",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"cta_url": {
"description": "Call-to-action link. Empty clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"x_username": {
"description": "X username for the share button.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"x_share_button_text": {
"description": "X share button caption.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"redirect_url": {
"description": "Redirect after voting (Pro). Empty means no redirect.",
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"advanced": {
"description": "Advanced settings. Each field inherits its base value when omitted.",
"anyOf": [
{
"type": "object",
"properties": {
"enable_extended_feedback_page": {
"description": "Show the extended feedback page after voting (Pro).",
"type": [
"boolean",
"null"
]
},
"prefill_email": {
"description": "Prefill the email from the voting link's e parameter (Pro).",
"type": [
"boolean",
"null"
]
},
"allow_empty_feedback": {
"description": "Allow feedback without a comment (Pro).",
"type": [
"boolean",
"null"
]
},
"require_email": {
"description": "Require an email on a web rating (Pro).",
"type": [
"boolean",
"null"
]
},
"show_widget_after_seconds": {
"description": "Web rating: delay before the widget shows, in seconds (Pro).",
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 3600
},
{
"type": "null"
}
]
},
"enable_review_schema": {
"description": "Web rating: enable review structured data (Pro).",
"type": [
"boolean",
"null"
]
},
"show_branding": {
"description": "Show FeedLetter branding (Pro).",
"type": [
"boolean",
"null"
]
},
"email_on_new_feedback": {
"description": "Email address that receives a notice for each new feedback (Pro). Empty disables it.",
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"type",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}コミュニティ
エビデンス