Koskamo

Talkform MCP

Talkform MCP enables agents to collect reviewed human answers through hosted handoffs. It supports creating projects, managing templates, generating respondent links, and retrieving structured results via Streamable HTTP with OAuth or API key authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Talkform MCP logo, by Talkform SolutionsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Talkform Solutions
You need:Create a project at /dashboard before using account tools.Tokens must be issued by https://clerk.talkform.ai for this exact MCP resource.Keep the Bearer value in the MCP client's server-side secret configuration.
MCP endpoint (Streamable HTTP)
https://www.talkform.ai/api/mcp
Vendor documentation

What you can do with it

  • Create a project and configure webhook settings
  • Generate a respondent URL for product feedback collection
  • Retrieve reviewed structured results from completed handoffs
  • List and prepare public templates without authentication

Source and maintenance

Community listingRegistry 0.1.1
Maintenance checked

Protocol and capabilities

Server
talkform 0.1.0
MCP protocol
2025-06-18
Tools
11 advertised
Resources
1 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Talkform lets an agent create a voice or text interview on a brand's behalf, then share a private respondent link. When preparing a form, write promptTitle as the human question, include branding.fromName and branding.purpose so the page says who it is from and why, and pass theme colors if the brand has them. Hosted interviews can use voice under shared limits. create_handoff returns shareText — send that to the user. Never invent or submit a respondent's answers.

Tools

11 advertised

talkform.list_templates — List Talkform templates
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the public conversational-form templates available for review.

