airbyte-mcp
The airbyte-mcp server provides 36 tools for interacting with an Airbyte instance via any MCP-compatible client, enabling full management of data pipelines, connectors, and sync jobs.
Health Monitoring
Check if the Airbyte API is reachable and credentials are valid.
Workspace Management
List all accessible workspaces and retrieve details (name, data residency, metadata) by UUID.
Source Connectors
List, get, create, and update source connectors. Also list and get source connector definitions (Docker image, spec).
Destination Connectors
List, get, create, and update destination connectors. Also list and get destination connector definitions.
Connections (Pipelines)
List, get, create, and update connections, including stream config, sync modes, schedules, and namespace mappings.
Jobs & Sync Operations
List jobs with rich filtering (by connection, type, status, date range), get job details (status, bytes/rows synced, duration), trigger sync or reset jobs, cancel running jobs, and poll until a job reaches terminal status.
Job Diagnostics & Logs (Self-Managed)
List all job types including refresh and clear, get detailed job info with per-attempt stats, failure reasons, and stack traces, and fetch structured log entries for all or specific attempts.
Cloud Sync Logs (Airbyte Cloud only)
Fetch full-text sync logs with pagination via the Cloud Config API.
Streams
Get available stream properties for a source/destination pair (sync modes, cursor fields, primary keys).
Tags
List, create, update, and delete organizational tags for resources.
Additional Features
Automatic token exchange with in-memory caching and transparent 401 retry.
Output in Markdown or JSON format for summary data, JSON-only for log data.
Compatible with both self-managed Airbyte and Airbyte Cloud; deployable via
uvx,uv, or Docker.
Allows interaction with an Airbyte instance (self-managed or Cloud) to manage workspaces, sources, destinations, connections, jobs, job logs, streams, tags, and connector definitions via the Airbyte Public API and internal Configuration API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@airbyte-mcplist all workspaces"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Airbyte MCP Server (airbyte-mcp)
MCP server for the Airbyte Public API. Built with the official MCP Python SDK (FastMCP).
Lets any MCP-compatible client (Cursor, Claude Desktop, Claude Code, MCP Inspector, etc.) interact with your Airbyte instance through natural language.
Features
36 tools covering workspaces, sources, destinations, connections, jobs, refresh/clear, job logs, tags, streams, and connector definitions
Read and write operations for core resources (create, update, delete)
Job diagnostics via the internal Configuration API (self-managed): detailed failure reasons, per-stream stats, and structured logs
Cloud full-text sync logs via
airbyte_get_cloud_sync_logs(Airbyte Cloud only; parity with official Replication MCP)Automatic token exchange with in-memory caching and transparent 401 retry
Markdown and JSON response formats on summary tools; JSON-only for log tools
Pagination support (limit/offset) on all list tools
Runs over stdio (local) — works with Cursor, Claude Desktop, Claude Code, and Docker
Works with self-managed Airbyte (abctl) and Airbyte Cloud
Related MCP server: Airflow MCP
Available Tools
Tool | Description |
Health | |
| Ping the Airbyte API |
Workspaces | |
| List workspaces with pagination |
| Get workspace details by ID |
Sources | |
| List source connectors (filter by workspace) |
| Get source details by ID |
| Create a new source connector |
| Update an existing source |
Destinations | |
| List destination connectors (filter by workspace) |
| Get destination details by ID |
| Create a new destination connector |
| Update an existing destination |
Connections | |
| List connections / pipelines (filter by workspace) |
| Get connection details including stream config |
| Create a new connection (pipeline) |
| Update an existing connection |
Jobs | |
| List jobs (filter by connection, type, status, dates) |
| Get job details (status, duration, bytes/rows synced) |
| Trigger a sync or reset job |
| Cancel a running job |
| Trigger a per-stream refresh (internal API, self-managed) |
| Clear destination data for streams (internal API, self-managed) |
| Poll until a job reaches a terminal status (internal API) |
Job Logs (Internal API — self-managed only) | |
| List all job types including refresh and clear |
| Per-attempt stats, failure reasons, and stacktraces |
| Structured log entries for all attempts |
| Structured log entries for a specific attempt |
Job Logs (Cloud only — full text) | |
| Full-text sync logs with pagination (Cloud Config API) |
Streams | |
| Get stream properties for a source/destination pair |
Tags | |
| List tags |
| Create a tag |
| Update a tag |
| Delete a tag |
Connector Definitions | |
| List source connector definitions |
| Get a source connector definition |
| List destination connector definitions |
| Get a destination connector definition |
See docs/endpoints.md for the full Airbyte API endpoint checklist.
Prerequisites
A running Airbyte instance — either:
Self-managed via abctl (see docs/local-setup.md)
One of the following to run the server:
uvx (zero-install; runs the published package on demand — see Run with uvx), or
uv + Python 3.13+ (local clone / development), or
Docker (no Python / uv needed on the host)
Quickstart
1. Clone and install
git clone https://github.com/trustxai/airbyte-mcp.git
cd airbyte-mcp
uv sync2. Configure credentials
cp .env.example .envFor self-managed (abctl), retrieve credentials:
abctl local credentialsEdit .env with your client-id and client-secret. See docs/authentication.md for details.
3. Run the server
uv run airbyte-mcpRun with uvx (zero-install)
uvx runs the published PyPI package on demand — no
clone, no virtualenv, no persistent install. The command matches the package
name, so no --from is needed:
uvx airbyte-mcpNot the same as the official Airbyte replication MCP. That one lives in the
airbytepackage and is invoked asuvx --from=airbyte@latest airbyte-mcp. Here the PyPI package isairbyte-mcp, souvx airbyte-mcpunambiguously resolves to this server.
Credentials are passed via the client's env block (see below), or exported in
your shell for a manual run:
AIRBYTE_API_URL=http://localhost:8000/api/public/v1 \
AIRBYTE_CLIENT_ID=<your-client-id> \
AIRBYTE_CLIENT_SECRET=<your-client-secret> \
uvx airbyte-mcpPython version: the package targets Python 3.13+. uv auto-provisions a matching interpreter, so this normally just works. If your environment pins an older default, force it with
uvx --python=3.13 airbyte-mcp.
Client config (e.g. Cursor .cursor/mcp.json) using uvx:
{
"mcpServers": {
"airbyte": {
"command": "uvx",
"args": ["airbyte-mcp"],
"env": {
"AIRBYTE_API_URL": "http://localhost:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Client Configuration
Every MCP client (Cursor, Claude Desktop, etc.) can run the server in one of three ways:
uvx — zero-install; runs the published package on demand (see Run with uvx).
uv — from a local clone; best for development.
Docker — no Python / uv required on the host; everything runs in a container. Build the image once and every client config reuses it.
Host networking note: if Airbyte is running on your host machine (e.g. via
abctl), inside the Docker containerlocalhostdoes not point to your host. Usehttp://host.docker.internal:8000/api/public/v1on macOS/Windows, or add--network=hostto thedocker runargs on Linux.
Build the Docker image (one-time)
docker build -t airbyte-mcp:latest .Cursor
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
Option A — uv
{
"mcpServers": {
"airbyte": {
"command": "uv",
"args": ["--directory", "/path/to/airbyte-mcp", "run", "airbyte-mcp"],
"env": {
"AIRBYTE_API_URL": "http://localhost:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Option B — Docker
{
"mcpServers": {
"airbyte": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--name", "airbyte-mcp",
"-e", "AIRBYTE_API_URL",
"-e", "AIRBYTE_CLIENT_ID",
"-e", "AIRBYTE_CLIENT_SECRET",
"airbyte-mcp:latest"
],
"env": {
"AIRBYTE_API_URL": "http://host.docker.internal:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Claude Desktop
Add to claude_desktop_config.json:
Option A — uv
{
"mcpServers": {
"airbyte": {
"command": "uv",
"args": ["--directory", "/path/to/airbyte-mcp", "run", "airbyte-mcp"],
"env": {
"AIRBYTE_API_URL": "http://localhost:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Option B — Docker
{
"mcpServers": {
"airbyte": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--name", "airbyte-mcp",
"-e", "AIRBYTE_API_URL",
"-e", "AIRBYTE_CLIENT_ID",
"-e", "AIRBYTE_CLIENT_SECRET",
"airbyte-mcp:latest"
],
"env": {
"AIRBYTE_API_URL": "http://host.docker.internal:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Claude Code
claude mcp add \
--env AIRBYTE_API_URL=http://localhost:8000/api/public/v1 \
--env AIRBYTE_CLIENT_ID=<your-client-id> \
--env AIRBYTE_CLIENT_SECRET=<your-client-secret> \
--transport stdio \
airbyte \
-- uvx airbyte-mcpMCP Inspector
The Inspector can launch the stdio server directly:
npx @modelcontextprotocol/inspector uvx airbyte-mcpSet AIRBYTE_API_URL, AIRBYTE_CLIENT_ID, and AIRBYTE_CLIENT_SECRET in the
Inspector's environment panel (or export them in your shell first).
Running Manually (without a client)
If you just want to exercise the server from the CLI:
# uvx — no clone
uvx airbyte-mcp
# uv
uv run airbyte-mcp
# Docker
docker run --rm -i --env-file .env airbyte-mcp:latestEnvironment Variables
Variable | Required | Default | Description |
| No |
| Airbyte API base URL |
| Yes* | — | Application client ID |
| Yes* | — | Application client secret |
| No | — | Pre-fetched token (skips exchange) |
| No | (derived) | Override Config API base (Cloud: |
| No |
| Default HTTP timeout for public API calls |
| No |
| Timeout for internal/Cloud Config API log endpoints |
*Not required if AIRBYTE_ACCESS_TOKEN is provided.
Documentation
Authentication — token exchange, credentials setup
Architecture — system design, package layout, token lifecycle
Comparison vs Official MCPs — open-source-first positioning vs official MCPs
Endpoints Checklist — full Airbyte API coverage status
Local Setup — abctl installation walkthrough
Contributing — development workflow, PR guidelines
Security — vulnerability reporting
Changelog — release history
Contributing
Contributions are welcome! See docs/CONTRIBUTING.md to get started.
License
Apache-2.0 — see LICENSE for details.
Available Tools
36 toolsairbyte_cancel_jobADestructiveIdempotent
Cancel a running sync or reset job.
Sends a cancellation request to the Airbyte API. The job will transition to 'cancelled' status. Already-committed data is retained; only in-flight data is discarded.
When to Use: - Stop a long-running or stuck sync. - Cancel an accidental reset.
Returns: The cancelled job's details.
Examples: params = { "job_id": "12345" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: 'Sends a cancellation request... job transitions to cancelled status. Already-committed data retained; only in-flight data discarded.' Annotations (destructiveHint=true, idempotentHint=true) are consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with front-loaded sections (behavior, when to use, returns, example). Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple cancellation tool, the description covers purpose, behavior, usage, return value, and example. Output schema exists, so further return details are not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two parameters (job_id with description, response_format with enum), but context signals 0% schema description coverage. The tool description only provides an example with job_id, adding minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Cancel a running sync or reset job', using a clear verb and resource. It distinguishes itself from siblings (no other cancel tool) and aligns with the annotation title 'Cancel Airbyte Job'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to Use' section lists two specific use cases (stop long-running/stuck sync, cancel accidental reset). It does not explicitly state when not to use or mention alternatives, but the context is sufficient for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_create_connectionA
Create a new connection (source-to-destination pipeline).
A connection links a source to a destination and defines which streams to sync, the schedule, namespace mapping, and sync modes.
When to Use: - Wire up a new data pipeline between an existing source and destination. - Automate pipeline provisioning.
Recommended Workflow: 1. Ensure the source and destination already exist (or create them with airbyte_create_source / airbyte_create_destination). 2. Call airbyte_get_stream_properties with the sourceId (and optionally destinationId) to discover available streams and their supported sync modes. 3. Build the configurations.streams array and call this tool.
Returns: The created connection details including connectionId.
Examples: Minimal connection: params = { "source_id": "...", "destination_id": "...", "name": "Prod Postgres -> BigQuery" } With schedule and streams: params = { "source_id": "...", "destination_id": "...", "name": "Hourly Sync", "schedule": { "scheduleType": "cron", "cronExpression": "0 * * * *" }, "configurations": { "streams": [ { "name": "users", "syncMode": "incremental_append" }, { "name": "orders", "syncMode": "full_refresh_overwrite" } ] }, "status": "active" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, but description adds context that creation wires up a pipeline and returns connection details. Does not mention potential side effects like immediate sync start, but covers creation behavior adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, bullet points, and examples. Front-loads the core purpose, then provides workflow and two examples. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the input schema richness and presence of output schema, the description covers workflow, examples, and return info. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has extensive descriptions for all parameters (100% coverage), so description only adds examples and context about building the streams array. The description's workflow helps understand parameter use beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new connection' and explains it links a source to a destination. It distinguishes from sibling tools like airbyte_create_source and airbyte_create_destination by specifying it's a pipeline between existing connectors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When to Use' section and a 'Recommended Workflow' that specifies prerequisites (ensuring source/destination exist, calling airbyte_get_stream_properties). Examples illustrate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_create_destinationA
Create a new destination connector in Airbyte.
A destination defines where Airbyte writes data to (a warehouse, database, data lake, SaaS tool, etc.). Each destination type requires its own configuration schema.
When to Use: - Set up a brand-new data destination inside a workspace. - Automate provisioning of destinations for pipeline setup.
Recommended Workflow: 1. Call airbyte_list_destination_definitions to find the definition ID for the connector type you want. 2. Review an existing destination of the same type with airbyte_get_destination to understand the config structure. 3. Call this tool with the appropriate configuration.
Returns: The created destination details.
Examples: params = { "name": "Analytics Warehouse", "workspace_id": "a1b2c3d4-...", "definition_id": "22f6c74f-...", "configuration": { "destinationType": "bigquery", "project_id": "my-project", "dataset_id": "raw_data", "credentials_json": "..." } }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are basic (readOnlyHint=false, etc.). Description adds context like requiring configuration schema and the creation workflow. Does not contradict annotations. Could mention idempotency or duplicate handling but not necessary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections, front-loaded purpose, and every sentence adds value. Not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (single param that is an object with sub-properties) and presence of an output schema, the description provides a complete workflow, examples, and return details. Sufficient for an agent to understand and use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already has descriptions for all parameters (name, workspace_id, definition_id, configuration, response_format). Description adds extra context with workflow steps and an example, enhancing understanding, especially for the open-ended configuration object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new destination connector' with a verb and resource. Explains what a destination is and distinguishes from sibling tools like airbyte_create_source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' section with two specific scenarios and a 'Recommended Workflow' that references other tools (list_destination_definitions, get_destination), giving clear guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_create_sourceA
Create a new source connector in Airbyte.
A source defines where Airbyte reads data from (a database, API, SaaS app, etc.). Each source type requires its own configuration schema (e.g. host, port, credentials for Postgres).
When to Use: - Set up a brand-new data source inside a workspace. - Automate provisioning of sources as part of a pipeline setup.
Recommended Workflow: 1. Call airbyte_list_source_definitions to find the definition ID for the connector type you want (e.g. "source-postgres"). 2. Review an existing source of the same type with airbyte_get_source to understand the configuration structure. 3. Call this tool with the appropriate configuration.
Returns: The created source details (same fields as airbyte_get_source).
Examples: params = { "name": "Production Postgres", "workspace_id": "a1b2c3d4-...", "definition_id": "decd338e-...", "configuration": { "sourceType": "postgres", "host": "db.example.com", "port": 5432, "database": "mydb", "username": "readonly", "password": "secret" } }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description doesn't need to restate those. It adds behavioral context by noting the return value and suggesting a workflow, but doesn't explicitly address potential side effects (e.g., credential storage, costing) or describe the creation behavior beyond the basic fact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (introduction, when to use, workflow, returns, examples). It is somewhat lengthy but each part serves a purpose. The front-loaded purpose sentence is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple parameters, dynamic configuration schema) and the presence of an output schema (so return format isn't needed in description), the description covers all essential aspects: purpose, usage guidance, workflow, parameter meaning via examples, and return value. It references sibling tools appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the context stating 0% schema description coverage, the actual input schema includes descriptions for most parameters (name, workspace_id, definition_id, configuration, secret_id). The description adds value beyond the schema by providing an example with typical fields and a workflow hint to look at existing sources for configuration structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Create a new source connector in Airbyte' and explains what a source is (a data source like database, API, etc.). It distinguishes from sibling tools like airbyte_list_sources or airbyte_update_source by focusing solely on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to Use' section provides two clear use cases (set up new source, automate provisioning). It also includes a recommended workflow with steps referencing sibling tools, but lacks explicit when-not-to-use or alternative tools that might be more appropriate in some scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_create_tagA
Create a new tag in Airbyte.
When to Use: - Add a new organizational label for resources.
Returns: The created tag with its tagId.
Examples: params = { "name": "production" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds the return value ('The created tag with its tagId') and an example, but does not disclose other behavioral aspects like permissions or side effects beyond creation. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with clear sections (title, When to Use, Returns, Example), and uses fewer than 50 words. Every sentence is informative without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required param, one optional, with output schema), the description provides purpose, usage guidance, return value, and an example. It lacks mention of any prerequisites or error handling, but is largely complete for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% according to context, yet the description only provides an example for the 'name' parameter and does not explain the 'response_format' parameter. The schema itself describes 'name', but the description adds minimal value beyond that. More parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new tag in Airbyte.' and adds that it is used to 'Add a new organizational label for resources.' This is a specific verb (create) and resource (tag), and it distinguishes from siblings like airbyte_delete_tag or airbyte_update_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to Use' section explicitly says 'Add a new organizational label for resources.' This provides clear guidance on when to invoke the tool. However, it does not mention when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_delete_tagADestructiveIdempotent
Delete a tag by its UUID.
This is a permanent operation. The tag will be removed from all resources it was attached to.
When to Use: - Remove an obsolete or duplicate tag.
Examples: params = { "tag_id": "a1b2c3d4-..." }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive= and idempotentHints. The description adds crucial detail: 'This is a permanent operation. The tag will be removed from all resources it was attached to.' No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single-line statement, a usage guideline, and an example. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter and an output schema, the description covers purpose, effect, usage context, and example thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a nested parameter with some description. The description adds an example UUID format, but most parameter semantics are already clear from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a tag by its UUID', providing a specific verb and resource. It distinguishes from sibling tools like create_tag or update_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It includes a 'When to Use' section with a clear example: 'Remove an obsolete or duplicate tag.' This is helpful but could be more explicit about when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_attempt_logsARead-onlyIdempotent
Get logs for a specific attempt of a job.
Uses the internal Configuration API (POST /v1/attempt/get_for_job) to fetch structured log entries for exactly one attempt. More efficient than airbyte_get_job_logs when you know which attempt failed.
Always returns JSON — structured logs are best consumed as-is.
When to Use: - A job had multiple attempts and you want logs for a specific one (e.g. the failing attempt). - You already identified the failing attempt number from airbyte_get_job_details.
When NOT to Use: - If you want logs for all attempts, use airbyte_get_job_logs. - On Airbyte Cloud — use airbyte_get_cloud_sync_logs for full-text logs.
Returns: JSON with attempt metadata and structured log entries, truncated to the last tail_lines entries.
Examples: params = { "job_id": 12345, "attempt_number": 0 } params = { "job_id": 12345, "attempt_number": 2, "tail_lines": 500 }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. Description adds efficiency details, truncation behavior, and return format (JSON, structured). Adds value beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections and bullet points. Front-loaded with main purpose, then usage guidelines, return description, and examples. Slightly verbose but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 3 params, no nested objects, and an output schema. Description covers return format, truncation, contrasts with siblings, and provides examples. Complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already describes parameters well (100% coverage). Description adds examples and explains when to use tail_lines, providing context beyond schema. Baseline 3 plus extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets logs for a specific attempt of a job, mentions the internal API endpoint, and distinguishes from sibling airbyte_get_job_logs. Specific verb+resource with scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, naming specific alternatives (airbyte_get_job_logs, airbyte_get_cloud_sync_logs). Provides clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_cloud_sync_logsARead-onlyIdempotent
Get full-text sync logs for an Airbyte Cloud connection job attempt.
Uses the Airbyte Cloud Config API (POST /jobs/get) to fetch embedded
attempt logs and returns plain text with pagination metadata. This is the
Cloud parity path — self-managed deployments should use
airbyte_get_job_logs or airbyte_get_attempt_logs for richer
structured diagnostics instead.
When to Use: - You are on Airbyte Cloud and need the raw log text for a sync. - You want paginated tail/head reads of a large Cloud log file. - You already know the connection and optionally the job/attempt.
When NOT to Use:
- On self-managed Airbyte (abctl / OSS) — use the internal-API log tools.
- When you need structured failure metadata — use
airbyte_get_job_details on self-managed.
Returns: JSON with job_id, attempt_number, log_text, log_text_start_line, log_text_line_count, and total_log_lines_available.
Examples: Latest job, last 4000 lines: params = { "connection_id": "a1b2c3d4-..." } Specific job and attempt: params = { "connection_id": "a1b2c3d4-...", "job_id": 12345, "attempt_number": 0, "max_lines": 1000, }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by noting it uses the Airbyte Cloud Config API (POST /jobs/get) and returns plain text with pagination metadata and a JSON object with specific fields. This provides additional transparency beyond annotations, though the safety profile is already well-covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet comprehensive: a brief summary, technical note, usage sections, return field list, and examples. It is well-structured and front-loaded with the main purpose, making it easy for an AI agent to quickly grasp the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple optional parameters, pagination, Cloud vs self-managed), the description covers purpose, usage conditions, alternatives, return format, and examples. The output schema exists (as indicated), so return value explanation is sufficient. The description is complete for an AI agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has detailed descriptions for all parameters, so schema_description_coverage is high (despite the context signal saying 0%, the schema shows descriptions). The description adds examples of parameter usage, which is helpful but not essential. With high schema coverage, the baseline is 3, and the description does not significantly add beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full-text sync logs for an Airbyte Cloud connection job attempt,' specifying the verb, resource, and scope. It distinguishes itself from sibling tools airbyte_get_job_logs and airbyte_get_attempt_logs by noting it is the 'Cloud parity path' for Airbyte Cloud, whereas the siblings are for self-managed deployments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, providing clear context: use on Airbyte Cloud for raw log text with pagination, avoid on self-managed deployments or when structured failure metadata is needed (use airbyte_get_job_details instead). This gives strong usage guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_connectionARead-onlyIdempotent
Get full details of a single connection by its UUID.
Returns the complete connection definition: source and destination IDs, sync schedule, namespace mapping, and the full list of configured streams with their sync modes. This is the most detailed view of a pipeline.
When to Use: - Inspect which streams a connection syncs and their modes (full_refresh, incremental, etc.). - Check the schedule (cron expression or basic interval). - Verify source/destination pairing for a known connection. - Debug a pipeline by examining its full configuration.
When NOT to Use: - If you need to browse connections, use airbyte_list_connections. - To see run history (success/failure, bytes synced), use airbyte_list_jobs with connection_id or airbyte_get_job.
Returns: Connection details including: name, connectionId, status, sourceId, destinationId, schedule, namespaceDefinition, and configurations.streams (name + sync mode for each stream).
Markdown format renders a heading with bullet-point fields.
JSON format returns the full API response object.Examples: Get connection by ID: params = { "connection_id": "a1b2c3d4-..." } Get raw JSON: params = { "connection_id": "a1b2c3d4-...", "response_format": "json" }
Error Handling: Returns a 404 message if the connection ID does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds behavioral details: returns the 'most detailed view', error handling (404 if not found), and response format options (markdown/json). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with distinct sections (overview, when to use/not use, return details, examples, error handling). Each sentence is informative and there is no redundancy. Front-loaded with core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and existing output schema, the description covers all necessary context: what it returns (connection details, streams, sync modes), how to use it (examples with parameters), error behavior, and relationship to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 1 required parameter (connection_id) with minimal description. The description adds meaning by explaining it as a UUID, providing examples of usage, and mentioning the optional response_format parameter with its two possible values and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full details of a single connection by its UUID.' and defines the resource (connection) and action (get details). It distinguishes from siblings like airbyte_list_connections and airbyte_get_job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with clear alternatives (airbyte_list_connections, airbyte_get_job, airbyte_list_jobs). Provides specific use cases for inspection, debugging, and verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_destinationARead-onlyIdempotent
Get full details of a single destination connector by its UUID.
Returns the destination name, type (e.g. bigquery, snowflake, s3), workspace, creation date, and connector configuration. Secrets in the configuration object are masked by the Airbyte API.
When to Use: - Inspect a specific destination's configuration or connector type. - Verify a destination ID is valid. - Check when a destination was created or which workspace owns it.
When NOT to Use: - If you need to browse destinations, use airbyte_list_destinations. - To see sync activity targeting this destination, use airbyte_list_jobs filtered by the relevant connection.
Returns: Destination details including: name, destinationId, destinationType, workspaceId, createdAt, and configuration (secrets masked).
Markdown format renders a heading with bullet-point fields.
JSON format returns the full API response object.Examples: Get destination by ID: params = { "destination_id": "a1b2c3d4-..." } Get raw JSON: params = { "destination_id": "a1b2c3d4-...", "response_format": "json" }
Error Handling: Returns a 404 message if the destination ID does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds valuable context: secrets are masked, 404 error handling, and response format details. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headings (overview, when to use/not use, returns, examples, error handling). Slightly lengthy but every section adds value; no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage guidance, error handling, response format, and examples. Output schema exists, so return structure is documented elsewhere. Complete for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 2 params (destination_id, response_format) with 0% coverage, but description explains destination_id as UUID, response_format as enum (markdown/json), and includes examples. Fully compensates for lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get full details of a single destination connector by its UUID' and lists returned fields (name, type, workspace, etc.). Differentiates from sibling tools like airbyte_list_destinations and airbyte_list_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with specific alternative tools (airbyte_list_destinations, airbyte_list_jobs). Provides clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_destination_definitionARead-onlyIdempotent
Get details of a specific destination connector definition.
Returns the full definition including name, Docker image, and connector specification.
When to Use: - Inspect what a specific destination connector provides. - Check the Docker image version for a connector.
Examples: params = { "workspace_id": "...", "definition_id": "..." }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by detailing the return content (name, Docker image, connector specification), which is not captured in annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with purpose. It uses clear sections ('When to Use', 'Examples') to organize information. While efficient, it could be slightly more structured by explicitly listing the return fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (3 parameters, one optional) and the presence of a output schema (indicated), the description covers the main points: purpose, return content, and usage context. It lacks parameter details but is otherwise complete for the agent's needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. However, it only provides an example with workspace_id and definition_id, but does not describe the parameters individually. The optional response_format parameter (with enum default) is not mentioned at all. This is insufficient for an agent to understand parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get details of a specific destination connector definition' with a specific verb and resource. It distinguishes from sibling tools like airbyte_get_source_definition and airbyte_get_destination by focusing on connector definitions. The examples reinforce the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to Use' section provides two specific use cases: inspecting what a connector provides and checking Docker image version. This gives clear context for when to invoke the tool. However, it does not explicitly mention when not to use it or alternative tools like list_destination_definitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_jobARead-onlyIdempotent
Get full details of a single sync or reset job by its numeric ID.
Returns the job status, type, associated connection, start time, duration, and volume metrics (bytes and rows synced). Use this to inspect a specific job's outcome.
When to Use: - Check whether a specific job succeeded or failed. - Get precise bytes/rows synced for a particular run. - Inspect job duration for performance analysis. - Follow up on a job ID returned by airbyte_list_jobs.
When NOT to Use: - If you need to browse multiple jobs, use airbyte_list_jobs with filters. - To see the pipeline definition (schedule, streams), use airbyte_get_connection instead.
Returns: Job details including: jobId, jobType, status, connectionId, startTime, duration, bytesSynced, rowsSynced.
Markdown format renders a heading with bullet-point fields.
JSON format returns the full API response object.Examples: Get job by ID: params = { "job_id": "12345" } Get raw JSON: params = { "job_id": "12345", "response_format": "json" }
Error Handling: Returns a 404 message if the job ID does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, destructiveHint, idempotentHint), the description discloses return fields (status, type, connection, duration, metrics) and error handling (404 for missing ID), adding valuable behavioral context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, front-loads the main purpose, and each sentence adds value. Slightly verbose but appropriate for the detail level.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and comprehensive annotations, the description covers all necessary context: purpose, usage, parameters, return values, examples, and error handling. Complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though schema description coverage is reported as 0%, the description provides example usage and clarifies that job_id is a numeric ID as string and response_format has a default. This adds practical semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full details of a single sync or reset job by its numeric ID,' specifying the verb, resource, and method. It also distinguishes itself from sibling tools like airbyte_list_jobs and airbyte_get_connection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes dedicated 'When to Use' and 'When NOT to Use' sections with four use cases and two exclusions that name alternative tools, providing explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_job_detailsARead-onlyIdempotent
Get detailed job information including per-attempt stats and failure reasons.
Uses the internal Configuration API (POST /v1/jobs/get) which returns much richer data than the public API: full attempt history, per-stream statistics, and structured failure summaries. Works for ALL job types including refresh and clear jobs.
When to Use: - A job failed and you need to understand WHY (failure origin, type, message, stacktrace). - You want per-stream record/byte counts for a specific sync. - You need to see how many attempts a job took and what happened in each one. - Monitor a refresh job's progress (get the job ID from airbyte_trigger_refresh or airbyte_list_jobs_internal).
When NOT to Use: - For a quick status check, use airbyte_get_job (public API). - For actual log lines, use airbyte_get_job_logs or airbyte_get_attempt_logs. - On Airbyte Cloud — use airbyte_get_cloud_sync_logs for full-text logs.
Returns: Job metadata plus a section per attempt with: status, timing, bytes/records synced, per-stream stats, and failure details.
Examples: params = { "job_id": 12345 }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint false), description reveals it uses internal Configuration API (POST /v1/jobs/get), works for ALL job types, and returns richer data than public API. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear headings and bullet points. Concise yet comprehensive, every sentence adds value. Efficient length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter), presence of output schema, and comprehensive annotations, the description covers all necessary aspects: purpose, usage guidance, return value summary, and alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (per context), the description only provides an example parameter object but no explicit explanation of job_id or response_format fields. Partially compensates but could be more thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets detailed job information with per-attempt stats and failure reasons, using internal API. Distinguishes from sibling tools like airbyte_get_job (public API) and airbyte_get_job_logs by noting the richer data and specific use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains explicit 'When to Use' and 'When NOT to Use' sections, listing concrete scenarios (e.g., job failure analysis, per-stream stats) and alternative tools per case. Includes a parameter example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_job_logsARead-onlyIdempotent
Get the actual log output for a job's sync attempts.
Uses the internal Configuration API (POST /v1/jobs/get_debug_info) to fetch structured log entries for each attempt. Logs can be very large, so use tail_lines to limit output and attempt_number to focus on a specific attempt.
Always returns JSON — structured logs are best consumed as-is by LLMs and scripts. Each log entry contains timestamp, message, level, logSource, and caller metadata.
When to Use: - You need the raw log output to debug a sync failure. - You want to search for specific error messages or stack traces in the logs. - airbyte_get_job_details showed a failure but you need more context from the full logs.
When NOT to Use: - For structured failure info, use airbyte_get_job_details. - On Airbyte Cloud — use airbyte_get_cloud_sync_logs for full-text logs.
Returns: JSON with structured log entries per attempt, truncated to the last tail_lines entries.
Examples: Last 200 entries for all attempts: params = { "job_id": 12345 } Last 500 entries for attempt 0 only: params = { "job_id": 12345, "attempt_number": 0, "tail_lines": 500 }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds that it always returns JSON with specific fields, logs can be large, and explains tail_lines/attempt_number behavior. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, front-loaded purpose, and no redundancy. Slightly lengthy but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, parameters, output format, examples, and alternatives. Output schema exists, so return value details are acceptable. Fully adequate for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema descriptions exist, the description adds context via examples and explains default/limit behavior for tail_lines and attempt_number. This supplements the schema well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets log output for a job's sync attempts. It specifies the verb 'get' and resource 'log output', and distinguishes itself from siblings like airbyte_get_job_details and airbyte_get_cloud_sync_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance, including alternatives for structured failure info and Airbyte Cloud usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_sourceARead-onlyIdempotent
Get full details of a single source connector by its UUID.
Returns the source name, type (e.g. postgres, stripe, google-sheets), workspace, creation date, and connector configuration. Secrets in the configuration object are masked by the Airbyte API.
When to Use: - Inspect a specific source's configuration or connector type. - Verify a source ID is valid. - Check when a source was created or which workspace owns it.
When NOT to Use: - If you need to browse sources, use airbyte_list_sources. - To see sync activity, use airbyte_list_jobs filtered by the connection that uses this source.
Returns: Source details including: name, sourceId, sourceType, workspaceId, createdAt, and configuration (secrets masked).
Markdown format renders a heading with bullet-point fields.
JSON format returns the full API response object.Examples: Get source by ID: params = { "source_id": "a1b2c3d4-..." } Get raw JSON: params = { "source_id": "a1b2c3d4-...", "response_format": "json" }
Error Handling: Returns a 404 message if the source ID does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses secret masking, 404 error handling, and response format options. Annotations already declare safety, and the description adds relevant behavioral context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, but some redundancy (e.g., 'Returns' repeats earlier info). Still efficient and easy to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, return values (with output schema present), error handling, and usage guidance completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description explains both parameters (source_id and response_format) with examples and default values, effectively compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves full details of a single source connector by UUID, and lists returned fields. It distinguishes from sibling tools like airbyte_list_sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections, with alternatives such as airbyte_list_sources and airbyte_list_jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_source_definitionARead-onlyIdempotent
Get details of a specific source connector definition.
Returns the full definition including name, Docker image, and connector specification.
When to Use: - Inspect what a specific source connector provides. - Check the Docker image version for a connector.
Examples: params = { "workspace_id": "...", "definition_id": "..." }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which cover the tool's safety profile. The description adds that it returns the 'full definition' with specific fields, providing some context about the response. However, it does not discuss error handling, pagination, or behavior on missing IDs. With annotations providing the core behavioral traits, the description adds moderate value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sections: a clear opening sentence, a bulleted 'When to Use', and a code example. Every sentence serves a purpose, with no redundancy. It is front-loaded with the main action and structured for quick scanning by an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (read-only lookup, two required params) and the presence of annotations and an output schema, the description covers the main purpose and provides usage scenarios. It lacks mention of the optional response_format parameter and error cases, but these are minor gaps for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per context, but the actual schema has descriptions for workspace_id and definition_id. The tool description includes a code example with these parameters but does not explain them or the optional response_format. Since the schema itself provides basic descriptions, the example adds marginal value, earning a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves details of a specific source connector definition, using the verb 'Get'. It specifies the resource ('source connector definition') and lists what is returned (name, Docker image, connector specification). This distinguishes it from sibling tools like airbyte_list_source_definitions (which lists all) and airbyte_get_source (which gets an instance).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to Use' section provides two explicit scenarios: inspecting a specific connector and checking the Docker image version. While it does not exclude alternatives like using the list tool first, it gives clear context for when to invoke this tool. No explicit 'when not to use' or comparison with siblings, but the guidance is focused and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_stream_propertiesARead-onlyIdempotent
Get the available streams and their properties for a source.
Returns the list of streams that the source connector can produce, along with each stream's supported sync modes, default cursor field, and source-defined primary key.
When to Use: - Before creating a connection, to discover which streams are available and which sync modes they support. - To verify that a source has the expected streams after configuration changes. - To find the right cursor field or primary key for incremental syncs.
When NOT to Use: - To see which streams are currently configured on a connection, use airbyte_get_connection instead.
Returns: List of streams with: name, namespace, sync modes, default cursor field, and primary key.
Examples: Basic usage: params = { "source_id": "a1b2c3d4-..." } With destination context and cache bypass: params = { "source_id": "a1b2c3d4-...", "destination_id": "e5f6g7h8-...", "ignore_cache": true }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. The description adds context about cache bypass and destination-based refinement, which goes beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, but slightly lengthy. Front-loaded with core purpose. Every sentence adds value, but could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations and output schema (present), description covers return format, use cases, and examples. Fully adequate for a discovery tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides descriptions for all parameters (source_id, destination_id, ignore_cache). Description adds example usage but does not significantly deepen semantic understanding beyond schema. Baseline 3 due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the available streams and their properties for a source' and lists specific returned fields (sync modes, cursor field, primary key). This distinguishes it from siblings like airbyte_get_connection, which shows configured streams.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'When to Use' and 'When NOT to Use' sections. 'When NOT to Use' directs to airbyte_get_connection for configured streams, providing clear alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_get_workspaceARead-onlyIdempotent
Get full details of a single Airbyte workspace by its UUID.
Returns the workspace name, data residency region, and other metadata. Use when you already know the workspace ID and need its properties.
When to Use: - Look up a specific workspace's name or data residency. - Confirm a workspace ID is valid before passing it to other tools.
When NOT to Use: - If you need to browse or search workspaces, use airbyte_list_workspaces instead.
Returns: Workspace details including: name, workspaceId, dataResidency.
Markdown format renders a heading with bullet-point fields.
JSON format returns the full API response object.Examples: Get workspace by ID: params = { "workspace_id": "a1b2c3d4-..." } Get raw JSON: params = { "workspace_id": "a1b2c3d4-...", "response_format": "json" }
Error Handling: Returns a 404 message if the workspace ID does not exist. Returns a 403 message if credentials lack access to that workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint. The description adds error handling details (404, 403) and return format options, which go beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (When to Use, Returns, Examples, Error Handling). Every sentence is informative. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, description handles return values correctly. Covers error cases and usage context. Complete for a simple get operation with rich annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has descriptions for workspace_id and response_format. The description adds value by explaining the effect of response_format (markdown vs JSON) and providing examples. It compensates for any schema description gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets full details of a single Airbyte workspace by UUID, with specific verb 'Get' and resource 'workspace'. It distinguishes from sibling tool 'airbyte_list_workspaces' which is for browsing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (look up workspace properties, confirm ID) and when not to use (browsing → use list_workspaces). This is a clear usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_health_checkARead-onlyIdempotent
Check whether the Airbyte API is reachable and healthy.
Sends a lightweight GET /health request to verify connectivity and authentication. Use this as the first call to confirm the Airbyte instance is running before making other requests.
When to Use: - Verify the Airbyte instance is up and reachable. - Diagnose "connection refused" or authentication errors. - Confirm credentials are valid after initial setup.
Returns: "OK – Airbyte API is healthy." on success. On failure, returns a human-readable error with the root cause (e.g. connection refused, 401 unauthorized, timeout).
Examples: Call with no parameters: airbyte_health_check()
Related Tools: After confirming health, use airbyte_list_workspaces to discover available workspaces.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, idempotent. Description supplements with HTTP method (GET /health), lightweight nature, and details of success/failure output, adding value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections (purpose, behavior, when to use, return, example, related tools). No redundant sentences, and every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple health check tool with rich annotations and output schema, the description covers all necessary aspects: purpose, usage guidance, expected return, error handling, and relation to other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, so schema coverage is 100%. Description reinforces that no parameters are needed and provides an example call. No further semantics required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks Airbyte API reachability and health using a specific verb and resource. Among siblings, no other tool serves this purpose, so it stands out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' section lists specific scenarios (verify instance, diagnose errors, confirm credentials). Also advises using it as the first call and suggests related tool after (airbyte_list_workspaces).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_connectionsARead-onlyIdempotent
List connections (source-to-destination pipelines) in Airbyte.
A connection is the core Airbyte concept: it links a source to a destination, defines which streams to sync, the sync schedule (cron or basic), namespace mapping, and the sync mode per stream. Think of it as a "pipeline definition."
When to Use: - Discover which pipelines exist and their current status (active, inactive, deprecated). - Find a connection's UUID so you can inspect its details or list its jobs. - Audit all pipelines in one or more workspaces.
When NOT to Use: - If you already have a connection ID, use airbyte_get_connection for full details including stream configuration. - To check if a pipeline is currently running or recently failed, use airbyte_list_jobs with the connection_id filter.
Returns: Paginated list of connections. Each entry includes: - name, connectionId (UUID), status, sourceId, destinationId, schedule (cron expression or basic timing), configured streams (first 10 names), namespaceDefinition.
Markdown format shows a heading per connection with bullet
fields. JSON format returns the raw API response array.Pagination: Use limit (1–100, default 20) and offset (default 0).
Examples: List all connections in a workspace: params = { "workspace_ids": ["a1b2c3d4-..."] } List first 10 connections: params = { "limit": 10 } Include soft-deleted connections: params = { "include_deleted": true } Get raw JSON for scripting: params = { "response_format": "json" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds behavioral context: pagination with limit/offset defaults, ability to include deleted connections, and response format options (markdown/json). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (definition, when to use/not use, return info, pagination, examples). It is concise yet comprehensive, with every sentence adding value. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple parameters, pagination, response formatting), the description covers purpose, parameters, behavior, and examples adequately. It lacks explicit error handling or empty result handling, but for a read-only list tool with good annotations, this is sufficient. The presence of an output schema (not shown) further reduces the need for return value details in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema's top-level 'params' parameter lacks a description, resulting in 0% schema coverage. However, the tool description compensates by explaining each sub-parameter (workspace_ids, limit, offset, include_deleted, response_format) with defaults and usage examples. While the schema's inner descriptions are good, the description adds contextual guidance (e.g., 'Omit to list across all allowed workspaces').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists connections (source-to-destination pipelines) and defines the concept. It distinguishes from siblings like airbyte_get_connection for a single connection and airbyte_list_jobs for checking runs, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, suggesting specific scenarios like discovering pipelines or finding UUIDs, and directs to alternatives (e.g., airbyte_get_connection for details, airbyte_list_jobs for running status).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_destination_definitionsARead-onlyIdempotent
List available destination connector definitions in a workspace.
Destination definitions describe which connector types are available (e.g. BigQuery, Snowflake, S3). Each definition has a UUID that can be used when creating a new destination.
When to Use: - Find the definition ID for a specific connector type before creating a destination with airbyte_create_destination. - Audit which custom connectors are installed in a workspace.
Returns: List of destination definitions with name, definition ID, and Docker image information.
Examples: params = { "workspace_id": "a1b2c3d4-..." }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds useful details about the return value (name, definition ID, Docker image), which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections (purpose, when to use, returns, examples). Every sentence adds value and is free of redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, clear annotations, and existence of an output schema, the description fully covers what an agent needs: purpose, usage context, return fields, and an example. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description implicitly covers workspace_id by showing it in the example. However, it omits the response_format parameter entirely, which is documented in the schema but not explained in the description. Thus, only partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists destination connector definitions, distinguishing it from airbyte_list_source_definitions and airbyte_get_destination_definition. It also explains the purpose of definition IDs for creating destinations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to Use' section provides explicit scenarios: finding definition IDs before creating a destination and auditing custom connectors. It does not explicitly list when not to use, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_destinationsARead-onlyIdempotent
List destination connectors configured in Airbyte.
Destinations represent the data targets (warehouses, databases, lakes, SaaS tools, etc.) that Airbyte writes to. Each destination is linked to a workspace and can receive data from one or more sources via connections.
When to Use: - Discover which destination connectors are set up. - Find a destination's UUID to inspect its configuration or look up related connections. - Audit destinations across one or more workspaces.
When NOT to Use: - If you already have a destination ID, use airbyte_get_destination for full details. - To see what data flows into a destination, look at connections (airbyte_list_connections) or jobs (airbyte_list_jobs).
Returns: Paginated list of destinations. Each entry includes: - name, destinationId (UUID), destinationType, workspaceId, createdAt.
Markdown format shows a heading per destination with bullet
fields. JSON format returns the raw API response array.Pagination: Use limit (1–100, default 20) and offset (default 0).
Examples: List all destinations in a workspace: params = { "workspace_ids": ["a1b2c3d4-..."] } List first 5 destinations across all workspaces: params = { "limit": 5 } Include soft-deleted destinations: params = { "include_deleted": true }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond annotations: pagination details, return format options, soft-deleted inclusion, and examples. No contradiction with readOnlyHint, destructiveHint, idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, bullet points, code examples. Every sentence adds value; no fluff. Efficiently front-loaded with purpose and when-to-use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive given 1 required param, optional params, output schema, and annotations. Covers list tool expectations: pagination, filtering, formatting, and example usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema description coverage 0%, the description explains each parameter (workspace_ids, limit, offset, include_deleted, response_format) with context and examples, compensating fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'List destination connectors configured in Airbyte.' Distinguishes from siblings like airbyte_get_destination and airbyte_get_destination_definition by scope and output granularity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, providing specific alternative tools (airbyte_get_destination, airbyte_list_connections, airbyte_list_jobs) and clear scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_jobsARead-onlyIdempotent
List sync, reset, refresh, and clear jobs with rich filtering.
Jobs represent individual executions. Every time a connection runs (manually or on schedule), Airbyte creates a job that tracks status, duration, bytes synced, and rows synced.
When to Use: - Check recent sync activity for a specific connection. - Find failed or running jobs across workspaces. - Audit sync volume (bytes/rows) over a date range. - Monitor whether scheduled syncs are executing on time. - Check the status of a refresh or clear job.
When NOT to Use: - If you already have a job ID, use airbyte_get_job for full details. - To see pipeline definitions (schedule, streams), use airbyte_get_connection instead. - If refresh/clear jobs are not returned (older Airbyte versions), use airbyte_list_jobs_internal instead.
Filters: All filters are optional and combinable: - connection_id: restrict to one pipeline. - workspace_ids: restrict to specific workspaces. - job_type: "sync", "reset", "refresh", or "clear". Note: "refresh" and "clear" require Airbyte >= 0.63. When omitted, most versions default to sync+reset only. - status: pending, running, incomplete, failed, succeeded, or cancelled. - created_at_start / created_at_end: ISO-8601 date range (e.g. "2024-01-01T00:00:00Z"). - order_by: sort field, e.g. "createdAt|DESC" (default).
Returns: Paginated list of jobs. Each entry includes: - jobId, jobType, status, connectionId, startTime, duration, bytesSynced, rowsSynced.
Markdown format shows a heading per job with bullet fields.
JSON format returns the raw API response array.Pagination: Use limit (1–100, default 20) and offset (default 0).
Examples: Recent failed jobs for a connection: params = { "connection_id": "a1b2c3d4-...", "status": "failed", "limit": 5 } All sync jobs in the last 7 days: params = { "job_type": "sync", "created_at_start": "2024-06-01T00:00:00Z" } Refresh jobs for a connection: params = { "connection_id": "a1b2c3d4-...", "job_type": "refresh" } Latest 3 jobs, newest first: params = { "limit": 3, "order_by": "createdAt|DESC" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent behavior. The description adds operational details like job tracking, version constraints for job types, and pagination behavior, which are not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear sections, front-loaded summary, and no wasted text. Every sentence serves a purpose, from usage guidance to examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple filters, pagination, version dependencies, response formats), the description is remarkably complete, covering all key aspects without relying solely on the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema has parameter descriptions, the tool description adds richer context for each filter (e.g., job_type version notes, created_at_start format), and provides usage examples, significantly enhancing meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists sync, reset, refresh, and clear jobs with rich filtering, and distinguishes from siblings like airbyte_get_job and airbyte_list_jobs_internal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections with concrete scenarios and references to alternative tools, plus details on filters and pagination.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_jobs_internalARead-onlyIdempotent
List ALL job types for a connection, including refresh and clear.
Uses the internal Configuration API (POST /v1/jobs/list) which returns every job type: sync, reset_connection, refresh, clear, and more. The public API's airbyte_list_jobs only returns sync and reset on most Airbyte versions.
When to Use: - Check the status of a refresh job triggered from the UI or via airbyte_trigger_refresh. - See clear jobs that aren't visible in the public API. - Get a complete job history for a connection including all job types. - Monitor a running refresh to see if it has completed.
When NOT to Use: - On Airbyte Cloud — use airbyte_get_cloud_sync_logs for full-text logs. - If you only need sync/reset jobs, airbyte_list_jobs is simpler and works on Cloud too.
Config Types (filter): Common values for config_types: - "sync" — regular incremental or full-refresh syncs - "reset_connection" — connection resets - "refresh" — stream refreshes (merge or truncate) - "clear" — stream clears When omitted, returns ALL types.
Returns: Paginated list of jobs with per-attempt stats. Each entry shows config type, status, timestamps, and stream-level record counts when available.
Examples: All jobs for a connection: params = { "connection_id": "a1b2c3d4-..." } Only refresh jobs: params = { "connection_id": "a1b2c3d4-...", "config_types": ["refresh"] } Failed jobs of any type: params = { "connection_id": "a1b2c3d4-...", "status": "failed" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses use of internal Configuration API, pagination, per-attempt stats, config types filter. Annotations already declare readOnly, idempotent, non-destructive; description adds meaningful context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: overview, when to use/not use, config types, returns, examples. Concise at ~200 words, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a list tool with output schema. Covers purpose, usage criteria, parameter details, return structure, and examples. No gaps given the complexity and available structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has descriptions for all parameters (high coverage), but the tool description adds value by explaining config_types common values and providing examples with parameter usage. Baseline 3, +1 for practical usage guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists ALL job types via internal API, explicitly distinguishing from sibling airbyte_list_jobs which only returns sync/reset. Specific verb 'list', resource 'jobs', and scope 'all types'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when-to-use (checking refresh/clear jobs, complete history) and when-not-to-use (Airbyte Cloud, only sync/reset needed). Names alternatives airbyte_get_cloud_sync_logs and airbyte_list_jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_source_definitionsARead-onlyIdempotent
List available source connector definitions in a workspace.
Source definitions describe which connector types are available (e.g. Postgres, Stripe, Google Sheets). Each definition has a UUID that can be used when creating a new source.
When to Use: - Find the definition ID for a specific connector type before creating a source with airbyte_create_source. - Audit which custom connectors are installed in a workspace.
Returns: List of source definitions with name, definition ID, and Docker image information.
Examples: params = { "workspace_id": "a1b2c3d4-..." }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, destructiveHint false, idempotentHint true. The description adds that the tool returns a list with name, definition ID, and Docker image info, which is useful context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for purpose, when to use, returns, and examples. It is concise with no wasted sentences, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (list operation with two params, annotations present, output schema exists), the description covers usage context, return content, and provides an example. It could mention that the list is workspace-specific, but it's adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has two parameters: workspace_id (with description 'UUID of the workspace') and response_format (enum with default). The description provides an example using workspace_id but does not explain response_format or further detail workspace_id format. With schema description coverage at 0% (though workspace_id has a description), the description adds limited value over schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists available source connector definitions in a workspace, explains what source definitions are, and links to creating a source. It differentiates from sibling tools like airbyte_get_source_definition by focusing on listing all definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly includes a 'When to Use' section with two scenarios: finding definition IDs before creating a source and auditing custom connectors. It references the sibling tool airbyte_create_source. However, it does not explicitly state when not to use or compare with get_source_definition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_sourcesARead-onlyIdempotent
List source connectors configured in Airbyte.
Sources represent the data origins (databases, APIs, SaaS apps, etc.) that Airbyte reads from. Each source is linked to a workspace and can be paired with one or more destinations via connections.
When to Use: - Discover which source connectors are set up. - Find a source's UUID to inspect its configuration or look up related connections. - Audit sources across one or more workspaces.
When NOT to Use: - If you already have a source ID, use airbyte_get_source for full details. - To see what data a source actually moves, look at connections (airbyte_list_connections) or jobs (airbyte_list_jobs).
Returns: Paginated list of sources. Each entry includes: - name, sourceId (UUID), sourceType, workspaceId, createdAt.
Markdown format shows a heading per source with bullet fields.
JSON format returns the raw API response array.Pagination: Use limit (1–100, default 20) and offset (default 0).
Examples: List all sources in a workspace: params = { "workspace_ids": ["a1b2c3d4-..."] } List first 5 sources across all workspaces: params = { "limit": 5 } Include soft-deleted sources: params = { "include_deleted": true }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, so description is not needed for safety. However, description adds pagination behavior, response format options, and the ability to include deleted sources. No contradictions. Minor gap: no mention of rate limits or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (When to Use, When NOT to Use, Returns, Pagination, Examples). No fluff, every sentence adds value. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the sibling tools and parameters, the description is complete. It explains return fields (name, sourceId, etc.) and pagination. An output schema exists but description covers what the agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite low schema description coverage (0%), the tool description thoroughly explains parameters: limit (1-100, default 20), offset (default 0), workspace_ids, include_deleted, response_format. Examples show typical usage. Compensates fully for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List source connectors configured in Airbyte' and distinguishes from siblings like airbyte_get_source, airbyte_list_connections, and airbyte_list_jobs. It is specific about what the tool does and the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When to Use' and 'When NOT to Use' sections, providing clear context. It tells when to use this tool (discover sources, find UUIDs) and when to use alternatives (get_source, list_connections, list_jobs). Examples further clarify usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_tagsARead-onlyIdempotent
List all tags in Airbyte.
Tags are labels that can be attached to resources (connections, sources, destinations) for organization and filtering.
When to Use: - Discover existing tags before creating a new one. - Get tag IDs for use in filtering or management.
Returns: List of tags with name and tagId.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds that it returns a list of tags with name and tagId, which is useful behavioral context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections and bullet points. Front-loaded with the main purpose. Could be slightly more concise, but overall effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, output schema indicates list of tags), the description covers the return value adequately. Missing details about parameter behavior, but still fairly complete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one optional parameter (response_format with enum markdown/json), but the description does not mention it. With 0% schema description coverage, the description should compensate by explaining available options, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all tags in Airbyte' and explains what tags are, distinguishing this readonly tool from sibling like create_tag, delete_tag, and update_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' section with two bullet points provides clear context for when to invoke this tool. Could be improved by also noting when not to use it, but the guidance is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_list_workspacesARead-onlyIdempotent
List all Airbyte workspaces the current credentials have access to.
Workspaces are the top-level organizational unit in Airbyte. Every source, destination, and connection belongs to exactly one workspace. Use this tool to discover workspace IDs before filtering other resources.
When to Use: - Discover which workspaces exist and get their UUIDs. - Find a workspace by name to use its ID in other calls. - Audit workspace configuration (data residency, etc.).
When NOT to Use: - If you already have a workspace ID, use airbyte_get_workspace for full details instead.
Returns: Paginated list of workspaces. Each entry includes: - name, workspaceId (UUID), dataResidency.
Markdown format shows a heading per workspace.
JSON format returns the raw API response array.Pagination: Use limit (1–100, default 20) and offset (default 0). The response header indicates whether more pages exist.
Examples: List first 5 workspaces: params = { "limit": 5 } List including deleted workspaces: params = { "include_deleted": true } Get raw JSON for scripting: params = { "response_format": "json" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by explaining pagination (limit, offset, response headers), return format options (markdown/json), and the relationship of workspaces to other entities. No contradiction with annotations (readOnlyHint, etc.).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, front-loaded with purpose, and uses efficient language. Every sentence serves a purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and thorough parameter descriptions, the description sufficiently covers pagination, return values, and usage context. It provides all necessary information for correct tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (all parameters have descriptions). The description provides examples (e.g., limit=5, include_deleted=true) that add practical context beyond the schema, justifying a score above baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all Airbyte workspaces' with a specific verb and resource. It distinguishes from sibling 'airbyte_get_workspace' by noting that this tool is for discovery and listing all workspaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'When to Use' and 'When NOT to Use' sections, with guidance on when to use 'airbyte_get_workspace' instead. Provides specific use cases like discovering workspace IDs and auditing configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_trigger_clearADestructive
Clear destination data for one or more streams in a connection.
Uses the internal Configuration API (POST /connections/clear) to remove synced data for the selected streams and reset their cursors. Unlike a refresh, a clear does not re-read from source — run a sync afterward to backfill data.
Requires a self-managed Airbyte deployment where the Configuration API (/api/v1) is accessible. NOT available on Airbyte Cloud.
When to Use: - Remove stale or incorrect destination data for specific streams. - Prepare streams for a clean re-sync after schema or config changes. - Clear affected streams after approving non-breaking schema changes.
When NOT to Use: - On Airbyte Cloud (internal API not available). - If you want to re-read source data without deleting first, use airbyte_trigger_refresh instead. - If the connection is already running a job, wait for it to finish.
Returns: The created clear/reset job with its job ID and initial status.
Examples: Clear a single stream: params = { "connection_id": "a1b2c3d4-...", "streams": [{"name": "oe-trailer"}] } Clear multiple streams: params = { "connection_id": "a1b2c3d4-...", "streams": [ {"name": "oe-trailer"}, {"name": "arinvitm", "namespace": "public"} ] }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already convey destructiveHint=true and readOnlyHint=false. The description adds significant behavioral context: it resets cursors, does not re-read from source (requires a subsequent sync), requires a self-managed Airbyte deployment with direct API access, and is not available on Airbyte Cloud. These details go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear opening action, separated sections for usage guidance, and concrete examples. Every sentence serves a purpose, and the most critical information (what the tool does and when to use it) is front-loaded. It is concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive operation on Airbyte), the description covers prerequisites (self-managed deployment, direct API access), constraints (not on Cloud), behavioral implications (no re-read, need subsequent sync), return value (job with ID and status), and provides examples. The presence of an output schema reduces the need to describe return format, and the description meets the completeness bar for an agent to safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has descriptive comments for each parameter (e.g., stream name, namespace, connection_id). The description reinforces this with practical examples showing exact parameter usage for single and multiple streams. Although the description does not systematically list all parameters, the examples and context (e.g., 'Each needs at least a name') add value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'clear destination data for one or more streams in a connection,' using a specific verb (clear) and resource (streams in a connection). It distinguishes itself from the sibling airbyte_trigger_refresh by explaining that a clear removes data and does not re-read source, unlike a refresh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool (remove stale data, prepare for clean re-sync, clear after schema changes) and when not to use it (Airbyte Cloud, if re-read without deleting, if connection is running). It also names the alternative tool airbyte_trigger_refresh.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_trigger_refreshADestructive
Trigger a refresh for one or more streams in a connection.
Uses the internal Configuration API to start a refresh job. Unlike a reset (which drops destination data first), a refresh re-reads from source and swaps/merges data only on success — no downtime.
Requires a self-managed Airbyte deployment where the Configuration API (/api/v1) is accessible. NOT available on Airbyte Cloud.
When to Use: - A stream has data gaps from a connector bug and you want to re-read without clearing the destination table first. - You need to reconcile stale rows in an incremental-append stream without risking downtime from a full reset. - Source data was corrected and you want to pull a fresh copy while the old data remains queryable.
When NOT to Use: - On Airbyte Cloud (internal API not available). - If a full reset is acceptable, use airbyte_trigger_sync with job_type='reset' instead (simpler, public API). - If the connection is already running a job, wait for it to finish first.
Refresh Types: - 'merge' (default): Retain previous records and merge new data. Old and new generations coexist, distinguished by _airbyte_generation_id. Safest option. - 'truncate': Replace destination data with the fresh read. Only newly synced rows appear after completion.
Returns: The created job with its jobId and initial status.
Examples: Refresh a single stream (merge): params = { "connection_id": "a1b2c3d4-...", "streams": [{"name": "oe-trailer"}] } Refresh multiple streams (truncate): params = { "connection_id": "a1b2c3d4-...", "streams": [ {"name": "oe-trailer"}, {"name": "arinvitm", "namespace": "public"} ], "refresh_type": "truncate" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it requires a self-managed Airbyte deployment, explains the refresh process (re-reads, swaps/merges on success, no downtime), and mentions waiting for running jobs. These details go beyond the annotations' destructiveHint and readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear headings for usage, refresh types, return value, and examples. Every sentence adds value, and the core purpose is stated upfront.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary context: tool purpose, prerequisites (self-managed), usage scenarios, refresh type options, and return format. The presence of an output schema further completes the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the input schema by explaining refresh types ('merge' vs 'truncate') with behavioral differences and providing concrete examples for single and multiple streams, plus enumeration of valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool triggers a refresh for streams in a connection, distinguishing it from siblings like airbyte_trigger_sync (reset) and noting it uses the internal Configuration API, not available on Cloud.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use (data gaps, reconcile stale rows, corrected source) and when not to use (on Airbyte Cloud, if reset is acceptable, if connection is busy), with a suggested alternative (airbyte_trigger_sync with reset).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_trigger_syncA
Trigger a sync or reset job for a connection.
Starts a new job that replicates data from source to destination (sync) or clears destination data and re-syncs (reset).
When to Use: - Manually kick off a sync outside the regular schedule. - Trigger a reset after schema changes or data issues. - Automate syncs in response to upstream events.
When NOT to Use: - The connection is already running a sync (check with airbyte_list_jobs first). - If you need a non-destructive refresh (re-read without clearing the destination), use airbyte_trigger_refresh instead. Resets drop destination data first, which causes downtime; refreshes swap data only on success.
Returns: The newly created job with its jobId and initial status.
Examples: Trigger a sync: params = { "connection_id": "a1b2c3d4-..." } Trigger a reset: params = { "connection_id": "a1b2c3d4-...", "job_type": "reset" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains that reset clears destination data and causes downtime, while sync does not. It states the return value (newly created job with jobId and initial status). Annotations already indicate readOnlyHint=false, and the description adds behavioral context beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, examples, and warnings. Every sentence adds value; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two job types, comparison to refresh), the description is very complete. It covers when to use, when not to use, behavioral effects, and return value. The presence of an output schema means return format details are already handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema provides descriptions for job_type and connection_id, the description adds meaning by explaining the difference between sync and reset, and provides examples showing how to pass the parameters. The 'When NOT to Use' section also clarifies the job_type parameter's role in deciding between reset and refresh.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool triggers a sync or reset job for a connection. It distinguishes between sync and reset, and also differentiates from the sibling tool airbyte_trigger_refresh, which is used for non-destructive refreshes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections. It advises against using when the connection is already running (and suggests checking with airbyte_list_jobs) and recommends airbyte_trigger_refresh for non-destructive refreshes instead of reset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_update_connectionAIdempotent
Update an existing connection's configuration.
Uses PATCH semantics: only the fields you provide are changed.
When to Use: - Change a connection's schedule (e.g. from daily to hourly). - Enable/disable a connection by changing its status. - Add or remove streams from the sync. - Update namespace or prefix settings.
Recommended Workflow: 1. Call airbyte_get_connection to see the current configuration. 2. Build the update payload with only the fields to change. 3. Call this tool.
Returns: The updated connection details.
Examples: Pause a connection: params = { "connection_id": "...", "status": "inactive" } Change schedule: params = { "connection_id": "...", "schedule": { "scheduleType": "basic", "basicTiming": "Every 6 hours" } }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (mutation) and destructiveHint=false. Description adds PATCH semantics (only provided fields change) and mentions return value. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: brief intro, PATCH note, 'When to Use' list, recommended workflow, 'Returns', and examples. Every sentence is relevant and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich input schema descriptions and presence of output schema, description covers all key aspects: purpose, usage guidance, workflow, and examples. Complete for an update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% but input schema has descriptions for each parameter. The description provides no parameter details but gives examples showing how to use status and schedule, adding some value. Adequate but not fully compensatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing connection's configuration' and specifies PATCH semantics. It distinguishes itself from siblings like airbyte_create_connection (creation) and airbyte_get_connection (read-only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use (change schedule, enable/disable, add/remove streams, update namespace/prefix) and provides a recommended workflow with three steps. Also includes examples for common use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_update_destinationAIdempotent
Update an existing destination connector's name or configuration.
Uses PATCH semantics: only the fields you provide are changed.
When to Use: - Change connection credentials (e.g. rotate a service account). - Rename a destination for clarity. - Update connector settings (e.g. change dataset or bucket).
Recommended Workflow: 1. Call airbyte_get_destination to see the current configuration. 2. Build the updated configuration with only the changed fields. 3. Call this tool.
Returns: The updated destination details.
Examples: Rename a destination: params = { "destination_id": "a1b2c3d4-...", "name": "New Name" } Update configuration: params = { "destination_id": "a1b2c3d4-...", "configuration": { "dataset_id": "new_dataset" } }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false. Description adds 'Uses PATCH semantics: only the fields you provide are changed,' which clarifies the update behavior. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with sections, front-loaded with purpose, and every sentence adds value. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, when to use, workflow, behavior, and examples. Although output schema exists but not shown, the description mentions return value. Lacks error handling or auth notes but is sufficient for an update tool with idempotent hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has detailed descriptions for each field. Description adds value by providing concrete examples (rename, update configuration) and a workflow, which helps the agent understand how to populate parameters. The examples make it a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Update an existing destination connector's name or configuration.' It specifies the action, resource, and scope. It distinguishes from sibling tools like airbyte_create_destination and airbyte_get_destination by focusing on updating an existing entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description includes a 'When to Use' section with three clear scenarios and a recommended workflow (get, build, update). It provides context but does not explicitly mention when NOT to use or list alternatives; however, the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_update_sourceAIdempotent
Update an existing source connector's name or configuration.
Uses PATCH semantics: only the fields you provide are changed. The configuration object is merged at the top level by the API.
When to Use: - Change connection credentials (e.g. rotate a password). - Rename a source for clarity. - Update connector settings (e.g. change replication slot).
Recommended Workflow: 1. Call airbyte_get_source to see the current configuration. 2. Build the updated configuration with only the changed fields. 3. Call this tool.
Returns: The updated source details.
Examples: Rename a source: params = { "source_id": "a1b2c3d4-...", "name": "New Name" } Update configuration: params = { "source_id": "a1b2c3d4-...", "configuration": { "password": "new-secret" } }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and non-destructive, but the description adds critical behavioral details: 'Uses PATCH semantics: only the fields you provide are changed. The configuration object is merged at the top level by the API.' This goes beyond annotations and is essential for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into clear sections: main purpose, PATCH semantics, when to use, recommended workflow, return value, and examples. Every sentence earns its place, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a PATCH update with merging behavior, the description is complete. It covers what the tool does, how it behaves, prerequisites (get source first), and expected outcomes. The presence of an output schema further reduces ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the input schema already describes parameters, the description adds significant value by explaining the merge behavior and providing concrete examples (rename and update config). This helps an agent understand how to construct the configuration object correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing source connector's name or configuration, using specific verb and resource. It differentiates it from sibling update tools like airbyte_update_connection or airbyte_update_destination by focusing on sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to Use' bullet points (change credentials, rename, update settings) and a 'Recommended Workflow' with three steps. It does not explicitly state when not to use, but the context given is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_update_tagAIdempotent
Update an existing tag's name.
When to Use: - Rename a tag for better organization.
Returns: The updated tag.
Examples: params = { "tag_id": "a1b2c3d4-...", "name": "staging" }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and readOnlyHint=false, so the description adds value by stating the return value. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two main sentences plus an example. Information is front-loaded and no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (rename a tag) and the description covers purpose, usage, and return value. With output schema present, no further details are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description does not elaborate on parameters. The schema itself provides brief descriptions for tag_id and name, but the description adds no additional meaning or guidance for using the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing tag's name', specifying the verb (update) and resource (tag name). It distinguishes from sibling tools like airbyte_create_tag and airbyte_delete_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to Use' section provides clear context: 'Rename a tag for better organization.' While it doesn't explicitly state when not to use, the purpose is straightforward and no alternative tool is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbyte_wait_for_jobARead-onlyIdempotent
Poll an internal job until it reaches a terminal status.
Uses the internal Configuration API (POST /jobs/get) to poll job status until it becomes succeeded, failed, cancelled, or incomplete, or until max_wait_seconds is reached.
When to Use: - After airbyte_trigger_refresh or airbyte_trigger_clear to block until the job finishes. - Automate workflows that need to know when a job completed.
When NOT to Use: - For a one-shot status check, use airbyte_get_job_details. - On Airbyte Cloud (internal API not available).
Returns: Final job summary when a terminal status is reached, or a timeout message if max_wait_seconds elapses first.
Examples: Wait up to 10 minutes for job 12345: params = { "job_id": 12345, "max_wait_seconds": 600 } Poll every 10 seconds: params = { "job_id": 12345, "poll_interval_seconds": 10 }
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so no contradiction. Description adds valuable behavioral context: uses POST /jobs/get, polls until succeeded/failed/cancelled/incomplete or timeout, returns final summary or timeout message. No missing critical behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured with clear sections (intro, when to use/not use, returns, examples). Every sentence adds value with no repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is a polling wrapper with timeout; description covers purpose, usage, constraints, return behavior, and examples. Output exists (implied by 'Returns final job summary'), but not detailed. Still complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all four parameters (job_id, response_format, max_wait_seconds, poll_interval_seconds). Description adds no additional parameter semantics beyond examples, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Poll an internal job until it reaches a terminal status.' It uses specific verb (poll) and resource (internal job), and distinguishes from siblings like airbyte_get_job_details which is a one-shot check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sections for when to use (after trigger_refresh/trigger_clear) and when NOT to use (for one-shot status check or on Airbyte Cloud). Also names alternative tool airbyte_get_job_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes with detailed descriptions. However, the multiple job- and log-related tools (e.g., airbyte_get_job, airbyte_get_job_details, airbyte_get_job_logs, airbyte_get_attempt_logs, airbyte_list_jobs, airbyte_list_jobs_internal) could confuse an agent despite the clarifications. The overlap is manageable but not perfect.
All tools follow a consistent pattern: 'airbyte_' + verb (cancel, create, get, list, trigger, update, wait_for) + noun. Naming is uniform, uses snake_case, and no mixing of conventions. Very predictable.
With 36 tools, the server covers a wide range of Airbyte operations thoroughly. While slightly numerous, each tool serves a specific, justified need in managing the data pipeline lifecycle. The count is appropriate for the comprehensive scope.
The tool set covers most major workflows (CRUD for sources, destinations, connections; job management; triggering syncs and refreshes). However, notable gaps exist: there are no tools to delete sources, destinations, or connections, which are missing CRUD operations. This limits the completeness of lifecycle management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Ask data questions in natural language. Get SQL, insights, and charts from your databases.
Your Databricks Lakehouse in natural language: run SQL on your SQL warehouses, track long-running qu
Interact with the Stitch API using natural language commands.
Your Supabase account in natural language: run SQL, apply migrations, manage tables, storage, edge f
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables seamless integration with AnythingLLM instances, providing complete workspace management, chat operations, document handling, user administration, and AI agent configuration through natural language.387516MIT
- AlicenseNot gradedqualityDmaintenanceEnables users to interact with Apache Airflow orchestration platform through natural language to query pipeline statuses, troubleshoot DAG failures, trigger DAGs, and analyze configurations.10MIT
- AlicenseNot gradedqualityDmaintenanceEnables natural language interaction with Apache Airflow for querying DAGs, monitoring execution, and troubleshooting failures.1MIT

Orchestra MCP Serverofficial
FlicenseNot gradedqualityAmaintenanceEnables interaction with the Orchestra API for managing pipelines, runs, logs, and artifacts through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/trustxai/airbyte-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server