← WebMCP Directory

Tool tree

atlas.paperclips.workers.dev

Developer ToolsTools verified
Website
Explore spatial datasets with DuckDB, a globe, and WebMCP.
Explore capabilities
    inspect_workspaceAction

    List available DuckDB relations, whether each is loaded, saved query results, globe layers, and the active result. Use this first to understand the current spatial workspace.

    View tool JSON
    {
      "name": "inspect_workspace",
      "kind": "act",
      "impl": "imperative",
      "description": "List available DuckDB relations, whether each is loaded, saved query results, globe layers, and the active result. Use this first to understand the current spatial workspace.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    inspect_relationAction

    Inspect one dataset or saved result before writing SQL. Returns schema, inferred geographic/time roles, row count, sample rows, and source provenance.

    View tool JSON
    {
      "name": "inspect_relation",
      "kind": "act",
      "impl": "imperative",
      "description": "Inspect one dataset or saved result before writing SQL. Returns schema, inferred geographic/time roles, row count, sample rows, and source provenance.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "relation": {
            "type": "string",
            "description": "Relation, result ID, or saved result relation."
          }
        },
        "required": [
          "relation"
        ],
        "additionalProperties": false
      }
    }
    load_datasetAction

    Load an HTTPS CSV/Parquet URL or up to 500 inline records into DuckDB as a named relation. Include source and license details so the workspace can preserve provenance.

    View tool JSON
    {
      "name": "load_dataset",
      "kind": "act",
      "impl": "imperative",
      "description": "Load an HTTPS CSV/Parquet URL or up to 500 inline records into DuckDB as a named relation. Include source and license details so the workspace can preserve provenance.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Short SQL-safe relation name; it will be normalized."
          },
          "url": {
            "type": "string",
            "description": "Public HTTPS CSV or Parquet URL. Must allow browser CORS."
          },
          "format": {
            "type": "string",
            "enum": [
              "csv",
              "parquet"
            ],
            "description": "Remote file format. Inferred from URL if omitted."
          },
          "records": {
            "type": "array",
            "maxItems": 500,
            "description": "Small JSON records supplied directly by the agent.",
            "items": {
              "type": "object"
            }
          },
          "sourceTitle": {
            "type": "string",
            "description": "Human-readable dataset or source title."
          },
          "sourceUrl": {
            "type": "string",
            "description": "Canonical page that documents inline records."
          },
          "organization": {
            "type": "string",
            "description": "Source organization or publisher."
          },
          "license": {
            "type": "string",
            "description": "Dataset license or usage terms."
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    }
    execute_sqlAction

    Run one read-only SELECT/WITH query across available DuckDB relations. Referenced bundled datasets load on demand. Saves a capped result, updates the result table, and records SQL lineage for rendering.

    View tool JSON
    {
      "name": "execute_sql",
      "kind": "act",
      "impl": "imperative",
      "description": "Run one read-only SELECT/WITH query across available DuckDB relations. Referenced bundled datasets load on demand. Saves a capped result, updates the result table, and records SQL lineage for rendering.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sql": {
            "type": "string",
            "description": "DuckDB SELECT or WITH query. File, network, DDL, and mutation operations are blocked."
          },
          "title": {
            "type": "string",
            "description": "Short title for the result and result panel."
          }
        },
        "required": [
          "sql"
        ],
        "additionalProperties": false
      }
    }
    render_globe_sceneAction

    Present an explanation as a headline, subheadline, and up to eight declarative globe layers. Each layer references a saved SQL result and maps columns to visual roles.

    View tool JSON
    {
      "name": "render_globe_scene",
      "kind": "act",
      "impl": "imperative",
      "description": "Present an explanation as a headline, subheadline, and up to eight declarative globe layers. Each layer references a saved SQL result and maps columns to visual roles.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "headline": {
            "type": "string",
            "maxLength": 120,
            "description": "Specific conclusion or subject shown prominently over the globe."
          },
          "subheadline": {
            "type": "string",
            "maxLength": 220,
            "description": "One concise sentence explaining what is shown and why it matters."
          },
          "layers": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "description": "Ordered back-to-front scene layers. The last layer also becomes the active table result.",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "maxLength": 80,
                  "description": "Stable scene-unique layer ID."
                },
                "resultId": {
                  "type": "string",
                  "maxLength": 80,
                  "description": "Saved result ID returned by execute_sql."
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "points",
                    "paths",
                    "rings",
                    "polygons"
                  ],
                  "description": "Normalized spatial mark type."
                },
                "title": {
                  "type": "string",
                  "maxLength": 120,
                  "description": "Compact label used in the globe legend."
                },
                "encoding": {
                  "type": "object",
                  "description": "Result columns assigned to visual roles. Geographic roles are inferred when omitted.",
                  "properties": {
                    "latitude": {
                      "type": "string",
                      "description": "Latitude column."
                    },
                    "longitude": {
                      "type": "string",
                      "description": "Longitude column."
                    },
                    "altitude": {
                      "type": "string",
                      "description": "Optional altitude in kilometers above the Earth reference ellipsoid."
                    },
                    "geometry": {
                      "type": "string",
                      "description": "GeoJSON Polygon or MultiPolygon geometry column."
                    },
                    "group": {
                      "type": "string",
                      "description": "Series or path identifier column."
                    },
                    "order": {
                      "type": "string",
                      "description": "Path point ordering column."
                    },
                    "label": {
                      "type": "string",
                      "description": "Hover and selection label column."
                    },
                    "size": {
                      "type": "string",
                      "description": "Optional numeric ring-size column."
                    },
                    "image": {
                      "type": "string",
                      "description": "Optional image URL or bundled image-path column for previews."
                    }
                  },
                  "additionalProperties": false
                },
                "style": {
                  "type": "object",
                  "description": "Validated fixed styling. Width and animate affect paths; radius affects points or rings.",
                  "properties": {
                    "color": {
                      "type": "string",
                      "maxLength": 60,
                      "description": "CSS color; omit for deterministic group colors."
                    },
                    "opacity": {
                      "type": "number",
                      "minimum": 0.1,
                      "maximum": 1,
                      "description": "Layer opacity."
                    },
                    "width": {
                      "type": "number",
                      "minimum": 0.1,
                      "maximum": 4,
                      "description": "Path stroke width."
                    },
                    "radius": {
                      "type": "number",
                      "minimum": 0.05,
                      "maximum": 20,
                      "description": "Point radius or ring maximum radius."
                    },
                    "animate": {
                      "type": "boolean",
                      "description": "Whether path dashes move."
                    }
                  },
                  "additionalProperties": false
                }
              },
              "required": [
                "id",
                "resultId",
                "type"
              ],
              "additionalProperties": false
            }
          },
          "camera": {
            "type": "object",
            "description": "Initial camera behavior after the scene is committed.",
            "properties": {
              "fit": {
                "type": "string",
                "enum": [
                  "all-layers",
                  "active-layer",
                  "none"
                ],
                "description": "Fit every layer, one layer, or preserve the camera."
              },
              "layerId": {
                "type": "string",
                "maxLength": 80,
                "description": "Layer to fit when fit is active-layer; defaults to the last layer."
              }
            },
            "additionalProperties": false
          }
        },
        "required": [
          "headline",
          "subheadline",
          "layers"
        ],
        "additionalProperties": false
      }
    }
    present_resultAction

    Bring a saved result into the visible table, open a 1-based page, optionally select a 0-based row, and fit the globe. Use after rendering to focus the user's attention.

    View tool JSON
    {
      "name": "present_result",
      "kind": "act",
      "impl": "imperative",
      "description": "Bring a saved result into the visible table, open a 1-based page, optionally select a 0-based row, and fit the globe. Use after rendering to focus the user's attention.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "resultId": {
            "type": "string",
            "description": "Saved result ID returned by execute_sql."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "One-based result page."
          },
          "selectedIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "Optional zero-based row index to select."
          },
          "fit": {
            "type": "boolean",
            "description": "Fit the globe to the result when no row is selected."
          }
        },
        "required": [
          "resultId"
        ],
        "additionalProperties": false
      }
    }