{"serverInfo":{"name":"sprawl","version":"1.0.0","title":"Sprawl","description":"AI productivity agent — calendar, email, tasks, Slack, and 100+ integrations through one MCP. Persistent memory, scheduling, custom tools, and a natural-language escape hatch (sprawl_query) that runs the full Sprawl agent.","vendor":"Sprawl","homepage":"https://sprawl.to","documentation":"https://sprawl.to/docs/mcp"},"protocolVersion":"2024-11-05","transport":{"type":"http","url":"https://sprawl.to/api/mcp","methods":["POST"]},"authentication":{"required":true,"schemes":["bearer"],"instructions":"Generate an API key at https://sprawl.to/settings (free read-only keys available). Pass it as `Authorization: Bearer sprawl_sk_...`.","configSchema":{"type":"object","required":["apiKey"],"properties":{"apiKey":{"type":"string","title":"Sprawl API Key","description":"Get a free key at https://sprawl.to/settings","format":"password","pattern":"^sprawl_sk_.+"}}}},"capabilities":{"tools":{"listChanged":false},"resources":{"listChanged":false,"subscribe":false},"prompts":{"listChanged":false}},"pricing":{"model":"credits","currency":"USD","plans":[{"tier":"FREE","monthlyCredits":50},{"tier":"STARTER","monthlyCredits":500},{"tier":"PRO","monthlyCredits":2000}],"creditPacks":[{"name":"STARTER_PACK","credits":50,"priceUsd":9.99},{"name":"PRO_PACK","credits":250,"priceUsd":39.99},{"name":"POWER_PACK","credits":1000,"priceUsd":129.99}],"billingUrl":"https://sprawl.to/billing","agentCheckout":{"supported":true,"tool":"sprawl_create_checkout_link","finalizedBy":"human_account_owner"},"acpCheckout":{"specVersion":"2026-04-17","checkoutBase":"https://sprawl.to/api/acp/checkout_sessions","feedUrl":"https://sprawl.to/api/acp/feed","capabilities":{"create_session":true,"retrieve_session":true,"cancel_session":true,"complete_payment":false}},"note":"Usage is metered in credits; new accounts include a free trial allotment. An agent can call the sprawl_create_checkout_link tool to generate a one-click Stripe Checkout link for a plan upgrade or credit pack; the human account owner finalizes payment. The owner can also upgrade or buy a one-time credit pack directly at the billing URL. Sprawl also exposes Agentic Commerce Protocol (ACP) checkout-session endpoints for credit packs (create/retrieve/cancel work today; ACP payment completion is not yet enabled — use sprawl_create_checkout_link for a completable purchase)."},"tools":[{"name":"sprawl_query","description":"Execute a natural language query using Sprawl's full AI agent. This is the most powerful tool - it can understand complex requests and use any of the user's connected integrations to complete tasks. Use this for multi-step tasks or when you're unsure which specific tool to use.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Natural language description of what you want to accomplish. Be specific and detailed."}},"required":["query"]}},{"name":"sprawl_list_emails","description":"List recent emails from the user's Gmail inbox.","inputSchema":{"type":"object","properties":{"maxResults":{"type":"number","description":"Maximum number of emails to return (default: 10, max: 50)"},"query":{"type":"string","description":"Gmail search query (e.g., \"from:boss@company.com\", \"is:unread\", \"subject:meeting\")"}}}},{"name":"sprawl_search_emails","description":"Search emails using Gmail's powerful query syntax.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Gmail search query (e.g., \"from:john@example.com subject:invoice after:2024/01/01\")"},"maxResults":{"type":"number","description":"Maximum number of results (default: 10)"}},"required":["query"]}},{"name":"sprawl_get_email","description":"Get the full content of a specific email by ID.","inputSchema":{"type":"object","properties":{"emailId":{"type":"string","description":"The Gmail message ID"}},"required":["emailId"]}},{"name":"sprawl_send_email","description":"Send an email via Gmail. IMPORTANT: This is a high-impact action that requires approval unless the API key has Tier 1 permissions enabled.","inputSchema":{"type":"object","properties":{"to":{"type":"string","description":"Recipient email address"},"subject":{"type":"string","description":"Email subject line"},"body":{"type":"string","description":"Email body (plain text or HTML)"},"cc":{"type":"string","description":"CC recipients (comma-separated)"},"bcc":{"type":"string","description":"BCC recipients (comma-separated)"}},"required":["to","subject","body"]}},{"name":"sprawl_list_events","description":"List upcoming calendar events.","inputSchema":{"type":"object","properties":{"maxResults":{"type":"number","description":"Maximum number of events to return (default: 10)"},"timeMin":{"type":"string","description":"Start of time range (ISO 8601 format). Defaults to now."},"timeMax":{"type":"string","description":"End of time range (ISO 8601 format). Defaults to 7 days from now."}}}},{"name":"sprawl_create_event","description":"Create a new calendar event.","inputSchema":{"type":"object","properties":{"summary":{"type":"string","description":"Event title"},"description":{"type":"string","description":"Event description"},"start":{"type":"string","description":"Start time (ISO 8601 format, e.g., \"2024-03-15T10:00:00-07:00\")"},"end":{"type":"string","description":"End time (ISO 8601 format)"},"attendees":{"type":"array","items":{"type":"string"},"description":"List of attendee email addresses"},"location":{"type":"string","description":"Event location"}},"required":["summary","start","end"]}},{"name":"sprawl_find_free_time","description":"Find free time slots in the user's calendar.","inputSchema":{"type":"object","properties":{"duration":{"type":"number","description":"Desired meeting duration in minutes"},"timeMin":{"type":"string","description":"Start of search range (ISO 8601)"},"timeMax":{"type":"string","description":"End of search range (ISO 8601)"}},"required":["duration"]}},{"name":"sprawl_list_tasks","description":"List tasks from the user's connected task management tool (Todoist, Linear, Asana, or Jira).","inputSchema":{"type":"object","properties":{"service":{"type":"string","enum":["todoist","linear","asana","jira"],"description":"Which task service to query. If not specified, will use the first connected service."},"filter":{"type":"string","description":"Filter expression (service-specific)"},"maxResults":{"type":"number","description":"Maximum number of tasks to return"}}}},{"name":"sprawl_create_task","description":"Create a new task in the user's task management tool.","inputSchema":{"type":"object","properties":{"service":{"type":"string","enum":["todoist","linear","asana","jira"],"description":"Which task service to use"},"title":{"type":"string","description":"Task title"},"description":{"type":"string","description":"Task description"},"dueDate":{"type":"string","description":"Due date (ISO 8601 or natural language like \"tomorrow\")"},"priority":{"type":"string","enum":["low","medium","high","urgent"],"description":"Task priority"},"project":{"type":"string","description":"Project name or ID"}},"required":["title"]}},{"name":"sprawl_send_slack","description":"Send a message to a Slack channel or user. IMPORTANT: This action may reach external parties if the workspace has Slack Connect enabled.","inputSchema":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name (e.g., \"#general\") or user ID"},"message":{"type":"string","description":"Message text (supports Slack markdown)"}},"required":["channel","message"]}},{"name":"sprawl_search_slack","description":"Search messages in Slack.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query"},"channel":{"type":"string","description":"Limit search to a specific channel"}},"required":["query"]}},{"name":"sprawl_list_prompts","description":"List the user's saved prompts. Each prompt is a reusable template the user has stored in Sprawl's prompt library.","inputSchema":{"type":"object","properties":{"include_public":{"type":"boolean","description":"Also include community-shared public prompts (default: false)"},"category":{"type":"string","description":"Filter by category (productivity, marketing, coding, writing, analysis, creative, business, learning, other)"}}}},{"name":"sprawl_search_prompts","description":"Search the user's saved prompts by keyword across title, description, content, and tags.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query"},"category":{"type":"string","description":"Optional category filter"},"limit":{"type":"number","description":"Maximum results (default: 10)"}},"required":["query"]}},{"name":"sprawl_use_prompt","description":"Retrieve the full content of a saved prompt by ID or title. Use this to fetch a prompt before using it.","inputSchema":{"type":"object","properties":{"prompt_id":{"type":"string","description":"The prompt ID"},"prompt_title":{"type":"string","description":"Or the prompt title (case-insensitive)"}}}},{"name":"sprawl_save_prompt","description":"Save a new prompt to the user's library. Optionally share with the public community.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Prompt title"},"content":{"type":"string","description":"The prompt body / template text"},"description":{"type":"string","description":"Short description of what the prompt does"},"category":{"type":"string","description":"Category (productivity, marketing, coding, writing, analysis, creative, business, learning, other)"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for organization"},"share_with_community":{"type":"boolean","description":"Make this prompt publicly visible to other Sprawl users"}},"required":["title","content"]}},{"name":"sprawl_update_prompt","description":"Update fields on an existing saved prompt.","inputSchema":{"type":"object","properties":{"prompt_id":{"type":"string","description":"The prompt ID"},"prompt_title":{"type":"string","description":"Or the prompt title to look up by"},"title":{"type":"string","description":"New title"},"content":{"type":"string","description":"New content"},"description":{"type":"string","description":"New description"},"category":{"type":"string","description":"New category"},"tags":{"type":"array","items":{"type":"string"},"description":"New tags"},"is_public":{"type":"boolean","description":"Toggle public visibility"}}}},{"name":"sprawl_delete_prompt","description":"Delete a saved prompt by ID or title.","inputSchema":{"type":"object","properties":{"prompt_id":{"type":"string","description":"The prompt ID"},"prompt_title":{"type":"string","description":"Or the prompt title"}}}},{"name":"sprawl_memory_list","description":"List all of the user's persistent agent memories (preferences, patterns, context, general). Useful at the start of a session to recall what the user has taught Sprawl about themselves.","inputSchema":{"type":"object","properties":{}}},{"name":"sprawl_memory_get","description":"Read a specific memory entry by its key.","inputSchema":{"type":"object","properties":{"key":{"type":"string","description":"The memory key (lowercase, underscores only)"}},"required":["key"]}},{"name":"sprawl_memory_set","description":"Create or update a memory entry. Memories persist across sessions and are surfaced to Sprawl's chat agent automatically. Use for user preferences (timezone, formatting), integration patterns (Linear team is ENG), or important context.","inputSchema":{"type":"object","properties":{"key":{"type":"string","description":"Unique identifier (lowercase alphanumeric + underscores, e.g. \"email_preferences\")"},"content":{"type":"string","description":"The memory content (concise, factual; max 2000 chars)"},"category":{"type":"string","enum":["preference","pattern","context","general"],"description":"Category — defaults to \"general\""}},"required":["key","content"]}},{"name":"sprawl_memory_delete","description":"Delete a memory entry by key.","inputSchema":{"type":"object","properties":{"key":{"type":"string","description":"The memory key to delete"}},"required":["key"]}},{"name":"sprawl_list_custom_tools","description":"List the user's custom data tools. Custom tools are user-defined data stores (food log, expenses, habits, projects, inventory) with typed fields and AI-driven extraction. Each tool has a schema and stored records.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Optional: scope to tools in a specific project"}}}},{"name":"sprawl_create_custom_tool","description":"Create a new custom data tool with a typed schema. Use this to give the user a new data store (e.g. \"expense_log\", \"workout_tracker\"). Schema must include fields with types and aiInstructions for parsing user input.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Tool identifier (lowercase, underscores, e.g. \"expense_log\")"},"displayName":{"type":"string","description":"Human-readable name (e.g. \"Expense Log\")"},"description":{"type":"string","description":"What this tool tracks"},"icon":{"type":"string","description":"Emoji icon (optional)"},"schema":{"type":"object","description":"Schema defining fields, AI instructions, optional aggregations","properties":{"fields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"snake_case field id"},"type":{"type":"string","enum":["string","number","boolean","date","enum","array","currency"]},"displayName":{"type":"string"},"description":{"type":"string","description":"AI extraction hint"},"required":{"type":"boolean"},"enumValues":{"type":"array","items":{"type":"string"},"description":"For enum type only"}},"required":["name","type","displayName","description","required"]}},"aiInstructions":{"type":"string","description":"How the agent should extract data from user input"},"summaryTemplate":{"type":"string","description":"Display template, e.g. \"{food}: {calories} cal\""}},"required":["fields","aiInstructions"]},"project_id":{"type":"string","description":"Optional: scope to a project"},"project_name":{"type":"string","description":"Or look up project by name"}},"required":["name","displayName","description","schema"]}},{"name":"sprawl_update_custom_tool","description":"Update an existing custom tool's display name, description, schema, or active state.","inputSchema":{"type":"object","properties":{"tool_name":{"type":"string","description":"The tool name to update"},"displayName":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"isActive":{"type":"boolean","description":"Enable/disable the tool"},"schema":{"type":"object","description":"Schema updates (merged with existing)"}},"required":["tool_name"]}},{"name":"sprawl_delete_custom_tool","description":"Delete a custom tool and all its records. Requires explicit confirm.","inputSchema":{"type":"object","properties":{"tool_name":{"type":"string","description":"The tool to delete"},"confirm":{"type":"boolean","description":"Must be true to confirm destructive deletion"}},"required":["tool_name","confirm"]}},{"name":"sprawl_custom_add","description":"Add a new record to a custom data tool. The agent extracts structured fields from natural-language input using the tool's schema.","inputSchema":{"type":"object","properties":{"tool_name":{"type":"string","description":"Which custom tool to add to"},"data":{"type":"object","description":"Record data — keys match the tool's schema fields"},"record_date":{"type":"string","description":"ISO date for the record (defaults to now)"}},"required":["tool_name","data"]}},{"name":"sprawl_custom_query","description":"Query records from a custom data tool. Supports time-window filtering and aggregations (sum, avg, count, etc.).","inputSchema":{"type":"object","properties":{"tool_name":{"type":"string","description":"Which custom tool to query"},"period":{"type":"string","enum":["today","yesterday","this_week","last_week","this_month","last_month","all"],"description":"Predefined time window (default: this_week)"},"start_date":{"type":"string","description":"Custom range start (ISO)"},"end_date":{"type":"string","description":"Custom range end (ISO)"},"include_aggregations":{"type":"boolean","description":"Include sum/avg/count aggregations defined in the tool schema"},"limit":{"type":"number","description":"Maximum records (default: 50)"}},"required":["tool_name"]}},{"name":"sprawl_custom_update","description":"Update fields on an existing custom-tool record by ID.","inputSchema":{"type":"object","properties":{"tool_name":{"type":"string"},"record_id":{"type":"string"},"data":{"type":"object","description":"Partial update — only provided keys are changed"}},"required":["tool_name","record_id","data"]}},{"name":"sprawl_custom_delete","description":"Delete a single record from a custom data tool by ID.","inputSchema":{"type":"object","properties":{"tool_name":{"type":"string"},"record_id":{"type":"string"}},"required":["tool_name","record_id"]}},{"name":"sprawl_generate_image","description":"Generate an image from a text prompt (or edit existing images). Uses OpenAI image models. Costs credits based on size/quality/tier.","inputSchema":{"type":"object","properties":{"prompt":{"type":"string","description":"What to generate"},"size":{"type":"string","enum":["1024x1024","1536x1024","1024x1536"],"description":"Output size (default: 1024x1024)"},"quality":{"type":"string","enum":["low","medium","high"],"description":"Render quality (default: medium)"},"background":{"type":"string","enum":["transparent","opaque","auto"],"description":"Background handling"},"model_tier":{"type":"string","enum":["mini","standard","premium"],"description":"Model tier (default: standard)"},"input_images":{"type":"array","items":{"type":"string"},"description":"Optional: input image URLs for editing/composition"}},"required":["prompt"]}},{"name":"sprawl_generate_video","description":"Generate a video from a text prompt (and optional input image). Async — returns a videoId immediately; use sprawl_list_videos to check status. Costs credits based on duration/tier/provider.","inputSchema":{"type":"object","properties":{"prompt":{"type":"string","description":"What to generate"},"provider":{"type":"string","enum":["openai","google"],"description":"openai = Sora, google = Veo (default: openai)"},"seconds":{"type":"number","enum":[4,5,6,7,8,12],"description":"Duration in seconds (default: 5)"},"size":{"type":"string","enum":["1280x720","720x1280","1080x1080"],"description":"Aspect ratio"},"model_tier":{"type":"string","enum":["standard","premium","fast"],"description":"Model tier"},"input_image_url":{"type":"string","description":"Optional: image-to-video starting frame URL"}},"required":["prompt"]}},{"name":"sprawl_remix_video","description":"Remix an existing generated video with a new prompt (inherits original settings, only the prompt changes).","inputSchema":{"type":"object","properties":{"video_id":{"type":"string","description":"The Sprawl video DB ID to remix"},"prompt":{"type":"string","description":"New prompt for the remix"}},"required":["video_id","prompt"]}},{"name":"sprawl_list_videos","description":"List the user's generated videos with status, URL, and metadata.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Page size (default: 20)"},"offset":{"type":"number","description":"Pagination offset"}}}},{"name":"sprawl_delete_video","description":"Delete a generated video by ID.","inputSchema":{"type":"object","properties":{"video_id":{"type":"string","description":"The Sprawl video DB ID"}},"required":["video_id"]}},{"name":"sprawl_list_integrations","description":"List the user's connected integrations/services.","inputSchema":{"type":"object","properties":{}}},{"name":"sprawl_get_usage","description":"Get the user's current credit usage and subscription status.","inputSchema":{"type":"object","properties":{}}},{"name":"sprawl_create_checkout_link","description":"Generate a Stripe Checkout link for the human account owner to upgrade to a paid plan (STARTER or PRO). Returns checkout_url — Sprawl never charges autonomously; the owner enters payment and confirms. Surface the link to your human owner when out of credits.","inputSchema":{"type":"object","properties":{"plan":{"type":"string","enum":["STARTER","PRO"],"description":"Which paid plan to create a checkout link for."}},"required":["plan"]}}],"resources":[],"prompts":[]}