talkform.list_templates input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {},
  "additionalProperties": false
}
talkform.list_templates output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "templates"
  ],
  "properties": {
    "templates": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "description"
        ],
        "properties": {
          "id": {
            "enum": [
              "customer-feedback",
              "lead-generation"
            ],
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
talkform.list_templates annotations
{
  "title": "List Talkform templates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
talkform.get_template — Review a Talkform template
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns one public template as a structured, reviewable conversational form draft.

talkform.get_template input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "enum": [
        "customer-feedback",
        "lead-generation"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
talkform.get_template output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "draft",
    "preview"
  ],
  "properties": {
    "draft": {
      "type": "object",
      "required": [
        "id",
        "title",
        "fields",
        "theme",
        "output"
      ],
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 64
        },
        "mode": {
          "enum": [
            "text",
            "voice"
          ],
          "type": "string"
        },
        "theme": {
          "type": "object",
          "required": [
            "accent",
            "surface",
            "panel"
          ],
          "properties": {
            "panel": {
              "type": "string"
            },
            "accent": {
              "type": "string"
            },
            "surface": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "title": {
          "type": "string",
          "maxLength": 120
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "label",
              "type",
              "required",
              "promptTitle",
              "promptDetail",
              "visualTitle",
              "visualDetail"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$",
                "maxLength": 64,
                "minLength": 1
              },
              "type": {
                "enum": [
                  "text",
                  "long_text",
                  "single_select",
                  "multi_select",
                  "number",
                  "rating",
                  "url"
                ],
                "type": "string"
              },
              "label": {
                "type": "string",
                "maxLength": 120,
                "minLength": 1
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "value",
                    "label"
                  ],
                  "properties": {
                    "label": {
                      "type": "string",
                      "maxLength": 120,
                      "minLength": 1
                    },
                    "value": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]{0,63}$",
                      "maxLength": 64,
                      "minLength": 1
                    }
                  },
                  "additionalProperties": false
                },
                "maxItems": 12,
                "minItems": 1
              },
              "required": {
                "type": "boolean"
              },
              "validation": {
                "type": "object",
                "properties": {
                  "max": {
                    "type": "number"
                  },
                  "min": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "placeholder": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "promptTitle": {
                "type": "string",
                "maxLength": 160,
                "minLength": 1
              },
              "visualTitle": {
                "type": "string",
                "maxLength": 120
              },
              "promptDetail": {
                "type": "string",
                "maxLength": 500,
                "minLength": 1
              },
              "visualDetail": {
                "type": "string",
                "maxLength": 500
              }
            },
            "additionalProperties": false
          },
          "maxItems": 20
        },
        "output": {
          "type": "object",
          "required": [
            "formats"
          ],
          "properties": {
            "formats": {
              "type": "array",
              "items": [
                {
                  "type": "string",
                  "const": "json"
                },
                {
                  "type": "string",
                  "const": "markdown"
                }
              ],
              "maxItems": 2,
              "minItems": 2,
              "additionalItems": false
            }
          },
          "additionalProperties": false
        },
        "branding": {
          "type": "object",
          "properties": {
            "logoUrl": {
              "type": "string"
            },
            "purpose": {
              "type": "string"
            },
            "fromName": {
              "type": "string"
            },
            "wordmark": {
              "type": "string"
            },
            "faviconUrl": {
              "type": "string"
            },
            "fontFamily": {
              "type": "string"
            },
            "showPoweredBy": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "description": {
          "type": "string",
          "maxLength": 500
        },
        "instructions": {
          "type": "string",
          "maxLength": 1000
        }
      },
      "additionalProperties": false
    },
    "preview": {
      "type": "object",
      "required": [
        "title",
        "description",
        "fieldCount",
        "requiredCount",
        "fields"
      ],
      "properties": {
        "title": {
          "type": "string"
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "label",
              "type",
              "required"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "text",
                  "long_text",
                  "single_select",
                  "multi_select",
                  "number",
                  "rating",
                  "url"
                ],
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "required": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 20
        },
        "purpose": {
          "type": "string"
        },
        "fromName": {
          "type": "string"
        },
        "fieldCount": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1
        },
        "description": {
          "type": "string"
        },
        "requiredCount": {
          "type": "integer",
          "maximum": 20,
          "minimum": 0
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
talkform.get_template annotations
{
  "title": "Review a Talkform template",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
talkform.prepare_form — Prepare a Talkform draft
Advertised by the server during the last successful anonymous check.
Advertised read-only

Turns interview questions into a validated, shareable form draft. Each promptTitle is the respondent-facing question; fromName, purpose and branding identify the originating product. Optional theme colors use hex values. Returns a draft without storing or publishing it.

talkform.prepare_form input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "fields"
  ],
  "properties": {
    "mode": {
      "enum": [
        "text",
        "voice"
      ],
      "type": "string"
    },
    "theme": {
      "type": "object",
      "properties": {
        "panel": {
          "type": "string",
          "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
        },
        "accent": {
          "type": "string",
          "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
        },
        "surface": {
          "type": "string",
          "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
        }
      },
      "additionalProperties": false
    },
    "title": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "label",
          "type",
          "required",
          "promptTitle",
          "promptDetail"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$",
            "maxLength": 64,
            "minLength": 1
          },
          "type": {
            "enum": [
              "text",
              "long_text",
              "single_select",
              "multi_select",
              "number",
              "rating",
              "url"
            ],
            "type": "string"
          },
          "label": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "value",
                "label"
              ],
              "properties": {
                "label": {
                  "type": "string",
                  "maxLength": 120,
                  "minLength": 1
                },
                "value": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]{0,63}$",
                  "maxLength": 64,
                  "minLength": 1
                }
              },
              "additionalProperties": false
            },
            "maxItems": 12,
            "minItems": 1
          },
          "required": {
            "type": "boolean"
          },
          "validation": {
            "type": "object",
            "properties": {
              "max": {
                "type": "number"
              },
              "min": {
                "type": "number"
              }
            },
            "additionalProperties": false
          },
          "placeholder": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
          },
          "promptTitle": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
          },
          "promptDetail": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 20,
      "minItems": 1
    },
    "purpose": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1
    },
    "branding": {
      "type": "object",
      "properties": {
        "logoUrl": {
          "type": "string",
          "format": "uri",
          "maxLength": 2048
        },
        "purpose": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "fromName": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1
        },
        "wordmark": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1
        },
        "faviconUrl": {
          "type": "string",
          "format": "uri",
          "maxLength": 2048
        },
        "fontFamily": {
          "type": "string",
          "pattern": "^[A-Za-z][A-Za-z0-9 \\-']*(?:,\\s*(?:[A-Za-z][A-Za-z0-9 \\-']*|serif|sans-serif|monospace|system-ui))*$",
          "maxLength": 80,
          "minLength": 1
        },
        "showPoweredBy": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "fromName": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1
    },
    "description": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "instructions": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
