Scalix Cloud
The agent-native cloud: database, functions, AI, storage, computers. 50 tools, one API key.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen scalix_db_migrate
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"cloud": {
"url": "https://api.scalix.world/v1/mcp"
}
}
}Puntos de conexión remotos
https://api.scalix.world/v1/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (51)
🟢scalix_db_relationships
Get the relationship map showing how tables are connected via foreign keys.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟢scalix_db_search_columns(query)
Search for columns by name or type across all tables.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"description": "Search term to match column names or types",
"type": "string"
}
},
"required": [
"query"
]
}🟢scalix_db_pii
List all columns classified as containing personally identifiable information (PII).
Esquema de entrada
{
"type": "object",
"properties": {}
}🟢scalix_db_optimize(sql)
Analyze a SQL query and return optimization suggestions including index recommendations and query rewrites.
Esquema de entrada
{
"type": "object",
"properties": {
"sql": {
"description": "SQL query to analyze and optimize",
"type": "string"
}
},
"required": [
"sql"
]
}🟢scalix_db_text_to_sql(question)
Translate a plain-language question into a candidate SQL query using pattern-matching against the live schema (no AI model — simple questions only: counts, averages, filtered selects on a named table). Returns the SQL without executing it, with a confidence score; low confidence means the table was guessed. Review the statement and tables_used, then run it with scalix_db_query. For complex questions, read scalix_db_schema and write the SQL directly.
Esquema de entrada
{
"type": "object",
"properties": {
"question": {
"description": "The question to answer from the database, in plain language (e.g. 'how many orders shipped last week?')",
"type": "string"
}
},
"required": [
"question"
]
}🔴scalix_db_query(confirm_token, params, sql)
Execute a SQL query against the project database. Returns columns, rows, row count, and cost breakdown. Destructive statements (DROP/TRUNCATE/bulk DELETE) require a two-step confirmation: the first call returns code CONFIRMATION_REQUIRED with a confirmation_token — re-call with that value in confirm_token to execute.
Esquema de entrada
{
"type": "object",
"properties": {
"confirm_token": {
"description": "Confirmation token from a prior CONFIRMATION_REQUIRED response; required to execute destructive SQL (single-use, short TTL)",
"type": "string"
},
"params": {
"description": "Bind parameters for the query",
"items": {},
"type": "array"
},
"sql": {
"description": "SQL query to execute",
"type": "string"
}
},
"required": [
"sql"
]
}🟢scalix_db_schema
Get the full database schema including all tables, columns, types, and relationships.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟢scalix_db_table(table)
Get detailed information about a specific database table including columns, indexes, and foreign keys.
Esquema de entrada
{
"type": "object",
"properties": {
"table": {
"description": "Table name to inspect",
"type": "string"
}
},
"required": [
"table"
]
}🔴scalix_db_migrate(tenant_id, version)
Apply a database migration by version number.
Esquema de entrada
{
"type": "object",
"properties": {
"tenant_id": {
"description": "Tenant ID",
"type": "string"
},
"version": {
"description": "Migration version to apply",
"type": "string"
}
},
"required": [
"tenant_id",
"version"
]
}🟢scalix_storage_list(bucket, prefix)
List storage buckets, or list objects in a specific bucket with optional prefix filter.
Esquema de entrada
{
"type": "object",
"properties": {
"bucket": {
"description": "Bucket name. If omitted, lists all buckets.",
"type": "string"
},
"prefix": {
"description": "Filter objects by key prefix",
"type": "string"
}
}
}🔴scalix_storage_upload(bucket, content, content_type, key)
Upload content to object storage. Provide the content as a base64-encoded string.
Esquema de entrada
{
"type": "object",
"properties": {
"bucket": {
"description": "Target bucket name",
"type": "string"
},
"content": {
"description": "Base64-encoded file content",
"type": "string"
},
"content_type": {
"default": "application/octet-stream",
"description": "MIME type",
"type": "string"
},
"key": {
"description": "Object key (path)",
"type": "string"
}
},
"required": [
"bucket",
"key",
"content"
]
}🟢scalix_storage_download(bucket, key)
Download an object from storage. Returns the content as base64.
Esquema de entrada
{
"type": "object",
"properties": {
"bucket": {
"description": "Bucket name",
"type": "string"
},
"key": {
"description": "Object key (path)",
"type": "string"
}
},
"required": [
"bucket",
"key"
]
}🟡scalix_storage_create_bucket(name, public)
Create a new Scalix Storage bucket in the project (S3-compatible object storage). Bucket names must be unique within the project. Setting public=true makes every object in the bucket readable without authentication — leave it false (the default) and use presigned URLs for private sharing.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"description": "Bucket name, unique within the project",
"type": "string"
},
"public": {
"default": false,
"description": "true = all objects publicly readable without auth; false (default) = private, share via presigned URLs",
"type": "boolean"
}
},
"required": [
"name"
]
}🟢scalix_fn_list
List all deployed serverless functions.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟡scalix_fn_deploy(image, name, runtime)
Deploy a Scalix Function — serverless, per-request billed, running in isolated microVMs — from a container image. Invoke it with scalix_fn_invoke once deployed.
Esquema de entrada
{
"type": "object",
"properties": {
"image": {
"description": "Container image reference",
"type": "string"
},
"name": {
"description": "Function name",
"type": "string"
},
"runtime": {
"description": "Runtime — `node` or `python` (exactly what the functions orchestrator accepts)",
"type": "string"
}
},
"required": [
"name",
"image"
]
}🔴scalix_fn_invoke(data, function_id)
Invoke a deployed function with a JSON payload.
Esquema de entrada
{
"type": "object",
"properties": {
"data": {
"description": "JSON payload to pass to the function",
"type": "object"
},
"function_id": {
"description": "Function ID to invoke",
"type": "string"
}
},
"required": [
"function_id"
]
}🟢scalix_kv_get(key)
Read a single value from the project's key-value store by exact key. Returns the stored value, or a not-found error if the key does not exist or its TTL has expired. Use scalix_kv_list to discover keys by prefix first.
Esquema de entrada
{
"type": "object",
"properties": {
"key": {
"description": "Exact key to look up (case-sensitive)",
"type": "string"
}
},
"required": [
"key"
]
}🔴scalix_kv_set(key, ttl, value)
Set a key-value pair with optional TTL.
Esquema de entrada
{
"type": "object",
"properties": {
"key": {
"description": "Key to set",
"type": "string"
},
"ttl": {
"description": "Time-to-live in seconds (0 = no expiry)",
"type": "integer"
},
"value": {
"description": "Value to store",
"type": "string"
}
},
"required": [
"key",
"value"
]
}🟢scalix_kv_list(prefix)
List keys in the key-value store, optionally filtered by prefix.
Esquema de entrada
{
"type": "object",
"properties": {
"prefix": {
"description": "Filter keys by prefix",
"type": "string"
}
}
}⚪scalix_ai_infer(max_tokens, model, prompt, system, temperature)
Run AI inference on Scalix AI. Sends a prompt and returns the model's response in the OpenAI-compatible chat-completions format; tokens are billed to the project's credit pool. Discover available model IDs with scalix_ai_models.
Esquema de entrada
{
"type": "object",
"properties": {
"max_tokens": {
"default": 1024,
"description": "Maximum tokens to generate",
"type": "integer"
},
"model": {
"description": "Model ID (from scalix_ai_models — a scalix-auto/* tier or a scalix-gw/<vendor>/<model> catalog id)",
"type": "string"
},
"prompt": {
"description": "User prompt / message",
"type": "string"
},
"system": {
"description": "System message",
"type": "string"
},
"temperature": {
"default": 0.7,
"description": "Sampling temperature (0-2)",
"type": "number"
}
},
"required": [
"prompt"
]
}🟢scalix_ai_models
List the AI models available to the project — virtual tiers and the pass-through catalog model IDs — for use in scalix_ai_infer.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟡scalix_events_publish(data, event_type, topic_id)
Publish an event to a topic. Provide an event_type (a short name for the kind of event, e.g. 'user.created') and the data payload.
Esquema de entrada
{
"type": "object",
"properties": {
"data": {
"description": "Event payload (JSON)",
"type": "object"
},
"event_type": {
"description": "Event type/name, e.g. 'user.created'",
"type": "string"
},
"topic_id": {
"description": "Topic ID to publish to",
"type": "string"
}
},
"required": [
"topic_id",
"event_type",
"data"
]
}🟢scalix_events_topics
List the event-bus topics in the project, with each topic's ID and name. Use this to find or verify a topic_id before publishing with scalix_events_publish; publishing to a non-existent topic fails.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟡scalix_cron_create(action_type, config, expression, name)
Create a cron schedule to run a function or webhook on a timer.
Esquema de entrada
{
"type": "object",
"properties": {
"action_type": {
"description": "Type of action to trigger",
"enum": [
"function",
"webhook"
],
"type": "string"
},
"config": {
"description": "Action configuration (function_id or webhook URL)",
"type": "object"
},
"expression": {
"description": "Cron expression (e.g., '*/5 * * * *')",
"type": "string"
},
"name": {
"description": "Schedule name",
"type": "string"
}
},
"required": [
"name",
"expression",
"action_type"
]
}⚪scalix_sandbox_run(code, files, language, packages, timeout_seconds)
Execute code in an isolated sandbox. Supports Python, JavaScript, TypeScript, and Bash. Returns stdout/stderr.
Esquema de entrada
{
"type": "object",
"properties": {
"code": {
"description": "Source code to execute",
"type": "string"
},
"files": {
"description": "Additional files (filename -> content)",
"type": "object"
},
"language": {
"description": "Programming language",
"enum": [
"python",
"javascript",
"typescript",
"bash"
],
"type": "string"
},
"packages": {
"description": "Packages to install (pip/npm)",
"items": {
"type": "string"
},
"type": "array"
},
"timeout_seconds": {
"description": "Max execution time in seconds (default: 30)",
"type": "integer"
}
},
"required": [
"language",
"code"
]
}🟡scalix_computer_create(disk_gb, memory_mb, name, ssh_keys, vcpus)
Get or create a persistent Linux machine by name. Idempotent — calling it again with the same name returns the existing machine rather than creating another, so it is safe to retry. Unlike a sandbox, the disk survives stop/start and is only erased by scalix_computer_delete.
Esquema de entrada
{
"type": "object",
"properties": {
"disk_gb": {
"description": "Root disk in GB, 5-200 (default 10). Fixed at create — disks do not grow. Ignored if the machine already exists.",
"type": "integer"
},
"memory_mb": {
"description": "Memory in MB, 512-32768 (default 1024). Ignored if the machine already exists.",
"type": "integer"
},
"name": {
"description": "Machine name: lowercase letters, digits and hyphens, max 63 characters. Unique to you.",
"type": "string"
},
"ssh_keys": {
"description": "OpenSSH public keys to authorise for root, max 32, e.g. [\"ssh-ed25519 AAAAC3Nz… you@laptop\"]. Only needed if a human will ssh in — exec, write_file and read_file all work without one. Send the public half only; a private key is rejected. Ignored if the machine already exists — use scalix_computer_set_ssh_keys to change them. Supplying this needs the sandbox:execute scope on top of sandbox:create, because a key is a root shell; omit it and sandbox:create alone is enough.",
"items": {
"type": "string"
},
"type": "array"
},
"vcpus": {
"description": "vCPUs, 1-16 (default 1). Ignored if the machine already exists.",
"type": "integer"
}
},
"required": [
"name"
]
}🔴scalix_computer_set_ssh_keys(id, ssh_keys)
Replace the ssh keys authorised for root on a persistent Linux machine. This is how you revoke: send the list without the key you want gone, and on a running machine it stops working immediately. Sending an empty list removes every key. Not a patch — whatever you send becomes the whole list, so read the current keys from scalix_computer_list first if you mean to add one.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
},
"ssh_keys": {
"description": "The complete list of OpenSSH public keys, max 32. Empty array removes all of them.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"ssh_keys"
]
}🟢scalix_computer_list
List your persistent Linux machines with their status, address and resource shape.
Esquema de entrada
{
"type": "object",
"properties": {}
}🔴scalix_computer_exec(args, command, cwd, env, id, ...)
Run a command inside a persistent Linux machine and wait for it to finish. Returns exit code, stdout and stderr. The machine must be running.
Esquema de entrada
{
"type": "object",
"properties": {
"args": {
"description": "Arguments, e.g. [\"-lc\", \"npm test\"]",
"items": {
"type": "string"
},
"type": "array"
},
"command": {
"description": "Program to run, e.g. bash",
"type": "string"
},
"cwd": {
"description": "Working directory inside the machine",
"type": "string"
},
"env": {
"description": "Environment variables for this command only",
"type": "object"
},
"id": {
"description": "Machine id from scalix_computer_create or scalix_computer_list",
"type": "string"
},
"timeout_ms": {
"description": "Give up after this many milliseconds, 1000-600000 (default 120000)",
"type": "integer"
}
},
"required": [
"id",
"command"
]
}🔴scalix_computer_write_file(content, id, mode, path)
Write a text file into a persistent Linux machine. Use this instead of shelling out with cat/echo — no quoting to get wrong.
Esquema de entrada
{
"type": "object",
"properties": {
"content": {
"description": "File contents as text",
"type": "string"
},
"id": {
"description": "Machine id",
"type": "string"
},
"mode": {
"description": "Unix mode in decimal, e.g. 493 for 0755. Omit unless the file must be executable.",
"type": "integer"
},
"path": {
"description": "Absolute path inside the machine, e.g. /root/app/main.py",
"type": "string"
}
},
"required": [
"id",
"path",
"content"
]
}🟢scalix_computer_read_file(id, path)
Read a text file out of a persistent Linux machine.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
},
"path": {
"description": "Absolute path inside the machine",
"type": "string"
}
},
"required": [
"id",
"path"
]
}⚪scalix_computer_stop(id)
Stop a persistent Linux machine. The disk and the network address are kept, so starting it again returns the same files at the same address. Stop machines you are done with — a stopped machine costs only its disk.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
}
},
"required": [
"id"
]
}⚪scalix_computer_start(id)
Start a stopped persistent Linux machine. Same disk, same address.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
}
},
"required": [
"id"
]
}🔴scalix_computer_delete(id)
Permanently delete a persistent Linux machine AND its disk. This cannot be undone — use scalix_computer_stop if you may want the files back.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
}
},
"required": [
"id"
]
}🟢scalix_crew_list
List your crews with their ids and names. A crew is a team of AI members that share a notice board; use the crew id with the board tools.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟢scalix_crew_board_read(crew_id)
Read a crew's notice board: every pinned note plus the newest unpinned ones, current as of this call. The board is the crew's shared coordination state — read it before starting work so you act on the latest news, and post what teammates need to know with scalix_crew_board_post.
Esquema de entrada
{
"type": "object",
"properties": {
"crew_id": {
"description": "Crew id from scalix_crew_list",
"type": "string"
}
},
"required": [
"crew_id"
]
}🟡scalix_crew_board_post(author_member_id, body, crew_id, owner_member_id, pinned, ...)
Post a note to the crew's notice board for other members and the human to see. The board is news, not knowledge: set ttl_seconds so routine updates expire on their own, pin only what every future task must see, and set owner_member_id to hand work off to a specific member. Notes cannot be edited from here — post a correction instead.
Esquema de entrada
{
"type": "object",
"properties": {
"author_member_id": {
"description": "Your member id, so the note is attributed. Omit when posting as the human.",
"type": "string"
},
"body": {
"description": "The note, max 8000 chars. Write for a teammate who was not watching your work.",
"type": "string"
},
"crew_id": {
"description": "Crew id from scalix_crew_list",
"type": "string"
},
"owner_member_id": {
"description": "Hand off: the member id now responsible for this item.",
"type": "string"
},
"pinned": {
"description": "Keep this in front of everyone indefinitely. Default false; most notes should expire instead.",
"type": "boolean"
},
"ttl_seconds": {
"description": "Seconds until the note expires, 60 to 7776000 (90 days). Omit for no expiry — usually only right for pins.",
"type": "integer"
}
},
"required": [
"crew_id",
"body"
]
}🟡scalix_domain_add(domain)
Add a custom domain to the project. Returns DNS records to configure.
Esquema de entrada
{
"type": "object",
"properties": {
"domain": {
"description": "Domain name to add (e.g., api.example.com)",
"type": "string"
}
},
"required": [
"domain"
]
}🟢scalix_domain_list
List all custom domains and their SSL/verification status.
Esquema de entrada
{
"type": "object",
"properties": {}
}⚪scalix_domain_verify(domain)
Verify DNS configuration for a custom domain and provision SSL certificate.
Esquema de entrada
{
"type": "object",
"properties": {
"domain": {
"description": "Domain to verify",
"type": "string"
}
},
"required": [
"domain"
]
}🟡scalix_build_create(branch, dockerfile, git_url, name)
Create a new container image build from a Git repository or Dockerfile.
Esquema de entrada
{
"type": "object",
"properties": {
"branch": {
"default": "main",
"description": "Git branch",
"type": "string"
},
"dockerfile": {
"default": "Dockerfile",
"description": "Path to Dockerfile in repo",
"type": "string"
},
"git_url": {
"description": "Git repository URL",
"type": "string"
},
"name": {
"description": "Build name",
"type": "string"
}
},
"required": [
"name",
"git_url"
]
}🟢scalix_build_status(build_id)
Get the status and logs of a build.
Esquema de entrada
{
"type": "object",
"properties": {
"build_id": {
"description": "Build ID to check",
"type": "string"
}
},
"required": [
"build_id"
]
}🟡scalix_project_create(name, org_id, slug)
Create a new project within an organization. Returns the project ID, name, and slug. Issue an API key for the new project separately. Needs an admin API key: organization admin scope is never delegated to a connected app, so this tool fails on an OAuth connection.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"description": "Project display name",
"type": "string"
},
"org_id": {
"description": "Organization ID",
"type": "string"
},
"slug": {
"description": "URL-safe project slug",
"type": "string"
}
},
"required": [
"org_id",
"name",
"slug"
]
}🟢scalix_project_list(org_id)
List every project in an organization, with each project's ID, name, and slug. Use this to resolve a project ID before calling project-scoped tools. Needs an admin API key: organization admin scope is never delegated to a connected app, so this tool fails on an OAuth connection.
Esquema de entrada
{
"type": "object",
"properties": {
"org_id": {
"description": "Organization ID whose projects to list",
"type": "string"
}
},
"required": [
"org_id"
]
}🔴scalix_auth_configure(allowed_providers, mfa_enabled, require_email_confirmation)
Configure end-user authentication for the project — require MFA, require email confirmation, and set the allowed auth providers. Needs an admin API key: organization admin scope is never delegated to a connected app, so this tool fails on an OAuth connection.
Esquema de entrada
{
"type": "object",
"properties": {
"allowed_providers": {
"description": "Allowed auth providers (e.g., [\"email\", \"google\", \"github\"])",
"items": {
"type": "string"
},
"type": "array"
},
"mfa_enabled": {
"description": "Require multi-factor authentication",
"type": "boolean"
},
"require_email_confirmation": {
"description": "Require users to confirm their email before a session is issued",
"type": "boolean"
}
}
}🟢scalix_status
Get the current health status of the Scalix Cloud platform including all service components.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟡scalix_run_deploy(env, image, max_instances, min_instances, name, ...)
Deploy a long-running container service on Scalix Run from a container image. Creates a new service, or a new revision of an existing service with the same name, with health checks, a public HTTPS URL, and autoscaling between min_instances and max_instances (min 0 = scale-to-zero when idle). Billed per vCPU-hour while instances run. Roll back a bad revision with scalix_run_rollback.
Esquema de entrada
{
"type": "object",
"properties": {
"env": {
"description": "Environment variables as key-value pairs",
"type": "object"
},
"image": {
"description": "Container image from the Scalix registry ({registry}/{project_id}/{repo}:{tag}). External registries (Docker Hub, etc.) are NOT supported — build & push first with scalix_build_create.",
"type": "string"
},
"max_instances": {
"default": 10,
"description": "Maximum instances",
"type": "integer"
},
"min_instances": {
"default": 0,
"description": "Minimum instances (0 = scale to zero)",
"type": "integer"
},
"name": {
"description": "Service name",
"type": "string"
},
"port": {
"default": 8080,
"description": "Port the container listens on",
"type": "integer"
}
},
"required": [
"name",
"image"
]
}🟢scalix_run_list
List all deployed container services in the project.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟡scalix_run_scale(id, max_instances, min_instances)
Change the autoscaling bounds of an existing Scalix Run service without redeploying it. Raising min_instances keeps instances warm (no cold starts, higher cost); min_instances 0 enables scale-to-zero when idle. Takes effect immediately. Find service IDs with scalix_run_list.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"description": "Service ID (from scalix_run_list)",
"type": "string"
},
"max_instances": {
"description": "New maximum instance count the service may scale up to",
"type": "integer"
},
"min_instances": {
"description": "New minimum instance count (0 = scale-to-zero when idle)",
"type": "integer"
}
},
"required": [
"id"
]
}🟢scalix_run_rollback(id, revision)
Roll a Scalix Run service back to an earlier revision — omit 'revision' to return to the immediately previous one. Traffic switches to the target revision; the replaced revision is kept and can be redeployed later. Use scalix_run_list to see services and their current revisions.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"description": "Service ID (from scalix_run_list)",
"type": "string"
},
"revision": {
"description": "Revision number to roll back to; omit for the immediately previous revision",
"type": "integer"
}
},
"required": [
"id"
]
}🔴scalix_run_delete(id)
Permanently delete a Scalix Run service. This cannot be undone: it stops the running instances, releases the public HTTPS URL, erases any attached volumes and discards every revision, so scalix_run_rollback cannot bring it back afterwards. To stop paying for an idle service without losing it, set min_instances to 0 with scalix_run_scale instead.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"description": "Service ID (from scalix_run_list)",
"type": "string"
}
},
"required": [
"id"
]
}Comunidad
Evidencia