{
    "name": "SurrealDB MCP Server",
    "description": "Managed Model Context Protocol server for SurrealDB Cloud, reachable at https://mcp.surrealdb.com. Deploy and manage instances, run SurrealQL against them, inspect status, metrics and logs, manage organisation access and billing, and store and recall agent memory in Spectron contexts. The service speaks MCP over streamable HTTP rather than an A2A transport binding, so this card describes what the agent can do and how to reach it; an A2A client that finds no supported binding here should connect over MCP instead. Requires a SurrealDB account or a personal access token.",
    "supportedInterfaces": [
        {
            "url": "https://mcp.surrealdb.com",
            "protocolBinding": "MCP",
            "protocolVersion": "1.0"
        }
    ],
    "provider": {
        "organization": "SurrealDB",
        "url": "https://surrealdb.com"
    },
    "iconUrl": "https://surrealdb.com/static/icon/icon.png",
    "version": "1.0.0",
    "documentationUrl": "https://surrealdb.com/docs/build/ai-agents/mcp",
    "capabilities": {
        "streaming": false,
        "pushNotifications": false,
        "extendedAgentCard": false
    },
    "securitySchemes": {
        "surrealId": {
            "oauth2SecurityScheme": {
                "description": "Sign in with the Surreal ID used for SurrealDB Cloud. The client registers dynamically, opens a browser window for approval, and acts as the signed-in user, limited by the role held in each organisation.",
                "flows": {
                    "authorizationCode": {
                        "authorizationUrl": "https://mcp.surrealdb.com/oauth/authorize",
                        "tokenUrl": "https://mcp.surrealdb.com/oauth/token",
                        "scopes": {
                            "openid": "Identify the signed-in Surreal ID",
                            "profile": "Read the account's profile details",
                            "email": "Read the account's email address",
                            "offline_access": "Refresh the credential without a further sign-in"
                        },
                        "pkceRequired": true
                    }
                },
                "oauth2MetadataUrl": "https://surrealdb.com/.well-known/oauth-authorization-server"
            }
        },
        "personalAccessToken": {
            "httpAuthSecurityScheme": {
                "description": "A personal access token created in the SurrealDB account portal, sent as an Authorization header. Carries only the permissions selected when it was created. Use this where a browser cannot be opened, such as unattended runs.",
                "scheme": "Bearer"
            }
        }
    },
    "securityRequirements": [
        {
            "schemes": {
                "surrealId": {
                    "list": ["openid", "profile", "email", "offline_access"]
                }
            }
        },
        {
            "schemes": {
                "personalAccessToken": {
                    "list": []
                }
            }
        }
    ],
    "defaultInputModes": ["text/plain", "application/json"],
    "defaultOutputModes": ["text/plain", "application/json"],
    "skills": [
        {
            "id": "cloud-instance-management",
            "name": "Cloud instance management",
            "description": "Deploy a SurrealDB Cloud instance, and pause, resume, resize, upgrade, adjust the backups of, or delete an existing one. Deletion is permanent and takes the instance's backups with it, so the instance must be named exactly as it stands.",
            "tags": ["surrealdb", "cloud", "instances", "provisioning", "infrastructure"],
            "examples": [
                "Deploy a small instance in eu-west-1 on the latest version of SurrealDB.",
                "Pause the staging instance until Monday.",
                "Resize the production instance now that traffic has doubled."
            ]
        },
        {
            "id": "surrealql-query",
            "name": "SurrealQL query execution",
            "description": "Run SurrealQL inside a running instance: select, create, insert, upsert, update, delete and relate records, call database functions, and choose the namespace and database to work in. The instance must be running and on SurrealDB 3.1 or later.",
            "tags": ["surrealql", "query", "records", "graph", "database"],
            "examples": [
                "How many orders were placed last week, and what did they total?",
                "Create a person table and seed it with ten sample records.",
                "Relate every author to the articles they wrote."
            ]
        },
        {
            "id": "schema-and-catalogue",
            "name": "Schema and catalogue inspection",
            "description": "List namespaces, databases, tables, indexes and users, describe the schema or the engine itself, and look up the regions, instance types and SurrealDB versions available to the account.",
            "tags": ["schema", "introspection", "metadata", "catalogue"],
            "examples": [
                "Describe the schema of the production database.",
                "Which regions and instance types can I deploy to?",
                "List the indexes defined on the article table."
            ]
        },
        {
            "id": "instance-monitoring",
            "name": "Instance monitoring and diagnostics",
            "description": "Read an instance's status, metrics, logs and usage, so that a slow or failing query can be investigated next to the data it ran against.",
            "tags": ["monitoring", "metrics", "logs", "diagnostics", "observability"],
            "examples": [
                "Why has the production instance been slow since this morning?",
                "Show me the error logs for the last hour.",
                "What has this instance's memory use looked like this week?"
            ]
        },
        {
            "id": "organisation-access",
            "name": "Organisation and access management",
            "description": "List the organisations the account belongs to, create or rename one, see who has access, invite someone, change their role, or withdraw an invitation.",
            "tags": ["organisations", "members", "roles", "invitations", "access-control"],
            "examples": [
                "Who has access to the Acme organisation?",
                "Invite alex@example.com as a developer.",
                "Withdraw the invitation sent to sam@example.com."
            ]
        },
        {
            "id": "billing-and-usage",
            "name": "Billing, usage and cost estimation",
            "description": "Fill in billing details, check whether an organisation is ready to deploy, read usage and invoices, and price a configuration before anything is created. Card details are never handled here; payment is completed by the account holder on a secure checkout page.",
            "tags": ["billing", "usage", "invoices", "cost", "pricing"],
            "examples": [
                "What would a medium instance in us-east-1 cost per month?",
                "What did we spend across all instances last month?",
                "Is this organisation ready to deploy an instance?"
            ]
        },
        {
            "id": "agent-memory",
            "name": "Agent memory with Spectron",
            "description": "Create and configure Spectron memory contexts and control who may use them, then remember, recall, reflect on, forget, upload and inspect what an agent has learned across sessions.",
            "tags": ["memory", "spectron", "recall", "knowledge-graph", "context"],
            "examples": [
                "Remember that this customer prefers to be contacted by email.",
                "What do I already know about the Acme migration?",
                "Create a memory context for the support team and give them access."
            ]
        }
    ]
}
