CONNECT APP
Build with Incorta
Incorta is a governed data and AI platform that lets businesses analyze live, detailed data from operational systems without slow data cleanup steps.
Data Analytics
- API key
MCP
Give your agent Incorta tools
Every Incorta action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Incorta account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "incorta",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Execute SQL Query:
const result = await mcp.callTool({
name: "incorta-execute-sql-query",
arguments: {
sql: "SQL Query",
maxRows: 10,
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "incorta",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Execute SQL Query:
result = await session.call_tool("incorta-execute-sql-query", {
"sql": "SQL Query",
"maxRows": 10,
})SDK
Run Incorta actions from your backend
Connect a user's Incorta account once, then run Execute SQL Query on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "incorta-execute-sql-query",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
incorta: { authProvisionId: "apn_xxxxxxx" },
sql: "SQL Query",
maxRows: 10,
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="incorta-execute-sql-query",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"incorta": {"authProvisionId": "apn_xxxxxxx"},
"sql": "SQL Query",
"maxRows": 10,
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "incorta-execute-sql-query",
"configured_props": {
"incorta": { "authProvisionId": "apn_xxxxxxx" },
"sql": "SQL Query",
"maxRows": 10
}
}'TOOLS
Incorta actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Execute SQL Query
actionExecutes a custom Spark SQL query against an Incorta tenant via the Advanced SQL Interface (Advanced SQLi), which exposes the tenant's physical schemas and verified business views as Spark SQL tables. Use this for ad hoc reporting or data exploration. It is a read/query interface (not a general-purpose transactional database) — expectSELECTstatements with Spark SQL syntax: joins, aggregates,GROUP BY, window functions, and CTEs all work. Use List Schemas, List Tables, and List Columns first if you don't already know the available schema/table/column names, and reference tables asschema.table, e.g.pipedream_store.customer. Always include aLIMIT(and select only the columns you need) for exploratory queries: results are capped at Max Rows (default 500), and the response reportstruncated: truewhen more rows existed than were returned, so a truncated result is partial (the total row count is not known; run aCOUNT(*)if you need it). Narrow the query withLIMIT, filters, or aggregates rather than relying on the cap. To read the next page of a large result, either useLIMIT n OFFSET mwith a stableORDER BY, or keyset paging (ORDER BY <unique column>andWHERE <column> > <last value seen>withLIMIT), e.g.SELECT * FROM sales.orders WHERE order_id > 1000 ORDER BY order_id LIMIT 100; keyset paging is faster on large tables. Example:SELECT region, SUM(amount) AS total_sales FROM sales.sales_fact GROUP BY region ORDER BY total_sales DESC LIMIT 50returns{rows: [{region, total_sales}, ...], rowCount, truncated: false}, one row per region. Authenticates with the connected Incorta account's username and personal access token (PAT), so no separate SQL password is needed, and discovers the cluster's Advanced SQLi connection settings automatically from the account's base URL; the tenant must have Advanced SQLi enabled (not available on Azure deployments). The first query after a quiet period can take several seconds while the connection initializes. See the documentationWritev1.0.0 -
List Columns
actionLists the columns (name, label, data type, function) of a specific table or view in an Incorta tenant, via the REST API. Requires Schema Name and Table Name — use List Schemas then List Tables first if you don't already know them. Use the returned column names when writing aSELECTlist orWHEREclause in Execute SQL Query. Example: calling with Schema Namepipedream_storeand Table Namecustomerreturns entries like{name: "CustomerID", dataType: "integer", function: "key"}. See the documentationRead-onlyv0.0.2 -
List Schemas
actionLists the schemas (logical groupings of tables/views) defined in the connected Incorta tenant, via the REST API's List Schemas endpoint. This is the starting point for exploring an Incorta tenant's data model — use the returned schema names with List Tables to see the tables/views inside a schema, then List Columns for column-level detail. Example: returns entries like{schemaName: "pipedream_store", schemaType: "PHYSICAL", owner: "...", isEmpty: false}and{schemaName: "Revenue", schemaType: "BUSINESS", ...}. See the documentationRead-onlyv0.0.2 -
List Tables
actionLists the tables and views ("schema objects") in an Incorta tenant, via the REST API. Provide Schema Name to scope the results to one schema (use List Schemas to find valid names); omit it to list tables across every schema in the tenant. Use the returned table names as theFROMtarget in Execute SQL Query, and pass a table name to List Columns to see its column definitions. Use Limit and Offset to page through large result sets: the response includestotal(tables matched before paging),hasMore, andnextOffset(pass it as Offset to get the next page). IfhasMoreis true the list is truncated, so keep paging or narrow with Schema Name. Example: calling with Schema Namepipedream_storereturns{tables: [{schemaName: "pipedream_store", tableName: "customer", type: "table"}], errors: [], total: 1, hasMore: false}. When listing across all schemas, schemas that could not be read are reported inerrors({schemaName, error}) and the list is then incomplete. See the documentationRead-onlyv0.0.2
EVENTS
Incorta triggers
Event sources your backend can deploy for users and receive through a webhook.
No Incorta triggers are available yet.
- App slug
- incorta
- Authentication
- API key
- Categories
- Data Analytics
- Actions
- 4
- Triggers
- 0
- API proxy
- Not available