CONNECT APP
Build with Crove
Crove.app helps you to automate your repetitive business documents. With Crove you can create your repetitive business documents as intelligent templates that use variables and logical conditions.
File Storage
- API key
MCP
Give your agent Crove tools
Every Crove 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 Crove 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": "crove_app",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Complete Document:
const result = await mcp.callTool({
name: "crove_app-complete-document",
arguments: {
document_id: "Document ID",
},
})# 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": "crove_app",
}
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 Complete Document:
result = await session.call_tool("crove_app-complete-document", {
"document_id": "Document ID",
})API PROXY
Call the Crove API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Crove API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://v2.api.crove.app/api/integrations/external/templates/",
})
// Any allowed Crove endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://v2.api.crove.app/api/integrations/external/templates/
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly92Mi5hcGkuY3JvdmUuYXBwL2FwaS9pbnRlZ3JhdGlvbnMvZXh0ZXJuYWwvdGVtcGxhdGVzLw?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Crove actions from your backend
Connect a user's Crove account once, then run Complete Document 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: "crove_app-complete-document",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
crove_app: { authProvisionId: "apn_xxxxxxx" },
document_id: "Document ID",
},
})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="crove_app-complete-document",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"crove_app": {"authProvisionId": "apn_xxxxxxx"},
"document_id": "Document ID",
},
)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": "crove_app-complete-document",
"configured_props": {
"crove_app": { "authProvisionId": "apn_xxxxxxx" },
"document_id": "Document ID"
}
}'TOOLS
Crove actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Complete Document
actionMark the document as completedWritev1.0.3 -
Create Document
actionCreate a new document.Writev1.0.3 -
Create Invitation Link
actionCreate invitation link to fill or sign the document.Writev1.0.3 -
Generate Document PDF From Template
actionGenerate PDF of a document created from the templateWritev2.0.3 -
Generate PDF from Document
actionGenerate PDF of a document and return PDF URL.Writev1.0.3 -
Get Document Details
actionGet details of a document. Example: Name, Current Status, etc.Read-onlyv1.0.3 -
List Document ID Options
actionRetrieves available options for the Document ID field.Read-onlyv0.0.1 -
List Template Options
actionRetrieves available options for the Template field.Read-onlyv0.0.1 -
Send Document
actionSend email invitation link to fill & sign the document.Writev0.0.5 -
Submit Document
actionSubmit the document like you do it via Crove form.Writev1.0.3 -
Update Document
actionUpdate values of variables of a document.Writev1.0.3 -
Update Document Details
actionUpdate details of a document. Example: Name, Current Status, etc.Writev1.0.3
- App slug
- crove_app
- Authentication
- API key
- Categories
- File Storage
- Actions
- 12
- Triggers
- 3
- API proxy
- Available