This example shows how to use the KirokuForms MCP API to create a form and listen for submissions.
import requests
import json
import time
import sseclient
# API Configuration
API_KEY = "your_api_key"
BASE_URL = "https://kirokuforms.com/api/mcp"
# Helper function for API requests
def api_request(method, endpoint, data=None):
url = f"{BASE_URL}/{endpoint}"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
response = requests.request(
method=method,
url=url,
headers=headers,
json=data
)
return response.json()
# 1. Create a simple feedback form
form_data = {
"name": "Customer Feedback",
"description": "Please provide your feedback about our service",
"purpose": "feedback collection",
"formType": "feedback"
}
print("Creating feedback form...")
result = api_request("POST", "tools/forms/generate", form_data)
if result.get("success"):
form_id = result["data"]["formId"]
form_url = result["data"]["formUrl"]
print(f"Form created successfully!")
print(f"Form ID: {form_id}")
print(f"Form URL: {form_url}")
else:
print(f"Error creating form: {result.get('error', {}).get('message')}")
exit(1)
# 2. Subscribe to form submission events
print("\nListening for form submissions...")
print(f"Share this URL with users to collect feedback: {form_url}")
print("Press Ctrl+C to stop listening\n")
# Set up SSE client for event streaming
sse_url = f"{BASE_URL}/events/form.submission.new?formId={form_id}"
headers = {"Authorization": f"Bearer {API_KEY}"}
response = requests.get(sse_url, headers=headers, stream=True)
client = sseclient.SSEClient(response)
try:
for event in client.events():
if event.event == "form.submission.new":
data = json.loads(event.data)
submission_id = data.get("submissionId")
timestamp = data.get("timestamp")
print(f"New submission received at {timestamp}!")
print(f"Submission ID: {submission_id}")
# Get submission details
submission = api_request("GET", f"resources/forms/{form_id}/submissions/{submission_id}")
if submission.get("success"):
print("Submission data:")
for field, value in submission["data"]["fields"].items():
print(f" {field}: {value}")
print()
except KeyboardInterrupt:
print("\nStopped listening for events")