The Via Kondado destination allows access via Link to data replicated and modeled by Kondado
Accessing your data
The minimum and maximum years for fields of types date and timestamp are, respectively, 1677 and 2262. If a date is not within this range, it will be returned as null.
Copy-paste link
The connection to Via Kondado is made via API. You can easily obtain the API access link for any table, similar to the modal below. You can change the decimal separator between comma and dot, then click the copy icon to get the link

Copy-paste link for pipelines
To get all the links of your pipeline tables, simply access your pipeline and click the share icon

The link for each table will also be available by clicking DETAILS

Copy-paste link for models

Manually constructing the link
Our reading API must be accessed with a GET request to the host https://hub.kondado.io and authenticated with the token parameter (query string)
Access token
To get the access token for your destination, just access it, click the 3 horizontal bars, and then "View token"

This token allows access to your data. Keep it in a safe place
Reading data
To get the data from a table table_x, just access the path data/table_x.
If the decimal_sep parameter is not provided, the decimal separator will be the dot; use decimal_sep=comma to get your data separated by a comma, for example:
https://hub.kondado.io/data/table_x?token=your_token&decimal_sep=comma
Reading metadata
The /metadata path returns metadata of your tables in JSON format
/metadata/show_tablesreturns an ARRAY of JSONs with the list of tables in your destination in the key tbl_name/metadata/kdd_show_tablesreturns an ARRAY of JSONs with the list of tables in your destination, including information on the location of each table within Kondado:tbl_nameprovides the table nametbl_idprovides the table IDorigin_object_typeindicates the type of object the table references, where "pipeline" means pipeline and "kubo" means modelorigin_object_idprovides the ID of this objectorigin_object_sub_locationprovides the location of the table within the object for pipelines that contain more than one table; it is empty if it is the main pipeline table or a table of a modelorigin_object_created_revis an internal code indicating the version of the object referencing the tablecreatedAtis the table creation dateupdatedAtis the last update date of the table
/metadata/kdd_show_table_sizesreturns an ARRAY of JSONs with the list of tables in your destination and information about the sizes of these tables:tbl_nameprovides the table nametbl_idprovides the table IDnum_rowsindicates the number of rows in the tablenum_colsindicates the number of columns in the tablenum_cellsindicates the number of cells in the tablesize_bytesis the table size in bytesbillable_mb_sizeis the table size in megabytes for access countingbillable_requestsshows how many accesses the table will consume when read
/metadata/schemas/table_xreturns the schema of the tabletable_xcol_typeinforms the field name (key/header)col_typerepresents the field type: text, float, int, timestamp, date, or boolean
Format of returned data
Whenever the data link (/data) is accessed, the latest version of your table in Via Kondado will be returned in CSV format, which allows compatibility with various visualization and analysis tools.
The column separator of this file will be the comma, and you can switch between comma or dot as the decimal separator with the decimal_sep parameter if you create the link manually or directly in the link acquisition modal on our platform.
To increase the compatibility and formatting of the CSV, line breaks (/n, /r, and /r/n) in text type fields will be removed in replicated tables. In model tables, this removal will only occur due to changes made by the model's SQL.
Additionally, most accents and special characters will be replaced.
How to use
Units
Each Via Kondado destination can be configured to have a certain capacity, according to the number of allocated units. A unit has 3 components:
- Accesses
- Each unit grants 2000 accesses/month
- It is a measure of data access and indicates how many reads per 10mb (megabytes) per month can be performed via data and metadata links of the destination.
- Example: A 2mb table costs 1 access to be read. A 18mb table costs 2 access when read
- Cells:
- Each unit grants 10 million cells stored per month
- It is a measure of data storage. It indicates how many cells per month can be stored in the destination. Similar to a spreadsheet, a cell is the smallest unit of a table and represents the intersection of a row and a column. Within a given month, the number of stored cells vary, as a table can grow/shrink in size, as well as be removed or created at any time, and the monthly cell storage measure reflects this variation
- Active models
- Each unit grants 2 active models
Changing units
You can change the number of units directly on the destination page