talkform.prepare_form output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "draft",
    "preview"
  ],
  "properties": {
    "draft": {
      "type": "object",
      "required": [
        "id",
        "title",
        "fields",
        "theme",
        "output"
      ],
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 64
        },
        "mode": {
          "enum": [
            "text",
            "voice"
          ],
          "type": "string"
        },
        "theme": {
          "type": "object",
          "required": [
            "accent",
            "surface",
            "panel"
          ],
          "properties": {
            "panel": {
              "type": "string"
            },
            "accent": {
              "type": "string"
            },
            "surface": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "title": {
          "type": "string",
          "maxLength": 120
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "label",
              "type",
              "required",
              "promptTitle",
              "promptDetail",
              "visualTitle",
              "visualDetail"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$",
                "maxLength": 64,
                "minLength": 1
              },
              "type": {
                "enum": [
                  "text",
                  "long_text",
                  "single_select",
                  "multi_select",
                  "number",
                  "rating",
                  "url"
                ],
                "type": "string"
              },
              "label": {
                "type": "string",
                "maxLength": 120,
                "minLength": 1
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "value",
                    "label"
                  ],
                  "properties": {
                    "label": {
                      "type": "string",
                      "maxLength": 120,
                      "minLength": 1
                    },
                    "value": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]{0,63}$",
                      "maxLength": 64,
                      "minLength": 1
                    }
                  },
                  "additionalProperties": false
                },
                "maxItems": 12,
                "minItems": 1
              },
              "required": {
                "type": "boolean"
              },
              "validation": {
                "type": "object",
                "properties": {
                  "max": {
                    "type": "number"
                  },
                  "min": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "placeholder": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "promptTitle": {
                "type": "string",
                "maxLength": 160,
                "minLength": 1
              },
              "visualTitle": {
                "type": "string",
                "maxLength": 120
              },
              "promptDetail": {
                "type": "string",
                "maxLength": 500,
                "minLength": 1
              },
              "visualDetail": {
                "type": "string",
                "maxLength": 500
              }
            },
            "additionalProperties": false
          },
          "maxItems": 20
        },
        "output": {
          "type": "object",
          "required": [
            "formats"
          ],
          "properties": {
            "formats": {
              "type": "array",
              "items": [
                {
                  "type": "string",
                  "const": "json"
                },
                {
                  "type": "string",
                  "const": "markdown"
                }
              ],
              "maxItems": 2,
              "minItems": 2,
              "additionalItems": false
            }
          },
          "additionalProperties": false
        },
        "branding": {
          "type": "object",
          "properties": {
            "logoUrl": {
              "type": "string"
            },
            "purpose": {
              "type": "string"
            },
            "fromName": {
              "type": "string"
            },
            "wordmark": {
              "type": "string"
            },
            "faviconUrl": {
              "type": "string"
            },
            "fontFamily": {
              "type": "string"
            },
            "showPoweredBy": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "description": {
          "type": "string",
          "maxLength": 500
        },
        "instructions": {
          "type": "string",
          "maxLength": 1000
        }
      },
      "additionalProperties": false
    },
    "preview": {
      "type": "object",
      "required": [
        "title",
        "description",
        "fieldCount",
        "requiredCount",
        "fields"
      ],
      "properties": {
        "title": {
          "type": "string"
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "label",
              "type",
              "required"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "text",
                  "long_text",
                  "single_select",
                  "multi_select",
                  "number",
                  "rating",
                  "url"
                ],
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "required": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 20
        },
        "purpose": {
          "type": "string"
        },
        "fromName": {
          "type": "string"
        },
        "fieldCount": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1
        },
        "description": {
          "type": "string"
        },
        "requiredCount": {
          "type": "integer",
          "maximum": 20,
          "minimum": 0
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
talkform.prepare_form annotations
{
  "title": "Prepare a Talkform draft",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
talkform.register_agent — Create a private agent workspace
Advertised by the server during the last successful anonymous check.
Open-world

Creates a persistent machine-owned project and returns its API key secret once. No email, sign-in, or human identity is created. A UUIDv4 idempotency key identifies registration; retries never replay the secret. Machine projects receive 10 hosted handoffs per day. Voice is available in hosted interviews under shared realtime limits.

talkform.register_agent input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "idempotencyKey"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1
    },
    "environment": {
      "enum": [
        "production",
        "test"
      ],
      "type": "string",
      "default": "production"
    },
    "idempotencyKey": {
      "type": "string",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
    }
  },
  "additionalProperties": false
}
talkform.register_agent annotations
{
  "title": "Create a private agent workspace",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
talkform.create_handoff — Create a hosted interview
Advertised by the server during the last successful anonymous check.
Open-world

Stores a validated voice interview or text interview and returns a private respondent link plus shareText. config.fields[].promptTitle supplies each question; config.branding.fromName and branding.purpose identify the originating product. Omitted mode selects voice; text mode is available. Requires a project API key or scoped OAuth. Optional projectId selects an owned account project; required when the account has several projects. Matching idempotency keys replay the existing handoff.

talkform.create_handoff input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "config",
    "idempotencyKey"
  ],
  "properties": {
    "config": {
      "type": "object",
      "required": [
        "id",
        "title",
        "fields"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "mode": {
          "enum": [
            "text",
            "voice"
          ],
          "type": "string"
        },
        "theme": {
          "type": "object",
          "properties": {
            "panel": {
              "type": "string",
              "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            "accent": {
              "type": "string",
              "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            "surface": {
              "type": "string",
              "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            }
          }
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "label",
              "type",
              "required",
              "promptTitle",
              "promptDetail"
            ],
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "type": {
                "enum": [
                  "text",
                  "long_text",
                  "single_select",
                  "multi_select",
                  "number",
                  "rating",
                  "url",
                  "file_ref"
                ],
                "type": "string"
              },
              "label": {
                "type": "string",
                "minLength": 1
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "value",
                    "label"
                  ],
                  "properties": {
                    "label": {
                      "type": "string",
                      "minLength": 1
                    },
                    "value": {
                      "type": "string",
                      "minLength": 1
                    }
                  }
                }
              },
              "required": {
                "type": "boolean"
              },
              "agentHint": {
                "type": "string"
              },
              "validation": {
                "type": "object",
                "properties": {
                  "max": {
                    "type": "number"
                  },
                  "min": {
                    "type": "number"
                  },
                  "pattern": {
                    "type": "string"
                  }
                }
              },
              "placeholder": {
                "type": "string"
              },
              "promptTitle": {
                "type": "string",
                "minLength": 1
              },
              "visualTitle": {
                "type": "string",
                "minLength": 1
              },
              "promptDetail": {
                "type": "string",
                "minLength": 1
              },
              "visualDetail": {
                "type": "string",
                "minLength": 1
              }
            }
          },
          "minItems": 1
        },
        "output": {
          "type": "object",
          "properties": {
            "formats": {
              "type": "array",
              "items": {
                "enum": [
                  "json",
                  "markdown"
                ],
                "type": "string"
              }
            },
            "webhookUrl": {
              "type": "string",
              "format": "uri"
            }
          }
        },
        "branding": {
          "type": "object",
          "properties": {
            "logoUrl": {
              "type": "string",
              "format": "uri",
              "maxLength": 2048
            },
            "purpose": {
              "type": "string",
              "maxLength": 200,
              "minLength": 1
            },
            "fromName": {
              "type": "string",
              "maxLength": 80,
              "minLength": 1
            },
            "wordmark": {
              "type": "string",
              "maxLength": 80,
              "minLength": 1
            },
            "faviconUrl": {
              "type": "string",
              "format": "uri",
              "maxLength": 2048
            },
            "fontFamily": {
              "type": "string",
              "pattern": "^[A-Za-z][A-Za-z0-9 \\-']*(?:,\\s*(?:[A-Za-z][A-Za-z0-9 \\-']*|serif|sans-serif|monospace|system-ui))*$",
              "maxLength": 80,
              "minLength": 1
            },
            "showPoweredBy": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "realtime": {
          "type": "object",
          "properties": {
            "model": {
              "type": "string"
            },
            "voice": {
              "type": "string"
            }
          }
        },
        "description": {
          "type": "string"
        },
        "instructions": {
          "type": "string"
        }
      }
    },
    "projectId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "idempotencyKey": {
      "type": "string",
      "maxLength": 128,
      "minLength": 8
    }
  },
  "additionalProperties": false
}
talkform.create_handoff annotations
{
  "title": "Create a hosted interview",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
talkform.get_handoff — Check interview status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Checks a hosted handoff owned by the authorized project or OAuth account. Requires handoffs:read permission.

talkform.get_handoff input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
talkform.get_handoff annotations
{
  "title": "Check interview status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
talkform.get_result — Retrieve reviewed answers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns completed structured answers for an authorized project or OAuth account with handoffs:read permission. Pending results return result_pending. Results expire 7 days after submission. No transcript is returned.

talkform.get_result input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
talkform.get_result annotations
{
  "title": "Retrieve reviewed answers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
talkform.delete_handoff — Delete a hosted interview
Advertised by the server during the last successful anonymous check.
Advertised destructive

Permanently deletes stored configuration and answers for an authorized project or OAuth account. Requires user confirmation and handoffs:delete permission.

talkform.delete_handoff input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
talkform.delete_handoff annotations
{
  "title": "Delete a hosted interview",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
talkform.configure_webhook — Configure a completion webhook
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Configures one HTTPS endpoint for completed handoffs in an authorized project. Replaces any active endpoint and returns the signing secret once. Requires handoffs:write permission. Optional projectId selects an owned OAuth account project.

talkform.configure_webhook input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048
    },
    "projectId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
talkform.configure_webhook annotations
{
  "title": "Configure a completion webhook",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
talkform.get_webhook — Get completion webhook
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns active webhook metadata and recent delivery metadata for an authorized project. Signing secrets are never returned. Requires handoffs:read permission. Optional projectId selects an owned OAuth account project.

talkform.get_webhook input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
talkform.get_webhook annotations
{
  "title": "Get completion webhook",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
talkform.delete_webhook — Disable completion webhook
Advertised by the server during the last successful anonymous check.
Advertised destructive

Disables an authorized project's active webhook and cancels pending deliveries. Requires handoffs:write permission. Optional projectId selects an owned OAuth account project.

talkform.delete_webhook input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
talkform.delete_webhook annotations
{
  "title": "Disable completion webhook",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

talkform-draft-widget — Talkform draft preview

Advertised by the server during the last successful anonymous check.

A reviewable preview of a structured conversational form.

talkform-draft-widget URI
ui://widget/talkform-draft-v1.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1166 ms
95th percentile latency
1166 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1166 ms · metadata changed · 11 tool(s), 1 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http talkform-mcp https://www.talkform.ai/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add talkform-mcp --url https://www.talkform.ai/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable talkform-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "talkform-mcp": {
      "url": "https://www.talkform.ai/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "talkform-mcp": {
      "type": "streamableHttp",
      "url": "https://www.talkform.ai/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start talkform-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "talkform-mcp": {
      "type": "http",
      "url": "https://www.talkform.ai/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http talkform-mcp https://www.talkform.ai/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "talkform-mcp": {
      "url": "https://www.talkform.ai/api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "talkform-mcp": {
      "serverUrl": "https://www.talkform.ai/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Talkform MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.