Endpoint
Authorization: Bearer. Most MCP clients handle this automatically after the OAuth flow.
The server is published to the official MCP registry as dev.oleander/oleander, so most clients can install it by name.
Example workflow
A typical agent task chains three tools:Tools
Queries
Reads and writes go to different tools.query_run is annotated read-only so clients can skip the confirmation prompt; query_submit is annotated as a write and asks first.
lake_query is gone. It pinned DuckDB and returned rows for reads and writes alike; query_run and query_submit replace it and route instead. See Query routing.Saved query schedules
A schedule points at a saved query, sosaved_queries_list/saved_queries_create are here too - without them there’s no query id to schedule.
A saved query has at most one schedule; scheduling an already-scheduled query reschedules it in place rather than adding a second. Every new schedule needs an
execution_principal_id - the connected user or an Application principal the user holds Describe and Manage grants on - and that principal’s roles govern the runs. saved_queries_schedules_create requires confirm: true - it starts recurring billable compute and overwrites its destination table on every run. See Scheduled queries with time-travel for what these schedules do.
Identity
Catalogs and tables
External connections
BigQuery, Snowflake, and Postgres tables are queried through
query_run as connection.schema.table - no source-specific query tool. Those queries always run on DuckDB.
Spark
Runs and pipelines
Lineage
Investigations
Docs
Registry listings
The server ships aserver.json manifest and is listed where agents look for tools, so most clients can add it without a hand-written config.
Two agent-readable surfaces are served from the site itself:
Annotations
Every tool carries MCP annotations so clients can decide what needs confirmation:readOnlyHintis true for anything that only reads.query_runis guarded to keep that promise - a statement that could mutate is rejected rather than run.destructiveHintis true for drops and aborts.- Tools that start compute or change data take an explicit
confirmargument on top of the annotation.
Confirming destructive tools
Four tools remove something that cannot be recovered from the agent’s side:catalogs_tables_drop, catalogs_columns_drop, saved_queries_schedules_delete, and spark_jobs_abort. On top of confirm: true, the server asks you directly before running any of them.
When your client supports form elicitation, the first call returns a confirmation prompt instead of running. The prompt names exactly what is about to go - the fully qualified catalog.namespace.table and every column path, the schedule id, or the run id. Your client shows it to you and retries the call with your answer:
- Accept with
confirm: trueruns the operation. - Decline or cancel returns an error to the agent and nothing is dropped, deleted, or aborted.
confirm argument and the destructiveHint annotation as before. That includes any client still on the 2025 protocol handshake and the in-app chat.