Python Mcp Est — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Python Mcp Est (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A URL/HTTP-based MCP (Model Context Protocol) server for the AI Phone Agent Platform. This server can be deployed to Railway, Render, Fly.io, or any cloud platform and allows AI assistants (like Claude in Cursor) to interact with your call campaigns via HTTP instead of stdio.
Cursor/Claude Desktop
↓ (HTTP/HTTPS)
FastMCP Server (this project)
↓ (REST API calls)
python-server-est API (Railway)
↓
Twilio + OpenAI# Clone or navigate to project
cd python-mcp-est
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Copy environment template
cp .env.example .env
# Edit .env with your configuration
nano .envRequired environment variables (see .env.example):
# Organization Authentication
ORGANIZATION_API_KEY=your_api_key_from_org_settings
ORGANIZATION_ID=your_organization_uuid
# API Configuration
API_BASE_URL=https://python-server-est-production.up.railway.app
# Supabase (for API key validation)
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your_service_role_key railway login
railway initORGANIZATION_API_KEYORGANIZATION_IDAPI_BASE_URLSUPABASE_URLSUPABASE_SERVICE_KEY railway up railway statusExample: https://python-mcp-est-production.up.railway.app
Edit your Cursor MCP config file (usually ~/.cursor/mcp.json or workspace .cursor/mcp.json):
{
"mcpServers": {
"est-call-agent": {
"url": "https://your-mcp-server.railway.app/mcp",
"headers": {
"X-API-Key": "your_organization_api_key"
}
}
}
}Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or equivalent:
{
"mcpServers": {
"est-call-agent": {
"url": "https://your-mcp-server.railway.app/mcp",
"headers": {
"X-API-Key": "your_organization_api_key"
}
}
}
}start_campaign_call_scheduledSchedule a single outbound call for a specific client at a given time.
Parameters:
campaign_id (string): Campaign UUIDphone_number (string): Client number in E.164 formatscheduled_time (string): ISO 8601 timestamp (campaign timezone respected)first_name, last_name, company, email, extrainfo (strings, optional): Metadata stored as contact custom dataReturns: Call ID, scheduled timestamps, and subscription usage details from the API.
list_voice_agentsLists all voice agent campaigns for the authenticated organization.
Returns: Array of campaign objects with campaign_id, name, status, campaign_type, created_at, and is_active fields.
get_call_data_by_idRetrieves a single call record from Supabase.
Parameters:
call_id (string): Supabase call identifierReturns: Full call JSON when found.
list_recent_callsLists the most recent calls for the organization.
Parameters:
limit (integer, optional): Number of calls to return (default 25, max 200)Returns: Array of call records ordered by newest first.
get_twilio_numberReturns the Twilio phone number configured for the organization.
Returns: twilio_phone_number string.
list_inbound_clientsLists inbound client records.
Parameters:
limit (integer, optional): Number of records to return (default 25, max 200)Returns: Array of inbound client objects ordered by creation date.
get_webhook_urlReturns the webhook URL configured for the organization.
Returns: webhook_url string.
get_organisation_membersReturns organization members with their name, email, and last login timestamp.
Returns: Array of member objects: { "full_name", "email", "last_login_at" }.
# Run server
python cloud_mcp_server.py
# Test with curl
curl http://localhost:8000/mcpThe server includes a health check endpoint:
curl https://your-mcp-server.railway.app/healthView logs in Railway:
railway logs.env file or expose secretsORGANIZATION_API_KEY is set correctly in both server and clientAPI_BASE_URL points to python-server-estORGANIZATION_ID is correctAPI_TIMEOUT if neededSUPABASE_URL and SUPABASE_SERVICE_KEYorganization_service_credentials tablepython-mcp-est/
├── cloud_mcp_server.py # FastMCP server implementation
├── mcp_handlers.py # Tool handlers (calls REST API)
├── requirements.txt # Python dependencies
├── Dockerfile # Container definition
├── railway.toml # Railway configuration
├── .env.example # Environment template
└── README.md # This filemcp_handlers.pycloud_mcp_server.py using @mcp.tool() decoratorSame as the parent EST Call Agent Platform project.
For issues or questions:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.