MULTI-APP TOOLKIT
Build with Search API + Tricentis qTest
- Multi-app
- One MCP session
- 17 actions
- 0 triggers
- Managed auth
MCP
One MCP session, both toolsets
One session gives your product or agent every Search API and Tricentis qTest tool at once — connect once, list tools, and call them like any single-app session.
// 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": "search_api,tricentis_qtest",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// One list, both toolsets: Search API and Tricentis qTest tools arrive
// together, each keyed by its own app's slug.
// e.g. run Google Images API:
const result = await mcp.callTool({
name: "search_api-google-images",
arguments: {
q: "Query",
size: "Size",
},
})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 externalUserId = "{external_user_id}" // any stable ID for this user in your system
const [searchApiTools, tricentisQtestTools] =
await Promise.all([
pd.components.list({ app: "search_api" }),
pd.components.list({ app: "tricentis_qtest" }),
])
// One external user owns both connected accounts, so either app's tools
// run on their behalf with the same externalUserId.curl "https://api.pipedream.com/v1/connect/{project_id}/components?app=search_api" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}"
curl "https://api.pipedream.com/v1/connect/{project_id}/components?app=tricentis_qtest" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}"
# Connect both accounts to the same external_user_id, then
# configure and invoke either app's tools on that user's behalf.ARCHITECTURE
One user, two connected accounts
Your user connects each account once, under whatever ID they already have in your product. The two stay independent — either can be revoked on its own — and your code reaches both through that one user.
Your product
external_user_id
{external_user_id}Pipedream Connect
Managed identity
Auth · tools · routing
Search API
Connected account
Tricentis qTest
Connected account
TOOLS
Search API tools
The Search API tools this pairing puts in reach, each one running on your user's own connected account.
Actions
-
Google Images API
actionRun a Google Images search. Returns animagesarray; thumbnails are inlined, so keepnumsmall to limit the response size. See the documentationRead-onlyv0.0.4 -
Google Jobs API
actionSearch real-time Google Jobs listings. Returns ajobsarray. Each page returns about 10 jobs; pass a previous run'spagination.next_page_tokenas Next Page Token for more. See the documentationRead-onlyv0.0.2 -
Google Search API
actionRun a Google web search. Returnsorganic_resultsalongside whichever other blocks Google included for the query See the documentationRead-onlyv0.0.4 -
Google Trends API
actionGet Google Trends data for one or more terms; compare terms by passing them comma-separated inq, e.g.HubSpot,Salesforce.dataTypedecides the block returned:TIMESERIESgivesinterest_over_time,GEO_MAPgivesinterest_by_region,RELATED_QUERIESgivesrelated_queries,RELATED_TOPICSgivesrelated_topics. Values are relative popularity indices (0-100), not search volumes. See the documentationRead-onlyv0.0.4 -
List Locations
actionList the Google locations supported for geo-targeting. See the documentationRead-onlyv0.0.2
Triggers
No Search API triggers are available yet.
TOOLS
Tricentis qTest tools
The Tricentis qTest tools this pairing puts in reach, each one running on your user's own connected account.
Actions top 8 of 12
-
Create Requirement
actionCreate a new requirement under a parent module in a qTest project. Use List Project ID Options for the project ID, List Modules for the parent module ID, and List Requirement Fields to discover field IDs for the Properties parameter. Example:projectId: 1, parentId: "10", requirementName: "User can reset password", properties: "[{\"field_id\": 3, \"field_value\": \"1\"}]"→ returns{id: 103, name: "User can reset password", ...}. See the documentationWritev1.0.0 -
Get Defect
actionGet full details of a specific defect by ID. Use List Defects to find the defect ID and List Defect Fields to interpret field IDs in the response. Example:projectId: 1, defectId: "201"→ returns{id: 201, properties: [{field_id: 1, field_value: "Login crash"}, {field_id: 2, field_value: "New"}]}. See the documentationRead-onlyv0.0.3 -
Get Requirement
actionGet full details of a specific requirement by ID. Use List Requirements to find the requirement ID. Example:projectId: 1, requirementId: "101"→ returns{id: 101, name: "User can log in", properties: [{field_id: 3, field_value: "High"}]}. See the documentationRead-onlyv0.0.3 -
List Defect Fields
actionList all available fields for defects in a qTest project, including field IDs, types, and allowed values. Use this to discover field IDs before submitting or updating defects. Passfields(e.g.["id", "label", "required"]) to keep only those attributes per field — some fields'allowed_valueslists are long, so omitting them when you only need the field ID/label keeps the response small. Example:projectId: 1→ returns[{id: 1, label: "Summary", attribute_type: "String", required: true}, {id: 2, label: "Status", attribute_type: "String", allowed_values: [{label: "New", value: "1"}], required: true}]. See the documentationRead-onlyv0.0.1 -
List Defects
actionList defects in a qTest project updated after a given start time. Use this to find defect IDs to use when getting or updating a specific defect. If the response contains a full page of results, increment the Page parameter and call again for more. Defaults to defects updated in the last 30 days, and includes only theSummaryproperty per defect to keep the response small — projects with long-running defect logs can return large payloads otherwise, since some properties (like Description) may contain lengthy text. Passfields(e.g.["Summary", "Status"]) to include different or additional named properties instead. Use Get Defect for a defect's full property set. Example:projectId: 1, startTime: "2026-09-01T00:00:00Z"→ returns[{id: 201, properties: [{field_id: 1, field_value: "Login crash"}]}, ...]. See the documentationRead-onlyv0.0.1 -
List Modules
actionList all modules in a qTest project, including nested submodules. Use List Project ID Options for the project ID. Use this to find module IDs to use as the Parent ID in Create Requirement. Example:projectId: 1→ returns[{id: 10, name: "Authentication"}, {id: 11, name: "Checkout"}]. See the documentationRead-onlyv0.0.1 -
List Project ID Options
actionList all qTest projects accessible to the connected account. Use this to find the Project ID required by all other actions. Example: returns[{label: "Acme QA", value: 1}, {label: "Frontend Suite", value: 2}]. See the documentation.Read-onlyv0.0.2 -
List Requirement Fields
actionList all available fields for requirements in a qTest project, including field IDs, types, and allowed values. Use this to discover field IDs before creating or updating requirements. Passfields(e.g.["id", "label", "required"]) to keep only those attributes per field — some fields'allowed_valueslists are long, so omitting them when you only need the field ID/label keeps the response small. Example:projectId: 1→ returns[{id: 3, label: "Priority", attribute_type: "String", allowed_values: [{label: "High", value: "1"}, {label: "Medium", value: "2"}], required: false}]. See the documentationRead-onlyv0.0.1
Triggers
No Tricentis qTest triggers are available yet.
MULTI-APP
Works with more apps
The combinations customers connect alongside these two — nothing here is limited to a pair.
REFERENCE
Toolkit details
- x-pd-app-slug
- search_api,tricentis_qtest
- Primary app
- Search API (search_api)
- Second app
- Tricentis qTest (tricentis_qtest)
- Authentication
- API key + OAuth
- Available actions
- 17
- Available triggers
- 0