The modal that will open will indicate the total monthly pricing. Free units may be granted at our discretion. Just click SAVE to apply the new configuration

Free unit
The free unit included in the plan is applied upon destination creation or when units are changed
Change access token
To change the access token of your destination, just access it, click the 3 horizontal bars, and then "Change token"

You should change your token whenever you suspect it has been compromised. Frequent changes are also recommended. When you change your token, a new one will be generated, and the previous one will stop working, requiring you to update the new token in your links
Create
After your free trial period, you can have as many Via Kondado instances as you want, each containing its own data and having its own access token. To create a new destination, just click "Create+" on the top bar, choose Via Kondado, give a name and a number of units to the new destination
Disable and archive
To disable and archive your destination, just access it, click the 3 horizontal bars, and then "Disable and archive". This action is irreversible, it will remove the data from the tables of this destination and make it inaccessible via Link. Pipelines and models of this destination will be archived

Remove data without disabling the destination
You can archive an pipeline or model to remove this specific data from your Via Kondado destination
Security recommendations
Your token allows access to your data, use the highest degree of security in its handling
It is possible to obtain this token in various ways through the Kondado platform, so we recommend protecting access to your Kondado account by applying appropriate login settings, allowing access only with methods that have two-factor authentication enabled and restricted domains.
Table standards
Table names
- Do not start with duckdb_, pragma_, pg_, or sqlite_
- Do not contain special characters or spaces
- Always use lowercase
Fields
- The maximum number of fields per table is 1500
- The minimum and maximum years for fields of types
dateandtimestampare, respectively, 1677 and 2262. If a date is not within this range, it will be returned asnull.
Models
You can use our models functionality in the Via Kondado destination, which uses DuckDB syntax, with the following particularities:
- Your SQL should only contain one SELECT command
- The SHOW command is not allowed in your SQL
- Column aliases will be normalized in the final table, replacing non-ANSI characters and spaces with “_”
- The dot notation "." should not be used to refer to tables in your SQL
- The RANGE function is not allowed
- PIVOT and UNPIVOT must be wrapped within a subquery (for example: SELECT * FROM (PIVOT Cities ON YEAR USING SUM(POPULATION)) and SELECT * FROM monthly_sales UNPIVOT (sales FOR month IN (jan, feb, mar, apr, may, jun)))
- The total execution time of your model, including the loading of dependent tables, should not exceed 10 minutes, with a maximum of 5 minutes for the SQL execution itself. If these limits are exceeded, it may be necessary to query fewer tables, work with reduced tables (e.g., with preliminary treatment using other upstream models), or simplify your SQL
- Due to the architecture of the Via Kondado destination, there may be considerable variation between the execution times of the same model
Model editor
The Via Kondado model editor allows you to test your SQL during editing.
The test uses samples of the queried tables, which will return a different result from the real SQL execution with the original data
To test your SQL, first select a Via Kondado destination, and then you will see the TEST SQL button. Just click it. You can also use the CTRL+ENTER shortcut

The test will consider all the SQL contained in the editor, regardless of what is selected or if the text has been saved (which can also be done with CTRL+S)
If an error is found during the test, it will be displayed. If there are no errors, the execution result with the sample data will be shown, and you can also immediately run your model. Clicking this button will also save the SQL currently in your editor

