← MarcoPoloCONTENT HISTORY

Update to MarcoPolo

Snapshot Sep 30, 2026 · 22:53 UTC · version 3.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "setup-connection",
  "description": "Adds a new connection to the MarcoPolo workspace — hosted demo connections (no credentials) and credentialed connections to databases, warehouses, APIs, and storage (Postgres, Snowflake, BigQuery, Salesforce, S3, Google Drive, etc.). Use this skill whenever the user mentions adding, connecting, installing, hooking up, or wiring up a datasource — even when they describe it informally (\"connect my Snowflake\", \"try the demo data\", \"let me hook up our Salesforce\", \"I want to look at the data in S3\"). Also use when troubleshooting `connection test` failures, expired credentials, or an OAuth flow that didn't finish.",
  "included_files": [],
  "skill_md_contents": "---\nname: setup-connection\ndescription: Adds a new connection to the MarcoPolo workspace — hosted demo connections (no credentials) and credentialed connections to databases, warehouses, APIs, and storage (Postgres, Snowflake, BigQuery, Salesforce, S3, Google Drive, etc.). Use this skill whenever the user mentions adding, connecting, installing, hooking up, or wiring up a datasource — even when they describe it informally (\"connect my Snowflake\", \"try the demo data\", \"let me hook up our Salesforce\", \"I want to look at the data in S3\"). Also use when troubleshooting `connection test` failures, expired credentials, or an OAuth flow that didn't finish.\n---\n\n# Set up a connection\n\nThere are two paths: a **hosted demo connection** (no credentials, installs\nin one call) and a **credentialed connection** (the user opens a browser\nsetup flow). Both end with the same verification steps inside the workspace.\n\nThe in-workspace canonical reference is `/workspace/workflows/setup-connection.md`.\n\n## Path A — install a hosted demo connection\n\nUse this when the user wants to try MarcoPolo without bringing their own\ncredentials, or asked for a specific demo dataset.\n\nCall the MCP tool directly:\n\n```\ninstall_demo_connection(\n  demo_connection=\"<id-or-natural-language>\",\n  intent_text=\"<optional free text>\",\n  display_name=\"<optional friendly name>\",\n)\n```\n\nBehavior:\n\n- If `demo_connection` matches a known demo id, it installs immediately.\n- If ambiguous, the response has `success: false`, `resolution_mode:\n  \"ambiguous\"`, and `available_demo_connections: [{id, label, description, type}, ...]`.\n  Show the user the choices and call again with a specific `id`.\n- If unknown, the response includes `available_demo_connections` you can\n  offer the user.\n\nOn success, run the post-install verification (below).\n\n## Path B — add a credentialed connection\n\nUse this when the user has their own database, warehouse, API, or storage\naccount.\n\n1. Generate the setup URL via the MCP tool.\n\n   ```\n   connection_setup(type=\"<canonical-type>\", intent_text=\"<optional free text>\")\n   ```\n\n   `type` should be a canonical type value (`pg`, `mysql`, `snowflake`,\n   `bigquery`, `s3`, `google_drive`, `salesforce`, `local_file`, etc.). If\n   unsure, pass the user's words as `intent_text` and a best-guess `type` —\n   the tool will resolve via intent if `type` is non-canonical. If still\n   unknown, the response returns `valid_types` and `suggested_types`; pick\n   from those and retry.\n\n   On success, the response includes:\n   - `url` — open this in a browser; the user signs in and configures\n     credentials\n   - `workflow_type` — typically `oauth` or `configure`\n   - `instructions` and `next_actions` — surface these to the user\n   - `configuration_schema` (for `configure` workflows) — the fields the\n     setup UI will collect\n   - `workspace_ssh_keypair` (for connections that support SSH tunnelling)\n     — show the public key so the user can authorize it on their bastion\n\n2. Surface the URL to the user and wait. Do not try to complete setup from\n   the session — the user has to click through the browser flow.\n\n3. Once the user says they're done, confirm the connection is visible.\n\n   ```\n   workspace_shell(\"connection list --json\")\n   ```\n\n   If it doesn't appear yet, wait briefly and retry — provisioning can take\n   a moment.\n\n## Post-install verification (both paths)\n\n1. Verify credentials.\n\n   ```\n   workspace_shell(\"connection test <name> --json\")\n   ```\n\n   On failure, surface `error` and `message` to the user. For credential\n   issues, send them back through `connection_setup` to update credentials.\n\n2. Read the seeded connection docs.\n\n   ```\n   workspace_shell(\"cat connections/<name>/README.md connections/<name>/SYNTAX.md connections/<name>/RULES.md\")\n   ```\n\n   The `README.md` lists the connection's authoritative `capabilities`. Note\n   them before doing anything else with the connection.\n\n3. Write initial metadata snapshots.\n\n   ```\n   workspace_shell(\"connection describe <name> --json\")\n   ```\n\n   This populates `connections/<name>/metadata/`. The snapshot files become\n   the default in-workspace reference for query authoring.\n\n4. Confirm the directory shape.\n\n   ```\n   workspace_shell(\"ls connections/<name>/\")\n   ```\n\n   Expect: `README.md`, `RULES.md`, `SYNTAX.md`, `queries/`, `metadata/`,\n   `profile/`, `scratch/`.\n\n## Troubleshooting\n\n- **`connection_setup` returns `Unknown connection type`.** The response\n  includes `valid_types` and `suggested_types`. Pick a canonical value and\n  retry. If user intent is natural language, also pass `intent_text`.\n- **`install_demo_connection` returns `ambiguous`.** Surface\n  `available_demo_connections` to the user and retry with a specific id.\n- **`connection test` fails after setup.** Likely cause: incomplete browser\n  flow, wrong host/port, or missing network access. Surface the error\n  message to the user; for credential changes, rerun `connection_setup` to\n  reissue the setup URL.\n- **Connection not visible in `connection list --json`.** Wait and retry —\n  provisioning may still be running. If it persists, surface that to the\n  user.\n\n## Pointers\n\n- writing the first query → `query-and-analyze`\n- per-verb flag reference → `using-connection-cli`\n- workspace layout → `using-marcopolo-workspace`\n"
}

SHA-256: f33cca93d4569791ce4a5e5386bb752d1ba254f1ce0addf20afc2bb00af16d32