From b0229c4c61a5c0ffbe817e30b368585682917c0b Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 10 Jul 2026 15:23:58 +0000 Subject: [PATCH 1/3] Fix broken links, dead anchors, invalid JSON examples, and typos in docs --- cli/commands/index.md | 2 +- cli/commands/local/create/config/index.md | 2 +- cli/commands/local/create/row/index.md | 2 +- cli/commands/remote/index.md | 2 +- cli/commands/sync/diff/index.md | 2 +- cli/index.md | 6 +++--- cli/structure/index.md | 2 +- extend/common-interface/config-file.md | 4 ++-- extend/common-interface/folders.md | 15 +++++++-------- extend/component/running/index.md | 6 +++--- .../configuration/api/pagination/index.md | 2 +- .../configuration/config/index.md | 2 +- extend/generic-extractor/functions.md | 2 +- extend/generic-extractor/tutorial/basic.md | 4 ++-- .../generic-writer/configuration/configuration.md | 2 +- extend/generic-writer/index.md | 2 +- integrate/jobs/index.md | 2 +- integrate/mcp.md | 4 ++-- integrate/variables/index.md | 2 +- overview/index.md | 2 +- 20 files changed, 33 insertions(+), 34 deletions(-) diff --git a/cli/commands/index.md b/cli/commands/index.md index 1aa41e27..822ffc37 100644 --- a/cli/commands/index.md +++ b/cli/commands/index.md @@ -64,7 +64,7 @@ kbc help local create row | [kbc remote table detail](/cli/commands/remote/table/detail/) | Print [table](https://help.keboola.com/storage/tables/) details. | | [kbc remote table import](/cli/commands/remote/table/import/) | Import data to a [table](https://help.keboola.com/storage/tables/) from a [file](https://help.keboola.com/storage/files/). | | [kbc remote table unload](/cli/commands/remote/table/unload/) | Unload a [table](https://help.keboola.com/storage/tables/) into a [file](https://help.keboola.com/storage/files/). | -| [kbc remote workspace](/cli/commands/remote/create/) | Manage workspaces in the project. | +| [kbc remote workspace](/cli/commands/remote/workspace/) | Manage workspaces in the project. | | [kbc remote workspace create](/cli/commands/remote/workspace/create/) | Create a workspace in the project. | | [kbc remote workspace delete](/cli/commands/remote/workspace/delete/) | Delete a workspace in the project. | | [kbc remote workspace detail](/cli/commands/remote/workspace/detail/) | Print workspace details and credentials. | diff --git a/cli/commands/local/create/config/index.md b/cli/commands/local/create/config/index.md index 00737034..c0f0f853 100644 --- a/cli/commands/local/create/config/index.md +++ b/cli/commands/local/create/config/index.md @@ -68,4 +68,4 @@ Created new config "main/extractor/keboola.ex-db-mysql/invoices" - [All Commands](/cli/commands/) - [Create Configuration Row](/cli/commands/local/create/row/) -- [Create Branch](/cli/commands/remote/create/brabch/) +- [Create Branch](/cli/commands/remote/create/branch/) diff --git a/cli/commands/local/create/row/index.md b/cli/commands/local/create/row/index.md index e49ab498..0806d411 100644 --- a/cli/commands/local/create/row/index.md +++ b/cli/commands/local/create/row/index.md @@ -62,4 +62,4 @@ Created new config row "main/extractor/keboola.ex-db-mysql/invoices/rows/custome - [All Commands](/cli/commands/) - [Create Configuration](/cli/commands/local/create/config/) -- [Create Branch](/cli/commands/remote/create/brabch/) +- [Create Branch](/cli/commands/remote/create/branch/) diff --git a/cli/commands/remote/index.md b/cli/commands/remote/index.md index e6f259e1..490e0cbf 100644 --- a/cli/commands/remote/index.md +++ b/cli/commands/remote/index.md @@ -31,7 +31,7 @@ kbc remote [command] | [kbc remote table detail](/cli/commands/remote/table/detail/) | Print [table](https://help.keboola.com/storage/tables/) details. | | [kbc remote table import](/cli/commands/remote/table/import/) | Import data to a [table](https://help.keboola.com/storage/tables/) from a [file](https://help.keboola.com/storage/files/). | | [kbc remote table unload](/cli/commands/remote/table/unload/) | Unload a [table](https://help.keboola.com/storage/tables/) into a [file](https://help.keboola.com/storage/files/). | -| [kbc remote workspace](/cli/commands/remote/create/) | Manage workspaces in the project. | +| [kbc remote workspace](/cli/commands/remote/workspace/) | Manage workspaces in the project. | | [kbc remote workspace create](/cli/commands/remote/workspace/create/) | Create a workspace in the project. | | [kbc remote workspace delete](/cli/commands/remote/workspace/delete/) | Delete a workspace in the project. | | [kbc remote workspace detail](/cli/commands/remote/workspace/detail/) | Print workspace details and credentials. | diff --git a/cli/commands/sync/diff/index.md b/cli/commands/sync/diff/index.md index 9a771f0f..962c3a1f 100644 --- a/cli/commands/sync/diff/index.md +++ b/cli/commands/sync/diff/index.md @@ -28,7 +28,7 @@ kbc d [flags] ## Examples When you change a configuration option of one component (e.g., an output table for a sheet -in the [Google Drive extractor](/components/extractors/storage/google-drive/)), the output will look like this: +in the [Google Drive extractor](https://help.keboola.com/components/extractors/storage/google-drive/)), the output will look like this: ``` ➜ kbc diff diff --git a/cli/index.md b/cli/index.md index 8b440ba1..6f83197a 100644 --- a/cli/index.md +++ b/cli/index.md @@ -22,9 +22,9 @@ Keboola CLI can be used, for example, to: - Apply all changes back to the project in a moment. See the [push](/cli/commands/sync/push/) command. - Manage project history in a git repository. - Automate the whole process in a CI/CD pipeline. See [GitHub Integration](/cli/github-integration/). Use the `--skip-workflows` flag during initialization to avoid interactive prompts in automated environments. -- Merge and rebase Keboola Branches via Git. Learn more in the [Example Use Cases]() section. -- Distribute a single project definition into multiple projects. See the [Example Use Cases]() section. -- Multi-stage (and multi-project) environment management via Git. See the [Example Use Cases]() section. +- Merge and rebase Keboola Branches via Git. Learn more in the [Example Use Cases](/cli/devops-use-cases/) section. +- Distribute a single project definition into multiple projects. See the [Example Use Cases](/cli/devops-use-cases/) section. +- Multi-stage (and multi-project) environment management via Git. See the [Example Use Cases](/cli/devops-use-cases/) section. - Locally develop and test your dbt transformation code. ## Subsystems diff --git a/cli/structure/index.md b/cli/structure/index.md index 5ca86233..7cdf74e1 100644 --- a/cli/structure/index.md +++ b/cli/structure/index.md @@ -81,7 +81,7 @@ For example, transformations are represented by native files. A more detailed de ## Branches -The tool works with [development branches](/components/branches/) by default. You can specify which branches from the project +The tool works with [development branches](https://help.keboola.com/components/branches/) by default. You can specify which branches from the project you want to work with locally during the [init](/cli/commands/sync/init/) command. Alternatively, you can ignore the development branches concept and work exclusively with the main branch. However, note that all configurations will then be stored in the `main` directory. diff --git a/extend/common-interface/config-file.md b/extend/common-interface/config-file.md index 384f6320..1d0c6bc3 100644 --- a/extend/common-interface/config-file.md +++ b/extend/common-interface/config-file.md @@ -250,7 +250,7 @@ A sample configuration file might look like this: "source": "destination.csv", "destination": "out.c-main.test", "incremental": false, - "colummns": [], + "columns": [], "primary_key": [], "delete_where": [], "delimiter": ",", @@ -258,7 +258,7 @@ A sample configuration file might look like this: }, { "source": "write-alwayss.csv", - "destination": "out.c-main.output-even-on-error" + "destination": "out.c-main.output-even-on-error", "write_always": true } ], diff --git a/extend/common-interface/folders.md b/extend/common-interface/folders.md index 56d2dda2..d4cb0274 100644 --- a/extend/common-interface/folders.md +++ b/extend/common-interface/folders.md @@ -156,8 +156,7 @@ will contain only manifest files, extended with an additional *Note: this is a preview feature and may change considerably in the future.* -The component may also exchange data with Storage [using Workspaces](https://keboola.docs.apiary. -io/#reference/workspaces). +The component may also exchange data with Storage [using Workspaces](https://keboola.docs.apiary.io/#reference/workspaces). This mode of operation can be enabled by setting the **Staging storage input** or **Staging storage output** option to **Workspace Snowflake**, **Workspace Redshift**, or **Workspace Synapse**. A workspace is an isolated database to which data are loaded before the component job is run and unloaded when the job finishes. The workspace is created just before the job starts and is @@ -197,7 +196,7 @@ Notice that some of the values might be empty for different workspace backends ( They will be always present, though. When exchanging data via workspace, there are couple of differences to loading data into files: -- Loading to workspaces supports only [storage tables](/storage/tables/), [storage files](/storage/file-uploads/) +- Loading to workspaces supports only [storage tables](https://help.keboola.com/storage/tables/), [storage files](https://help.keboola.com/storage/files/) are always saved to the directory structure. - The `days` attribute is not supported for filtering table, use `changed_since` instead. - [Automatic Incremental Processing](https://help.keboola.com/storage/tables/#automatic-incremental-processing) (also known as Adaptive Input Mapping) is not supported. @@ -217,7 +216,7 @@ and unloaded from when the job finishes (when staging storage output is set). The workspace is created just before the job starts and is deleted when the job is terminated. If this option is enabled, the data and the manifests will be loaded to the azure storage blob container under the -data folder similarly to how it does when using the default [local filesystem](extend/common-interface/folders/#root-folder-data). +data folder similarly to how it does when using the default [local filesystem](/extend/common-interface/folders/#root-folder-data). ### Files Files are loaded into the workspace as `[file name]/[file ID]`. For example, if a file 'test.txt' with ID '12345' is in @@ -229,9 +228,9 @@ the input mapping then the file will appear in the storage blob container with U Synapse only exports tables as sliced files. So for example, if you set as table input mapping the table `in.c-main.my-input` as source and `my-input.csv` as destination then in the ABS workspace you will find it with the following structure: -- [containerName]/data/in/tables/my-inpupt.csv/[random identifier1].txt -- [containerName]/data/in/tables/my-inpupt.csv/[random identifier2].txt -- [containerName]/data/in/tables/my-inpupt.csv/[random identifier3].txt +- [containerName]/data/in/tables/my-input.csv/[random identifier1].txt +- [containerName]/data/in/tables/my-input.csv/[random identifier2].txt +- [containerName]/data/in/tables/my-input.csv/[random identifier3].txt ### Mappings @@ -239,7 +238,7 @@ To sum up, below is a sample storage configuration and where the files are writt | Direction | Source | Destination | | --- | --- | --- | -| input | in.c-main.my-table-from-abs-workspace | Many slices like `[abs-workspace-root]/data/in/tables/my-inpupt-table.csv/[random identifier].txt` | +| input | in.c-main.my-table-from-abs-workspace | Many slices like `[abs-workspace-root]/data/in/tables/my-input-table.csv/[random identifier].txt` | | input | file with tag `my-input-files` named `input-file.txt` | `[abs-workspace-root]/data/in/files/test.txt/12345` | | output | `[abs-workspace-root]/data/out/tables/my-output-table.csv` | out.c-main.my-table-from-abs-workspace | | output | `[abs-workspace-root]/data/out/files/my-file.txt` | file `my-file.txt` with tag `uploaded-from-abs-workspace` | diff --git a/extend/component/running/index.md b/extend/component/running/index.md index d32fc274..f9abb478 100644 --- a/extend/component/running/index.md +++ b/extend/component/running/index.md @@ -20,7 +20,7 @@ In this guide, we will use `/user/johndoe/data/` as the **host path** containing [data folder](/extend/common-interface/folders/). You can also run your component in your own environment. In that case, set the `KBC_DATADIR` environment -variable to point to the data folder. With this approach, you loose the advantage of the properly defined +variable to point to the data folder. With this approach, you lose the advantage of the properly defined environment, but in some cases, it may be a nice shortcut. For more details on how to develop a component, see the corresponding [tutorial](/extend/component/tutorial/), @@ -93,7 +93,7 @@ This means you can test your unreleased image on real configurations in real pro any users using that component. See the [tutorial](/extend/component/tutorial/debugging/#running-specific-tags) for instructions. -## Preparing Data folder +## Preparing the Data folder In order to run and debug a Keboola component (including [R](https://help.keboola.com/transformations/r/) and [Python](https://help.keboola.com/transformations/python/) Transformations) on your own computer, you need to manually supply the component with a [data folder and configuration file](/extend/common-interface/). The above mentioned @@ -199,7 +199,7 @@ the component locally. You should now be able to run the component with it: docker run --volume=/user/johndoe/data/:/data --memory=4000m --net=bridge -e KBC_RUNID=123456789 -e KBC_PROJECTID=123 -e KBC_DATADIR=/data/ -e KBC_CONFIGID=test-123 -i -t --entrypoint=/bin/bash quay.io/keboola/keboola-test.ex-docs-tutorial -## Running Component +## Running a Component If you want to run a component during development, it is the easiest to build it locally and [run the built version](/extend/component/tutorial/debugging/). If you want to run a production code component, you need to do a couple of things. Let's assume you want to run the `keboola-test.ex-docs-tutorial` component and you have diff --git a/extend/generic-extractor/configuration/api/pagination/index.md b/extend/generic-extractor/configuration/api/pagination/index.md index 628fedb8..b0ca112a 100644 --- a/extend/generic-extractor/configuration/api/pagination/index.md +++ b/extend/generic-extractor/configuration/api/pagination/index.md @@ -118,7 +118,7 @@ situations can arise: - Most common --- API returns an **empty page**; scrolling with [`pagenum`](/extend/generic-extractor/configuration/api/pagination/pagenum/) and -[`offset` methods](/extend/generic-extractor/configuration/api/pagination/pagenum/) will stop, and other methods will probably stop +[`offset` methods](/extend/generic-extractor/configuration/api/pagination/offset/) will stop, and other methods will probably stop too (depends on how empty the response is). - Less common --- API returns an **error** --- in this case a different stopping condition such as [`nextFlag`](#next-page-flag) or [`forceStop`](#force-stop) has to be used. diff --git a/extend/generic-extractor/configuration/config/index.md b/extend/generic-extractor/configuration/config/index.md index 8e348173..0dc0939d 100644 --- a/extend/generic-extractor/configuration/config/index.md +++ b/extend/generic-extractor/configuration/config/index.md @@ -61,7 +61,7 @@ the extractor is [published](/extend/generic-extractor/publish/) as a standalone [Default Bucket](/extend/common-interface/folders/#default-bucket) option. The following configuration will make Generic Extractor put all extracted tables in the `ge-tutorial` bucket -(the names of the tables are defined by the [`dataType`](/extend/generic-extractor/configuration/config/jobs/#dataType) setting): +(the names of the tables are defined by the [`dataType`](/extend/generic-extractor/configuration/config/jobs/#data-type) setting): {% highlight json %} { diff --git a/extend/generic-extractor/functions.md b/extend/generic-extractor/functions.md index 7ee2b762..afd94ae8 100644 --- a/extend/generic-extractor/functions.md +++ b/extend/generic-extractor/functions.md @@ -43,7 +43,7 @@ a configuration value in three possible ways: {% highlight json %} { ..., - "baseUrl": "http://example.com/ + "baseUrl": "http://example.com/" } {% endhighlight %} diff --git a/extend/generic-extractor/tutorial/basic.md b/extend/generic-extractor/tutorial/basic.md index 703be457..13544e80 100644 --- a/extend/generic-extractor/tutorial/basic.md +++ b/extend/generic-extractor/tutorial/basic.md @@ -15,7 +15,7 @@ have its documentation at hand. You also need the ## Configuration Generic Extractor configuration is written in [JSON format](/extend/generic-extractor/tutorial/json/) -and comprises [several sections](/extend/generic-extractor/configuration/#configuration-sections) (a +and comprises [several sections](/extend/generic-extractor/configuration/#json-configuration-sections) (a [configuration map](/extend/generic-extractor/map/) for navigation is available). A [user interface](/extend/generic-extractor/configuration/#user-interface) is available that can help you with the configuration @@ -192,7 +192,7 @@ The resulting JSON configuration will look like this: "authentication": { "type": "basic" } - } + }, "config": { "username": "dummy", "#password": "c40xxxxxxxxxxxxxxxxxxxxxxxxxxxxx-us13", diff --git a/extend/generic-writer/configuration/configuration.md b/extend/generic-writer/configuration/configuration.md index 456ca484..79cb33eb 100644 --- a/extend/generic-writer/configuration/configuration.md +++ b/extend/generic-writer/configuration/configuration.md @@ -40,7 +40,7 @@ The data can be sent in two ways: contexts, e.g. passwords. Supports dynamic functions. - [**request_parameters**](/extend/generic-writer/configuration/#request-parameters) --- [REQUIRED] HTTP parameters of the request - [**method**](/extend/generic-writer/configuration/#method) --- [REQUIRED] defines the HTTP method of the requests. - - [**endpoint_path**](/extend/generic-writer/configuration/#enpoint-path) --- [REQUIRED] relative path of the endpoint. + - [**endpoint_path**](/extend/generic-writer/configuration/#endpoint-path) --- [REQUIRED] relative path of the endpoint. - [**query_parameters**](/extend/generic-writer/configuration/#query-parameters) --- query parameters sent with each request - [**headers**](/extend/generic-writer/configuration/#headers) --- headers sent with each request diff --git a/extend/generic-writer/index.md b/extend/generic-writer/index.md index 6fb0d02c..2691d76a 100644 --- a/extend/generic-writer/index.md +++ b/extend/generic-writer/index.md @@ -35,7 +35,7 @@ Or sending data with different user parameters that are present in the input tab There are variety of use-cases for the generic writer. You may create, update or even delete objects via RESTful API or just trigger simple webhooks by sending GET requests to specified endpoints or send notifications to slack. The setup is quite straightforward and it -allows you to leverage secure [encripted parameters](overview/encryption/) and dynamic functions. +allows you to leverage secure [encrypted parameters](/overview/encryption/) and dynamic functions. **The typical use cases are:** diff --git a/integrate/jobs/index.md b/integrate/jobs/index.md index a1fd8ef5..0db8b14e 100644 --- a/integrate/jobs/index.md +++ b/integrate/jobs/index.md @@ -210,7 +210,7 @@ Jobs may be nested without limits. The parent-child relationship itself is a wea special outside of UI grouping and the function that terminating a parent job issues a termination request to all its children. Running a job as a child of another job does not by itself cause the parent to wait for child completion or any other added functionality. -Such functionality is implemented in specific components (e.g. Orchestrator) or for specific [job types](todo). +Such functionality is implemented in specific components (e.g. Orchestrator) or for specific [job types](/integrate/jobs/#job-type). ### Job Configuration To create a job, you must provide the [configuration](https://help.keboola.com/components/) to run. A configuration is always tied to a specific diff --git a/integrate/mcp.md b/integrate/mcp.md index 40ba3c13..68a8676f 100644 --- a/integrate/mcp.md +++ b/integrate/mcp.md @@ -98,7 +98,7 @@ The Keboola MCP Server supports several core concepts of the Model Context Proto ## Tool Authorization and Access Control -When connecting to the [Keboola MCP Server](/ai/mcp-server/) via the Streamable HTTP transport, you can control which tools are available to clients using HTTP headers. This is useful for restricting AI agent capabilities, enforcing compliance policies, or providing customer-specific access controls. +When connecting to the [Keboola MCP Server](https://help.keboola.com/ai/mcp-server/) via the Streamable HTTP transport, you can control which tools are available to clients using HTTP headers. This is useful for restricting AI agent capabilities, enforcing compliance policies, or providing customer-specific access controls.
Note: Tool authorization headers only apply to HTTP-based transports. They are not available when using the stdio transport for local execution. @@ -279,7 +279,7 @@ you can connect to Keboola's MCP Server by following these steps: At this moment, if you wish to control permissions more granularly, it is recommended to use the local deployment and specify your own Storage Token and Workspace Schema.
1. Obtain the remote server URL of the stack `https://mcp..keboola.com/mcp`. - - You can find the URL in your Keboola [project settings](/management/project/), e.g. navigate to `Users & Settings` > `MCP Server` + - You can find the URL in your Keboola [project settings](https://help.keboola.com/management/project/), e.g. navigate to `Users & Settings` > `MCP Server` - In there you can also find specific instructions for various clients. 2. Copy the server URL and paste it into your AI assistant's settings. 3. Once you save the settings and refresh your AI assistant, you will be prompted to authenticate with your Keboola account and select the project you want to connect to. diff --git a/integrate/variables/index.md b/integrate/variables/index.md index 1372217e..db7c2159 100644 --- a/integrate/variables/index.md +++ b/integrate/variables/index.md @@ -379,7 +379,7 @@ where you can verify that the variables were replaced. #### Option 2 -- Run a job with stored values -Similarly to the [default values](http://localhost:4000/integrate/variables/#step-2--create-default-values-for-variable), +Similarly to the [default values](/integrate/variables/#step-2--create-default-values-for-variables), you can store another set of values. Let's add another configuration row to the *existing* variable configuration: {% highlight json %} diff --git a/overview/index.md b/overview/index.md index 660fc32e..839dcb5d 100644 --- a/overview/index.md +++ b/overview/index.md @@ -59,7 +59,7 @@ Docker Components without their own schemas can use a generic [Docker Component Apart from the above common API, some components offer other API calls: - [Storage](/integrate/storage/) - - [Transformations](/integrate/transformations/) + - [Transformations](https://help.keboola.com/transformations/) ## Model Context Protocol Keboola supports the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), which allows AI agents and other AI assistants to interact with your Keboola projects. This enables you to leverage natural language to perform various operations within Keboola. From 665e496d890fb3c74580f21aa98d99329de650bb Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 10 Jul 2026 15:25:23 +0000 Subject: [PATCH 2/3] Fix twin singular anchor on variables default-values link (line 237) --- integrate/variables/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrate/variables/index.md b/integrate/variables/index.md index db7c2159..29f09fba 100644 --- a/integrate/variables/index.md +++ b/integrate/variables/index.md @@ -234,7 +234,7 @@ and [output](/extend/common-interface/config-file/#output-mapping--basic) mappin {% endhighlight %} The `variables_id` property contains the ID of the [variable configuration](/integrate/variables/#step-1--create-variables-configuration) - e.g., `807968875`. The -`variables_values_id` property is optional and contains the ID of the [row with default values](/integrate/variables/#step-2--create-default-values-for-variable) - e.g., `807952812`. +`variables_values_id` property is optional and contains the ID of the [row with default values](/integrate/variables/#step-2--create-default-values-for-variables) - e.g., `807952812`. The `parameters` section contains a script with the following Python code: {% highlight python %} From b991995fed2cb2f63cc98ef5b9439ed276d94d4f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 13 Jul 2026 09:09:44 +0000 Subject: [PATCH 3/3] Fix 'accross' typo in development-branches docs --- extend/common-interface/development-branches.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extend/common-interface/development-branches.md b/extend/common-interface/development-branches.md index 61d0d4c5..f7ba2457 100644 --- a/extend/common-interface/development-branches.md +++ b/extend/common-interface/development-branches.md @@ -18,7 +18,7 @@ components that modify external resources (e.g., database writers) and those tha ### Is a Component Executed in a Branch Context? -When the [Job Queue](/extend/job-queue/) executes a job in a branch, it sets the [`KBC_BRANCHID` environment variable](/extend/common-interface/environment/#environment-variables) to the current branch ID, which is unique accross the stack. +When the [Job Queue](/extend/job-queue/) executes a job in a branch, it sets the [`KBC_BRANCHID` environment variable](/extend/common-interface/environment/#environment-variables) to the current branch ID, which is unique across the stack. Typically, the fact that a component is executed in a branch is not very important to the component itself. It behaves the same way, and the Keboola job runner does all the heavy lifting.