Queries (Beta)
In addition to downloading full tables, Via Kondado allows you to run queries directly on your data — filtering, grouping, and transforming information before download.
With queries, you can:
- Filter records by specific conditions (e.g., only sales from the last month)
- Select only the columns you need
- Group data and calculate totals, averages, counts, and other metrics
- Sort results by any column
- Create calculated columns with custom expressions
- Combine tables using JOINs
- Merge data from different tables with UNION ALL
Queries use KSQL, Kondado's own JSON-based query syntax. See the complete KSQL Reference for details on syntax and available functions.
ℹ️ Beta: Queries are available in beta mode. Features and limits may be adjusted.
How it works
- Build your query using KSQL syntax (JSON format)
- Submit the query via the Via Kondado URL, just like you do for table downloads
- Results are delivered as a CSV file for download
Endpoints
Queries are sent to the host https://hub.kondado.io, authenticated with your Via Kondado token via the token query-string parameter:
| Method | Endpoint | Description |
|---|---|---|
| POST | /query?token=YOUR_TOKEN | Send the query JSON in the request body |
| GET | /query/{base64_payload}?token=YOUR_TOKEN | Send the base64-encoded query in the URL path |
| GET | /query?ksql={base64_payload}&token=YOUR_TOKEN | Send the base64-encoded query as a query-string parameter |
| GET | /query?query_id={id}&token=YOUR_TOKEN | Execute a saved query by ID |
POST /query
Send the JSON in the request body. The root structure accepts either the ksql field (with the query definition) or the query_id field (ID of a previously saved query):
{
"ksql": {
"table_name": "sales",
"columns": ["product", "amount", "date"],
"where_conditions": [
{
"column": "date",
"operator": "LAST_N_DAYS",
"value": 30
}
],
"order_by": [{"column": "amount", "direction": "desc"}],
"limit": 1000
}
}
Executing a saved query by ID:
{"query_id": "abc123"}
GET /query/{base64_payload}
Base64-encode only the KSQL object (without the {"ksql": ...} envelope) and send it in the URL path. If the path value is not valid Base64, it will be interpreted as the query_id of a saved query.
Response formats
| Parameter | Value | Behavior |
|---|---|---|
response_format | download (default) | Redirects to the CSV download link |
response_format | link_and_schema | Returns JSON with download link and column schema |
Example response with link_and_schema:
{
"download_link": "https://...",
"schema": [
{"col_name": "product", "col_type": "STRING"},
{"col_name": "amount", "col_type": "DOUBLE"}
],
"row_cap": 1000,
"truncated": false
}
Record limit
Queries return a maximum of 1,000 records per execution, regardless of the limit value specified. The response includes row_cap: 1000 and a truncated flag indicating whether the result was truncated (true) or returned all records (false).
Reading consumption
Query reading consumption is based on the amount of data scanned, in increments of 10 MB. The minimum charge is 1 reading per query.
| Data scanned | Readings consumed |
|---|---|
| Up to 10 MB | 1 |
| 10 MB to 20 MB | 2 |
| 20 MB to 30 MB | 3 |
| ... | ... |
💡 Tip: Select only the columns you need and use filters to reduce the amount of data scanned and save readings.
Kondado app discount: Queries made directly through the Kondado application consume only 0.2 readings per increment, instead of 1.
Examples
Simple query with filter:
{
"ksql": {
"table_name": "customers",
"columns": ["name", "email", "city"],
"where_conditions": [
{"column": "city", "operator": "=", "value": "New York"}
],
"limit": 50
}
}
Query with grouping:
{
"ksql": {
"table_name": "orders",
"columns": ["category", "revenue"],
"column_aggregations": ["none", "sum"],
"dimensions": ["category"],
"order_by": [{"column": "revenue", "direction": "desc"}]
}
}
For more examples and the complete syntax documentation, see the KSQL Reference.
MCP
MCP (Model Context Protocol) lets LLMs and AI tools — like Claude and ChatGPT — access the data in your Via Kondado through KSQL queries, in an authenticated and programmatic way. It's an additional channel alongside CSV, dashboards, and BI access: while those are designed for human consumption or traditional tools, MCP is the official path to connect AI agents to your Via Kondado.
Endpoint
The MCP endpoint is unique and the same for every customer — authentication determines who each call belongs to:
https://mcp.kondado.io/mcp
Authentication
Two authentication paths are supported. Use whichever fits your MCP client:
1. OAuth (recommended for apps with OAuth 2.1 + DCR support)
Apps like Claude, ChatGPT, and similar — which support OAuth 2.1 with Dynamic Client Registration (RFC 7591) — discover everything automatically from the /mcp endpoint. You only need to configure the URL https://mcp.kondado.io/mcp in the client app; it handles the rest:
- The client receives a
401 Unauthorizedresponse with aWWW-Authenticateheader pointing to the resource-metadata. - The client discovers the authorization server through the
/.well-known/oauth-protected-resourceand/.well-known/oauth-authorization-serverendpoints. - The client performs Dynamic Client Registration automatically.
- A consent screen opens at
https://app.kondado.com.br/oauth/authorize— you sign in, pick the target Via Kondado, and authorize. - The client receives an access token and a refresh token, and uses the Bearer token on subsequent calls.
For OAuth-capable apps, no configuration beyond the endpoint URL is required — the app discovers the auth and registration flows on its own.
2. Legacy token (clients without OAuth or manual setup)
For MCP clients that don't support OAuth/DCR (simple CLIs, your own scripts, server-to-server integrations), or when you prefer a long-lived token, the same access token from your Via Kondado also works as a Bearer token on MCP.
How to use: send the header Authorization: Bearer YOUR_TOKEN on each call to https://mcp.kondado.io/mcp. This is the same token used to access Via Kondado data via Link — see the Access token section to find it.
Supported apps
See the dedicated guides for each client app:
- Claude
- ChatGPT
- Other generic MCP clients can be configured manually with the URL
https://mcp.kondado.io/mcpand the legacy token.
v1 limitations
- Read-only: MCP currently allows reads only — no write, insert, update, or delete operations are exposed.
- KSQL only: queries use exclusively the KSQL syntax (JSON format). Raw SQL is not supported yet.
- One Via Kondado per OAuth session: each OAuth session is bound to a single Via Kondado. To access data from another Via Kondado, simply re-authenticate and pick the target destination.
– This destination is in beta mode
Frequently asked questions about MCP
What is MCP and who should use it?
What's the Via Kondado MCP endpoint?
https://mcp.kondado.io/mcp. Authentication determines who each call belongs to. See the MCP section for details.Can I use it with Claude and ChatGPT? What about other clients?
Do I need OAuth, or can I use the legacy token?
https://mcp.kondado.io/mcp. For clients without OAuth (simple CLIs, custom scripts, server-to-server integrations), use the same Via Kondado access token as a Bearer token.Is it secure? Who sees my data?
Set up and query data via Via Kondado
Connect your BI tools and spreadsheets to Via Kondado using API links, then run filtered queries to get exactly the data you need.
Create your Via Kondado destination
After your free trial, click "Create+" on the top bar, choose Via Kondado, and configure the name and units. The free unit is applied automatically upon creation. Learn more about pricing and units.
Get your access token
Open your destination, click the 3 horizontal bars, and select "View token". Keep this token secure—treat it as a password for your data. Follow security recommendations to protect your account with two-factor authentication.
Copy the API link for your table
For pipeline tables, access your pipeline and click the share icon, or click DETAILS to get each table's link. For models, use the same copy-paste method. You can also manually construct links to https://hub.kondado.io/data/table_x with your token.
Connect to your preferred tool
Use the copied link to connect Via Kondado to BI and visualization tools like Power BI, Looker Studio, or Excel via Power Query. The data returns in CSV format with configurable decimal separators.
Build and run KSQL queries (Beta)
Instead of downloading full tables, use KSQL to filter, group, and transform data before download. Submit queries via POST to /query with your token, or use the Kondado app for discounted reading consumption (0.2 readings per 10 MB instead of 1).
Frequently asked questions
https://mcp.kondado.io/mcp. Authentication determines who each call belongs to. See the <a href="#anchor-mcp">MCP section for details.https://mcp.kondado.io/mcp. For clients without OAuth (simple CLIs, custom scripts, server-to-server integrations), use the same Via Kondado access token as a Bearer token.