About carto-basics
carto-basics is a foundational skill for agents using CARTO through its MCP server or CLI. It supports interactive geospatial work as well as scripting, CI/CD, and administration, covering access-path selection, CLI setup and authentication, profiles, and global options.
Key features
- 01MCP server and CLI routing
- 02CLI installation and version checks
- 03Headless login flow
- 04Profiles for organizations and environments
- 05Global flags and output guidance
Use cases
- 01Set up CARTO CLI on a new machine
- 02Resolve CLI authentication failures
- 03Switch organizations or environments
- 04Choose interactive or automated access
MCP support
The skill describes the CARTO MCP server for MCP clients, exposing data exploration, map editing, workflows, SQL, import/export, and organization administration. It also guides the choice between the server and CLI for interactive versus scripting or administrative tasks.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ cartodb/ agent-skills --skill carto-basicsAfter installing, type/carto-basicsin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/access-paths.mdauthentication.mdglobal-options.mdinstallation.mdprofiles.mdDetails
From the project READMEcarto-basics
CARTO is reachable through two parallel access paths, and most agent setups use one or both:
- CARTO MCP Server — the primary path for inline, in-conversation work in chat-based agent hosts (Claude.ai, Claude Desktop, ChatGPT, and other MCP clients). When attached, it exposes a broad consolidated tool surface: exploring data, creating and editing Builder maps, authoring and running Workflows, running SQL, import/export, and org admin. Renders maps inline on hosts that support MCP Apps, and dynamically registers the user's published Workflows as MCP tools. This covers most interactive requests.
- CARTO CLI (
@carto/carto-cli) — the path for scripting, CI/CD, headless contexts, bulk and cross-org operations, deeper administration and auditing (e.g. SQL over usage logs), and the fullest command surface. Used by many platform skills in this catalog, and the fallback whenever the MCP server isn't attached.
Use this skill before any other CARTO skill — it covers how to detect and route between the two access paths, plus CLI installation, authentication, profiles, and the global flags the CLI-driven skills assume.
When to use this skill
- Setting up the CLI for the first time on a new machine.
- The user reports authentication errors (
auth statusfailures, expired tokens). - The user wants to switch between organizations or environments.
- A downstream skill needs
--profile,--json,--token, or--base-urland you don't yet know how those work.
Preflight — run before any CLI operation
Skills that drive the CLI assume a working, authenticated carto CLI. If the attached MCP server already covers the request (exploring data, creating maps, running Workflows in a chat host), you don't need the CLI at all — route through MCP. Run the checks below before your first CLI call, and re-run them at the start of each task — ephemeral sandboxes (e.g. Claude Code Cowork tasks) wipe the CLI between tasks. An attached MCP server, by contrast, persists at the account level (see below).
- CLI present? Run
carto --version. Ifcommand not found, install it yourself — tell the user you're installing, then do it; never deflect with "run this on your own machine." The npm command plus theEACCES/ writable-prefix fallback that sandboxes need are in references/installation.md. - Authenticated? Run
carto auth status. If not, use the headless flowcarto auth login --no-launch-browser— an agent can't complete a browser OAuth. Never open or wait on a browser, and never ask the user for an M2M / API token instead (references/authentication.md).
If install or auth can't complete, say so and stop — never silently fall back to Python / SQL / deck.gl or other non-CARTO tooling.
What's in this skill
| Topic | Reference |
|---|---|
| Installing the CLI (npm, version verification) | references/installation.md |
Authentication: browser, headless --no-launch-browser, API tokens, SSO | references/authentication.md |
| Profiles: managing multiple orgs / environments | references/profiles.md |
Global flags: --json, --debug, --yes, --token, --base-url, --profile, env vars | references/global-options.md |
| Access paths: CLI vs MCP routing, detection, host support | references/access-paths.md |
Access paths: MCP server vs CLI
The MCP server and CLI serve different intents — some flows chain across both. When the MCP server is attached, prefer it for interactive requests (exploring data, creating and editing maps, building and running Workflows); reach for the CLI for scripting, CI/CD, headless runs, bulk or cross-org work, and deeper administration and auditing (e.g. usage-log queries), or when the server isn't attached. When an intent maps to MCP but the server isn't attached (or the host doesn't render MCP Apps), fall back to the CLI where it applies, or surface the gap — don't silently fall back to a hand-rolled map. The CLI is wiped per task in ephemeral sandboxes; an attached MCP server persists at the account level. Full routing table, detection signals, and auth-dependent tool availability: references/access-paths.md.
Always-on guidance
- Never silently degrade. A CARTO request is answered with CARTO tooling. If the CLI can't be installed or authenticated (or a needed MCP route isn't attached), surface the blocker and stop — don't substitute Python, SQL, deck.gl, or other generic geospatial workarounds, and don't ask for an M2M token in place of
carto auth login --no-launch-browser. - Always pass
--jsonwhen you need machine-readable output. CLI text output is for humans and may change. - Map URLs use the tenant domain from
auth status, not a generic workspace URL. Private maps live athttps://{tenant_domain}/builder/{map_id}; public/shared maps athttps://{tenant_domain}/map/{map_id}. Never constructworkspace-{region}.app.carto.comURLs for maps. Hosted apps (carto app deploy) are the one exception: they are served only fromhttps://workspace-{tenant_id}.app.carto.com/app/{slug}/, and the same path on the tenant domain fails. Seecarto-develop-app. - API base URL is
https://{tenant_id}.api.carto.com, wheretenant_idfromauth status --jsonis the region (e.g.gcp-us-east1).tenant_domainhas no region in it. - Confirmation prompts: destructive commands like
maps deleteprompt for the literal word "delete". Pass--yes(or--json) for non-interactive use. - Async jobs:
importandsql jobpoll until completion by default. Pass--async(where supported) to return immediately and poll separately.