# SerenAI MCP Server > Model Context Protocol server for SerenAI - Pay Per Call Agentic Commerce The SerenAI MCP server enables AI assistants to manage serverless Postgres databases and query the agent marketplace with SerenBucks micropayments. ## Quick Install (90 seconds) One command configures all your MCP clients automatically. ### macOS / Linux ```bash curl -fsSL https://serendb.com/install.sh | bash ``` ### Windows (PowerShell) ```powershell irm https://serendb.com/install.ps1 | iex ``` The installer auto-detects and configures: Claude Code, Claude Desktop, Cursor, Windsurf, OpenCode, Codex, and Gemini CLI. **[Full Installation Guide](/guides/mcp-install.html)** — Manual setup and troubleshooting. ## Available Tools (67) ### Marketplace #### `list_agent_publishers` List active publishers in the agent store **Parameters:** - `search`: string (optional) - `is_verified`: boolean (optional) - `limit`: integer (optional) - `offset`: integer (optional) #### `get_agent_publisher` Get details about a specific publisher including pricing info by slug **Parameters:** - `slug`: string (required) #### `suggest_for_task` Get publisher and agent recommendations for a task **Parameters:** - `query`: string (required) - The task to find publishers for - `type`: string (optional) - publisher, agent, or both - `limit`: integer (optional) #### `execute_paid_query` Execute a paid SQL query against a publisher's database **Parameters:** - `publisher`: string (required) - Publisher slug or UUID - `query`: string (required) - `database`: string (optional) - `confirm`: boolean (optional) #### `execute_paid_api` Execute a paid API request against a publisher's endpoint **Parameters:** - `publisher`: string (required) - `method`: string (optional) - `path`: string (optional) - `body`: object (optional) - `confirm`: boolean (optional) #### `execute_paid_api_stream` Execute a paid streaming API request against a publisher's endpoint **Parameters:** - `publisher`: string (required) - `method`: string (optional) - `path`: string (optional) - `body`: object (optional) - `confirm`: boolean (optional) #### `estimate_query_cost` Estimate the cost of a SQL query without executing it **Parameters:** - `publisher`: string (required) - `query`: string (required) #### `get_supported` Get supported payment protocols and configuration ### Publishers #### `create_publisher` Create a new publisher in the agent store. Publishers can be databases, API integrations, or compute resources. **Parameters:** - `name`: string (required) - Publisher display name - `slug`: string (required) - URL-friendly slug - `wallet_address`: string (required) - Wallet address for payments - `wallet_network_id`: string (required) - Network ID (CAIP-2 format) - `publisher_category`: string (required) - Category: database, integration, or compute - `database_type`: string (optional) - For database category: serendb, neon, or supabase - `integration_type`: string (optional) - For integration category: api or mcp - `compute_type`: string (optional) - For compute category: template, workflow, or function - `api_url`: string (optional) - External API URL (for integration_type: api) - `mcp_endpoint`: string (optional) - MCP server endpoint URL (for integration_type: mcp) - `description`: string (optional) - Publisher description - `email`: string (optional) - Contact email #### `update_publisher` Update an existing publisher's details including taxonomy, endpoints, and MCP configuration. **Parameters:** - `slug`: string (required) - Publisher slug to update - `name`: string (optional) - Publisher display name - `description`: string (optional) - Publisher description - `resource_name`: string (optional) - Resource display name for marketplace - `resource_description`: string (optional) - Resource description for marketplace - `api_url`: string (optional) - External API URL (for API publishers) - `mcp_endpoint`: string (optional) - MCP server endpoint URL (for MCP publishers) - `email`: string (optional) - Contact email - `is_active`: boolean (optional) - Whether the publisher is active #### `update_publisher_pricing` Update a publisher's pricing configuration **Parameters:** - `slug`: string (required) - `price_per_call`: string (optional) - Price per API call (decimal string) - `base_price_per_1000_rows`: string (optional) - `min_charge`: string (optional) - `max_charge`: string (optional) #### `upload_publisher_logo` Upload a logo image for a publisher **Parameters:** - `slug`: string (required) - `logo`: string (required) - Base64 encoded image - `content_type`: string (required) - image/png, image/jpeg, etc. ### MCP Publishers #### `list_mcp_tools` List tools available on an MCP publisher. Use this to discover what capabilities an MCP publisher provides. **Parameters:** - `publisher`: string (required) - Publisher slug of the MCP publisher #### `call_mcp_tool` Call a tool on an MCP publisher. Use list_mcp_tools first to see available tools and their input schemas. **Parameters:** - `publisher`: string (required) - Publisher slug of the MCP publisher - `tool_name`: string (required) - Name of the tool to call - `arguments`: object (optional) - Arguments to pass to the tool (JSON object) #### `list_mcp_resources` List resources available on an MCP publisher. MCP publishers can expose resources (like files, data sources) that can be read. **Parameters:** - `publisher`: string (required) - Publisher slug of the MCP publisher #### `read_mcp_resource` Read a resource from an MCP publisher. Use list_mcp_resources first to see available resources and their URIs. **Parameters:** - `publisher`: string (required) - Publisher slug of the MCP publisher - `uri`: string (required) - URI of the resource to read ### Templates #### `list_agent_templates` List available agent templates in the catalog **Parameters:** - `search`: string (optional) - `language`: string (optional) - python, typescript, rust - `limit`: integer (optional) - `offset`: integer (optional) #### `get_agent_template` Get details about a specific agent template by slug **Parameters:** - `slug`: string (required) #### `invoke_agent_template` Invoke an agent template with input data **Parameters:** - `slug`: string (required) - `input`: object (required) - Input data for the template - `confirm`: boolean (optional) ### Payments #### `get_prepaid_balance` Get your SerenBucks balance #### `get_transaction_history` Get transaction history (deposits, charges, refunds) **Parameters:** - `limit`: integer (optional) - `offset`: integer (optional) #### `create_prepaid_deposit` Deposit SerenBucks with a credit card via Stripe **Parameters:** - `amount_usd`: number (required) - Amount in USD (minimum $5.00) #### `get_x402_deposit_requirements` Get x402 on-chain deposit requirements for depositing USDC **Parameters:** - `publisher`: string (required) - `amount`: string (required) - Amount to deposit (decimal string) - `agent_wallet`: string (required) - Agent wallet address ### Wallet #### `get_wallet_status` Get complete wallet status including SerenBucks and on-chain USDC balance #### `has_local_wallet` Check if a local wallet is configured #### `get_local_wallet_address` Get the local wallet address (requires WALLET_PRIVATE_KEY) ### Projects #### `list_projects` List all Seren projects accessible to the authenticated user #### `create_project` Create a new Seren project **Parameters:** - `name`: string (required) - Project name - `region`: string (required) - Deployment region #### `describe_project` Get detailed information about a specific project **Parameters:** - `project_id`: string (required) #### `update_project` Update a project's settings including name, security options, and compute defaults **Parameters:** - `project_id`: string (required) - `name`: string (optional) - New project name - `compute_unit_min`: integer (optional) - `compute_unit_max`: integer (optional) #### `delete_project` Delete a Seren project **Parameters:** - `project_id`: string (required) ### Databases #### `list_all_databases` List all databases across all projects with project and branch names #### `list_databases` List all databases in a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) #### `get_database` Get details about a specific database **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `database_id`: string (required) #### `create_database` Create a new database in a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `name`: string (required) #### `delete_database` Delete a database from a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `database_id`: string (required) ### Branches #### `list_branches` List branches for a project **Parameters:** - `project_id`: string (required) #### `create_branch` Create a new branch in a project **Parameters:** - `project_id`: string (required) - `name`: string (required) - `parent_branch_id`: string (optional) #### `describe_branch` Get details about a specific branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) #### `rename_branch` Rename a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `name`: string (required) - New branch name #### `reset_branch` Reset a branch to its parent's latest state (destroys all data on the branch) **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) #### `set_branch_expiration` Set or remove branch expiration date **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `expires_at`: string (optional) - Expiration date in RFC3339 format, or null to remove #### `set_default_branch` Set a branch as the default branch for the project **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) #### `delete_branch` Delete a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) ### SQL #### `run_sql` Execute a SQL query against a database **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `database`: string (required) - `query`: string (required) #### `run_sql_transaction` Execute multiple SQL statements in a single transaction **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `database`: string (required) - `queries`: array (required) #### `explain_sql_statement` Explain a SQL statement (FORMAT JSON) **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `database`: string (required) - `query`: string (required) ### Schema #### `get_database_tables` List tables in a database schema **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `database`: string (required) - `schema`: string (optional) #### `describe_table_schema` Get schema information for a table **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `database`: string (required) - `table_name`: string (required) - `schema`: string (optional) ### Endpoints #### `list_endpoints` List all endpoints for a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) #### `create_endpoint` Create a new endpoint for a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `autoscaling_min`: integer (optional) - `autoscaling_max`: integer (optional) #### `get_endpoint_status` Get the current status of an endpoint (running, suspended, etc.) **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `endpoint_id`: string (required) #### `update_endpoint` Update an endpoint's settings including autoscaling and suspend timeout **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `endpoint_id`: string (required) - `autoscaling_min`: integer (optional) - `autoscaling_max`: integer (optional) - `suspend_timeout_seconds`: integer (optional) #### `start_endpoint` Start a suspended endpoint **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `endpoint_id`: string (required) #### `suspend_endpoint` Suspend an endpoint **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `endpoint_id`: string (required) #### `restart_endpoint` Restart an endpoint (rolling restart via Kubernetes) **Parameters:** - `project_id`: string (required) - `endpoint_id`: string (required) #### `delete_endpoint` Delete an endpoint **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `endpoint_id`: string (required) ### Roles #### `list_roles` List all roles in a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) #### `create_role` Create a new database role on a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `name`: string (required) - Role name #### `reset_role_password` Reset a database role's password, generating a new secure password **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `role_id`: string (required) - `password`: string (required) - New password for the role #### `reveal_role_password` Reveal the current password for a database role **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `role_name`: string (required) #### `delete_role` Delete a database role from a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `role_id`: string (required) ### Connection #### `get_connection_string` Get connection string for a branch **Parameters:** - `project_id`: string (required) - `branch_id`: string (required) - `database`: string (optional) - `pooled`: boolean (optional) - Return pooled connection - `role`: string (optional) - PostgreSQL role/username ### Organizations #### `list_organizations` List organizations accessible to the authenticated user #### `list_api_keys` List all API keys for an organization **Parameters:** - `organization_id`: string (required) #### `create_api_key` Create a new API key for an organization **Parameters:** - `organization_id`: string (required) - `name`: string (required) - `expires_in_days`: integer (optional) #### `revoke_api_key` Revoke an API key **Parameters:** - `organization_id`: string (required) - `key_id`: string (required) ## Authentication The MCP server supports three authentication modes: 1. **API Key (stdio)**: Set `API_KEY` environment variable 2. **Bearer Token (HTTP)**: Set `AUTH_TOKEN` for simple auth 3. **OAuth 2.1 (HTTP)**: Full OAuth flow with PKCE ## Read-Only Mode Set `READ_ONLY=true` to block write operations (useful for shared deployments). ## More Information - [Full API Documentation](https://docs.serendb.com/) - [Tool Schemas](/install-seren/tools.json) - [GitHub Repository](https://github.com/serenorg/seren)