Zoho Books ACTION
Create Estimate
Creates a new estimate. See the documentation
- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Zoho Books account once, then configure and run Create Estimate from your backend or agent.
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: "zoho_books-create-estimate",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
zoho_books: { authProvisionId: "apn_xxxxxxx" },
customerId: "Customer Id",
currencyId: "Currency Id",
},
})
console.log(result)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": "zoho_books-create-estimate",
"configured_props": {
"zoho_books": { "authProvisionId": "apn_xxxxxxx" },
"customerId": "Customer Id",
"currencyId": "Currency Id"
}
}'// 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": "zoho_books",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "zoho_books-create-estimate",
arguments: {
customerId: "Customer Id",
currencyId: "Currency Id",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
customerId Customer Id | string | Customer ID of the customer involved in the payment. Required Dynamic |
currencyId Currency Id | string | The id of the customer. Optional Dynamic |
contactPersons Contact Persons | string[] | Array if contact person(S) for whom estimate has to be sent. Optional Dynamic |
templateId Template Id | string | ID of the PDF template. Optional |
placeOfSupply Place Of Supply | string | Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken). Optional |
gstTreatment GST Treatment | string | Choose whether the contact is GST registered/unregistered/consumer/overseas. Optional |
gstNo GST No | string | 15 digit GST identification number of the customer. Optional |
estimateNumber Estimate Number | string | Search estimates by estimate number. Optional |
referenceNumber Reference Number | string | Search estimates by reference number. Optional |
date Date | string | Search estimates by estimate date. Optional |
expiryDate Expiry Date | string | The date of expiration of the estimates. Optional |
exchangeRate Exchange Rate | string | Exchange rate of the currency. Optional |
discount Discount | string | Discount applied to the invoice. It can be either in % or in amount. e.g. 12.5% or 190. Max-length [100] Optional |
isDiscountBeforeTax Is Discount Before Tax | boolean | Used to specify how the discount has to applied. Either before or after the calculation of tax. Optional |
discountType Discount Type | string | How the discount is specified. Allowed values are entity_level or item_level. Optional |
isInclusiveTax Is Inclusive Tax | boolean | Used to specify whether the line item rates are inclusive or exclusive of tax. Optional |
customBody Custom Body | string | Optional |
customSubject Custom Subject | string | Optional |
salespersonName Salesperson Name | string | Name of the sales person. Optional |
customFields Custom Fields | string[] | A list of Additional field objects for the payments. Example: {"index": 1, "value": "value"} Optional |
lineItems Line Items | string[] | A list of line items objects of an estimate. Example: {"item_id": "1352827000000156060", "name": "name", "description": "description", "quantity": "1" } See the documentation for further details. Required |
notes Notes | string | The notes added below expressing gratitude or for conveying some information. Optional |
terms Terms | string | The terms added below expressing gratitude or for conveying some information. Optional |
shippingCharge Shipping Charge | string | Shipping charges applied to the invoice. Optional |
adjustment Adjustment | string | Optional |
adjustmentDescription Adjustment Description | string | Optional |
taxId Tax Id | string | ID of the tax to be associated to the estimate. Optional Dynamic |
taxExemptionId Tax Exemption Id | string | ID of the tax exemption. Optional Dynamic |
taxAuthorityId Tax Authority Id | string | ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority. Optional Dynamic |
avataxUseCode Avatax Use Code | string | Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Optional |
avataxExemptNo Tax Exemption Id | string | ID of the tax exemption. Optional Dynamic |
vatTreatment VAT Treatment | string | Enter vat treatment. Optional |
taxTreatment Tax Treatment | string | VAT treatment for the estimate. Optional |
isReverseChargeApplied Is Reverse Charge Applied. | boolean | Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not. Optional |
itemId Item Id | string | ID of the item to get details. Optional Dynamic |
lineItemId Line Item Id | string | ID of the line item. Mandatory, if the existing line item has to be updated. If empty, a new line item will be created. Optional |
name Name | string | Name of the line item. Optional |
description Description | string | Description of the line item. Optional |
rate Rate | string | Rate of the line item. Optional |
unit Unit | string | Unit of the line item. E.g. kgs, Nos Optional |
quantity Quantity | integer | The quantity of line item. Optional |
projectId Project Id | string | Id of the project Optional |
acceptRetainer Accept Retainer | boolean | The "Accept Retainer" node should be passed for the retainer invoice to be created automatically, provided that the customer has accepted the quote. Optional |
retainerPercentage Retainer Percentage | integer | Pass the "Retainer Percentage" node to create the retainer invoice automatically. Optional |
send Send | boolean | Send the estimate to the contact person(s) associated with the estimate. Optional |
ignoreAutoNumberGeneration Ignore Auto Number Generation | boolean | Ignore auto estimate number generation for this estimate. This mandates the estimate number. Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- zoho_books-create-estimate
- Version
- 0.0.2
- App
- Zoho Books
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