Claude Integration¶
Askalot's MCP server enables Claude to manage surveys, campaigns, respondents, and data analysis directly through conversation. This guide covers setup for all Claude interfaces.
Overview¶
The integration provides 78 tools across 13 categories:
| Category | Tools | Examples |
|---|---|---|
| Projects | 5 | Create projects, manage ownership |
| Campaigns | 13 | Create campaigns, assign pools, send invitations |
| Questionnaires | 6 | Create questionnaires, manage QML files |
| Respondents | 8 | Create/update respondents, generate tokens |
| Surveys | 8 | Execute surveys, mass fill with test data |
| Pools | 9 | Create pools, generate from strategies |
| Strategies | 6 | Define sampling strategies |
| Datasets | 9 | Extract, weight, export data |
| Users | 2 | List and get users |
| Audit | 3 | Query audit trail |
| Documentation | 3 | Search knowledge base |
| Documents | 4 | Search indexed documents |
| QML Analysis | 1 | Validate QML with Z3 |
Authentication¶
All Claude interfaces use the same API token:
- Log in to
https://roundtable.<tenant>.askalot.io - Navigate to Profile Settings
- Scroll to API Tokens section
- Click Generate New Token
- Copy the token (shown only once)
Claude.ai (Web)¶
- Go to claude.ai and open Settings
- Navigate to Integrations (or Connectors)
- Click Add Custom MCP Server
- Enter:
- Name:
Askalot - URL:
https://portor.<tenant>.askalot.io/mcp - Authentication: Bearer Token
- Token: Your API token
- Name:
- Click Connect
Claude Desktop¶
Add to your Claude Desktop configuration file:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"askalot": {
"type": "http",
"url": "https://portor.<tenant>.askalot.io/mcp"
}
}
}
Restart Claude Desktop after saving.
Claude Code (CLI)¶
When prompted, authenticate with your API token.
Usage Examples¶
Create a Survey Campaign¶
You: Create a customer satisfaction campaign with 50 test respondents.
Claude: I'll set up that campaign for you.
→ list_projects() — found "Customer Research" project
→ create_campaign("CSAT Q1 2026", project_id, questionnaire_id)
→ bulk_create_respondents(50, project_id)
→ create_respondent_pool("CSAT Pool", respondent_ids=...)
→ assign_pool_to_campaign(campaign_id, pool_id)
Done! Campaign "CSAT Q1 2026" is ready with 50 respondents.
Analyze Survey Results¶
You: Extract and weight the results from my latest campaign.
Claude: I'll create a weighted dataset from your campaign data.
→ list_campaigns(status="completed")
→ create_bronze_dataset("CSAT Results", campaign_id)
→ apply_raking(bronze_dataset_id)
→ compare_dataset_quality(bronze_id, silver_id)
The weighted dataset reduced RMSE from 0.08 to 0.02.
Gender distribution now matches targets within 1%.
Validate a Questionnaire¶
You: Check my new questionnaire for logical errors.
Claude: I'll run Z3 analysis on your QML file.
→ validate_qml_file("satisfaction.qml")
The questionnaire has 12 items across 3 blocks.
Found 1 issue: Item 'q_followup' is unreachable because
its precondition requires q_satisfied < 3, but q_satisfied
uses a scale of 1-5 with no path setting it below 3.
Tool Annotations¶
All tools include MCP annotations for safe AI interaction:
- Read-only tools (
list_*,get_*,search_*): Marked withreadOnlyHint=true— Claude can call these freely - Write tools (
create_*,update_*): Marked withdestructiveHint=false— safe mutations - Delete tools (
delete_*,remove_*): Marked withdestructiveHint=true— Claude will confirm before executing - External tools (
send_*_invitation): Marked withopenWorldHint=true— sends real emails
Pagination¶
Listing tools support pagination to keep responses concise:
→ list_respondents(name="Smith", limit=10)
→ list_campaigns(status="active", limit=5)
→ list_surveys(status="completed", limit=20)
All listing tools default to limit=100 and return metadata:
Next Steps¶
- MCP Interface Reference — Complete tool documentation
- REST API — Traditional HTTP endpoints
- QML Syntax — Questionnaire markup language