diff --git a/.github/workflows/generate-toolkit-docs.yml b/.github/workflows/generate-toolkit-docs.yml index 185d89286..41eb046ad 100644 --- a/.github/workflows/generate-toolkit-docs.yml +++ b/.github/workflows/generate-toolkit-docs.yml @@ -10,6 +10,9 @@ on: repository_dispatch: types: [porter_deploy_succeeded] workflow_dispatch: + # 11:00 UTC = 3 AM PST / 4 AM PDT — late enough that DST drift doesn't matter. + schedule: + - cron: "0 11 * * *" permissions: contents: write @@ -27,8 +30,6 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 - with: - version: 9 - name: Setup Node.js uses: actions/setup-node@v4 @@ -45,11 +46,14 @@ jobs: - name: Generate toolkit docs run: | - pnpm start generate \ + pnpm dlx tsx src/cli/index.ts generate \ --all \ --skip-unchanged \ - --engine-api-url "$ENGINE_API_URL" \ - --engine-api-key "$ENGINE_API_KEY" \ + --require-complete \ + --verbose \ + --api-source tool-metadata \ + --tool-metadata-url "$ENGINE_API_URL" \ + --tool-metadata-key "$ENGINE_API_KEY" \ --llm-provider openai \ --llm-model "$OPENAI_MODEL" \ --llm-api-key "$OPENAI_API_KEY" \ @@ -62,7 +66,7 @@ jobs: OPENAI_MODEL: ${{ secrets.OPENAI_MODEL || 'gpt-4o-mini' }} - name: Sync toolkit sidebar navigation - run: pnpm dlx tsx toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts --prune --verbose + run: pnpm dlx tsx toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts --remove-empty-sections=false --verbose - name: Check for changes id: check-changes @@ -76,10 +80,12 @@ jobs: - name: Create pull request if: steps.check-changes.outputs.has_changes == 'true' uses: peter-evans/create-pull-request@v7 + env: + HUSKY: 0 with: token: ${{ secrets.GITHUB_TOKEN }} - commit-message: "chore: update toolkit docs after Porter deploy" - title: "Update toolkit docs after Porter deploy" + commit-message: "[AUTO] Adding MCP Servers docs update" + title: "[AUTO] Adding MCP Servers docs update" body: | This PR was generated after a Porter deploy succeeded. diff --git a/.gitignore b/.gitignore index 3e4c055ee..5814a04cb 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ styles/write-good/ # Toolkit overview input files toolkit-docs-generator/overview-input/ +toolkit-docs-generator-verification/logs/ # Generated toolkit markdown (built at build time, not committed) public/toolkit-markdown/ diff --git a/.husky/pre-commit b/.husky/pre-commit index 76674e5f5..4ffa0437b 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -132,7 +132,7 @@ if git diff --cached --name-only | grep -q "next.config.ts"; then fi # --- Lint Staged (formatting) --- -pnpm dlx lint-staged +pnpm exec lint-staged # --- Stash + Format --- # Skip this block during merge/rebase: git stash --keep-index destroys @@ -150,17 +150,43 @@ STAGED_HASH=$(git diff --cached | sha256sum | cut -d' ' -f1) STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACMR) PARTIALLY_STAGED=$(git diff --name-only) +# If a file is both staged and unstaged, stash/pop can produce conflicts. +# In that case rely on lint-staged only, which already ran above. +if [ -n "$PARTIALLY_STAGED" ] && [ -n "$STAGED_FILES" ]; then + for file in $PARTIALLY_STAGED; do + if [ -f "$file" ] && echo "$STAGED_FILES" | grep -qxF "$file"; then + echo "⏭️ Skipping stash+format (partially staged files detected)" + exit 0 + fi + done +fi + # Stash unstaged changes to preserve working directory # --keep-index keeps staged changes in working tree -git stash push --quiet --keep-index --message "pre-commit-stash" || true -STASHED=$? +STASH_CREATED=false +STASH_MESSAGE="pre-commit-stash-$$-$(date +%s)" +if ! git diff --quiet; then + git stash push --quiet --keep-index --message "$STASH_MESSAGE" + TOP_STASH_SUBJECT="$(git stash list -1 --format='%s' || true)" + case "$TOP_STASH_SUBJECT" in + *"$STASH_MESSAGE") + STASH_CREATED=true + ;; + esac +fi # Run formatter on the staged files -pnpm dlx ultracite fix -FORMAT_EXIT_CODE=$? +if [ -n "$STAGED_FILES" ]; then + for file in $STAGED_FILES; do + if [ -f "$file" ]; then + pnpm exec ultracite fix "$file" + fi + done +fi +FORMAT_EXIT_CODE=0 # Restore working directory state -if [ $STASHED -eq 0 ]; then +if [ "$STASH_CREATED" = true ]; then # Re-stage the formatted files if [ -n "$STAGED_FILES" ]; then echo "$STAGED_FILES" | while IFS= read -r file; do @@ -171,17 +197,10 @@ if [ $STASHED -eq 0 ]; then fi # Restore unstaged changes - git stash pop --quiet || true - - # Restore partial staging if files were partially staged - if [ -n "$PARTIALLY_STAGED" ]; then - for file in $PARTIALLY_STAGED; do - if [ -f "$file" ] && echo "$STAGED_FILES" | grep -q "^$file$"; then - # File was partially staged - need to unstage the unstaged parts - git restore --staged "$file" 2>/dev/null || true - git add -p "$file" < /dev/null 2>/dev/null || git add "$file" - fi - done + if ! git stash pop --quiet; then + echo "❌ Failed to restore stashed changes during pre-commit." + echo " Resolve conflicts, then re-stage files and commit again." + exit 1 fi else # No stash was created, just re-add the formatted files diff --git a/app/_components/toolkit-docs/components/toolkit-page.tsx b/app/_components/toolkit-docs/components/toolkit-page.tsx index 6c1d9abe3..a9e969019 100644 --- a/app/_components/toolkit-docs/components/toolkit-page.tsx +++ b/app/_components/toolkit-docs/components/toolkit-page.tsx @@ -583,6 +583,15 @@ export function ToolkitPage({ data }: ToolkitPageProps) {

{data.label}

+ - { + if (typeof value !== "object" || value === null || Array.isArray(value)) { + return false; + } + const entry = value as Record; + return typeof entry.id === "string"; +}; + +const loadDesignSystemToolkits = async (): Promise => { + if (cachedDesignSystemToolkits) { + return cachedDesignSystemToolkits; + } + + try { + const designSystemEntry = require.resolve("@arcadeai/design-system"); + const designSystem = (await import( + pathToFileURL(designSystemEntry).href + )) as { + TOOLKITS?: unknown; + }; + const toolkits = Array.isArray(designSystem.TOOLKITS) + ? designSystem.TOOLKITS + : []; + + cachedDesignSystemToolkits = toolkits.flatMap((toolkit) => + isToolkitCatalogEntry(toolkit) ? [toolkit] : [] + ); + } catch { + cachedDesignSystemToolkits = []; + } + + return cachedDesignSystemToolkits; +}; + function normalizeCategory( value: string | null | undefined ): IntegrationCategory { @@ -98,18 +138,6 @@ const listToolkitRoutesFromDataDir = async (options?: { return [...unique.values()]; }; -const shouldReadToolkitData = (entry?: ToolkitCatalogEntry): boolean => { - if (!entry) { - return true; - } - - // Read toolkit data if we need a docsLink or hidden flag. - return ( - typeof entry.docsLink === "undefined" || - typeof entry.isHidden === "undefined" - ); -}; - const resolveToolkitRoute = async ( toolkit: { id: string; category?: string }, catalogByNormalizedId: Map, @@ -117,23 +145,28 @@ const resolveToolkitRoute = async ( ): Promise => { const normalizedId = normalizeToolkitId(toolkit.id); const catalogEntry = catalogByNormalizedId.get(normalizedId); - const data = shouldReadToolkitData(catalogEntry) - ? await readToolkitData(toolkit.id, dataDir ? { dataDir } : undefined) - : null; + // Always read the JSON file — it is the source of truth for category, docsLink, + // and isHidden. The design system catalog is only used as a fallback for + // visibility when the JSON file is absent. + const data = await readToolkitData( + toolkit.id, + dataDir ? { dataDir } : undefined + ); - const isHidden = catalogEntry?.isHidden ?? data?.metadata?.isHidden ?? false; + const isHidden = data?.metadata?.isHidden ?? catalogEntry?.isHidden ?? false; if (isHidden) { return null; } const slug = getToolkitSlug({ - id: catalogEntry?.id ?? toolkit.id, - docsLink: catalogEntry?.docsLink ?? data?.metadata?.docsLink, + id: toolkit.id, + docsLink: data?.metadata?.docsLink ?? catalogEntry?.docsLink, }); - // Prefer the full JSON data file's category over the index.json summary, - // because the index may have stale/incorrect categories. + // JSON file is the source of truth for category. The generator is responsible + // for writing the correct value; the design system catalog and index.json are + // only used as a last resort when the JSON is missing. const category = normalizeCategory( - catalogEntry?.category ?? data?.metadata?.category ?? toolkit.category + data?.metadata?.category ?? catalogEntry?.category ?? toolkit.category ); return { toolkitId: slug, category }; }; @@ -150,7 +183,8 @@ export async function listToolkitRoutes(options?: { return await listToolkitRoutesFromDataDir(options); } - const toolkitsCatalog = options?.toolkitsCatalog ?? DESIGN_SYSTEM_TOOLKITS; + const toolkitsCatalog = + options?.toolkitsCatalog ?? (await loadDesignSystemToolkits()); const catalogByNormalizedId = new Map( toolkitsCatalog.map((toolkit) => [normalizeToolkitId(toolkit.id), toolkit]) ); diff --git a/app/en/resources/integrations/_meta.tsx b/app/en/resources/integrations/_meta.tsx index 32201d550..1cf921397 100644 --- a/app/en/resources/integrations/_meta.tsx +++ b/app/en/resources/integrations/_meta.tsx @@ -36,6 +36,9 @@ const meta: MetaRecord = { sales: { title: "Sales", }, + databases: { + title: "Databases", + }, "customer-support": { title: "Customer Support", }, diff --git a/app/en/resources/integrations/databases/_meta.tsx b/app/en/resources/integrations/databases/_meta.tsx new file mode 100644 index 000000000..d0b9a9cc9 --- /dev/null +++ b/app/en/resources/integrations/databases/_meta.tsx @@ -0,0 +1,10 @@ +import type { MetaRecord } from "nextra"; + +const meta: MetaRecord = { + "weaviate-api": { + title: "Weaviate API", + href: "/en/resources/integrations/databases/weaviate-api", + }, +}; + +export default meta; diff --git a/app/en/resources/integrations/development/_meta.tsx b/app/en/resources/integrations/development/_meta.tsx index 8722736fb..70a1a6050 100644 --- a/app/en/resources/integrations/development/_meta.tsx +++ b/app/en/resources/integrations/development/_meta.tsx @@ -101,10 +101,6 @@ const meta: MetaRecord = { title: "Vercel API", href: "/en/resources/integrations/development/vercel-api", }, - "weaviate-api": { - title: "Weaviate API", - href: "/en/resources/integrations/development/weaviate-api", - }, }; export default meta; diff --git a/app/en/resources/integrations/productivity/_meta.tsx b/app/en/resources/integrations/productivity/_meta.tsx index 6b2703b13..5e0d3a0e7 100644 --- a/app/en/resources/integrations/productivity/_meta.tsx +++ b/app/en/resources/integrations/productivity/_meta.tsx @@ -57,10 +57,22 @@ const meta: MetaRecord = { title: "Linear", href: "/en/resources/integrations/productivity/linear", }, + "microsoft-onedrive": { + title: "Microsoft OneDrive", + href: "/en/resources/integrations/productivity/microsoft-onedrive", + }, + "microsoft-powerpoint": { + title: "Microsoft PowerPoint", + href: "/en/resources/integrations/productivity/microsoft-powerpoint", + }, sharepoint: { title: "Microsoft SharePoint", href: "/en/resources/integrations/productivity/sharepoint", }, + "microsoft-word": { + title: "Microsoft Word", + href: "/en/resources/integrations/productivity/microsoft-word", + }, "outlook-calendar": { title: "Outlook Calendar", href: "/en/resources/integrations/productivity/outlook-calendar", diff --git a/biome.jsonc b/biome.jsonc index 7ba3126d8..46f808c2a 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -132,6 +132,7 @@ "!build", "!node_modules", "!public", + "!toolkit-docs-generator/data/toolkits", "!scripts", "!agents", "!.vscode", diff --git a/next-env.d.ts b/next-env.d.ts index c4b7818fb..9edff1c7c 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/package.json b/package.json index 538702cad..6a056f0b9 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "dev": "next dev --webpack", "build": "pnpm run toolkit-markdown && next build --webpack && pnpm run custompagefind", "start": "next start", - "lint": "pnpm dlx ultracite check", - "format": "pnpm dlx ultracite fix", + "lint": "pnpm exec ultracite check", + "format": "pnpm exec ultracite fix", "prepare": "husky install", "toolkit-markdown": "pnpm dlx tsx toolkit-docs-generator/scripts/generate-toolkit-markdown.ts", "postbuild": "if [ \"$SKIP_POSTBUILD\" != \"true\" ]; then pnpm run generate:markdown && pnpm run custompagefind; fi", @@ -112,7 +112,7 @@ }, "lint-staged": { "!(examples)/**/*.{js,jsx,ts,tsx,json,jsonc,css,scss,md,mdx}": [ - "pnpm dlx ultracite fix " + "pnpm exec ultracite fix" ] }, "packageManager": "pnpm@10.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1615a6836..52e0b4156 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2164,21 +2164,12 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tanstack/react-virtual@3.13.13': - resolution: {integrity: sha512-4o6oPMDvQv+9gMi8rE6gWmsOjtUZUYIJHv7EB+GblyYdi8U6OqLl8rhHWIUZSL1dUU2dPwTdTgybCKf9EjIrQg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/react-virtual@3.13.18': resolution: {integrity: sha512-dZkhyfahpvlaV0rIKnvQiVoWPyURppl6w4m9IwMDpuIjcJ1sD9YGWrt0wISvgU7ewACXx2Ct46WPgI6qAD4v6A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/virtual-core@3.13.13': - resolution: {integrity: sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==} - '@tanstack/virtual-core@3.13.18': resolution: {integrity: sha512-Mx86Hqu1k39icq2Zusq+Ey2J6dDWTjDvEv43PJtRCoEYTLyfaPnxIQ6iy7YAOK0NV/qOEmZQ/uCufrppZxTgcg==} @@ -5212,7 +5203,7 @@ snapshots: '@floating-ui/react': 0.26.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@tanstack/react-virtual': 3.13.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tanstack/react-virtual': 3.13.18(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) use-sync-external-store: 1.6.0(react@19.2.3) @@ -7110,20 +7101,12 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.1.16 - '@tanstack/react-virtual@3.13.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': - dependencies: - '@tanstack/virtual-core': 3.13.13 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - '@tanstack/react-virtual@3.13.18(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@tanstack/virtual-core': 3.13.18 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - '@tanstack/virtual-core@3.13.13': {} - '@tanstack/virtual-core@3.13.18': {} '@theguild/remark-mermaid@0.3.0(react@19.2.3)': diff --git a/tests/external-url-check.test.ts b/tests/external-url-check.test.ts index 44c2e4ec6..635ed75e3 100644 --- a/tests/external-url-check.test.ts +++ b/tests/external-url-check.test.ts @@ -5,6 +5,19 @@ import { expect, test } from "vitest"; const TIMEOUT = 120_000; const CONCURRENCY = 10; const REQUEST_TIMEOUT = 8000; +const RETRY_ATTEMPTS = 2; +const RETRY_DELAY_MS = 400; +const TRANSIENT_ERROR_PATTERNS: readonly RegExp[] = [ + /aborted/i, + /timeout/i, + /timed out/i, + /network/i, + /fetch failed/i, + /socket hang up/i, + /econnreset/i, + /eai_again/i, + /enotfound/i, +]; const SKIP_PATTERNS: RegExp[] = [ // Placeholder / example domains @@ -67,44 +80,68 @@ function extractExternalUrls(content: string): string[] { return urls; } -async function checkUrl( - url: string -): Promise<{ ok: boolean; status?: number; error?: string }> { +function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +function isTransientError(message: string | undefined): boolean { + if (!message) { + return false; + } + + return TRANSIENT_ERROR_PATTERNS.some((pattern) => pattern.test(message)); +} + +async function fetchWithTimeout( + url: string, + method: "HEAD" | "GET" +): Promise { const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), REQUEST_TIMEOUT); - try { - let res = await fetch(url, { - method: "HEAD", + return await fetch(url, { + method, signal: controller.signal, redirect: "follow", }); + } finally { + clearTimeout(timer); + } +} - if (res.status === 405 || res.status === 403) { - const controller2 = new AbortController(); - const timer2 = setTimeout(() => controller2.abort(), REQUEST_TIMEOUT); - try { - res = await fetch(url, { - method: "GET", - signal: controller2.signal, - redirect: "follow", - }); - } finally { - clearTimeout(timer2); +async function checkUrl( + url: string +): Promise<{ ok: boolean; status?: number; error?: string }> { + for (let attempt = 0; attempt <= RETRY_ATTEMPTS; attempt += 1) { + try { + let res = await fetchWithTimeout(url, "HEAD"); + + if (res.status === 405 || res.status === 403) { + res = await fetchWithTimeout(url, "GET"); } - } - if (res.status === 429 || (res.status >= 200 && res.status < 400)) { - return { ok: true }; - } + if (res.status === 429 || (res.status >= 200 && res.status < 400)) { + return { ok: true }; + } - return { ok: false, status: res.status }; - } catch (err) { - const message = err instanceof Error ? err.message : String(err); - return { ok: false, error: message }; - } finally { - clearTimeout(timer); + // Retry transient upstream failures. + if (res.status >= 500 && attempt < RETRY_ATTEMPTS) { + await sleep(RETRY_DELAY_MS * (attempt + 1)); + continue; + } + + return { ok: false, status: res.status }; + } catch (err) { + const message = err instanceof Error ? err.message : String(err); + if (isTransientError(message) && attempt < RETRY_ATTEMPTS) { + await sleep(RETRY_DELAY_MS * (attempt + 1)); + continue; + } + return { ok: false, error: message }; + } } + + return { ok: false, error: "Unknown link check failure" }; } function pLimit(concurrency: number) { diff --git a/toolkit-docs-generator/README.md b/toolkit-docs-generator/README.md index 7b9e05eed..b521fe9df 100644 --- a/toolkit-docs-generator/README.md +++ b/toolkit-docs-generator/README.md @@ -77,13 +77,15 @@ This step does not change JSON output. It only updates navigation files. ## Local usage +Run these commands from the `toolkit-docs-generator` directory. + Generate a single toolkit: ```bash -pnpm start generate \ +pnpm dlx tsx src/cli/index.ts generate \ --providers "Github:1.0.0" \ - --engine-api-url "$ENGINE_API_URL" \ - --engine-api-key "$ENGINE_API_KEY" \ + --tool-metadata-url "$ENGINE_API_URL" \ + --tool-metadata-key "$ENGINE_API_KEY" \ --llm-provider openai \ --llm-model gpt-4.1-mini \ --llm-api-key "$OPENAI_API_KEY" \ @@ -93,11 +95,11 @@ pnpm start generate \ Generate all toolkits: ```bash -pnpm start generate \ +pnpm dlx tsx src/cli/index.ts generate \ --all \ --skip-unchanged \ - --engine-api-url "$ENGINE_API_URL" \ - --engine-api-key "$ENGINE_API_KEY" \ + --tool-metadata-url "$ENGINE_API_URL" \ + --tool-metadata-key "$ENGINE_API_KEY" \ --llm-provider openai \ --llm-model gpt-4.1-mini \ --llm-api-key "$OPENAI_API_KEY" \ @@ -107,10 +109,10 @@ pnpm start generate \ Generate without LLM output: ```bash -pnpm start generate \ +pnpm dlx tsx src/cli/index.ts generate \ --providers "Asana:0.1.3" \ - --engine-api-url "$ENGINE_API_URL" \ - --engine-api-key "$ENGINE_API_KEY" \ + --tool-metadata-url "$ENGINE_API_URL" \ + --tool-metadata-key "$ENGINE_API_KEY" \ --skip-examples \ --skip-summary \ --skip-overview \ @@ -139,4 +141,4 @@ pnpm dlx tsx .github/scripts/sync-toolkit-sidebar.ts - **Nothing regenerated**: `--skip-unchanged` exits early when tool definitions did not change. - **Missing metadata**: the generator falls back to the metadata JSON file when design system metadata is unavailable. -- **Verify output fails**: run `pnpm start verify-output --output data/toolkits` and fix the reported mismatch. +- **Verify output fails**: run `pnpm dlx tsx src/cli/index.ts verify-output --output data/toolkits` and fix the reported mismatch. diff --git a/toolkit-docs-generator/data/toolkits/googledocs.json b/toolkit-docs-generator/data/toolkits/googledocs.json index 0b67d8d49..d8e54f2be 100644 --- a/toolkit-docs-generator/data/toolkits/googledocs.json +++ b/toolkit-docs-generator/data/toolkits/googledocs.json @@ -1,7 +1,7 @@ { "id": "GoogleDocs", "label": "Google Docs", - "version": "5.0.1", + "version": "5.0.3", "description": "Arcade.dev LLM tools for Google Docs", "metadata": { "category": "productivity", @@ -9,7 +9,7 @@ "isBYOC": false, "isPro": false, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/productivity/google-docs", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/productivity/google-docs", "isComingSoon": false, "isHidden": false }, @@ -26,7 +26,7 @@ { "name": "CommentOnDocument", "qualifiedName": "GoogleDocs.CommentOnDocument", - "fullyQualifiedName": "GoogleDocs.CommentOnDocument@5.0.1", + "fullyQualifiedName": "GoogleDocs.CommentOnDocument@5.0.3", "description": "Comment on a specific document by its ID.", "parameters": [ { @@ -49,7 +49,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -62,12 +64,12 @@ "toolName": "GoogleDocs.CommentOnDocument", "parameters": { "document_id": { - "value": "abc123xyz", + "value": "1A2b3C4d5E6f7G8h9I0jK_lMnOpQrStUvWxYz", "type": "string", "required": true }, "comment_text": { - "value": "Great work on this section!", + "value": "Please review the introduction paragraph for clarity and suggest any necessary citations.", "type": "string", "required": true } @@ -80,7 +82,7 @@ { "name": "CreateBlankDocument", "qualifiedName": "GoogleDocs.CreateBlankDocument", - "fullyQualifiedName": "GoogleDocs.CreateBlankDocument@5.0.1", + "fullyQualifiedName": "GoogleDocs.CreateBlankDocument@5.0.3", "description": "Create a blank Google Docs document with the specified title.", "parameters": [ { @@ -95,7 +97,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -108,7 +112,7 @@ "toolName": "GoogleDocs.CreateBlankDocument", "parameters": { "title": { - "value": "Meeting Notes - September 2023", + "value": "Project Atlas - Meeting Notes", "type": "string", "required": true } @@ -121,7 +125,7 @@ { "name": "CreateDocumentFromText", "qualifiedName": "GoogleDocs.CreateDocumentFromText", - "fullyQualifiedName": "GoogleDocs.CreateDocumentFromText@5.0.1", + "fullyQualifiedName": "GoogleDocs.CreateDocumentFromText@5.0.3", "description": "Create a Google Docs document with the specified title and text content.", "parameters": [ { @@ -144,7 +148,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -157,12 +163,12 @@ "toolName": "GoogleDocs.CreateDocumentFromText", "parameters": { "title": { - "value": "Meeting Notes - October 2023", + "value": "Project Brief: Q2 Website Redesign", "type": "string", "required": true }, "text_content": { - "value": "These are the notes from the meeting held on October 10, 2023. Discussed project timelines, deliverables, and assigned tasks.", + "value": "Overview:\nThis document outlines the goals, timeline, and responsibilities for the Q2 website redesign project.\n\nGoals:\n- Improve mobile performance\n- Modernize visual design\n- Increase conversion rate by 15%\n\nTimeline:\n1. Discovery and research: 2 weeks\n2. Design: 3 weeks\n3. Development: 6 weeks\n4. QA and launch: 2 weeks\n\nStakeholders:\n- Product Manager: Alex Kim\n- Design Lead: Priya Patel\n- Engineering Manager: Marco Ruiz\n\nNext steps:\nSchedule kickoff meeting and assign tasks in the project tracker.", "type": "string", "required": true } @@ -175,8 +181,8 @@ { "name": "EditDocument", "qualifiedName": "GoogleDocs.EditDocument", - "fullyQualifiedName": "GoogleDocs.EditDocument@5.0.1", - "description": "Edit a Google Docs document with the specified edit request.\n\nThis tool does not have context about previous edits because it is stateless. If your edit\nrequest depends on knowledge about previous edits, then you should provide that context in\nthe edit requests.", + "fullyQualifiedName": "GoogleDocs.EditDocument@5.0.3", + "description": "Edit a Google Docs document with the specified edit request.\n\nThis tool edits the content within the document body only. It cannot edit document metadata\nsuch as the title, permissions, sharing settings, or other document properties.\n\nThis tool does not have context about previous edits because it is stateless. If your edit\nrequest depends on knowledge about previous edits, then you should provide that context in\nthe edit requests.", "parameters": [ { "name": "document_id", @@ -200,16 +206,25 @@ "type": "string", "required": false, "description": "The effort to put into reasoning about the edit(s). Defaults to medium", - "enum": ["minimal", "low", "medium", "high"], + "enum": [ + "minimal", + "low", + "medium", + "high" + ], "inferrable": true } ], "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, - "secrets": ["OPENAI_API_KEY"], + "secrets": [ + "OPENAI_API_KEY" + ], "secretsInfo": [ { "name": "OPENAI_API_KEY", @@ -225,15 +240,17 @@ "toolName": "GoogleDocs.EditDocument", "parameters": { "document_id": { - "value": "1A2B3C4D5E6F7G8H9I0J", + "value": "1A2b3C4d5E6fG7h8I9jK0lMnOpQrStuVwXyZ", "type": "string", "required": true }, "edit_requests": { "value": [ - "Change the title of the document to 'Quarterly Financial Report'", - "Add a new section discussing the effects of the market downturn", - "Correct the spelling of 'recieve' to 'receive' throughout the document" + "Rewrite the first paragraph of the Introduction to be a concise three-sentence summary of the document's purpose, in active voice and suitable for non-technical readers.", + "Convert the list under the 'Key Findings' section into a bulleted list and bold the primary conclusion in the first bullet.", + "Replace passive-voice sentences in the 'Methodology' section with active voice and simplify technical jargon while preserving the original meaning.", + "Add a new section titled 'Next Steps' immediately after the Conclusion that contains three actionable items, each as a short sentence.", + "Ensure all headings use Title Case and make every level-2 heading bold." ], "type": "array", "required": true @@ -252,7 +269,7 @@ { "name": "GenerateGoogleFilePickerUrl", "qualifiedName": "GoogleDocs.GenerateGoogleFilePickerUrl", - "fullyQualifiedName": "GoogleDocs.GenerateGoogleFilePickerUrl@5.0.1", + "fullyQualifiedName": "GoogleDocs.GenerateGoogleFilePickerUrl@5.0.3", "description": "Generate a Google File Picker URL for user-driven file selection and authorization.\n\nThis tool generates a URL that directs the end-user to a Google File Picker interface where\nwhere they can select or upload Google Drive files. Users can grant permission to access their\nDrive files, providing a secure and authorized way to interact with their files.\n\nThis is particularly useful when prior tools (e.g., those accessing or modifying\nGoogle Docs, Google Sheets, etc.) encountered failures due to file non-existence\n(Requested entity was not found) or permission errors. Once the user completes the file\npicker flow, the prior tool can be retried.\n\nSuggest this tool to users when they are surprised or confused that the file they are\nsearching for or attempting to access cannot be found.", "parameters": [], "auth": { @@ -278,7 +295,7 @@ { "name": "GetDocumentAsDocmd", "qualifiedName": "GoogleDocs.GetDocumentAsDocmd", - "fullyQualifiedName": "GoogleDocs.GetDocumentAsDocmd@5.0.1", + "fullyQualifiedName": "GoogleDocs.GetDocumentAsDocmd@5.0.3", "description": "Get the latest version of the specified Google Docs document as DocMD.\nThe DocMD output will include tags that can be used to annotate the document with location\ninformation, the type of block, block IDs, and other metadata. If the document has tabs,\nall tabs are included in sequential order unless a specific tab_id is provided.", "parameters": [ { @@ -301,7 +318,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -314,12 +333,12 @@ "toolName": "GoogleDocs.GetDocumentAsDocmd", "parameters": { "document_id": { - "value": "1A2B3C4D5E6F", + "value": "1a2B3cD4eF5GhI6JkL7Mn8OpQrStUvWxYz9", "type": "string", "required": true }, "tab_id": { - "value": "tab1", + "value": "tab-3b7", "type": "string", "required": false } @@ -332,7 +351,7 @@ { "name": "GetDocumentById", "qualifiedName": "GoogleDocs.GetDocumentById", - "fullyQualifiedName": "GoogleDocs.GetDocumentById@5.0.1", + "fullyQualifiedName": "GoogleDocs.GetDocumentById@5.0.3", "description": "DEPRECATED DO NOT USE THIS TOOL\nGet the latest version of the specified Google Docs document.", "parameters": [ { @@ -347,7 +366,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -360,7 +381,7 @@ "toolName": "GoogleDocs.GetDocumentById", "parameters": { "document_id": { - "value": "1A2B3C4D5E6F7G8H9I0J", + "value": "1a2B3cD4EfGhIjKlMnOpQrStUvWxYz_9XyZ", "type": "string", "required": true } @@ -373,7 +394,7 @@ { "name": "GetDocumentMetadata", "qualifiedName": "GoogleDocs.GetDocumentMetadata", - "fullyQualifiedName": "GoogleDocs.GetDocumentMetadata@5.0.1", + "fullyQualifiedName": "GoogleDocs.GetDocumentMetadata@5.0.3", "description": "Get metadata for a Google Docs document including hierarchical tab structure.\nReturns document title, ID, URL, total character count, and nested tab information\nwith character counts for each tab.", "parameters": [ { @@ -388,7 +409,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -401,7 +424,7 @@ "toolName": "GoogleDocs.GetDocumentMetadata", "parameters": { "document_id": { - "value": "1A2B3C4D5E6F7G8H9I0J", + "value": "1aBcD_3EfGhIjKlmNoPqRstUvWxYz-9876543210", "type": "string", "required": true } @@ -414,7 +437,7 @@ { "name": "InsertTextAtEndOfDocument", "qualifiedName": "GoogleDocs.InsertTextAtEndOfDocument", - "fullyQualifiedName": "GoogleDocs.InsertTextAtEndOfDocument@5.0.1", + "fullyQualifiedName": "GoogleDocs.InsertTextAtEndOfDocument@5.0.3", "description": "Updates an existing Google Docs document using the batchUpdate API endpoint.", "parameters": [ { @@ -437,7 +460,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -450,12 +475,12 @@ "toolName": "GoogleDocs.InsertTextAtEndOfDocument", "parameters": { "document_id": { - "value": "1A2B3C4D5E6F7G8H9I0J", + "value": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", "type": "string", "required": true }, "text_content": { - "value": "This text was added at the end of the document.", + "value": "Hello team,\n\nPlease review the attached summary and provide feedback by EOD.\n\nThanks,\nAlice", "type": "string", "required": true } @@ -468,7 +493,7 @@ { "name": "ListDocumentComments", "qualifiedName": "GoogleDocs.ListDocumentComments", - "fullyQualifiedName": "GoogleDocs.ListDocumentComments@5.0.1", + "fullyQualifiedName": "GoogleDocs.ListDocumentComments@5.0.3", "description": "List all comments on the specified Google Docs document.", "parameters": [ { @@ -491,7 +516,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -504,7 +531,7 @@ "toolName": "GoogleDocs.ListDocumentComments", "parameters": { "document_id": { - "value": "1a2b3c4d5e6f7g8h9i0j", + "value": "1A2B3cD4eF5g6HiJK7LmNoPqRsTuVwxyz", "type": "string", "required": true }, @@ -522,7 +549,7 @@ { "name": "SearchAndRetrieveDocuments", "qualifiedName": "GoogleDocs.SearchAndRetrieveDocuments", - "fullyQualifiedName": "GoogleDocs.SearchAndRetrieveDocuments@5.0.1", + "fullyQualifiedName": "GoogleDocs.SearchAndRetrieveDocuments@5.0.3", "description": "Searches for documents in the user's Google Drive and returns documents with their main body\ncontent and tab metadata. Excludes documents that are in the trash.\n\nReturns main body content only with metadata about tabs. Use get_document_as_docmd() to retrieve\nfull tab content for specific documents. Use search_documents() for metadata-only searches.", "parameters": [ { @@ -530,7 +557,12 @@ "type": "string", "required": false, "description": "The format of the document to return. Defaults to Markdown.", - "enum": ["docmd", "markdown", "html", "google_api_json"], + "enum": [ + "docmd", + "markdown", + "html", + "google_api_json" + ], "inferrable": true }, { @@ -627,7 +659,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -645,17 +679,24 @@ "required": false }, "document_contains": { - "value": ["project", "meeting", "report"], + "value": [ + "Q1 financial summary", + "revenue", + "board meeting minutes" + ], "type": "array", "required": false }, "document_not_contains": { - "value": ["draft", "confidential"], + "value": [ + "draft", + "confidential" + ], "type": "array", "required": false }, "search_only_in_shared_drive_id": { - "value": "abc123456", + "value": "0A1B2C3D4E5F6G7H", "type": "string", "required": false }, @@ -670,17 +711,20 @@ "required": false }, "order_by": { - "value": ["modifiedTime desc", "name asc"], + "value": [ + "modifiedTime desc", + "name asc" + ], "type": "array", "required": false }, "limit": { - "value": 10, + "value": 25, "type": "integer", "required": false }, "pagination_token": { - "value": "xyz987654", + "value": "xyz123_token_example", "type": "string", "required": false } @@ -693,7 +737,7 @@ { "name": "SearchDocuments", "qualifiedName": "GoogleDocs.SearchDocuments", - "fullyQualifiedName": "GoogleDocs.SearchDocuments@5.0.1", + "fullyQualifiedName": "GoogleDocs.SearchDocuments@5.0.3", "description": "Searches for documents in the user's Google Drive. Excludes documents in trash.\nReturns metadata only. Use get_document_metadata or get_document_as_docmd for content.", "parameters": [ { @@ -790,7 +834,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -803,17 +849,25 @@ "toolName": "GoogleDocs.SearchDocuments", "parameters": { "document_contains": { - "value": ["project", "report", "meeting notes"], + "value": [ + "project plan", + "Q2 goals", + "budget" + ], "type": "array", "required": false }, "document_not_contains": { - "value": ["draft", "old", "deprecated"], + "value": [ + "personal", + "DRAFT", + "confidential" + ], "type": "array", "required": false }, "search_only_in_shared_drive_id": { - "value": "abc123sharedDriveId", + "value": "0A1B2C3D4E5F6G7H8I9J", "type": "string", "required": false }, @@ -828,17 +882,20 @@ "required": false }, "order_by": { - "value": ["createdTime", "name"], + "value": [ + "modifiedTime desc", + "name asc" + ], "type": "array", "required": false }, "limit": { - "value": 10, + "value": 50, "type": "integer", "required": false }, "pagination_token": { - "value": "nextPageToken", + "value": "token_eyJwYWdlIjoxfQ", "type": "string", "required": false } @@ -851,7 +908,7 @@ { "name": "WhoAmI", "qualifiedName": "GoogleDocs.WhoAmI", - "fullyQualifiedName": "GoogleDocs.WhoAmI@5.0.1", + "fullyQualifiedName": "GoogleDocs.WhoAmI@5.0.3", "description": "Get comprehensive user profile and Google Docs environment information.\n\nThis tool provides detailed information about the authenticated user including\ntheir name, email, profile picture, Google Docs access permissions, and other\nimportant profile details from Google services.", "parameters": [], "auth": { @@ -879,32 +936,9 @@ } } ], - "documentationChunks": [ - { - "type": "warning", - "location": "description", - "position": "after", - "content": "\n This Toolkit is not available in Arcade Cloud. You can use these tools with a\n [self-hosted](/guides/deployment-hosting/configure-engine) instance of Arcade.\n" - }, - { - "type": "section", - "location": "custom_section", - "position": "after", - "content": "## Tab Support\n\nGoogle Docs supports hierarchical tabs within documents. The Google Docs tools provide comprehensive support for working with tabs:\n\n- **Tab Metadata**: `GetDocumentMetadata` returns hierarchical tab structures with approximate character and word counts for each tab\n- **Tab Content**: `GetDocumentAsDocMD` and `SearchAndRetrieveDocuments` include all tab content in their output\n- **Tab Filtering**: `GetDocumentAsDocMD` supports filtering to retrieve content from a specific tab using the `tab_id` parameter\n\nTabs are represented with the following structure:\n- Each tab has a unique `tabId`, `title`, `index`, and `nestingLevel`\n- Tabs can be nested up to 3 levels deep (parent → child → grandchild)\n- Tab metadata includes approximate character and word counts for each tab's content\n\n---", - "header": "## Tab Support" - }, - { - "type": "markdown", - "location": "auth", - "position": "after", - "content": "The Arcade Google Docs MCP Server uses the [Google auth provider](/references/auth-providers/google) to connect to users' Google accounts.\n---", - "header": "## Auth" - } - ], - "customImports": [ - "import ScopePicker from \"@/app/_components/scope-picker\";" - ], + "documentationChunks": [], + "customImports": [], "subPages": [], - "generatedAt": "2026-01-26T17:32:15.847Z", - "summary": "Arcade.dev offers a toolkit for Google Docs that facilitates seamless interaction with Google Drive and document management. This toolkit enables developers to create, edit, and manage documents through a variety of functions in a secure environment.\n\n**Capabilities**\n- Create, edit, and comment on Google Docs seamlessly.\n- Retrieve document metadata and manage file permissions securely.\n- Generate user-friendly file picker URLs for easy file access.\n- List and manage comments within documents.\n\n**OAuth**\nProvider: Google\nScopes: https://www.googleapis.com/auth/drive.file, https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile\n\n**Secrets**\nSecret Type: API Key\nExample: OPENAI_API_KEY." -} + "generatedAt": "2026-02-19T22:06:23.179Z", + "summary": "Arcade.dev Google Docs toolkit enables LLM-driven interaction with Google Docs, letting apps search, read, create, edit, and comment on documents through authorized Google Drive access. It supports stateless body edits, content retrieval as DocMD, metadata inspection, and user-driven file-picker flows.\n\n**Capabilities**\n- Unified search and retrieval of document metadata and content for downstream generation.\n- Create, append, and edit document body content and add or list comments.\n- Inspect document metadata, tab structure, and authenticated user/profile; support retries via file-picker URLs.\n\n**OAuth**\n- Provider: google\n- Scopes: https://www.googleapis.com/auth/drive.file, https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile\n\n**Secrets**\n- api_key: OPENAI_API_KEY (for external LLM or third-party integrations)." +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/googlesheets.json b/toolkit-docs-generator/data/toolkits/googlesheets.json index 76509a3c2..23db9939f 100644 --- a/toolkit-docs-generator/data/toolkits/googlesheets.json +++ b/toolkit-docs-generator/data/toolkits/googlesheets.json @@ -1,7 +1,7 @@ { "id": "GoogleSheets", "label": "Google Sheets", - "version": "5.1.0", + "version": "5.1.1", "description": "Arcade.dev LLM tools for Google Sheets.", "metadata": { "category": "productivity", @@ -9,7 +9,7 @@ "isBYOC": false, "isPro": false, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/productivity/google-sheets", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/productivity/google-sheets", "isComingSoon": false, "isHidden": false }, @@ -26,7 +26,7 @@ { "name": "AddNoteToCell", "qualifiedName": "GoogleSheets.AddNoteToCell", - "fullyQualifiedName": "GoogleSheets.AddNoteToCell@5.1.0", + "fullyQualifiedName": "GoogleSheets.AddNoteToCell@5.1.1", "description": "Add a note to a specific cell in a spreadsheet. A note is a small\npiece of text attached to a cell (shown with a black triangle) that\nappears when you hover over the cell.\n\nsheet_id_or_name takes precedence over sheet_position. If a sheet is not mentioned,\nthen always assume the default sheet_position is sufficient.", "parameters": [ { @@ -81,7 +81,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -132,7 +134,7 @@ { "name": "CreateSpreadsheet", "qualifiedName": "GoogleSheets.CreateSpreadsheet", - "fullyQualifiedName": "GoogleSheets.CreateSpreadsheet@5.1.0", + "fullyQualifiedName": "GoogleSheets.CreateSpreadsheet@5.1.1", "description": "Create a new spreadsheet with the provided title and data in its first sheet\n\nReturns the newly created spreadsheet's id and title", "parameters": [ { @@ -155,7 +157,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -186,7 +190,7 @@ { "name": "GenerateGoogleFilePickerUrl", "qualifiedName": "GoogleSheets.GenerateGoogleFilePickerUrl", - "fullyQualifiedName": "GoogleSheets.GenerateGoogleFilePickerUrl@5.1.0", + "fullyQualifiedName": "GoogleSheets.GenerateGoogleFilePickerUrl@5.1.1", "description": "Generate a Google File Picker URL for user-driven file selection and authorization.\n\nThis tool generates a URL that directs the end-user to a Google File Picker interface where\nwhere they can select or upload Google Drive files. Users can grant permission to access their\nDrive files, providing a secure and authorized way to interact with their files.\n\nThis is particularly useful when prior tools (e.g., those accessing or modifying\nGoogle Docs, Google Sheets, etc.) encountered failures due to file non-existence\n(Requested entity was not found) or permission errors. Once the user completes the file\npicker flow, the prior tool can be retried.\n\nSuggest this tool to users when they are surprised or confused that the file they are\nsearching for or attempting to access cannot be found.", "parameters": [], "auth": { @@ -212,7 +216,7 @@ { "name": "GetSpreadsheet", "qualifiedName": "GoogleSheets.GetSpreadsheet", - "fullyQualifiedName": "GoogleSheets.GetSpreadsheet@5.1.0", + "fullyQualifiedName": "GoogleSheets.GetSpreadsheet@5.1.1", "description": "Gets the specified range of cells from a single sheet in the spreadsheet.\n\nsheet_id_or_name takes precedence over sheet_position. If a sheet is not mentioned,\nthen always assume the default sheet_position is sufficient.", "parameters": [ { @@ -275,7 +279,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -331,7 +337,7 @@ { "name": "GetSpreadsheetMetadata", "qualifiedName": "GoogleSheets.GetSpreadsheetMetadata", - "fullyQualifiedName": "GoogleSheets.GetSpreadsheetMetadata@5.1.0", + "fullyQualifiedName": "GoogleSheets.GetSpreadsheetMetadata@5.1.1", "description": "Gets the metadata for a spreadsheet including the metadata for the sheets in the spreadsheet.\n\nUse this tool to get the name, position, ID, and URL of all sheets in a spreadsheet as well as\nthe number of rows and columns in each sheet.\n\nDoes not return the content/data of the sheets in the spreadsheet - only the metadata.\nExcludes spreadsheets that are in the trash.", "parameters": [ { @@ -346,7 +352,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -372,7 +380,7 @@ { "name": "SearchSpreadsheets", "qualifiedName": "GoogleSheets.SearchSpreadsheets", - "fullyQualifiedName": "GoogleSheets.SearchSpreadsheets@5.1.0", + "fullyQualifiedName": "GoogleSheets.SearchSpreadsheets@5.1.1", "description": "Searches for spreadsheets in the user's Google Drive based on the titles and content and\nreturns the title, ID, and URL for each matching spreadsheet.\n\nDoes not return the content/data of the sheets in the spreadsheets - only the metadata.\nExcludes spreadsheets that are in the trash.", "parameters": [ { @@ -469,7 +477,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -482,12 +492,18 @@ "toolName": "GoogleSheets.SearchSpreadsheets", "parameters": { "spreadsheet_contains": { - "value": ["financial", "budget"], + "value": [ + "financial", + "budget" + ], "type": "array", "required": false }, "spreadsheet_not_contains": { - "value": ["draft", "old"], + "value": [ + "draft", + "old" + ], "type": "array", "required": false }, @@ -507,7 +523,9 @@ "required": false }, "order_by": { - "value": ["lastModifiedTime"], + "value": [ + "lastModifiedTime" + ], "type": "array", "required": false }, @@ -530,7 +548,7 @@ { "name": "UpdateCells", "qualifiedName": "GoogleSheets.UpdateCells", - "fullyQualifiedName": "GoogleSheets.UpdateCells@5.1.0", + "fullyQualifiedName": "GoogleSheets.UpdateCells@5.1.1", "description": "Write values to a Google Sheet using a flexible data format.\n\nsheet_id_or_name takes precedence over sheet_position. If a sheet is not mentioned,\nthen always assume the default sheet_position is sufficient.", "parameters": [ { @@ -569,7 +587,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -610,7 +630,7 @@ { "name": "WhoAmI", "qualifiedName": "GoogleSheets.WhoAmI", - "fullyQualifiedName": "GoogleSheets.WhoAmI@5.1.0", + "fullyQualifiedName": "GoogleSheets.WhoAmI@5.1.1", "description": "Get comprehensive user profile and Google Sheets environment information.\n\nThis tool provides detailed information about the authenticated user including\ntheir name, email, profile picture, Google Sheets access permissions, and other\nimportant profile details from Google services.", "parameters": [], "auth": { @@ -640,7 +660,7 @@ { "name": "WriteToCell", "qualifiedName": "GoogleSheets.WriteToCell", - "fullyQualifiedName": "GoogleSheets.WriteToCell@5.1.0", + "fullyQualifiedName": "GoogleSheets.WriteToCell@5.1.1", "description": "Write a value to a single cell in a spreadsheet.", "parameters": [ { @@ -687,7 +707,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -736,6 +758,6 @@ "import ScopePicker from \"@/app/_components/scope-picker\";" ], "subPages": [], - "generatedAt": "2026-01-26T17:33:21.516Z", + "generatedAt": "2026-02-19T22:06:04.822Z", "summary": "Arcade.dev provides LLM tools for Google Sheets, enabling seamless interactions with spreadsheet data through API integration. This toolkit allows developers to automate tasks, manage files, and enhance user experience in Google Sheets.\n\n### Capabilities\n- Create and manage spreadsheets with flexible data formats.\n- Retrieve and update cell contents efficiently.\n- Access user profile information and permissions.\n- Generate file picker URLs for user-driven file selection and authorization.\n\n### OAuth\n- **Provider**: Google \n- **Scopes**: \n - `https://www.googleapis.com/auth/drive.file` \n - `https://www.googleapis.com/auth/userinfo.email` \n - `https://www.googleapis.com/auth/userinfo.profile`\n\n### Secrets\n- No secret types or names are specified." -} +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/googleslides.json b/toolkit-docs-generator/data/toolkits/googleslides.json index e42898e69..43f8151e7 100644 --- a/toolkit-docs-generator/data/toolkits/googleslides.json +++ b/toolkit-docs-generator/data/toolkits/googleslides.json @@ -1,7 +1,7 @@ { "id": "GoogleSlides", "label": "Google Slides", - "version": "1.3.2", + "version": "1.3.3", "description": "Arcade.dev LLM tools for Google Slides", "metadata": { "category": "productivity", @@ -9,7 +9,7 @@ "isBYOC": false, "isPro": false, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/productivity/google-slides", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/productivity/google-slides", "isComingSoon": false, "isHidden": false }, @@ -26,7 +26,7 @@ { "name": "CommentOnPresentation", "qualifiedName": "GoogleSlides.CommentOnPresentation", - "fullyQualifiedName": "GoogleSlides.CommentOnPresentation@1.3.2", + "fullyQualifiedName": "GoogleSlides.CommentOnPresentation@1.3.3", "description": "Comment on a specific slide by its index in a Google Slides presentation.", "parameters": [ { @@ -49,7 +49,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -62,12 +64,12 @@ "toolName": "GoogleSlides.CommentOnPresentation", "parameters": { "presentation_id": { - "value": "1A2B3C4D5E6F7G8H9I0J", + "value": "1a2B3cD4eF5gHiJkLmNoPqRsTuVwXyZ_7", "type": "string", "required": true }, "comment_text": { - "value": "Great job on this slide! Very informative.", + "value": "Please review the color contrast on this slide and update the chart labels.", "type": "string", "required": true } @@ -80,7 +82,7 @@ { "name": "CreatePresentation", "qualifiedName": "GoogleSlides.CreatePresentation", - "fullyQualifiedName": "GoogleSlides.CreatePresentation@1.3.2", + "fullyQualifiedName": "GoogleSlides.CreatePresentation@1.3.3", "description": "Create a new Google Slides presentation\nThe first slide will be populated with the specified title and subtitle.", "parameters": [ { @@ -103,7 +105,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -116,12 +120,12 @@ "toolName": "GoogleSlides.CreatePresentation", "parameters": { "title": { - "value": "Annual Sales Report", + "value": "Product Launch Roadmap", "type": "string", "required": true }, "subtitle": { - "value": "Q1 Performance Analysis", + "value": "Timeline, milestones, and key performance indicators", "type": "string", "required": false } @@ -134,7 +138,7 @@ { "name": "CreateSlide", "qualifiedName": "GoogleSlides.CreateSlide", - "fullyQualifiedName": "GoogleSlides.CreateSlide@1.3.2", + "fullyQualifiedName": "GoogleSlides.CreateSlide@1.3.3", "description": "Create a new slide at the end of the specified presentation", "parameters": [ { @@ -165,7 +169,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -178,17 +184,17 @@ "toolName": "GoogleSlides.CreateSlide", "parameters": { "presentation_id": { - "value": "1A2B3C4D5E6F7G8H9I0J", + "value": "1a2B3cD4eF5GhIjKlMnOpQrstUVwxYZ", "type": "string", "required": true }, "slide_title": { - "value": "Introduction to JSON", + "value": "Q1 2026 Sales Overview", "type": "string", "required": true }, "slide_body": { - "value": "This slide provides an overview of JSON format and its uses.", + "value": "Revenue increased by 12% vs. last quarter.\nKey drivers:\n- New product launch\n- Expanded territory coverage\n- Improved conversion rate", "type": "string", "required": true } @@ -201,7 +207,7 @@ { "name": "GenerateGoogleFilePickerUrl", "qualifiedName": "GoogleSlides.GenerateGoogleFilePickerUrl", - "fullyQualifiedName": "GoogleSlides.GenerateGoogleFilePickerUrl@1.3.2", + "fullyQualifiedName": "GoogleSlides.GenerateGoogleFilePickerUrl@1.3.3", "description": "Generate a Google File Picker URL for user-driven file selection and authorization.\n\nThis tool generates a URL that directs the end-user to a Google File Picker interface where\nwhere they can select or upload Google Drive files. Users can grant permission to access their\nDrive files, providing a secure and authorized way to interact with their files.\n\nThis is particularly useful when prior tools (e.g., those accessing or modifying\nGoogle Docs, Google Sheets, etc.) encountered failures due to file non-existence\n(Requested entity was not found) or permission errors. Once the user completes the file\npicker flow, the prior tool can be retried.\n\nSuggest this tool to users when they are surprised or confused that the file they are\nsearching for or attempting to access cannot be found.", "parameters": [], "auth": { @@ -227,7 +233,7 @@ { "name": "GetPresentationAsMarkdown", "qualifiedName": "GoogleSlides.GetPresentationAsMarkdown", - "fullyQualifiedName": "GoogleSlides.GetPresentationAsMarkdown@1.3.2", + "fullyQualifiedName": "GoogleSlides.GetPresentationAsMarkdown@1.3.3", "description": "Get the specified Google Slides presentation and convert it to markdown.\n\nOnly retrieves the text content of the presentation and formats it as markdown.", "parameters": [ { @@ -242,7 +248,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -255,7 +263,7 @@ "toolName": "GoogleSlides.GetPresentationAsMarkdown", "parameters": { "presentation_id": { - "value": "1a2B3cD4E5fG6H7I8J9K0", + "value": "1aBcD_eFgH12345IjKlmNoPqRsTuVwXyZ", "type": "string", "required": true } @@ -268,7 +276,7 @@ { "name": "ListPresentationComments", "qualifiedName": "GoogleSlides.ListPresentationComments", - "fullyQualifiedName": "GoogleSlides.ListPresentationComments@1.3.2", + "fullyQualifiedName": "GoogleSlides.ListPresentationComments@1.3.3", "description": "List all comments on the specified Google Slides presentation.", "parameters": [ { @@ -291,7 +299,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -304,7 +314,7 @@ "toolName": "GoogleSlides.ListPresentationComments", "parameters": { "presentation_id": { - "value": "1A2B3C4D5E6F7G8H9I0J", + "value": "1a2B3cD4eF5GhIjKlMnOpQrStUvWxYz", "type": "string", "required": true }, @@ -322,7 +332,7 @@ { "name": "SearchPresentations", "qualifiedName": "GoogleSlides.SearchPresentations", - "fullyQualifiedName": "GoogleSlides.SearchPresentations@1.3.2", + "fullyQualifiedName": "GoogleSlides.SearchPresentations@1.3.3", "description": "Searches for presentations in the user's Google Drive.\nExcludes presentations that are in the trash.", "parameters": [ { @@ -419,7 +429,9 @@ "auth": { "providerId": "google", "providerType": "oauth2", - "scopes": ["https://www.googleapis.com/auth/drive.file"] + "scopes": [ + "https://www.googleapis.com/auth/drive.file" + ] }, "secrets": [], "secretsInfo": [], @@ -432,17 +444,23 @@ "toolName": "GoogleSlides.SearchPresentations", "parameters": { "presentation_contains": { - "value": ["marketing", "2023", "presentation"], + "value": [ + "Q1 Sales", + "2026 roadmap" + ], "type": "array", "required": false }, "presentation_not_contains": { - "value": ["draft", "internal"], + "value": [ + "draft", + "confidential" + ], "type": "array", "required": false }, "search_only_in_shared_drive_id": { - "value": "abc123xyz", + "value": "0A1B2C3D4E5F_sharedDriveId", "type": "string", "required": false }, @@ -457,17 +475,20 @@ "required": false }, "order_by": { - "value": ["modifiedTime desc"], + "value": [ + "lastModifiedTime desc", + "name asc" + ], "type": "array", "required": false }, "limit": { - "value": 10, + "value": 25, "type": "integer", "required": false }, "pagination_token": { - "value": "token123", + "value": "Cg0KC2V4YW1wbGVUb2tlbg", "type": "string", "required": false } @@ -480,7 +501,7 @@ { "name": "WhoAmI", "qualifiedName": "GoogleSlides.WhoAmI", - "fullyQualifiedName": "GoogleSlides.WhoAmI@1.3.2", + "fullyQualifiedName": "GoogleSlides.WhoAmI@1.3.3", "description": "Get comprehensive user profile and Google Slides environment information.\n\nThis tool provides detailed information about the authenticated user including\ntheir name, email, profile picture, Google Slides access permissions, and other\nimportant profile details from Google services.", "parameters": [], "auth": { @@ -508,19 +529,9 @@ } } ], - "documentationChunks": [ - { - "type": "section", - "location": "custom_section", - "position": "after", - "content": "## GoogleSlides Reference\n\nBelow is a reference of enumerations used by some tools in the GoogleSlides MCP Server:\n\n### OrderBy\n\n- **CREATED_TIME**: `createdTime`\n- **CREATED_TIME_DESC**: `createdTime desc`\n- **FOLDER**: `folder`\n- **FOLDER_DESC**: `folder desc`\n- **MODIFIED_BY_ME_TIME**: `modifiedByMeTime`\n- **MODIFIED_BY_ME_TIME_DESC**: `modifiedByMeTime desc`\n- **MODIFIED_TIME**: `modifiedTime`\n- **MODIFIED_TIME_DESC**: `modifiedTime desc`\n- **NAME**: `name`\n- **NAME_DESC**: `name desc`\n- **NAME_NATURAL**: `name_natural`\n- **NAME_NATURAL_DESC**: `name_natural desc`\n- **QUOTA_BYTES_USED**: `quotaBytesUsed`\n- **QUOTA_BYTES_USED_DESC**: `quotaBytesUsed desc`\n- **RECENCY**: `recency`\n- **RECENCY_DESC**: `recency desc`\n- **SHARED_WITH_ME_TIME**: `sharedWithMeTime`\n- **SHARED_WITH_ME_TIME_DESC**: `sharedWithMeTime desc`\n- **STARRED**: `starred`\n- **STARRED_DESC**: `starred desc`\n- **VIEWED_BY_ME_TIME**: `viewedByMeTime`\n- **VIEWED_BY_ME_TIME_DESC**: `viewedByMeTime desc`\n\n", - "header": "## GoogleSlides Reference" - } - ], - "customImports": [ - "import ScopePicker from \"@/app/_components/scope-picker\";" - ], + "documentationChunks": [], + "customImports": [], "subPages": [], - "generatedAt": "2026-01-26T17:33:35.118Z", + "generatedAt": "2026-02-19T22:06:17.273Z", "summary": "Arcade.dev provides a powerful toolkit for Google Slides, enabling seamless integration and manipulation of presentations within Google Drive. This toolkit allows developers to automate various tasks related to presentation management, enhancing productivity and collaboration.\n\n**Capabilities**\n- Generate, modify, and comment on slides within presentations.\n- Create new Google Slides presentations with specified content.\n- Retrieve presentations and convert them to markdown format.\n- Search for and list presentations in the user's Google Drive.\n- Access comprehensive user profile information and permissions.\n\n**OAuth**\n- Provider: Google\n- Scopes: [https://www.googleapis.com/auth/drive.file, https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile]" -} +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/index.json b/toolkit-docs-generator/data/toolkits/index.json index af48d1e93..7c309d0ac 100644 --- a/toolkit-docs-generator/data/toolkits/index.json +++ b/toolkit-docs-generator/data/toolkits/index.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-01-26T19:59:55.801Z", + "generatedAt": "2026-02-19T22:22:27.276Z", "version": "1.0.0", "toolkits": [ { @@ -7,105 +7,106 @@ "label": "Airtable API", "version": "4.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 96, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "ArcadeEngineApi", "label": "Arcade Engine API", "version": "1.0.0", "category": "development", + "type": "arcade_starter", "toolCount": 29, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "Asana", "label": "Asana", "version": "1.1.1", "category": "productivity", + "type": "arcade", "toolCount": 19, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "AsanaApi", "label": "Asana API", "version": "1.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 199, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "AshbyApi", "label": "Ashby API", "version": "2.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 141, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "BoxApi", "label": "Box API", "version": "1.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 188, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Brightdata", "label": "Bright Data", "version": "0.2.0", "category": "development", + "type": "community", "toolCount": 3, - "authType": "none", - "type": "community" + "authType": "none" }, { "id": "CalendlyApi", "label": "Calendly API", "version": "3.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 51, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Clickup", "label": "ClickUp", "version": "1.1.1", "category": "productivity", + "type": "arcade", "toolCount": 24, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "ClickupApi", "label": "ClickUp API", "version": "1.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 134, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "CodeSandbox", "label": "Codesandbox", "version": "2.0.1", "category": "development", + "type": "arcade", "toolCount": 2, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "ComplexTools", "label": "ComplexTools", "version": "0.1.0", "category": "development", + "type": "arcade", "toolCount": 6, "authType": "none" }, @@ -114,60 +115,61 @@ "label": "Confluence", "version": "2.2.2", "category": "productivity", + "type": "arcade", "toolCount": 14, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "CursorAgentsApi", "label": "Cursor Agents API", "version": "0.1.1", "category": "development", + "type": "arcade_starter", "toolCount": 7, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "CustomerioApi", "label": "Customer.io API", "version": "1.0.0", "category": "customer-support", + "type": "arcade_starter", "toolCount": 115, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "CustomerioPipelinesApi", "label": "Customer.io Pipelines API", "version": "1.0.0", "category": "customer-support", + "type": "arcade_starter", "toolCount": 7, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "CustomerioTrackApi", "label": "Customer.io Track API", "version": "1.0.0", "category": "customer-support", + "type": "arcade_starter", "toolCount": 17, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "DatadogApi", "label": "Datadog API", "version": "2.0.0", "category": "development", + "type": "arcade_starter", "toolCount": 588, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "Deepwiki", "label": "Deepwiki", "version": "0.0.1", "category": "development", + "type": "arcade", "toolCount": 3, "authType": "none" }, @@ -176,33 +178,34 @@ "label": "Dropbox", "version": "1.0.1", "category": "productivity", + "type": "arcade", "toolCount": 3, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "E2b", "label": "E2B", "version": "3.0.1", "category": "development", + "type": "arcade", "toolCount": 2, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "ExaApi", "label": "Exa API", "version": "2.0.0", "category": "search", + "type": "arcade_starter", "toolCount": 45, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "Figma", "label": "Figma", "version": "0.1.0", "category": "development", + "type": "arcade", "toolCount": 15, "authType": "oauth2" }, @@ -211,60 +214,61 @@ "label": "Figma API", "version": "1.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 43, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Firecrawl", "label": "Firecrawl", "version": "3.0.1", "category": "development", + "type": "arcade", "toolCount": 6, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "FreshserviceApi", "label": "Freshservice API", "version": "3.0.0", "category": "customer-support", + "type": "arcade_starter", "toolCount": 214, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "Github", "label": "GitHub", "version": "2.0.1", "category": "development", + "type": "arcade", "toolCount": 44, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "GithubApi", "label": "GitHub API", "version": "1.0.0", "category": "development", + "type": "arcade_starter", "toolCount": 818, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Gmail", "label": "Gmail", "version": "4.1.0", "category": "productivity", + "type": "arcade", "toolCount": 18, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "Google", "label": "Google", "version": "2.0.2", "category": "development", + "type": "arcade", "toolCount": 37, "authType": "oauth2" }, @@ -273,267 +277,268 @@ "label": "Google Calendar", "version": "3.2.2", "category": "productivity", + "type": "arcade", "toolCount": 7, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "GoogleContacts", "label": "Google Contacts", "version": "3.4.0", "category": "productivity", + "type": "arcade", "toolCount": 5, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "GoogleDocs", "label": "Google Docs", - "version": "5.0.1", + "version": "5.0.3", "category": "productivity", + "type": "arcade", "toolCount": 13, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "GoogleDrive", "label": "Google Drive", "version": "5.1.0", "category": "productivity", + "type": "arcade", "toolCount": 11, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "GoogleFinance", "label": "Google Finance", "version": "3.1.2", "category": "search", + "type": "arcade", "toolCount": 2, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "GoogleFlights", "label": "Google Flights", "version": "3.1.2", "category": "search", + "type": "arcade", "toolCount": 1, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "GoogleHotels", "label": "Google Hotels", "version": "3.1.2", "category": "search", + "type": "arcade", "toolCount": 1, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "GoogleJobs", "label": "Google Jobs", "version": "3.1.2", "category": "search", + "type": "arcade", "toolCount": 1, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "GoogleMaps", "label": "Google Maps", "version": "3.1.2", "category": "search", + "type": "arcade", "toolCount": 2, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "GoogleNews", "label": "Google News", "version": "3.1.2", "category": "search", + "type": "arcade", "toolCount": 1, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "GoogleSearch", "label": "Google Search", "version": "3.1.2", "category": "search", + "type": "arcade", "toolCount": 1, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "GoogleSheets", "label": "Google Sheets", - "version": "5.1.0", + "version": "5.1.1", "category": "productivity", + "type": "arcade", "toolCount": 9, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "GoogleShopping", "label": "Google Shopping", "version": "3.1.2", "category": "search", + "type": "arcade", "toolCount": 1, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "GoogleSlides", "label": "Google Slides", - "version": "1.3.2", + "version": "1.3.3", "category": "productivity", + "type": "arcade", "toolCount": 8, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "Hubspot", "label": "HubSpot", "version": "3.0.0", "category": "sales", + "type": "arcade", "toolCount": 40, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "HubspotAutomationApi", "label": "HubSpot Automation API", "version": "1.0.0", "category": "sales", + "type": "arcade_starter", "toolCount": 9, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "HubspotCmsApi", "label": "HubSpot CMS API", "version": "1.0.0", "category": "sales", + "type": "arcade_starter", "toolCount": 175, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "HubspotConversationsApi", "label": "HubSpot Conversations API", "version": "1.0.0", "category": "sales", + "type": "arcade_starter", "toolCount": 24, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "HubspotCrmApi", "label": "HubSpot CRM API", "version": "1.0.0", "category": "sales", + "type": "arcade_starter", "toolCount": 453, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "HubspotEventsApi", "label": "HubSpot Events API", "version": "2.0.0", "category": "sales", + "type": "arcade_starter", "toolCount": 6, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "HubspotMarketingApi", "label": "HubSpot Marketing API", "version": "1.0.0", "category": "sales", + "type": "arcade_starter", "toolCount": 90, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "HubspotMeetingsApi", "label": "HubSpot Meetings API", "version": "1.0.0", "category": "sales", + "type": "arcade_starter", "toolCount": 5, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "HubspotUsersApi", "label": "HubSpot Users API", "version": "1.0.0", "category": "sales", + "type": "arcade_starter", "toolCount": 7, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Imgflip", "label": "Imgflip", "version": "1.0.1", "category": "entertainment", + "type": "arcade", "toolCount": 3, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "IntercomApi", "label": "Intercom API", "version": "1.0.0", "category": "customer-support", + "type": "arcade_starter", "toolCount": 107, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Jira", "label": "Jira", "version": "3.0.2", "category": "productivity", + "type": "auth", "toolCount": 43, - "authType": "oauth2", - "type": "auth" + "authType": "oauth2" }, { "id": "Linear", "label": "Linear", - "version": "3.2.0", + "version": "3.2.1", "category": "productivity", + "type": "arcade", "toolCount": 39, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "Linkedin", "label": "LinkedIn", "version": "0.1.14", "category": "social", + "type": "arcade", "toolCount": 1, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "LumaApi", "label": "Luma API", "version": "1.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 37, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "MailchimpMarketingApi", - "label": "MailchimpMarketingApi", + "label": "Mailchimp API", "version": "1.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 278, "authType": "oauth2" }, @@ -542,6 +547,7 @@ "label": "Math", "version": "1.0.5", "category": "development", + "type": "arcade", "toolCount": 23, "authType": "none" }, @@ -550,59 +556,88 @@ "label": "Microsoft", "version": "1.1.1", "category": "development", + "type": "arcade", "toolCount": 11, "authType": "oauth2" }, + { + "id": "MicrosoftOnedrive", + "label": "Microsoft OneDrive", + "version": "0.1.3", + "category": "productivity", + "type": "arcade", + "toolCount": 11, + "authType": "oauth2" + }, + { + "id": "MicrosoftPowerpoint", + "label": "Microsoft PowerPoint", + "version": "0.1.0", + "category": "productivity", + "type": "arcade", + "toolCount": 8, + "authType": "oauth2" + }, { "id": "MicrosoftTeams", "label": "Microsoft Teams", "version": "0.4.1", "category": "social", + "type": "arcade", "toolCount": 25, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" + }, + { + "id": "MicrosoftWord", + "label": "Microsoft Word", + "version": "0.1.3", + "category": "productivity", + "type": "arcade", + "toolCount": 4, + "authType": "oauth2" }, { "id": "MiroApi", "label": "Miro API", "version": "3.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 139, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "NotionToolkit", "label": "Notion", "version": "1.2.1", "category": "productivity", + "type": "arcade", "toolCount": 8, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "OutlookCalendar", "label": "Outlook Calendar", "version": "2.2.1", "category": "productivity", + "type": "arcade", "toolCount": 4, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "OutlookMail", "label": "Outlook Mail", "version": "2.3.0", "category": "productivity", + "type": "arcade", "toolCount": 9, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "Pagerduty", "label": "Pagerduty", "version": "0.2.0", "category": "development", + "type": "arcade", "toolCount": 14, "authType": "oauth2" }, @@ -611,24 +646,25 @@ "label": "PagerDuty API", "version": "4.0.0", "category": "development", + "type": "arcade_starter", "toolCount": 374, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "PosthogApi", "label": "PostHog API", "version": "2.0.0", "category": "development", + "type": "arcade_starter", "toolCount": 766, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "Pylon", "label": "Pylon", "version": "0.2.0", "category": "development", + "type": "arcade", "toolCount": 13, "authType": "none" }, @@ -637,6 +673,7 @@ "label": "PylonApi", "version": "1.0.0", "category": "development", + "type": "arcade_starter", "toolCount": 82, "authType": "none" }, @@ -645,95 +682,97 @@ "label": "Reddit", "version": "1.1.1", "category": "social", + "type": "arcade", "toolCount": 11, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "Salesforce", "label": "Salesforce", "version": "2.0.1", "category": "sales", + "type": "arcade", "toolCount": 3, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "Search", "label": "Search", "version": "2.0.1", "category": "development", + "type": "arcade", "toolCount": 15, "authType": "none" }, { "id": "Sharepoint", "label": "Microsoft SharePoint", - "version": "0.4.1", + "version": "0.7.0", "category": "productivity", - "toolCount": 12, - "authType": "oauth2", - "type": "arcade" + "type": "arcade", + "toolCount": 28, + "authType": "oauth2" }, { "id": "Slack", "label": "Slack", - "version": "2.0.0", + "version": "2.1.0", "category": "social", - "toolCount": 8, - "authType": "oauth2", - "type": "arcade" + "type": "arcade", + "toolCount": 9, + "authType": "oauth2" }, { "id": "SlackApi", "label": "Slack API", "version": "1.0.0", "category": "social", + "type": "arcade_starter", "toolCount": 73, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Spotify", "label": "Spotify", "version": "1.0.2", "category": "entertainment", + "type": "arcade", "toolCount": 13, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "SquareupApi", "label": "SquareUp API", "version": "4.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 286, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Stripe", "label": "Stripe", - "version": "1.0.1", + "version": "1.0.2", "category": "payments", + "type": "arcade", "toolCount": 15, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "StripeApi", "label": "Stripe API", "version": "1.0.0", "category": "payments", + "type": "arcade_starter", "toolCount": 220, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "Test2", "label": "Test2", "version": "0.1.0", "category": "development", + "type": "arcade", "toolCount": 6, "authType": "none" }, @@ -742,24 +781,25 @@ "label": "TickTick API", "version": "1.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 11, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "TrelloApi", "label": "Trello API", "version": "3.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 246, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "UpclickApi", - "label": "UpclickApi", + "label": "ClickUp API", "version": "0.1.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 7, "authType": "oauth2" }, @@ -768,89 +808,90 @@ "label": "Vercel API", "version": "1.0.0", "category": "development", + "type": "arcade_starter", "toolCount": 194, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "Walmart", "label": "Walmart", "version": "3.0.1", "category": "search", + "type": "arcade", "toolCount": 2, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "WeaviateApi", "label": "Weaviate API", "version": "2.0.0", "category": "development", + "type": "arcade_starter", "toolCount": 81, - "authType": "none", - "type": "arcade_starter" + "authType": "none" }, { "id": "Web", "label": "Web", "version": "2.0.1", "category": "development", + "type": "arcade", "toolCount": 6, "authType": "none" }, { "id": "X", "label": "X", - "version": "1.1.1", + "version": "1.3.1", "category": "social", - "toolCount": 7, - "authType": "oauth2", - "type": "arcade" + "type": "arcade", + "toolCount": 8, + "authType": "oauth2" }, { "id": "XeroApi", "label": "Xero API", "version": "2.0.0", "category": "productivity", + "type": "arcade_starter", "toolCount": 153, - "authType": "oauth2", - "type": "arcade_starter" + "authType": "oauth2" }, { "id": "Youtube", "label": "Youtube", - "version": "3.1.2", + "version": "3.1.4", "category": "search", + "type": "arcade", "toolCount": 2, - "authType": "none", - "type": "arcade" + "authType": "none" }, { "id": "Zendesk", "label": "Zendesk", "version": "0.3.1", "category": "customer-support", + "type": "arcade", "toolCount": 6, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" }, { "id": "ZohoBooksApi", "label": "Zoho Books API", - "version": "0.0.0", + "version": "1.0.0", "category": "payments", - "toolCount": 0, - "authType": "none", - "type": "arcade_starter" + "type": "arcade_starter", + "toolCount": 511, + "authType": "oauth2" }, { "id": "Zoom", "label": "Zoom", "version": "1.0.1", "category": "social", + "type": "arcade", "toolCount": 2, - "authType": "oauth2", - "type": "arcade" + "authType": "oauth2" } ] -} +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/linear.json b/toolkit-docs-generator/data/toolkits/linear.json index 0e2e58baf..4f6ee92ab 100644 --- a/toolkit-docs-generator/data/toolkits/linear.json +++ b/toolkit-docs-generator/data/toolkits/linear.json @@ -1,7 +1,7 @@ { "id": "Linear", "label": "Linear", - "version": "3.2.0", + "version": "3.2.1", "description": "Arcade tools designed for LLMs to interact with Linear", "metadata": { "category": "productivity", @@ -9,20 +9,25 @@ "isBYOC": false, "isPro": false, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/productivity/linear", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/productivity/linear", "isComingSoon": false, "isHidden": false }, "auth": { "type": "oauth2", "providerId": "linear", - "allScopes": ["comments:create", "issues:create", "read", "write"] + "allScopes": [ + "comments:create", + "issues:create", + "read", + "write" + ] }, "tools": [ { "name": "AddComment", "qualifiedName": "Linear.AddComment", - "fullyQualifiedName": "Linear.AddComment@3.2.0", + "fullyQualifiedName": "Linear.AddComment@3.2.1", "description": "Add a comment to an issue.", "parameters": [ { @@ -45,7 +50,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["comments:create"] + "scopes": [ + "comments:create" + ] }, "secrets": [], "secretsInfo": [], @@ -63,7 +70,7 @@ "required": true }, "body": { - "value": "This is a comment on the issue. **Important:** Please review this.", + "value": "Thanks for the report — I can reproduce this on macOS 12.4.\n\nReproduction steps:\n1. Open the app\n2. Click on Dashboard > Reports\n3. Select \"Generate PDF\"\n\nExpected: PDF generates successfully\nObserved: App crashes with error `TypeError: undefined is not a function`\n\nI'll investigate and post updates here. For now, can someone from the backend team verify whether recent changes to the PDF generator could cause this? @backend-team\n\nAcceptance criteria:\n- No crash when generating PDF\n- PDF contains all expected sections\n\nI'll attach logs in a follow-up comment.", "type": "string", "required": true } @@ -76,7 +83,7 @@ { "name": "AddProjectComment", "qualifiedName": "Linear.AddProjectComment", - "fullyQualifiedName": "Linear.AddProjectComment@3.2.0", + "fullyQualifiedName": "Linear.AddProjectComment@3.2.1", "description": "Add a comment to a project's document content.\n\nIMPORTANT: Due to Linear API limitations, comments created via the API will NOT\nappear visually anchored inline in the document (no yellow highlight on text).\nThe comment will be stored and can be retrieved via list_project_comments, but\nit will appear in the comments panel rather than inline in the document.\n\nFor true inline comments that are visually anchored to text, users should create\nthem directly in the Linear UI by selecting text and adding a comment.\n\nThe quoted_text parameter stores metadata about what text the comment references,\nwhich is useful for context even though the comment won't be visually anchored.", "parameters": [ { @@ -115,7 +122,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["comments:create"] + "scopes": [ + "comments:create" + ] }, "secrets": [], "secretsInfo": [], @@ -128,17 +137,17 @@ "toolName": "Linear.AddProjectComment", "parameters": { "project": { - "value": "proj-12345", + "value": "prj_01F8Z6Q9X3ABCD", "type": "string", "required": true }, "body": { - "value": "This is a comment about the project.", + "value": "I've reviewed the timeline section and noticed the dates for Milestone 2 and Milestone 3 overlap. Suggested updates:\n\n- Move Milestone 3 start to 2026-03-01\n- Confirm dependencies with engineering\n\nPlease confirm or propose an alternate date. @alice, can you take a look?", "type": "string", "required": true }, "quoted_text": { - "value": "Project milestones must be met by Q3.", + "value": "Milestone 2: Design complete (2026-02-15) — Milestone 3: Development begins (2026-02-10)", "type": "string", "required": false }, @@ -156,7 +165,7 @@ { "name": "AddProjectToInitiative", "qualifiedName": "Linear.AddProjectToInitiative", - "fullyQualifiedName": "Linear.AddProjectToInitiative@3.2.0", + "fullyQualifiedName": "Linear.AddProjectToInitiative@3.2.1", "description": "Link a project to an initiative.\n\nBoth initiative and project can be specified by ID or name.\nIf a name is provided, fuzzy matching is used to resolve it.", "parameters": [ { @@ -187,7 +196,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -200,12 +211,12 @@ "toolName": "Linear.AddProjectToInitiative", "parameters": { "initiative": { - "value": "Initiative Alpha", + "value": "Quarterly Roadmap Q2 2026", "type": "string", "required": true }, "project": { - "value": "Project Beta", + "value": "Authentication Revamp", "type": "string", "required": true }, @@ -223,7 +234,7 @@ { "name": "ArchiveInitiative", "qualifiedName": "Linear.ArchiveInitiative", - "fullyQualifiedName": "Linear.ArchiveInitiative@3.2.0", + "fullyQualifiedName": "Linear.ArchiveInitiative@3.2.1", "description": "Archive an initiative.\n\nArchived initiatives are hidden from default views but can be restored.", "parameters": [ { @@ -246,7 +257,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -259,7 +272,7 @@ "toolName": "Linear.ArchiveInitiative", "parameters": { "initiative": { - "value": "2023_Q3_Marketing_Plan", + "value": "COMM-2026-Q2-Platform-Upgrade", "type": "string", "required": true }, @@ -277,7 +290,7 @@ { "name": "ArchiveIssue", "qualifiedName": "Linear.ArchiveIssue", - "fullyQualifiedName": "Linear.ArchiveIssue@3.2.0", + "fullyQualifiedName": "Linear.ArchiveIssue@3.2.1", "description": "Archive an issue.\n\nArchived issues are hidden from default views but can be restored.", "parameters": [ { @@ -292,7 +305,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -305,7 +320,7 @@ "toolName": "Linear.ArchiveIssue", "parameters": { "issue": { - "value": "ISSUE-123", + "value": "ISSUE-1234", "type": "string", "required": true } @@ -318,7 +333,7 @@ { "name": "ArchiveProject", "qualifiedName": "Linear.ArchiveProject", - "fullyQualifiedName": "Linear.ArchiveProject@3.2.0", + "fullyQualifiedName": "Linear.ArchiveProject@3.2.1", "description": "Archive a project.\n\nArchived projects are hidden from default views but can be restored.", "parameters": [ { @@ -341,7 +356,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -354,7 +371,7 @@ "toolName": "Linear.ArchiveProject", "parameters": { "project": { - "value": "example-project-123", + "value": "proj_98765", "type": "string", "required": true }, @@ -372,7 +389,7 @@ { "name": "CreateInitiative", "qualifiedName": "Linear.CreateInitiative", - "fullyQualifiedName": "Linear.CreateInitiative@3.2.0", + "fullyQualifiedName": "Linear.CreateInitiative@3.2.1", "description": "Create a new Linear initiative.\n\nInitiatives are high-level strategic goals that group related projects.", "parameters": [ { @@ -418,7 +435,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -431,22 +450,22 @@ "toolName": "Linear.CreateInitiative", "parameters": { "name": { - "value": "Expand Market Presence", + "value": "Expand Enterprise Integration Platform", "type": "string", "required": true }, "description": { - "value": "### Goal\nIncrease our market penetration in the following regions:\n- North America\n- Europe\n\n### Expected Outcomes\n- 20% increase in sales\n- Improved brand recognition", + "value": "Build and launch v2 of the enterprise integration platform to support SSO, real-time data sync, and developer SDKs.\n\nObjectives:\n- Add SAML and SCIM SSO\n- Implement real-time data synchronization\n- Deliver SDKs and developer documentation\n\nSuccess metrics: onboard 3 pilot customers and reduce integration time by 50%", "type": "string", "required": false }, "status": { - "value": "in progress", + "value": "planned", "type": "string", "required": false }, "target_date": { - "value": "2024-12-31", + "value": "2026-12-31", "type": "string", "required": false } @@ -459,7 +478,7 @@ { "name": "CreateIssue", "qualifiedName": "Linear.CreateIssue", - "fullyQualifiedName": "Linear.CreateIssue@3.2.0", + "fullyQualifiedName": "Linear.CreateIssue@3.2.1", "description": "Create a new Linear issue with validation.\n\nWhen assignee is None or '@me', the issue is assigned to the authenticated user.\nAll entity references (team, assignee, labels, state, project, cycle, parent)\nare validated before creation. If an entity is not found, suggestions are\nreturned to help correct the input.", "parameters": [ { @@ -508,7 +527,13 @@ "type": "string", "required": false, "description": "Issue priority. Default is None (no priority).", - "enum": ["none", "urgent", "high", "medium", "low"], + "enum": [ + "none", + "urgent", + "high", + "medium", + "low" + ], "inferrable": true }, { @@ -587,7 +612,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["issues:create"] + "scopes": [ + "issues:create" + ] }, "secrets": [], "secretsInfo": [], @@ -600,17 +627,17 @@ "toolName": "Linear.CreateIssue", "parameters": { "team": { - "value": "Engineering", + "value": "mobile-team", "type": "string", "required": true }, "title": { - "value": "Fix login bug", + "value": "Crash on launch when offline", "type": "string", "required": true }, "description": { - "value": "There is an issue with the login functionality that needs to be addressed. Please check the backend logs for more details.", + "value": "Steps to reproduce:\n1. Disable network\n2. Launch app\n3. Observe crash\n\nExpected: App should show offline screen and not crash.\n\nAdditional info: Device: iPhone 12, iOS 16.4. Repro rate: ~100%.", "type": "string", "required": false }, @@ -620,57 +647,61 @@ "required": false }, "labels_to_add": { - "value": ["bug", " urgent"], + "value": [ + "crash", + "high-impact", + "needs-triage" + ], "type": "array", "required": false }, "priority": { - "value": "high", + "value": "High", "type": "string", "required": false }, "state": { - "value": "In Progress", + "value": "To Do", "type": "string", "required": false }, "project": { - "value": "User Authentication", + "value": "mobile-redesign", "type": "string", "required": false }, "cycle": { - "value": "Q4-2023", + "value": "Sprint 12", "type": "string", "required": false }, "parent_issue": { - "value": null, + "value": "PROJ-456", "type": "string", "required": false }, "estimate": { - "value": 5, + "value": 3, "type": "integer", "required": false }, "due_date": { - "value": "2023-11-01", + "value": "2026-03-01", "type": "string", "required": false }, "attachment_url": { - "value": "https://example.com/screenshot.png", + "value": "https://example.com/crash-log.txt", "type": "string", "required": false }, "attachment_title": { - "value": "Login Bug Screenshot", + "value": "Crash log (latest run)", "type": "string", "required": false }, "auto_accept_matches": { - "value": false, + "value": true, "type": "boolean", "required": false } @@ -683,7 +714,7 @@ { "name": "CreateIssueRelation", "qualifiedName": "Linear.CreateIssueRelation", - "fullyQualifiedName": "Linear.CreateIssueRelation@3.2.0", + "fullyQualifiedName": "Linear.CreateIssueRelation@3.2.1", "description": "Create a relation between two issues.\n\nRelation types define the relationship from the source issue's perspective:\n- blocks: Source issue blocks the related issue\n- blockedBy: Source issue is blocked by the related issue\n- duplicate: Source issue is a duplicate of the related issue\n- related: Issues are related (bidirectional)", "parameters": [ { @@ -707,14 +738,21 @@ "type": "string", "required": true, "description": "Type of relation to create.", - "enum": ["blocks", "blockedBy", "duplicate", "related"], + "enum": [ + "blocks", + "blockedBy", + "duplicate", + "related" + ], "inferrable": true } ], "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -750,7 +788,7 @@ { "name": "CreateProject", "qualifiedName": "Linear.CreateProject", - "fullyQualifiedName": "Linear.CreateProject@3.2.0", + "fullyQualifiedName": "Linear.CreateProject@3.2.1", "description": "Create a new Linear project.\n\nTeam is validated before creation. If team is not found, suggestions are\nreturned to help correct the input. Lead is validated if provided.", "parameters": [ { @@ -836,7 +874,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -849,27 +889,27 @@ "toolName": "Linear.CreateProject", "parameters": { "name": { - "value": "New Product Launch", + "value": "Mobile App Redesign", "type": "string", "required": true }, "team": { - "value": "Marketing", + "value": "Mobile Team", "type": "string", "required": true }, "description": { - "value": "This project focuses on the launch of our new product line.", + "value": "Redesign mobile app to improve onboarding conversion and performance.", "type": "string", "required": false }, "content": { - "value": "# Project Overview\nThis document outlines the strategy and timeline for the product launch.", + "value": "# Mobile App Redesign\n\nGoals:\n- Improve onboarding conversion\n- Reduce app launch time\n- Update visual language to match web\n\nMilestones:\n1. Design mocks\n2. Implementation\n3. Beta testing & launch\n\nAcceptance Criteria:\n- Onboarding conversion increases by 15%\n- Launch time under 2s on target devices\n", "type": "string", "required": false }, "state": { - "value": "active", + "value": "In Progress", "type": "string", "required": false }, @@ -879,17 +919,17 @@ "required": false }, "start_date": { - "value": "2023-11-01", + "value": "2026-03-01", "type": "string", "required": false }, "target_date": { - "value": "2024-01-15", + "value": "2026-06-30", "type": "string", "required": false }, "auto_accept_matches": { - "value": false, + "value": true, "type": "boolean", "required": false } @@ -902,7 +942,7 @@ { "name": "CreateProjectUpdate", "qualifiedName": "Linear.CreateProjectUpdate", - "fullyQualifiedName": "Linear.CreateProjectUpdate@3.2.0", + "fullyQualifiedName": "Linear.CreateProjectUpdate@3.2.1", "description": "Create a project status update.\n\nProject updates are posts that communicate progress, blockers, or status\nchanges to stakeholders. They appear in the project's Updates tab and\ncan include a health status indicator.", "parameters": [ { @@ -926,14 +966,20 @@ "type": "string", "required": false, "description": "Project health status. Default is None (no change).", - "enum": ["onTrack", "atRisk", "offTrack"], + "enum": [ + "onTrack", + "atRisk", + "offTrack" + ], "inferrable": true } ], "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -946,17 +992,17 @@ "toolName": "Linear.CreateProjectUpdate", "parameters": { "project_id": { - "value": "proj_123456", + "value": "proj_1234567890abcdef", "type": "string", "required": true }, "body": { - "value": "## Update on Project Progress\n\nWe have made significant progress this week. The new features are nearing completion and we are on track for the launch. \n\n**Blockers:** \n- Awaiting feedback from the design team on UI components.\n\n**Next Steps:** \n- Finalize testing by end of the week.", + "value": "### Weekly Project Update\n\nSummary: Completed initial API integration and UI mockups.\n\nProgress:\n- Implemented authentication endpoints.\n- Created dashboard UI components and merged two PRs.\n\nBlockers:\n- Waiting on design assets for the reports page (dependent ticket #234).\n\nNext steps:\n1. Finalize designs and implement reports backend.\n2. Begin end-to-end testing and address any remaining bugs.\n\nIf you have questions, please @design or @backend for details.", "type": "string", "required": true }, "health": { - "value": "On Track", + "value": "at_risk", "type": "string", "required": false } @@ -969,7 +1015,7 @@ { "name": "GetCycle", "qualifiedName": "Linear.GetCycle", - "fullyQualifiedName": "Linear.GetCycle@3.2.0", + "fullyQualifiedName": "Linear.GetCycle@3.2.1", "description": "Get detailed information about a specific Linear cycle.", "parameters": [ { @@ -984,7 +1030,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -997,7 +1045,7 @@ "toolName": "Linear.GetCycle", "parameters": { "cycle_id": { - "value": "abc123", + "value": "c_01G1A2B3C4D5E6F7G8H9", "type": "string", "required": true } @@ -1010,7 +1058,7 @@ { "name": "GetInitiative", "qualifiedName": "Linear.GetInitiative", - "fullyQualifiedName": "Linear.GetInitiative@3.2.0", + "fullyQualifiedName": "Linear.GetInitiative@3.2.1", "description": "Get detailed information about a specific Linear initiative.\n\nSupports lookup by ID or name (with fuzzy matching for name).", "parameters": [ { @@ -1026,7 +1074,10 @@ "type": "string", "required": false, "description": "How to look up the initiative. Default is id.", - "enum": ["id", "name"], + "enum": [ + "id", + "name" + ], "inferrable": true }, { @@ -1049,7 +1100,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1062,12 +1115,12 @@ "toolName": "Linear.GetInitiative", "parameters": { "value": { - "value": "12345", + "value": "Mobile Redesign Initiative", "type": "string", "required": true }, "lookup_by": { - "value": "id", + "value": "name", "type": "string", "required": false }, @@ -1090,7 +1143,7 @@ { "name": "GetInitiativeDescription", "qualifiedName": "Linear.GetInitiativeDescription", - "fullyQualifiedName": "Linear.GetInitiativeDescription@3.2.0", + "fullyQualifiedName": "Linear.GetInitiativeDescription@3.2.1", "description": "Get an initiative's full description with pagination support.\n\nUse this tool when you need the complete description of an initiative that\nwas truncated in the get_initiative response. Supports chunked reading for\nvery large descriptions.", "parameters": [ { @@ -1121,7 +1174,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1134,7 +1189,7 @@ "toolName": "Linear.GetInitiativeDescription", "parameters": { "initiative_id": { - "value": "12345", + "value": "init_01H3Z8K6Q9J4A2B7C0D1E2F3G", "type": "string", "required": true }, @@ -1144,7 +1199,7 @@ "required": false }, "limit": { - "value": 1500, + "value": 2000, "type": "integer", "required": false } @@ -1157,7 +1212,7 @@ { "name": "GetIssue", "qualifiedName": "Linear.GetIssue", - "fullyQualifiedName": "Linear.GetIssue@3.2.0", + "fullyQualifiedName": "Linear.GetIssue@3.2.1", "description": "Get detailed information about a specific Linear issue.\n\nAccepts either the issue UUID or the human-readable identifier (like TOO-123).", "parameters": [ { @@ -1204,7 +1259,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1237,7 +1294,7 @@ "required": false }, "include_children": { - "value": true, + "value": false, "type": "boolean", "required": false } @@ -1250,7 +1307,7 @@ { "name": "GetNotifications", "qualifiedName": "Linear.GetNotifications", - "fullyQualifiedName": "Linear.GetNotifications@3.2.0", + "fullyQualifiedName": "Linear.GetNotifications@3.2.1", "description": "Get the authenticated user's notifications.\n\nReturns notifications including issue mentions, comments, assignments,\nand state changes.", "parameters": [ { @@ -1281,7 +1338,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1299,12 +1358,12 @@ "required": false }, "limit": { - "value": 15, + "value": 10, "type": "integer", "required": false }, "end_cursor": { - "value": "abc123", + "value": "cursor_eyJpZCI6IjEyMyIsImV4dCI6MX0", "type": "string", "required": false } @@ -1317,7 +1376,7 @@ { "name": "GetProject", "qualifiedName": "Linear.GetProject", - "fullyQualifiedName": "Linear.GetProject@3.2.0", + "fullyQualifiedName": "Linear.GetProject@3.2.1", "description": "Get detailed information about a specific Linear project.\n\nSupports lookup by ID, slug_id, or name (with fuzzy matching for name).", "parameters": [ { @@ -1333,7 +1392,11 @@ "type": "string", "required": false, "description": "How to look up the project. Default is id.", - "enum": ["id", "slug_id", "name"], + "enum": [ + "id", + "slug_id", + "name" + ], "inferrable": true }, { @@ -1364,7 +1427,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1377,12 +1442,12 @@ "toolName": "Linear.GetProject", "parameters": { "value": { - "value": "proj-1234", + "value": "Mobile App", "type": "string", "required": true }, "lookup_by": { - "value": "id", + "value": "name", "type": "string", "required": false }, @@ -1410,7 +1475,7 @@ { "name": "GetProjectDescription", "qualifiedName": "Linear.GetProjectDescription", - "fullyQualifiedName": "Linear.GetProjectDescription@3.2.0", + "fullyQualifiedName": "Linear.GetProjectDescription@3.2.1", "description": "Get a project's full description with pagination support.\n\nUse this tool when you need the complete description of a project that\nwas truncated in the get_project response. Supports chunked reading for\nvery large descriptions.", "parameters": [ { @@ -1441,7 +1506,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1454,7 +1521,7 @@ "toolName": "Linear.GetProjectDescription", "parameters": { "project_id": { - "value": "proj-1234", + "value": "web-platform", "type": "string", "required": true }, @@ -1477,7 +1544,7 @@ { "name": "GetRecentActivity", "qualifiedName": "Linear.GetRecentActivity", - "fullyQualifiedName": "Linear.GetRecentActivity@3.2.0", + "fullyQualifiedName": "Linear.GetRecentActivity@3.2.1", "description": "Get the authenticated user's recent issue activity.\n\nReturns issues the user has recently created or been assigned to\nwithin the specified time period.", "parameters": [ { @@ -1500,7 +1567,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1513,7 +1582,7 @@ "toolName": "Linear.GetRecentActivity", "parameters": { "days": { - "value": 15, + "value": 14, "type": "integer", "required": false }, @@ -1531,7 +1600,7 @@ { "name": "GetTeam", "qualifiedName": "Linear.GetTeam", - "fullyQualifiedName": "Linear.GetTeam@3.2.0", + "fullyQualifiedName": "Linear.GetTeam@3.2.1", "description": "Get detailed information about a specific Linear team.\n\nSupports lookup by ID, key (like TOO, ENG), or name (with fuzzy matching).", "parameters": [ { @@ -1547,7 +1616,11 @@ "type": "string", "required": false, "description": "How to look up the team. Default is id.", - "enum": ["id", "key", "name"], + "enum": [ + "id", + "key", + "name" + ], "inferrable": true }, { @@ -1562,7 +1635,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1575,12 +1650,12 @@ "toolName": "Linear.GetTeam", "parameters": { "value": { - "value": "ENG", + "value": "Engineering Team", "type": "string", "required": true }, "lookup_by": { - "value": "key", + "value": "name", "type": "string", "required": false }, @@ -1598,7 +1673,7 @@ { "name": "LinkGithubToIssue", "qualifiedName": "Linear.LinkGithubToIssue", - "fullyQualifiedName": "Linear.LinkGithubToIssue@3.2.0", + "fullyQualifiedName": "Linear.LinkGithubToIssue@3.2.1", "description": "Link a GitHub PR, commit, or issue to a Linear issue.\n\nAutomatically detects the artifact type from the URL and generates\nan appropriate title if not provided.", "parameters": [ { @@ -1629,7 +1704,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -1642,17 +1719,17 @@ "toolName": "Linear.LinkGithubToIssue", "parameters": { "issue": { - "value": "PROJECT-123", + "value": "L-123", "type": "string", "required": true }, "github_url": { - "value": "https://github.com/user/repo/pull/456", + "value": "https://github.com/example-org/example-repo/pull/42", "type": "string", "required": true }, "title": { - "value": "Linking PR to Linear Issue", + "value": "GitHub PR #42: Add user settings page", "type": "string", "required": false } @@ -1665,7 +1742,7 @@ { "name": "ListComments", "qualifiedName": "Linear.ListComments", - "fullyQualifiedName": "Linear.ListComments@3.2.0", + "fullyQualifiedName": "Linear.ListComments@3.2.1", "description": "List comments on an issue.\n\nReturns comments with user info, timestamps, and reply threading info.", "parameters": [ { @@ -1696,7 +1773,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1709,17 +1788,17 @@ "toolName": "Linear.ListComments", "parameters": { "issue": { - "value": "ISSUE-12345", + "value": "ISSUE-123", "type": "string", "required": true }, "limit": { - "value": 20, + "value": 10, "type": "integer", "required": false }, "end_cursor": { - "value": null, + "value": "cursor_eyJpZCI6IjEyMyJ9", "type": "string", "required": false } @@ -1732,7 +1811,7 @@ { "name": "ListCycles", "qualifiedName": "Linear.ListCycles", - "fullyQualifiedName": "Linear.ListCycles@3.2.0", + "fullyQualifiedName": "Linear.ListCycles@3.2.1", "description": "List Linear cycles, optionally filtered by team and status.\n\nCycles are time-boxed iterations (like sprints) for organizing work.", "parameters": [ { @@ -1779,7 +1858,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1792,7 +1873,7 @@ "toolName": "Linear.ListCycles", "parameters": { "team": { - "value": "team_123", + "value": "team_backend", "type": "string", "required": false }, @@ -1807,12 +1888,12 @@ "required": false }, "limit": { - "value": 10, + "value": 25, "type": "integer", "required": false }, "end_cursor": { - "value": "abc123", + "value": "cursor_abc123", "type": "string", "required": false } @@ -1825,7 +1906,7 @@ { "name": "ListInitiatives", "qualifiedName": "Linear.ListInitiatives", - "fullyQualifiedName": "Linear.ListInitiatives@3.2.0", + "fullyQualifiedName": "Linear.ListInitiatives@3.2.1", "description": "List Linear initiatives, optionally filtered by keywords and other criteria.\n\nReturns all initiatives when no filters provided, or filtered results when\nkeywords or other filters are specified.", "parameters": [ { @@ -1871,7 +1952,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -1884,7 +1967,7 @@ "toolName": "Linear.ListInitiatives", "parameters": { "keywords": { - "value": "development", + "value": "API migration", "type": "string", "required": false }, @@ -1899,7 +1982,7 @@ "required": false }, "end_cursor": { - "value": "abc123", + "value": "cursor_abc123", "type": "string", "required": false } @@ -1912,7 +1995,7 @@ { "name": "ListIssues", "qualifiedName": "Linear.ListIssues", - "fullyQualifiedName": "Linear.ListIssues@3.2.0", + "fullyQualifiedName": "Linear.ListIssues@3.2.1", "description": "List Linear issues, optionally filtered by keywords and other criteria.\n\nReturns all issues when no filters provided, or filtered results when\nkeywords or other filters are specified.", "parameters": [ { @@ -1952,7 +2035,13 @@ "type": "string", "required": false, "description": "Filter by priority level. Default is None.", - "enum": ["none", "urgent", "high", "medium", "low"], + "enum": [ + "none", + "urgent", + "high", + "medium", + "low" + ], "inferrable": true }, { @@ -1999,7 +2088,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -2012,17 +2103,17 @@ "toolName": "Linear.ListIssues", "parameters": { "keywords": { - "value": "bug fix", + "value": "login error timeout", "type": "string", "required": false }, "team": { - "value": "development", + "value": "backend-team", "type": "string", "required": false }, "state": { - "value": "in progress", + "value": "In Progress", "type": "string", "required": false }, @@ -2037,17 +2128,17 @@ "required": false }, "label": { - "value": "urgent", + "value": "bug", "type": "string", "required": false }, "project": { - "value": "website redesign", + "value": "Website Redesign", "type": "string", "required": false }, "created_after": { - "value": "2023-01-01", + "value": "2026-01-01", "type": "string", "required": false }, @@ -2057,7 +2148,7 @@ "required": false }, "end_cursor": { - "value": "abc123", + "value": "YXJyYXljb25uZWN0aW9uOjI1", "type": "string", "required": false } @@ -2070,7 +2161,7 @@ { "name": "ListLabels", "qualifiedName": "Linear.ListLabels", - "fullyQualifiedName": "Linear.ListLabels@3.2.0", + "fullyQualifiedName": "Linear.ListLabels@3.2.1", "description": "List available issue labels in the workspace.\n\nReturns labels that can be applied to issues. Use label IDs or names\nwhen creating or updating issues.", "parameters": [ { @@ -2085,7 +2176,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -2098,7 +2191,7 @@ "toolName": "Linear.ListLabels", "parameters": { "limit": { - "value": 30, + "value": 25, "type": "integer", "required": false } @@ -2111,7 +2204,7 @@ { "name": "ListProjectComments", "qualifiedName": "Linear.ListProjectComments", - "fullyQualifiedName": "Linear.ListProjectComments@3.2.0", + "fullyQualifiedName": "Linear.ListProjectComments@3.2.1", "description": "List comments on a project's document content.\n\nReturns comments with user info, timestamps, quoted text for inline comments,\nand reply threading info. Replies are nested under their parent comments.\n\nUse comment_filter to control which comments are returned:\n- only_quoted (default): Only comments attached to a quote in the text\n- only_unquoted: Only comments not attached to a particular quote\n- all: All comments regardless of being attached to a quote or not", "parameters": [ { @@ -2127,7 +2220,11 @@ "type": "string", "required": false, "description": "Filter which comments to return. Default is only_quoted.", - "enum": ["only_quoted", "only_unquoted", "all"], + "enum": [ + "only_quoted", + "only_unquoted", + "all" + ], "inferrable": true }, { @@ -2166,7 +2263,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -2179,12 +2278,12 @@ "toolName": "Linear.ListProjectComments", "parameters": { "project": { - "value": "12345", + "value": "proj_1234567890", "type": "string", "required": true }, "comment_filter": { - "value": "only_unquoted", + "value": "all", "type": "string", "required": false }, @@ -2199,7 +2298,7 @@ "required": false }, "end_cursor": { - "value": "abc123", + "value": "cursor_eyJpZCI6IjEyMyJ9", "type": "string", "required": false }, @@ -2217,7 +2316,7 @@ { "name": "ListProjects", "qualifiedName": "Linear.ListProjects", - "fullyQualifiedName": "Linear.ListProjects@3.2.0", + "fullyQualifiedName": "Linear.ListProjects@3.2.1", "description": "List Linear projects, optionally filtered by keywords and other criteria.\n\nReturns all projects when no filters provided, or filtered results when\nkeywords or other filters are specified.", "parameters": [ { @@ -2272,7 +2371,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -2285,7 +2386,7 @@ "toolName": "Linear.ListProjects", "parameters": { "keywords": { - "value": "development", + "value": "authentication bug", "type": "string", "required": false }, @@ -2295,22 +2396,22 @@ "required": false }, "team": { - "value": "engineering", + "value": "Platform", "type": "string", "required": false }, "created_after": { - "value": "2022-01-01", + "value": "2024-01-01", "type": "string", "required": false }, "limit": { - "value": 10, + "value": 25, "type": "integer", "required": false }, "end_cursor": { - "value": null, + "value": "YXJyYXljb25uZWN0aW9uOjI=", "type": "string", "required": false } @@ -2323,7 +2424,7 @@ { "name": "ListTeams", "qualifiedName": "Linear.ListTeams", - "fullyQualifiedName": "Linear.ListTeams@3.2.0", + "fullyQualifiedName": "Linear.ListTeams@3.2.1", "description": "List Linear teams, optionally filtered by keywords and other criteria.\n\nReturns all teams when no filters provided, or filtered results when\nkeywords or other filters are specified.", "parameters": [ { @@ -2370,7 +2471,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -2383,17 +2486,17 @@ "toolName": "Linear.ListTeams", "parameters": { "keywords": { - "value": "development", + "value": "design", "type": "string", "required": false }, "include_archived": { - "value": true, + "value": false, "type": "boolean", "required": false }, "created_after": { - "value": "2022-01-01", + "value": "2023-01-01", "type": "string", "required": false }, @@ -2403,7 +2506,7 @@ "required": false }, "end_cursor": { - "value": "cursor_value_123", + "value": "cursor_abc123", "type": "string", "required": false } @@ -2416,7 +2519,7 @@ { "name": "ListWorkflowStates", "qualifiedName": "Linear.ListWorkflowStates", - "fullyQualifiedName": "Linear.ListWorkflowStates@3.2.0", + "fullyQualifiedName": "Linear.ListWorkflowStates@3.2.1", "description": "List available workflow states in the workspace.\n\nReturns workflow states that can be used for issue transitions.\nStates are team-specific and have different types.", "parameters": [ { @@ -2454,7 +2557,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -2467,17 +2572,17 @@ "toolName": "Linear.ListWorkflowStates", "parameters": { "team": { - "value": "development", + "value": "engineering", "type": "string", "required": false }, "state_type": { - "value": "in_progress", + "value": "started", "type": "string", "required": false }, "limit": { - "value": 20, + "value": 25, "type": "integer", "required": false } @@ -2490,7 +2595,7 @@ { "name": "ManageIssueSubscription", "qualifiedName": "Linear.ManageIssueSubscription", - "fullyQualifiedName": "Linear.ManageIssueSubscription@3.2.0", + "fullyQualifiedName": "Linear.ManageIssueSubscription@3.2.1", "description": "Subscribe to or unsubscribe from an issue's notifications.", "parameters": [ { @@ -2513,7 +2618,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["issues:create"] + "scopes": [ + "issues:create" + ] }, "secrets": [], "secretsInfo": [], @@ -2526,7 +2633,7 @@ "toolName": "Linear.ManageIssueSubscription", "parameters": { "issue": { - "value": "ISSUE-1234", + "value": "ISSUE-123", "type": "string", "required": true }, @@ -2544,7 +2651,7 @@ { "name": "ReplyToComment", "qualifiedName": "Linear.ReplyToComment", - "fullyQualifiedName": "Linear.ReplyToComment@3.2.0", + "fullyQualifiedName": "Linear.ReplyToComment@3.2.1", "description": "Reply to an existing comment on an issue.\n\nCreates a threaded reply to the specified parent comment.", "parameters": [ { @@ -2575,7 +2682,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["comments:create"] + "scopes": [ + "comments:create" + ] }, "secrets": [], "secretsInfo": [], @@ -2588,17 +2697,17 @@ "toolName": "Linear.ReplyToComment", "parameters": { "issue": { - "value": "ISSUE-1234", + "value": "ISSUE-123", "type": "string", "required": true }, "parent_comment_id": { - "value": "COMMENT-5678", + "value": "cmt_456789", "type": "string", "required": true }, "body": { - "value": "Thanks for your feedback! I appreciate your insights.", + "value": "Thanks for the update — I’ll take a look and follow up with a fix by EOD.\n\nCould you confirm whether this also affects the mobile build?", "type": "string", "required": true } @@ -2611,7 +2720,7 @@ { "name": "ReplyToProjectComment", "qualifiedName": "Linear.ReplyToProjectComment", - "fullyQualifiedName": "Linear.ReplyToProjectComment@3.2.0", + "fullyQualifiedName": "Linear.ReplyToProjectComment@3.2.1", "description": "Reply to an existing comment on a project document.\n\nCreates a threaded reply to the specified parent comment.", "parameters": [ { @@ -2650,7 +2759,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["comments:create"] + "scopes": [ + "comments:create" + ] }, "secrets": [], "secretsInfo": [], @@ -2663,22 +2774,22 @@ "toolName": "Linear.ReplyToProjectComment", "parameters": { "project": { - "value": "project-123", + "value": "proj_alpha-123", "type": "string", "required": true }, "parent_comment_id": { - "value": "comment-456", + "value": "cmt_9876543210", "type": "string", "required": true }, "body": { - "value": "Thanks for your feedback! Here's my response in Markdown: **bold text** and *italic text*.", + "value": "Thanks for the update — this looks great. I added a suggestion to adjust the timeline:\n\n- Move the QA phase to week 3\n- Add integration tests for the payments module\n\nPlease let me know if you want me to implement the changes.", "type": "string", "required": true }, "auto_accept_matches": { - "value": false, + "value": true, "type": "boolean", "required": false } @@ -2691,7 +2802,7 @@ { "name": "TransitionIssueState", "qualifiedName": "Linear.TransitionIssueState", - "fullyQualifiedName": "Linear.TransitionIssueState@3.2.0", + "fullyQualifiedName": "Linear.TransitionIssueState@3.2.1", "description": "Transition a Linear issue to a new workflow state.\n\nThe target state is validated against the team's available states.", "parameters": [ { @@ -2722,7 +2833,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -2745,7 +2858,7 @@ "required": true }, "auto_accept_matches": { - "value": false, + "value": true, "type": "boolean", "required": false } @@ -2758,7 +2871,7 @@ { "name": "UpdateComment", "qualifiedName": "Linear.UpdateComment", - "fullyQualifiedName": "Linear.UpdateComment@3.2.0", + "fullyQualifiedName": "Linear.UpdateComment@3.2.1", "description": "Update an existing comment.", "parameters": [ { @@ -2781,7 +2894,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -2794,12 +2909,12 @@ "toolName": "Linear.UpdateComment", "parameters": { "comment_id": { - "value": "abc123", + "value": "cmt_01H8ZNZQ2X9K7ABCDEF123456", "type": "string", "required": true }, "body": { - "value": "This is an updated comment with **Markdown** formatting.", + "value": "Updated comment:\n\n- Addressed the issue with the authentication flow\n- Added unit tests and updated docs\n\nPlease review and merge when ready.", "type": "string", "required": true } @@ -2812,7 +2927,7 @@ { "name": "UpdateInitiative", "qualifiedName": "Linear.UpdateInitiative", - "fullyQualifiedName": "Linear.UpdateInitiative@3.2.0", + "fullyQualifiedName": "Linear.UpdateInitiative@3.2.1", "description": "Update a Linear initiative with partial updates.\n\nOnly fields that are explicitly provided will be updated.", "parameters": [ { @@ -2866,7 +2981,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -2879,27 +2996,27 @@ "toolName": "Linear.UpdateInitiative", "parameters": { "initiative_id": { - "value": "abc123", + "value": "ini_01H2Z3ABCDE4FGHIJKL", "type": "string", "required": true }, "name": { - "value": "Revamp User Interface", + "value": "Q3 Customer Onboarding Improvements", "type": "string", "required": false }, "description": { - "value": "### Major overhaul of the current UI\n- Improve accessibility\n- Modernize design", + "value": "Redesign the customer onboarding flow to reduce time-to-first-success.\n\n- Streamline signup\n- Improve onboarding emails\n- Add interactive tutorial\n\nGoals: Increase activation rate by 20% and reduce churn within 30 days.", "type": "string", "required": false }, "status": { - "value": "In Progress", + "value": "in_progress", "type": "string", "required": false }, "target_date": { - "value": "2023-12-15", + "value": "2026-09-30", "type": "string", "required": false } @@ -2912,7 +3029,7 @@ { "name": "UpdateIssue", "qualifiedName": "Linear.UpdateIssue", - "fullyQualifiedName": "Linear.UpdateIssue@3.2.0", + "fullyQualifiedName": "Linear.UpdateIssue@3.2.1", "description": "Update a Linear issue with partial updates.\n\nOnly fields that are explicitly provided will be updated. All entity\nreferences are validated before update.", "parameters": [ { @@ -2970,7 +3087,13 @@ "type": "string", "required": false, "description": "New priority. Only updated if provided.", - "enum": ["none", "urgent", "high", "medium", "low"], + "enum": [ + "none", + "urgent", + "high", + "medium", + "low" + ], "inferrable": true }, { @@ -3041,7 +3164,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["issues:create"] + "scopes": [ + "issues:create" + ] }, "secrets": [], "secretsInfo": [], @@ -3059,12 +3184,12 @@ "required": true }, "title": { - "value": "Update API Documentation", + "value": "Improve onboarding flow for new users", "type": "string", "required": false }, "description": { - "value": "Please ensure that all endpoints are documented thoroughly. **Markdown** formatting should be used.", + "value": "Revise the onboarding flow to reduce time to first value. Add a step-by-step checklist, update tutorial links, and include A/B test variations.", "type": "string", "required": false }, @@ -3074,32 +3199,37 @@ "required": false }, "labels_to_add": { - "value": ["documentation", "api"], + "value": [ + "onboarding", + "priority-high" + ], "type": "array", "required": false }, "labels_to_remove": { - "value": ["needs review"], + "value": [ + "needs-research" + ], "type": "array", "required": false }, "priority": { - "value": "high", + "value": "High", "type": "string", "required": false }, "state": { - "value": "in progress", + "value": "In Progress", "type": "string", "required": false }, "project": { - "value": "API Docs", + "value": "website-redesign", "type": "string", "required": false }, "cycle": { - "value": "2023-Q4", + "value": "Sprint 12", "type": "string", "required": false }, @@ -3109,17 +3239,17 @@ "required": false }, "due_date": { - "value": "2023-12-01", + "value": "2026-03-15", "type": "string", "required": false }, "attachment_url": { - "value": "https://example.com/documents/api-overview.pdf", + "value": "https://example.com/designs/onboarding-v2", "type": "string", "required": false }, "attachment_title": { - "value": "API Overview Document", + "value": "Onboarding V2 Designs", "type": "string", "required": false }, @@ -3137,7 +3267,7 @@ { "name": "UpdateProject", "qualifiedName": "Linear.UpdateProject", - "fullyQualifiedName": "Linear.UpdateProject@3.2.0", + "fullyQualifiedName": "Linear.UpdateProject@3.2.1", "description": "Update a Linear project with partial updates.\n\nOnly fields that are explicitly provided will be updated. All entity\nreferences are validated before update.\n\nIMPORTANT: Updating the 'content' field will break any existing inline\ncomment anchoring. The comments will still exist and be retrievable via\nlist_project_comments, but they will no longer appear visually anchored\nto text in the Linear UI. The 'description' field can be safely updated\nwithout affecting inline comments.", "parameters": [ { @@ -3241,7 +3371,9 @@ "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["write"] + "scopes": [ + "write" + ] }, "secrets": [], "secretsInfo": [], @@ -3254,52 +3386,57 @@ "toolName": "Linear.UpdateProject", "parameters": { "project_id": { - "value": "proj-12345", + "value": "proj_123abc", "type": "string", "required": true }, "name": { - "value": "New Project Name", + "value": "Mobile App Onboarding Redesign", "type": "string", "required": false }, "description": { - "value": "This is a summary of the new project.", + "value": "Redesign of the mobile app onboarding flow to improve activation and reduce drop-off. Focus on simplified steps and clearer CTAs.", "type": "string", "required": false }, "content": { - "value": "# Project Document\n\nThis is the content of the project document.", + "value": "# Mobile Onboarding Redesign\n\n## Goals\n- Increase activation rate by 20%\n- Reduce time-to-first-action\n\n## Scope\n- New signup flow\n- Progressive profiling\n- Updated welcome screens\n\n## Notes\nDesigns in Figma: https://www.figma.com/file/example\n", "type": "string", "required": false }, "state": { - "value": "active", + "value": "started", "type": "string", "required": false }, "lead": { - "value": "lead@example.com", + "value": "jane.doe@example.com", "type": "string", "required": false }, "start_date": { - "value": "2023-10-01", + "value": "2026-03-01", "type": "string", "required": false }, "target_date": { - "value": "2023-12-01", + "value": "2026-09-30", "type": "string", "required": false }, "teams_to_add": { - "value": ["team1", "team2"], + "value": [ + "mobile-team", + "ux-research" + ], "type": "array", "required": false }, "teams_to_remove": { - "value": ["team3"], + "value": [ + "legacy-team" + ], "type": "array", "required": false }, @@ -3317,13 +3454,15 @@ { "name": "WhoAmI", "qualifiedName": "Linear.WhoAmI", - "fullyQualifiedName": "Linear.WhoAmI@3.2.0", + "fullyQualifiedName": "Linear.WhoAmI@3.2.1", "description": "Get the authenticated user's profile and team memberships.\n\nReturns the current user's information including their name, email,\norganization, and the teams they belong to.", "parameters": [], "auth": { "providerId": "linear", "providerType": "oauth2", - "scopes": ["read"] + "scopes": [ + "read" + ] }, "secrets": [], "secretsInfo": [], @@ -3341,17 +3480,9 @@ } } ], - "documentationChunks": [ - { - "type": "markdown", - "location": "custom_section", - "position": "after", - "header": "## Auth", - "content": "## Auth\n\nThe Arcade Linear MCP Server uses the [Linear auth provider](/references/auth-providers/linear) to connect to users' Linear accounts. Please refer to the [Linear auth provider](/references/auth-providers/linear) documentation to learn how to configure auth." - } - ], + "documentationChunks": [], "customImports": [], "subPages": [], - "generatedAt": "2026-01-26T17:37:08.616Z", + "generatedAt": "2026-02-19T22:06:53.860Z", "summary": "The Linear MCP Server provides a comprehensive set of tools for interacting with Linear's issue tracking, project management, and team collaboration features. With this MCP Server, you can:\n\n- **Issues**: Create, update, search, and manage issues with full support for labels, priorities, assignments, and workflow states\n- **Projects**: Create and manage projects, track milestones, and post status updates\n- **Initiatives**: Manage high-level strategic goals and link projects to initiatives\n- **Teams**: Access team information and member details\n- **Cycles**: Work with time-boxed iterations (sprints) for organizing work\n- **Comments**: Add, update, and reply to comments on issues\n- **GitHub Integration**: Link GitHub PRs, commits, and issues to Linear issues\n- **User Context**: Access notifications, recent activity, and authenticated user information" -} +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/microsoftonedrive.json b/toolkit-docs-generator/data/toolkits/microsoftonedrive.json new file mode 100644 index 000000000..385950d6c --- /dev/null +++ b/toolkit-docs-generator/data/toolkits/microsoftonedrive.json @@ -0,0 +1,599 @@ +{ + "id": "MicrosoftOnedrive", + "label": "Microsoft OneDrive", + "version": "0.1.3", + "description": "Arcade.dev LLM tools for Microsoft OneDrive", + "metadata": { + "category": "productivity", + "iconUrl": "https://design-system.arcade.dev/icons/microsoft-onedrive.svg", + "isBYOC": false, + "isPro": false, + "type": "arcade", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/productivity/microsoft-onedrive", + "isComingSoon": false, + "isHidden": false + }, + "auth": { + "type": "oauth2", + "providerId": "microsoft", + "allScopes": [ + "Files.Read", + "Files.ReadWrite", + "User.Read" + ] + }, + "tools": [ + { + "name": "CopyItem", + "qualifiedName": "MicrosoftOnedrive.CopyItem", + "fullyQualifiedName": "MicrosoftOnedrive.CopyItem@0.1.3", + "description": "Copy a file or folder. Returns a completed item or an operation id.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the item to copy.", + "enum": null, + "inferrable": true + }, + { + "name": "destination_folder_id", + "type": "string", + "required": false, + "description": "Optional destination folder ID. If omitted, the item is copied to the same folder.", + "enum": null, + "inferrable": true + }, + { + "name": "new_name", + "type": "string", + "required": false, + "description": "Optional new name for the copied item.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Copy status and result." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.CopyItem", + "parameters": { + "item_id": { + "value": "0123456789ABCDEF!123", + "type": "string", + "required": true + }, + "destination_folder_id": { + "value": "folder_9876543210!456", + "type": "string", + "required": false + }, + "new_name": { + "value": "Report Q1 - Copy.xlsx", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateFolder", + "qualifiedName": "MicrosoftOnedrive.CreateFolder", + "fullyQualifiedName": "MicrosoftOnedrive.CreateFolder@0.1.3", + "description": "Create a new folder in OneDrive.", + "parameters": [ + { + "name": "folder_name", + "type": "string", + "required": true, + "description": "The name of the new folder.", + "enum": null, + "inferrable": true + }, + { + "name": "parent_folder_id", + "type": "string", + "required": false, + "description": "Optional parent folder ID. If omitted, creates in the root.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The created folder metadata." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.CreateFolder", + "parameters": { + "folder_name": { + "value": "Project Alpha", + "type": "string", + "required": true + }, + "parent_folder_id": { + "value": "0123456789ABCDEF!123", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateShareLink", + "qualifiedName": "MicrosoftOnedrive.CreateShareLink", + "fullyQualifiedName": "MicrosoftOnedrive.CreateShareLink@0.1.3", + "description": "Create a share link for a OneDrive item.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the file or folder to share.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Sharing link information." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.CreateShareLink", + "parameters": { + "item_id": { + "value": "01A2B3C4D5E6F7G8H9!12345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteItem", + "qualifiedName": "MicrosoftOnedrive.DeleteItem", + "fullyQualifiedName": "MicrosoftOnedrive.DeleteItem@0.1.3", + "description": "Delete a file or folder from OneDrive.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the file or folder to delete.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Deletion confirmation." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.DeleteItem", + "parameters": { + "item_id": { + "value": "01ABCD234EFGH567!123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCopyStatus", + "qualifiedName": "MicrosoftOnedrive.GetCopyStatus", + "fullyQualifiedName": "MicrosoftOnedrive.GetCopyStatus@0.1.3", + "description": "Check status of an async copy operation using the full monitor URL.", + "parameters": [ + { + "name": "operation_url", + "type": "string", + "required": true, + "description": "The full monitor URL returned by copy_item (Location/Operation-Location header).", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Copy operation status." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.GetCopyStatus", + "parameters": { + "operation_url": { + "value": "https://graph.microsoft.com/v1.0/drives/b!g6A1b2C3d4E5f6G7h8I9j/items/01A2B3C4D5E6F7G8H9/copy/monitor/3f2504e0-4f89-11d3-9a0c-0305e82c3301", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetMyDrive", + "qualifiedName": "MicrosoftOnedrive.GetMyDrive", + "fullyQualifiedName": "MicrosoftOnedrive.GetMyDrive@0.1.3", + "description": "Get metadata about the user's OneDrive (id, name, quota, owner).", + "parameters": [], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The OneDrive drive information." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.GetMyDrive", + "parameters": {}, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetSharedWithMe", + "qualifiedName": "MicrosoftOnedrive.GetSharedWithMe", + "fullyQualifiedName": "MicrosoftOnedrive.GetSharedWithMe@0.1.3", + "description": "List files shared with the current user.", + "parameters": [ + { + "name": "limit", + "type": "integer", + "required": false, + "description": "The number of items to list. Defaults to 100, max is 500.", + "enum": null, + "inferrable": true + }, + { + "name": "next_token", + "type": "string", + "required": false, + "description": "The next_token value returned by a previous request.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The items shared with the current user." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.GetSharedWithMe", + "parameters": { + "limit": { + "value": 50, + "type": "integer", + "required": false + }, + "next_token": { + "value": "eyJzaWduIjoiYWJjMTIzIn0=", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListFolderItems", + "qualifiedName": "MicrosoftOnedrive.ListFolderItems", + "fullyQualifiedName": "MicrosoftOnedrive.ListFolderItems@0.1.3", + "description": "List files and folders in a OneDrive folder. Lists root if folder_id is omitted.", + "parameters": [ + { + "name": "folder_id", + "type": "string", + "required": false, + "description": "The ID of the folder to list items from. If not provided, lists items from the root.", + "enum": null, + "inferrable": true + }, + { + "name": "limit", + "type": "integer", + "required": false, + "description": "The number of items to list. Defaults to 100, max is 500.", + "enum": null, + "inferrable": true + }, + { + "name": "next_token", + "type": "string", + "required": false, + "description": "The next_token value returned by a previous request.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The items from the specified folder or root." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.ListFolderItems", + "parameters": { + "folder_id": { + "value": "01F1ABCDEF2GHIJKL3MNOPQR", + "type": "string", + "required": false + }, + "limit": { + "value": 50, + "type": "integer", + "required": false + }, + "next_token": { + "value": "AaBbCc12345==", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MoveItem", + "qualifiedName": "MicrosoftOnedrive.MoveItem", + "fullyQualifiedName": "MicrosoftOnedrive.MoveItem@0.1.3", + "description": "Move a file or folder to a new location in OneDrive.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the item to move.", + "enum": null, + "inferrable": true + }, + { + "name": "new_parent_id", + "type": "string", + "required": true, + "description": "The ID of the destination folder.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The updated item metadata." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.MoveItem", + "parameters": { + "item_id": { + "value": "01234567-89ab-cdef-0123-456789abcdef", + "type": "string", + "required": true + }, + "new_parent_id": { + "value": "fedcba98-7654-3210-fedc-ba9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SearchItems", + "qualifiedName": "MicrosoftOnedrive.SearchItems", + "fullyQualifiedName": "MicrosoftOnedrive.SearchItems@0.1.3", + "description": "Search for files and folders in the user's OneDrive.\n\nIt may take a few seconds to minutes for the search index to update with newly created items.", + "parameters": [ + { + "name": "keywords", + "type": "string", + "required": true, + "description": "Keywords to search for items in OneDrive.", + "enum": null, + "inferrable": true + }, + { + "name": "limit", + "type": "integer", + "required": false, + "description": "The number of items to list. Defaults to 50, max is 200.", + "enum": null, + "inferrable": true + }, + { + "name": "next_token", + "type": "string", + "required": false, + "description": "The next_token value returned by a previous request.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Search results from OneDrive." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.SearchItems", + "parameters": { + "keywords": { + "value": "project plan budget Q1", + "type": "string", + "required": true + }, + "limit": { + "value": 25, + "type": "integer", + "required": false + }, + "next_token": { + "value": "abc123def456ghi789", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "WhoAmI", + "qualifiedName": "MicrosoftOnedrive.WhoAmI", + "fullyQualifiedName": "MicrosoftOnedrive.WhoAmI@0.1.3", + "description": "Get information about the current user and their OneDrive environment.", + "parameters": [], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "User.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Get comprehensive user profile and OneDrive environment information." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftOnedrive.WhoAmI", + "parameters": {}, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + } + ], + "documentationChunks": [ + { + "type": "markdown", + "location": "header", + "position": "before", + "content": "## Overview\n\nArcade.dev LLM tools for Microsoft OneDrive that enable LLM-driven workflows to interact with a user's OneDrive: manage files and folders, create share links, query and list content, and inspect the user's drive and account metadata.\n\n**Capabilities**\n- Manage files and folders: create folders, copy, move, and delete items (CreateFolder, CopyItem, MoveItem, DeleteItem).\n- List and search content: list folder contents or search the user's drive (ListFolderItems, SearchItems). Note: search index updates can take seconds to minutes.\n- Sharing: create share links for items (CreateShareLink).\n- Monitor async operations: check copy operation status using the full monitor URL (GetCopyStatus).\n- Drive & identity metadata: get drive info, items shared with the user, and user/drive context (GetMyDrive, GetSharedWithMe, WhoAmI).\n\n**OAuth**\n- Provider: microsoft\n- Required scopes: Files.Read, Files.ReadWrite, User.Read\nAuthentication is OAuth2 via Microsoft; issued access tokens must include the listed scopes to use the toolkit's APIs." + } + ], + "customImports": [], + "subPages": [], + "generatedAt": "2026-02-19T22:06:26.585Z", + "summary": "Microsoft OneDrive toolkit enables LLM-driven automation of a user's OneDrive. It provides programmatic file and folder management, sharing, search, and account introspection.\n\n**Capabilities**\n- Unified file and folder management: create, copy, move, delete, list, and retrieve metadata (supports async copy operations and monitoring).\n- Search and discovery: indexed search and listing of items shared with the user (index updates may take seconds to minutes).\n- Sharing and access control: generate share links and manage item accessibility.\n- Account and environment introspection: retrieve drive metadata and user information.\n\n**OAuth**\nProvider: microsoft\nScopes: Files.Read, Files.ReadWrite, User.Read" +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/microsoftpowerpoint.json b/toolkit-docs-generator/data/toolkits/microsoftpowerpoint.json new file mode 100644 index 000000000..5f5e1ca84 --- /dev/null +++ b/toolkit-docs-generator/data/toolkits/microsoftpowerpoint.json @@ -0,0 +1,508 @@ +{ + "id": "MicrosoftPowerpoint", + "label": "Microsoft PowerPoint", + "version": "0.1.0", + "description": "Arcade.dev LLM tools for Microsoft PowerPoint", + "metadata": { + "category": "productivity", + "iconUrl": "https://design-system.arcade.dev/icons/microsoft-powerpoint.svg", + "isBYOC": false, + "isPro": false, + "type": "arcade", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/productivity/microsoft-powerpoint", + "isComingSoon": false, + "isHidden": false + }, + "auth": { + "type": "oauth2", + "providerId": "microsoft", + "allScopes": [ + "Files.Read", + "Files.ReadWrite", + "User.Read" + ] + }, + "tools": [ + { + "name": "CreatePresentation", + "qualifiedName": "MicrosoftPowerpoint.CreatePresentation", + "fullyQualifiedName": "MicrosoftPowerpoint.CreatePresentation@0.1.0", + "description": "Create a new PowerPoint presentation in OneDrive.\n\nThe presentation will be created with a title slide containing the specified title.", + "parameters": [ + { + "name": "title", + "type": "string", + "required": true, + "description": "The title for the new presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "parent_folder_id", + "type": "string", + "required": false, + "description": "The ID of the folder to create the presentation in. If not provided, the presentation will be created in the root of the user's OneDrive.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The created presentation details." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftPowerpoint.CreatePresentation", + "parameters": { + "title": { + "value": "Q4 Marketing Strategy", + "type": "string", + "required": true + }, + "parent_folder_id": { + "value": "01ABCD234EF56789!123", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateSlide", + "qualifiedName": "MicrosoftPowerpoint.CreateSlide", + "fullyQualifiedName": "MicrosoftPowerpoint.CreateSlide@0.1.0", + "description": "Append a new slide to the end of an existing PowerPoint presentation in OneDrive.\n\nThe slide will be added at the end of the presentation. Both title and body\nare optional to support layouts like BLANK or TITLE_ONLY.\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation to add a slide to.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_title", + "type": "string", + "required": false, + "description": "The title for the new slide. Optional for layouts like BLANK.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_body", + "type": "string", + "required": false, + "description": "The body content for the new slide. Supports markdown: **bold**, *italic*, __underline__, and bullet points (- item, indented with spaces for nesting). Optional for layouts like TITLE_ONLY or BLANK.", + "enum": null, + "inferrable": true + }, + { + "name": "layout", + "type": "string", + "required": false, + "description": "The layout to use for the slide. For TWO_CONTENT layout, use create_two_content_slide.", + "enum": [ + "TITLE", + "TITLE_AND_CONTENT", + "SECTION_HEADER", + "TITLE_ONLY", + "BLANK", + "CONTENT_WITH_CAPTION", + "PICTURE_WITH_CAPTION", + "TITLE_AND_VERTICAL_TEXT", + "VERTICAL_TITLE_AND_TEXT" + ], + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The updated presentation details with new slide info." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftPowerpoint.CreateSlide", + "parameters": { + "item_id": { + "value": "3f8b9c2e-6a4f-4d2e-9f1a-2b5c7d8e9a01", + "type": "string", + "required": true + }, + "slide_title": { + "value": "Quarterly Results — Q1 2026", + "type": "string", + "required": false + }, + "slide_body": { + "value": "**Key Highlights**\n\n- Revenue up 12% year-over-year\n - *Product A* growth: 20%\n - __Service B__ expansion ongoing\n- Customer churn reduced to 3%\n\n**Next Steps**\n- Expand to new markets\n- Invest in R&D", + "type": "string", + "required": false + }, + "layout": { + "value": "TITLE_AND_BODY", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateTwoContentSlide", + "qualifiedName": "MicrosoftPowerpoint.CreateTwoContentSlide", + "fullyQualifiedName": "MicrosoftPowerpoint.CreateTwoContentSlide@0.1.0", + "description": "Append a TWO_CONTENT slide with side-by-side content areas to the end of a PowerPoint presentation.\n\nThis layout is useful for comparisons, pros/cons lists, or any content that\nbenefits from a two-column layout.\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation to add a slide to.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_title", + "type": "string", + "required": false, + "description": "The title for the new slide.", + "enum": null, + "inferrable": true + }, + { + "name": "left_body", + "type": "string", + "required": false, + "description": "Content for the left side of the slide. Supports markdown: **bold**, *italic*, __underline__, and bullet points (- item, indented with spaces for nesting).", + "enum": null, + "inferrable": true + }, + { + "name": "right_body", + "type": "string", + "required": false, + "description": "Content for the right side of the slide. Supports markdown: **bold**, *italic*, __underline__, and bullet points (- item, indented with spaces for nesting).", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The updated presentation details with new slide info." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftPowerpoint.CreateTwoContentSlide", + "parameters": { + "item_id": { + "value": "01234567-89ab-cdef-0123-456789abcdef", + "type": "string", + "required": true + }, + "slide_title": { + "value": "Cloud Deployment: Pros and Cons", + "type": "string", + "required": false + }, + "left_body": { + "value": "- **Pros**\n - Fast setup\n - *Low cost*\n - __Easy to scale__\n- Use cases:\n - Web apps\n - Mobile apps\n- Notes:\n - **Monitoring** and *automation* recommended", + "type": "string", + "required": false + }, + "right_body": { + "value": "- **Cons**\n - Higher latency in some regions\n - *Vendor lock-in* risk\n - __Ongoing costs__ can accumulate\n- Alternatives:\n - On-premise\n - Hybrid\n\n**Recommendation:** Start with a pilot, measure costs and performance, then scale.", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetAllSlideNotes", + "qualifiedName": "MicrosoftPowerpoint.GetAllSlideNotes", + "fullyQualifiedName": "MicrosoftPowerpoint.GetAllSlideNotes@0.1.0", + "description": "Get all speaker notes from every slide in a PowerPoint presentation.\n\nReturns notes for all slides in one call, which is more efficient than\ncalling get_slide_notes for each slide individually. Notes are returned\nin markdown format.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "All speaker notes from the presentation." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftPowerpoint.GetAllSlideNotes", + "parameters": { + "item_id": { + "value": "3f1a2b4c-5678-90ab-cdef-1234567890ab", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetPresentationAsMarkdown", + "qualifiedName": "MicrosoftPowerpoint.GetPresentationAsMarkdown", + "fullyQualifiedName": "MicrosoftPowerpoint.GetPresentationAsMarkdown@0.1.0", + "description": "Get the content of a PowerPoint presentation as markdown.\n\nThis tool downloads the presentation and converts it to a markdown representation,\npreserving text content, tables, and chart data. Images and other media are\nrepresented as placeholders.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation to read.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The presentation content as markdown." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftPowerpoint.GetPresentationAsMarkdown", + "parameters": { + "item_id": { + "value": "1a2b3c4d-5e6f-7a8b-9c0d-ef1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetSlideNotes", + "qualifiedName": "MicrosoftPowerpoint.GetSlideNotes", + "fullyQualifiedName": "MicrosoftPowerpoint.GetSlideNotes@0.1.0", + "description": "Get the speaker notes from a specific slide in a PowerPoint presentation.\n\nSpeaker notes are returned in markdown format, preserving basic formatting\nlike bold, italic, and bullet points.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_index", + "type": "integer", + "required": true, + "description": "The 1-based index of the slide to get notes from.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The speaker notes for the specified slide." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftPowerpoint.GetSlideNotes", + "parameters": { + "item_id": { + "value": "1a2b3c4d-5e6f-7890-abcd-ef1234567890", + "type": "string", + "required": true + }, + "slide_index": { + "value": 3, + "type": "integer", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SetSlideNotes", + "qualifiedName": "MicrosoftPowerpoint.SetSlideNotes", + "fullyQualifiedName": "MicrosoftPowerpoint.SetSlideNotes@0.1.0", + "description": "Set or update the speaker notes on a specific slide in a PowerPoint presentation.\n\nNotes can be formatted using markdown:\n- **bold** for bold text\n- *italic* for italic text\n- __underline__ for underlined text\n- Lines starting with - or * become bullet points\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.\n- Indent with spaces for nested bullets", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_index", + "type": "integer", + "required": true, + "description": "The 1-based index of the slide to set notes on.", + "enum": null, + "inferrable": true + }, + { + "name": "notes", + "type": "string", + "required": true, + "description": "The speaker notes in markdown format. Supports **bold**, *italic*, __underline__, and bullet points (- or *).", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Confirmation of the notes update." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftPowerpoint.SetSlideNotes", + "parameters": { + "item_id": { + "value": "123e4567-e89b-12d3-a456-426614174000", + "type": "string", + "required": true + }, + "slide_index": { + "value": 3, + "type": "integer", + "required": true + }, + "notes": { + "value": "**Q2 Business Review**\n\n*Summary*\n\n- **Revenue** up 18% vs Q1\n- *Customer satisfaction* improved across all segments\n - __NPS__ increased by 12 points\n- Product highlights:\n - Feature A adoption: 45%\n - Feature B: reduced churn by 7%\n\nTalking points:\n- Start with the key wins and tie them to strategic initiatives.\n- Mention the NPS improvement and call out the team responsible.\n- Close with next steps and owner assignments.\n\nQ&A: Reserve 10 minutes at the end.", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "WhoAmI", + "qualifiedName": "MicrosoftPowerpoint.WhoAmI", + "fullyQualifiedName": "MicrosoftPowerpoint.WhoAmI@0.1.0", + "description": "Get information about the current user and their PowerPoint environment.", + "parameters": [], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "User.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Get comprehensive user profile and PowerPoint environment information." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftPowerpoint.WhoAmI", + "parameters": {}, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + } + ], + "documentationChunks": [ + { + "type": "markdown", + "location": "header", + "position": "before", + "content": "## Overview\n\nArcade.dev LLM tools for Microsoft PowerPoint enable programmatic creation and manipulation of PowerPoint presentations stored in OneDrive via Microsoft Graph. Use the toolkit to create presentations and slides, read and update speaker notes, export presentations to Markdown, and inspect the current user's PowerPoint environment.\n\n**Capabilities**\n\n- Create new presentations with a title slide in OneDrive.\n- Append slides (including TWO_CONTENT layout) and support resumable uploads for files >4 MB.\n- Read and write speaker notes in Markdown per slide or bulk (all slides at once).\n- Download and convert presentations to Markdown, preserving text, tables, and chart data (images represented as placeholders).\n- Query the current user and presentation environment (WhoAmI).\n\n**OAuth**\n\nProvider: microsoft\n\nScopes: Files.Read, Files.ReadWrite, User.Read" + } + ], + "customImports": [], + "subPages": [], + "generatedAt": "2026-02-19T22:06:57.146Z", + "summary": "Microsoft PowerPoint toolkit (Arcade.dev) connects to Microsoft via OAuth and enables programmatic creation, modification, and inspection of PowerPoint files stored in OneDrive. It supports creating presentations and appending slides with common layouts, reading and updating speaker notes, and exporting presentation content to Markdown for automation or review.\n\n**Capabilities**\n- Create and modify presentations and slides, including common and two-column layouts, and append content programmatically.\n- Read, set, and batch-retrieve speaker notes in Markdown with basic formatting preserved.\n- Export/download presentations to Markdown (text, tables, chart data; media as placeholders) for downstream processing.\n- Handle large-file uploads with resumable sessions and best-effort concurrency checks.\n\n**OAuth**\nProvider: microsoft\nScopes: Files.Read, Files.ReadWrite, User.Read" +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/microsoftword.json b/toolkit-docs-generator/data/toolkits/microsoftword.json new file mode 100644 index 000000000..901b97f1e --- /dev/null +++ b/toolkit-docs-generator/data/toolkits/microsoftword.json @@ -0,0 +1,287 @@ +{ + "id": "MicrosoftWord", + "label": "Microsoft Word", + "version": "0.1.3", + "description": "Arcade.dev LLM tools for Microsoft Word", + "metadata": { + "category": "productivity", + "iconUrl": "https://design-system.arcade.dev/icons/microsoft-word.svg", + "isBYOC": false, + "isPro": false, + "type": "arcade", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/productivity/microsoft-word", + "isComingSoon": false, + "isHidden": false + }, + "auth": { + "type": "oauth2", + "providerId": "microsoft", + "allScopes": [ + "Files.Read", + "Files.ReadWrite", + "User.Read" + ] + }, + "tools": [ + { + "name": "CreateDocument", + "qualifiedName": "MicrosoftWord.CreateDocument", + "fullyQualifiedName": "MicrosoftWord.CreateDocument@0.1.3", + "description": "Create a new Word document in OneDrive (4MB upload limit). Optionally include text content.", + "parameters": [ + { + "name": "title", + "type": "string", + "required": true, + "description": "File name without extension, or with .docx. The .docx extension is normalized.", + "enum": null, + "inferrable": true + }, + { + "name": "text_content", + "type": "string", + "required": false, + "description": "Optional text content to include in the new document. If omitted, an empty document is created.", + "enum": null, + "inferrable": true + }, + { + "name": "folder_id", + "type": "string", + "required": false, + "description": "Optional parent folder ID. If omitted, the document is created in the root.", + "enum": null, + "inferrable": true + }, + { + "name": "conflict_behavior", + "type": "string", + "required": false, + "description": "Optional conflict behavior when a file with the same name exists. One of: fail, rename, replace.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The created Word document metadata." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftWord.CreateDocument", + "parameters": { + "title": { + "value": "Meeting Notes - Q1 Planning.docx", + "type": "string", + "required": true + }, + "text_content": { + "value": "Meeting attendees: Alice, Bob, Carol.\nAgenda:\n1. Q1 goals\n2. Budget allocation\n3. Action items and owners\n\nDecisions:\n- Approve budget with minor revisions.\n- Assign Bob to lead implementation.\n", + "type": "string", + "required": false + }, + "folder_id": { + "value": "01A2B3C4D5E6F7G8!12345", + "type": "string", + "required": false + }, + "conflict_behavior": { + "value": "rename", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetDocument", + "qualifiedName": "MicrosoftWord.GetDocument", + "fullyQualifiedName": "MicrosoftWord.GetDocument@0.1.3", + "description": "Get a Word document's metadata and content (supports only `.docx`). Returns the document content as Markdown by default, or just metadata when metadata_only is True.", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the Word document to retrieve.", + "enum": null, + "inferrable": true + }, + { + "name": "drive_id", + "type": "string", + "required": false, + "description": "Optional drive ID for shared items. If omitted, uses the user's default drive.", + "enum": null, + "inferrable": true + }, + { + "name": "metadata_only", + "type": "boolean", + "required": false, + "description": "If True, return only the document metadata without downloading the content. Defaults to False.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The Word document metadata and optionally its content." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftWord.GetDocument", + "parameters": { + "item_id": { + "value": "0b1a2c3d-4e5f-6789-abcd-ef0123456789", + "type": "string", + "required": true + }, + "drive_id": { + "value": "b!0r1v2e3IdExample", + "type": "string", + "required": false + }, + "metadata_only": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "InsertTextAtEnd", + "qualifiedName": "MicrosoftWord.InsertTextAtEnd", + "fullyQualifiedName": "MicrosoftWord.InsertTextAtEnd@0.1.3", + "description": "Append text to the end of a Word document (supports only `.docx`, 4MB limit).", + "parameters": [ + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the Word document to update.", + "enum": null, + "inferrable": true + }, + { + "name": "text_content", + "type": "string", + "required": true, + "description": "The text content to append to the document.", + "enum": null, + "inferrable": true + }, + { + "name": "drive_id", + "type": "string", + "required": false, + "description": "Optional drive ID for shared items. If omitted, uses the user's default drive.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Files.ReadWrite" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The updated Word document metadata." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftWord.InsertTextAtEnd", + "parameters": { + "item_id": { + "value": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "type": "string", + "required": true + }, + "text_content": { + "value": "Please find the updated section appended below:\n\n- Summary of changes\n- Next steps\n\nRegards,\nProject Team", + "type": "string", + "required": true + }, + "drive_id": { + "value": "b!3XyZ9aBcDeFgHiJkLMnOp", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "WhoAmI", + "qualifiedName": "MicrosoftWord.WhoAmI", + "fullyQualifiedName": "MicrosoftWord.WhoAmI@0.1.3", + "description": "Get information about the current user and their Microsoft Word environment.", + "parameters": [], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "User.Read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Get comprehensive user profile and Microsoft Word environment information." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "MicrosoftWord.WhoAmI", + "parameters": {}, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + } + ], + "documentationChunks": [ + { + "type": "markdown", + "location": "header", + "position": "before", + "content": "## Overview\n\nArcade.dev LLM tools for Microsoft Word that let an authenticated agent create, read, and modify .docx files stored in a user's OneDrive and query the current user/environment.\n\n**Capabilities**\n\n- Create a new Word document in OneDrive (4MB upload limit); optionally include initial text.\n- Retrieve a .docx document's metadata and content (returns content as Markdown by default; supports metadata_only=True).\n- Append text to the end of a .docx document (4MB limit).\n- Query information about the current user and their Microsoft Word environment (WhoAmI).\n\n**OAuth**\n\nProvider: microsoft\n\nScopes: Files.Read, Files.ReadWrite, User.Read" + } + ], + "customImports": [], + "subPages": [], + "generatedAt": "2026-02-19T22:07:01.217Z", + "summary": "Microsoft Word toolkit provides Arcade.dev LLM integrations for Microsoft Word through Microsoft Graph. It enables creating, reading, and appending .docx documents in OneDrive and querying user context to drive document workflows.\n\n**Capabilities**\n- Create and modify .docx files in OneDrive with content updates and append operations.\n- Retrieve document content or metadata; content is returned as Markdown by default.\n- Access user and environment information to support permission-aware flows.\n- Respect .docx-only support and a ~4MB per-file transfer limit for uploads/downloads.\n\n**OAuth**\nProvider: microsoft\nScopes: Files.Read, Files.ReadWrite, User.Read" +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/sharepoint.json b/toolkit-docs-generator/data/toolkits/sharepoint.json index 35c9c1569..46cde7d1a 100644 --- a/toolkit-docs-generator/data/toolkits/sharepoint.json +++ b/toolkit-docs-generator/data/toolkits/sharepoint.json @@ -1,7 +1,7 @@ { "id": "Sharepoint", "label": "Microsoft SharePoint", - "version": "0.4.1", + "version": "0.7.0", "description": "Arcade.dev LLM tools for Microsoft SharePoint", "metadata": { "category": "productivity", @@ -9,20 +9,763 @@ "isBYOC": false, "isPro": false, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/productivity/sharepoint", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/productivity/sharepoint", "isComingSoon": false, "isHidden": false }, "auth": { "type": "oauth2", "providerId": "microsoft", - "allScopes": ["Sites.Read.All", "User.Read"] + "allScopes": [ + "Sites.Read.All", + "Sites.ReadWrite.All", + "User.Read" + ] }, "tools": [ + { + "name": "CopyItem", + "qualifiedName": "Sharepoint.CopyItem", + "fullyQualifiedName": "Sharepoint.CopyItem@0.7.0", + "description": "Copy a file or folder. Returns a completed item or an operation id.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the drive where the item lives.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the item to copy.", + "enum": null, + "inferrable": true + }, + { + "name": "destination_folder_id", + "type": "string", + "required": false, + "description": "Optional destination folder ID. If omitted, the item is copied to the same folder.", + "enum": null, + "inferrable": true + }, + { + "name": "new_name", + "type": "string", + "required": false, + "description": "Optional new name for the copied item.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Copy status and result." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.CopyItem", + "parameters": { + "drive_id": { + "value": "b!a1B2c3D4e5F6g7H8I9J0", + "type": "string", + "required": true + }, + "item_id": { + "value": "01ABCDEF-1234-5678-90AB-CDEF12345678", + "type": "string", + "required": true + }, + "destination_folder_id": { + "value": "folder-9876543210", + "type": "string", + "required": false + }, + "new_name": { + "value": "Copied_Report_Q1_2026.docx", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateFolder", + "qualifiedName": "Sharepoint.CreateFolder", + "fullyQualifiedName": "Sharepoint.CreateFolder@0.7.0", + "description": "Create a new folder in a SharePoint drive.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the drive where the folder will be created.", + "enum": null, + "inferrable": true + }, + { + "name": "folder_name", + "type": "string", + "required": true, + "description": "The name of the new folder.", + "enum": null, + "inferrable": true + }, + { + "name": "parent_folder_id", + "type": "string", + "required": false, + "description": "Optional parent folder ID. If omitted, creates in the drive root.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The created folder metadata." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.CreateFolder", + "parameters": { + "drive_id": { + "value": "b!2a3f4c5e6d7890ab1c2d3e4f5g6h7i8", + "type": "string", + "required": true + }, + "folder_name": { + "value": "Project Documents", + "type": "string", + "required": true + }, + "parent_folder_id": { + "value": null, + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreatePresentation", + "qualifiedName": "Sharepoint.CreatePresentation", + "fullyQualifiedName": "Sharepoint.CreatePresentation@0.7.0", + "description": "Create a new PowerPoint presentation in a SharePoint drive.\n\nThe presentation will be created with a title slide containing the specified title.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the SharePoint drive to create the presentation in.", + "enum": null, + "inferrable": true + }, + { + "name": "title", + "type": "string", + "required": true, + "description": "The title for the new presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "folder_id", + "type": "string", + "required": false, + "description": "The ID of the folder to create the presentation in. If not provided, the presentation will be created in the root of the drive.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The created presentation details." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.CreatePresentation", + "parameters": { + "drive_id": { + "value": "b!4f3a2e1d6c5b4a8f9d0e123456789abc", + "type": "string", + "required": true + }, + "title": { + "value": "Q2 2026 Product Roadmap", + "type": "string", + "required": true + }, + "folder_id": { + "value": "01ABCD2345efgh!6789", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateShareLink", + "qualifiedName": "Sharepoint.CreateShareLink", + "fullyQualifiedName": "Sharepoint.CreateShareLink@0.7.0", + "description": "Create a share link for a SharePoint drive item.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the drive where the item lives.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the file or folder to share.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Sharing link information." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.CreateShareLink", + "parameters": { + "drive_id": { + "value": "b!8a1f3e5c2d4b6a7f9e0c", + "type": "string", + "required": true + }, + "item_id": { + "value": "01AB23CD45EF6789!234", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateSlide", + "qualifiedName": "Sharepoint.CreateSlide", + "fullyQualifiedName": "Sharepoint.CreateSlide@0.7.0", + "description": "Append a new slide to the end of an existing PowerPoint presentation in a SharePoint drive.\n\nThe slide will be added at the end of the presentation. Both title and body\nare optional to support layouts like BLANK or TITLE_ONLY.\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the SharePoint drive containing the presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation to add a slide to.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_title", + "type": "string", + "required": false, + "description": "The title for the new slide. Optional for layouts like BLANK.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_body", + "type": "string", + "required": false, + "description": "The body content for the new slide. Supports markdown: **bold**, *italic*, __underline__, and bullet points (- item, indented with spaces for nesting). Optional for layouts like TITLE_ONLY or BLANK.", + "enum": null, + "inferrable": true + }, + { + "name": "layout", + "type": "string", + "required": false, + "description": "The layout to use for the slide. For TWO_CONTENT layout, use create_two_content_slide.", + "enum": [ + "TITLE", + "TITLE_AND_CONTENT", + "SECTION_HEADER", + "TITLE_ONLY", + "BLANK", + "CONTENT_WITH_CAPTION", + "PICTURE_WITH_CAPTION", + "TITLE_AND_VERTICAL_TEXT", + "VERTICAL_TITLE_AND_TEXT" + ], + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The updated presentation details with new slide info." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.CreateSlide", + "parameters": { + "drive_id": { + "value": "d3f1c2b4-5e6f-7a89-b012-3456789abcde", + "type": "string", + "required": true + }, + "item_id": { + "value": "a1b2c3d4-5678-90ab-cdef-1234567890ab", + "type": "string", + "required": true + }, + "slide_title": { + "value": "Project Roadmap — Q2", + "type": "string", + "required": false + }, + "slide_body": { + "value": "Overview of the upcoming quarter:\n\n**Goals**\n- Increase user engagement\n - __Improve onboarding__\n - *Enhance tutorials*\n- Launch beta features\n\nNotes:\n- Timeline subject to change.", + "type": "string", + "required": false + }, + "layout": { + "value": "TITLE_AND_CONTENT", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateTwoContentSlide", + "qualifiedName": "Sharepoint.CreateTwoContentSlide", + "fullyQualifiedName": "Sharepoint.CreateTwoContentSlide@0.7.0", + "description": "Append a TWO_CONTENT slide with side-by-side content areas to the end of a SharePoint PowerPoint.\n\nThis layout is useful for comparisons, pros/cons lists, or any content that\nbenefits from a two-column layout.\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the SharePoint drive containing the presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation to add a slide to.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_title", + "type": "string", + "required": false, + "description": "The title for the new slide.", + "enum": null, + "inferrable": true + }, + { + "name": "left_body", + "type": "string", + "required": false, + "description": "Content for the left side of the slide. Supports markdown: **bold**, *italic*, __underline__, and bullet points (- item, indented with spaces for nesting).", + "enum": null, + "inferrable": true + }, + { + "name": "right_body", + "type": "string", + "required": false, + "description": "Content for the right side of the slide. Supports markdown: **bold**, *italic*, __underline__, and bullet points (- item, indented with spaces for nesting).", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The updated presentation details with new slide info." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.CreateTwoContentSlide", + "parameters": { + "drive_id": { + "value": "b!xYz12345_abcDEF67890", + "type": "string", + "required": true + }, + "item_id": { + "value": "01a2b3c4-d5e6-7f89-0abc-1def23456789", + "type": "string", + "required": true + }, + "slide_title": { + "value": "Product Comparison: Service A vs Service B", + "type": "string", + "required": false + }, + "left_body": { + "value": "**Service A**\n- **Pros**\n - Fast deployment\n - *Lower cost*\n - __Simple integration__\n- **Ideal for**\n - Small teams\n - Rapid prototypes", + "type": "string", + "required": false + }, + "right_body": { + "value": "**Service B**\n- **Pros**\n - Scalable architecture\n - *Advanced features*\n - __Enterprise-grade__\n- **Considerations**\n - Higher cost\n - Longer setup time\n - Requires admin access", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateWordDocument", + "qualifiedName": "Sharepoint.CreateWordDocument", + "fullyQualifiedName": "Sharepoint.CreateWordDocument@0.7.0", + "description": "Create a new Word document in a SharePoint drive (4MB upload limit). Optionally include text content.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the SharePoint drive to create the document in.", + "enum": null, + "inferrable": true + }, + { + "name": "title", + "type": "string", + "required": true, + "description": "File name without extension, or with .docx. The .docx extension is normalized.", + "enum": null, + "inferrable": true + }, + { + "name": "text_content", + "type": "string", + "required": false, + "description": "Optional text content to include in the new document. If omitted, an empty document is created.", + "enum": null, + "inferrable": true + }, + { + "name": "folder_id", + "type": "string", + "required": false, + "description": "Optional parent folder DriveItem ID. If omitted, the document is created in the root.", + "enum": null, + "inferrable": true + }, + { + "name": "conflict_behavior", + "type": "string", + "required": false, + "description": "Optional conflict behavior when a file with the same name exists. One of: fail, rename, replace.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The created Word document metadata." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.CreateWordDocument", + "parameters": { + "drive_id": { + "value": "b1a3f5e2-8c4d-4f6b-9a2c-7e5f8d123456", + "type": "string", + "required": true + }, + "title": { + "value": "Project Plan.docx", + "type": "string", + "required": true + }, + "text_content": { + "value": "Project Plan\n\nObjectives:\n- Increase sales by 10%\n- Launch new feature\n\nTimeline:\nQ2: Research\nQ3: Development\nQ4: Launch", + "type": "string", + "required": false + }, + "folder_id": { + "value": "01BX3456D7890EFGHIJKL", + "type": "string", + "required": false + }, + "conflict_behavior": { + "value": "rename", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteItem", + "qualifiedName": "Sharepoint.DeleteItem", + "fullyQualifiedName": "Sharepoint.DeleteItem@0.7.0", + "description": "Delete a file or folder from a SharePoint drive.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the drive where the item lives.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the file or folder to delete.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Deletion confirmation." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.DeleteItem", + "parameters": { + "drive_id": { + "value": "b!xYz12345_AbCdEfGhIjKlMnOpQrStUv", + "type": "string", + "required": true + }, + "item_id": { + "value": "01A2B3C4D5E6F7G8H9I!234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetAllSlideNotes", + "qualifiedName": "Sharepoint.GetAllSlideNotes", + "fullyQualifiedName": "Sharepoint.GetAllSlideNotes@0.7.0", + "description": "Get all speaker notes from every slide in a SharePoint PowerPoint presentation.\n\nReturns notes for all slides in one call, which is more efficient than\ncalling get_slide_notes for each slide individually. Notes are returned\nin markdown format.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the SharePoint drive containing the presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.Read.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "All speaker notes from the presentation." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.GetAllSlideNotes", + "parameters": { + "drive_id": { + "value": "b!f4a8c2d6-1234-4e56-9abc-0d1e2f3a4b5c", + "type": "string", + "required": true + }, + "item_id": { + "value": "01ABCDEF23456789!123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCopyStatus", + "qualifiedName": "Sharepoint.GetCopyStatus", + "fullyQualifiedName": "Sharepoint.GetCopyStatus@0.7.0", + "description": "Check status of an async copy operation using the full monitor URL.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the drive where the copy operation runs.", + "enum": null, + "inferrable": true + }, + { + "name": "operation_url", + "type": "string", + "required": true, + "description": "The full monitor URL returned by copy_item (Location/Operation-Location header). DO NOT PROVIDE ONLY THE OPERATION ID, BUT THE FULL URL.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.Read.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Copy operation status." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.GetCopyStatus", + "parameters": { + "drive_id": { + "value": "b!a1B2c3D4EfGhIjKlMnOpQrStUvWxYz", + "type": "string", + "required": true + }, + "operation_url": { + "value": "https://graph.microsoft.com/v1.0/drives/b!a1B2c3D4EfGhIjKlMnOpQrStUvWxYz/items/01ABCDEF23456789/copy/12345678-90ab-cdef-1234-567890abcdef", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, { "name": "GetDrivesFromSite", "qualifiedName": "Sharepoint.GetDrivesFromSite", - "fullyQualifiedName": "Sharepoint.GetDrivesFromSite@0.4.1", + "fullyQualifiedName": "Sharepoint.GetDrivesFromSite@0.7.0", "description": "Retrieve drives / document libraries from a SharePoint site.\n\nIf you have a site name, it is not necessary to call Sharepoint.SearchSites first. You can simply\ncall this tool with the site name / keywords.", "parameters": [ { @@ -37,22 +780,192 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The drives from the SharePoint site." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.GetDrivesFromSite", + "parameters": { + "site": { + "value": "https://contoso.sharepoint.com/sites/Marketing", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetItemsFromList", + "qualifiedName": "Sharepoint.GetItemsFromList", + "fullyQualifiedName": "Sharepoint.GetItemsFromList@0.7.0", + "description": "Retrieve items from a list in a SharePoint site.\n\nNote: The Microsoft Graph API does not offer endpoints to retrieve list item attachments.\nBecause of that, the only information we can get is whether the item has attachments or not.", + "parameters": [ + { + "name": "site", + "type": "string", + "required": true, + "description": "Site ID, SharePoint URL, or site name to get lists from. Prefer using a site ID whenever available for optimal performance.", + "enum": null, + "inferrable": true + }, + { + "name": "list_id", + "type": "string", + "required": true, + "description": "The ID of the list to get items from.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.Read.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The SharePoint list items." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.GetItemsFromList", + "parameters": { + "site": { + "value": "site-id-12345", + "type": "string", + "required": true + }, + "list_id": { + "value": "list-id-67890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetListsFromSite", + "qualifiedName": "Sharepoint.GetListsFromSite", + "fullyQualifiedName": "Sharepoint.GetListsFromSite@0.7.0", + "description": "Retrieve lists from a SharePoint site.", + "parameters": [ + { + "name": "site", + "type": "string", + "required": true, + "description": "Site ID, SharePoint URL, or site name to get lists from. Prefer using a site ID whenever available for optimal performance.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.Read.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The SharePoint site lists." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.GetListsFromSite", + "parameters": { + "site": { + "value": "https://contoso.sharepoint.com/sites/Marketing", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetPage", + "qualifiedName": "Sharepoint.GetPage", + "fullyQualifiedName": "Sharepoint.GetPage@0.7.0", + "description": "Retrieve metadata and the contents of a page in a SharePoint site.\n\nPage content is a list of Microsoft Sharepoint web part objects, such as text, images, banners,\nbuttons, etc.\n\nIf `include_page_content` is set to False, the tool will return only the page metadata.", + "parameters": [ + { + "name": "site", + "type": "string", + "required": true, + "description": "Site ID, SharePoint URL, or site name to retrieve base pages from. Prefer using a site ID whenever available for optimal performance", + "enum": null, + "inferrable": true + }, + { + "name": "page_id", + "type": "string", + "required": true, + "description": "The ID of the page to retrieve.", + "enum": null, + "inferrable": true + }, + { + "name": "include_page_content", + "type": "boolean", + "required": false, + "description": "Whether to include the page content in the response. Defaults to True. If set to False, the tool will return only the page metadata.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], "output": { "type": "json", - "description": "The drives from the SharePoint site." + "description": "The page from the SharePoint site." }, "documentationChunks": [], "codeExample": { - "toolName": "Sharepoint.GetDrivesFromSite", + "toolName": "Sharepoint.GetPage", "parameters": { "site": { - "value": "https://contoso.sharepoint.com/sites/Marketing", + "value": "site-12345", + "type": "string", + "required": true + }, + "page_id": { + "value": "page-67890", "type": "string", "required": true + }, + "include_page_content": { + "value": true, + "type": "boolean", + "required": false } }, "requiresAuth": true, @@ -61,24 +974,24 @@ } }, { - "name": "GetItemsFromList", - "qualifiedName": "Sharepoint.GetItemsFromList", - "fullyQualifiedName": "Sharepoint.GetItemsFromList@0.4.1", - "description": "Retrieve items from a list in a SharePoint site.\n\nNote: The Microsoft Graph API does not offer endpoints to retrieve list item attachments.\nBecause of that, the only information we can get is whether the item has attachments or not.", + "name": "GetPresentationAsMarkdown", + "qualifiedName": "Sharepoint.GetPresentationAsMarkdown", + "fullyQualifiedName": "Sharepoint.GetPresentationAsMarkdown@0.7.0", + "description": "Get the content of a PowerPoint presentation stored in a SharePoint drive as markdown.\n\nThis tool downloads the presentation and converts it to a markdown representation,\npreserving text content, tables, and chart data. Images and other media are\nrepresented as placeholders.", "parameters": [ { - "name": "site", + "name": "drive_id", "type": "string", "required": true, - "description": "Site ID, SharePoint URL, or site name to get lists from. Prefer using a site ID whenever available for optimal performance.", + "description": "The ID of the SharePoint drive containing the presentation.", "enum": null, "inferrable": true }, { - "name": "list_id", + "name": "item_id", "type": "string", "required": true, - "description": "The ID of the list to get items from.", + "description": "The ID of the PowerPoint presentation to read.", "enum": null, "inferrable": true } @@ -86,25 +999,27 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], "output": { "type": "json", - "description": "The SharePoint list items." + "description": "The presentation content as markdown." }, "documentationChunks": [], "codeExample": { - "toolName": "Sharepoint.GetItemsFromList", + "toolName": "Sharepoint.GetPresentationAsMarkdown", "parameters": { - "site": { - "value": "site-id-12345", + "drive_id": { + "value": "d9f3c7e2-4b8a-4c9a-9e4b-1f2a3b4c5d6e", "type": "string", "required": true }, - "list_id": { - "value": "list-id-67890", + "item_id": { + "value": "a12b34c5-678d-90ef-1234-56789abcdef0", "type": "string", "required": true } @@ -115,16 +1030,16 @@ } }, { - "name": "GetListsFromSite", - "qualifiedName": "Sharepoint.GetListsFromSite", - "fullyQualifiedName": "Sharepoint.GetListsFromSite@0.4.1", - "description": "Retrieve lists from a SharePoint site.", + "name": "GetSite", + "qualifiedName": "Sharepoint.GetSite", + "fullyQualifiedName": "Sharepoint.GetSite@0.7.0", + "description": "Retrieve information about a specific SharePoint site by its ID, URL, or name.", "parameters": [ { "name": "site", "type": "string", "required": true, - "description": "Site ID, SharePoint URL, or site name to get lists from. Prefer using a site ID whenever available for optimal performance.", + "description": "Site ID, SharePoint URL, or site name to search for.", "enum": null, "inferrable": true } @@ -132,20 +1047,22 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], "output": { "type": "json", - "description": "The SharePoint site lists." + "description": "The SharePoint site information." }, "documentationChunks": [], "codeExample": { - "toolName": "Sharepoint.GetListsFromSite", + "toolName": "Sharepoint.GetSite", "parameters": { "site": { - "value": "https://contoso.sharepoint.com/sites/Marketing", + "value": "https://example.sharepoint.com/sites/ProjectX", "type": "string", "required": true } @@ -156,32 +1073,101 @@ } }, { - "name": "GetPage", - "qualifiedName": "Sharepoint.GetPage", - "fullyQualifiedName": "Sharepoint.GetPage@0.4.1", - "description": "Retrieve metadata and the contents of a page in a SharePoint site.\n\nPage content is a list of Microsoft Sharepoint web part objects, such as text, images, banners,\nbuttons, etc.\n\nIf `include_page_content` is set to False, the tool will return only the page metadata.", + "name": "GetSlideNotes", + "qualifiedName": "Sharepoint.GetSlideNotes", + "fullyQualifiedName": "Sharepoint.GetSlideNotes@0.7.0", + "description": "Get the speaker notes from a specific slide in a SharePoint PowerPoint presentation.\n\nSpeaker notes are returned in markdown format, preserving basic formatting\nlike bold, italic, and bullet points.", "parameters": [ { - "name": "site", + "name": "drive_id", "type": "string", "required": true, - "description": "Site ID, SharePoint URL, or site name to retrieve base pages from. Prefer using a site ID whenever available for optimal performance", + "description": "The ID of the SharePoint drive containing the presentation.", "enum": null, "inferrable": true }, { - "name": "page_id", + "name": "item_id", "type": "string", "required": true, - "description": "The ID of the page to retrieve.", + "description": "The ID of the PowerPoint presentation.", "enum": null, "inferrable": true }, { - "name": "include_page_content", + "name": "slide_index", + "type": "integer", + "required": true, + "description": "The 1-based index of the slide to get notes from.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.Read.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The speaker notes for the specified slide." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.GetSlideNotes", + "parameters": { + "drive_id": { + "value": "b!6a8f3e2d-4c1a-4f2b-9a9c-1234567890ab", + "type": "string", + "required": true + }, + "item_id": { + "value": "01ABCD9efGHijkLMnoPqRstUVwXyZ0123!456", + "type": "string", + "required": true + }, + "slide_index": { + "value": 3, + "type": "integer", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetWordDocument", + "qualifiedName": "Sharepoint.GetWordDocument", + "fullyQualifiedName": "Sharepoint.GetWordDocument@0.7.0", + "description": "Get a Word document's metadata and content from a SharePoint drive (supports only `.docx`). Returns the document content as Markdown by default, or just metadata when metadata_only is True.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the SharePoint drive containing the document.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The DriveItem ID of the Word document.", + "enum": null, + "inferrable": true + }, + { + "name": "metadata_only", "type": "boolean", "required": false, - "description": "Whether to include the page content in the response. Defaults to True. If set to False, the tool will return only the page metadata.", + "description": "If True, return only the document metadata without downloading the content. Defaults to False.", "enum": null, "inferrable": true } @@ -189,30 +1175,32 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], "output": { "type": "json", - "description": "The page from the SharePoint site." + "description": "The Word document metadata and optionally its content." }, "documentationChunks": [], "codeExample": { - "toolName": "Sharepoint.GetPage", + "toolName": "Sharepoint.GetWordDocument", "parameters": { - "site": { - "value": "site-12345", + "drive_id": { + "value": "b!7a8f9c0d1e2f3a4b5c6d7e8f9a0b1c2", "type": "string", "required": true }, - "page_id": { - "value": "page-67890", + "item_id": { + "value": "01ABCDEF23456789!123", "type": "string", "required": true }, - "include_page_content": { - "value": true, + "metadata_only": { + "value": false, "type": "boolean", "required": false } @@ -223,16 +1211,32 @@ } }, { - "name": "GetSite", - "qualifiedName": "Sharepoint.GetSite", - "fullyQualifiedName": "Sharepoint.GetSite@0.4.1", - "description": "Retrieve information about a specific SharePoint site by its ID, URL, or name.", + "name": "InsertTextAtEndOfWordDocument", + "qualifiedName": "Sharepoint.InsertTextAtEndOfWordDocument", + "fullyQualifiedName": "Sharepoint.InsertTextAtEndOfWordDocument@0.7.0", + "description": "Append text to the end of an existing Word document.\n\nThis tool only supports files with the `.docx` extension and enforces the 4MB limit.", "parameters": [ { - "name": "site", + "name": "drive_id", "type": "string", "required": true, - "description": "Site ID, SharePoint URL, or site name to search for.", + "description": "The ID of the SharePoint drive containing the document.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The DriveItem ID of the Word document.", + "enum": null, + "inferrable": true + }, + { + "name": "text_content", + "type": "string", + "required": true, + "description": "The text content to append to the document.", "enum": null, "inferrable": true } @@ -240,20 +1244,32 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.ReadWrite.All" + ] }, "secrets": [], "secretsInfo": [], "output": { "type": "json", - "description": "The SharePoint site information." + "description": "The updated Word document metadata." }, "documentationChunks": [], "codeExample": { - "toolName": "Sharepoint.GetSite", + "toolName": "Sharepoint.InsertTextAtEndOfWordDocument", "parameters": { - "site": { - "value": "https://example.sharepoint.com/sites/ProjectX", + "drive_id": { + "value": "b1f2c3d4-5678-90ab-cdef-1234567890ab", + "type": "string", + "required": true + }, + "item_id": { + "value": "8f7e6d5c-4321-0fed-cba9-87654321fedc", + "type": "string", + "required": true + }, + "text_content": { + "value": "Appendix:\nThis document was updated to include the latest review notes and action items. Please review the added section and confirm any follow-up steps by EOD Friday.", "type": "string", "required": true } @@ -266,7 +1282,7 @@ { "name": "ListItemsInFolder", "qualifiedName": "Sharepoint.ListItemsInFolder", - "fullyQualifiedName": "Sharepoint.ListItemsInFolder@0.4.1", + "fullyQualifiedName": "Sharepoint.ListItemsInFolder@0.7.0", "description": "Retrieve items from a folder in a drive in a SharePoint site.\n\nNote: Due to how the Microsoft Graph API is designed, we have to retrieve all items, including the ones\nskipped by offset. For this reason, the tool execution time tends to increase with the offset value.", "parameters": [ { @@ -305,7 +1321,9 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], @@ -346,7 +1364,7 @@ { "name": "ListPages", "qualifiedName": "Sharepoint.ListPages", - "fullyQualifiedName": "Sharepoint.ListPages@0.4.1", + "fullyQualifiedName": "Sharepoint.ListPages@0.7.0", "description": "Retrieve pages from a SharePoint site.\n\nThe Microsoft Graph API does not support pagination on this endpoint.", "parameters": [ { @@ -369,7 +1387,9 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], @@ -400,7 +1420,7 @@ { "name": "ListRootItemsInDrive", "qualifiedName": "Sharepoint.ListRootItemsInDrive", - "fullyQualifiedName": "Sharepoint.ListRootItemsInDrive@0.4.1", + "fullyQualifiedName": "Sharepoint.ListRootItemsInDrive@0.7.0", "description": "Retrieve items from the root of a drive in a SharePoint site.\n\nNote: Due to how the Microsoft Graph API is designed, we have to retrieve all items, including the ones\nskipped by offset. For this reason, the tool execution time tends to increase with the offset value.", "parameters": [ { @@ -431,7 +1451,9 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], @@ -467,7 +1489,7 @@ { "name": "ListSites", "qualifiedName": "Sharepoint.ListSites", - "fullyQualifiedName": "Sharepoint.ListSites@0.4.1", + "fullyQualifiedName": "Sharepoint.ListSites@0.7.0", "description": "List all SharePoint sites accessible to the current user.", "parameters": [ { @@ -490,7 +1512,9 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], @@ -518,10 +1542,79 @@ "tabLabel": "Call the Tool with User Authorization" } }, + { + "name": "MoveItem", + "qualifiedName": "Sharepoint.MoveItem", + "fullyQualifiedName": "Sharepoint.MoveItem@0.7.0", + "description": "Move a file or folder to a new location in a SharePoint drive.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the drive where the item lives.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the item to move.", + "enum": null, + "inferrable": true + }, + { + "name": "new_parent_id", + "type": "string", + "required": true, + "description": "The ID of the destination folder.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The updated item metadata." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.MoveItem", + "parameters": { + "drive_id": { + "value": "b!c8a9f1e2-3d4b-5c6a-7e8f-9a0b1c2d3e4f", + "type": "string", + "required": true + }, + "item_id": { + "value": "01A23B45C6D789E0FGHI", + "type": "string", + "required": true + }, + "new_parent_id": { + "value": "0B1C2D3E-4F5A-6B7C-8D9E-0F1A2B3C4D5E", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, { "name": "SearchDriveItems", "qualifiedName": "Sharepoint.SearchDriveItems", - "fullyQualifiedName": "Sharepoint.SearchDriveItems@0.4.1", + "fullyQualifiedName": "Sharepoint.SearchDriveItems@0.7.0", "description": "Search for items in one or more Sharepoint drives.\n\nNote: when searching within a single Drive and/or Folder, due to how the Microsoft Graph API is designed,\nwe have to retrieve all items, including the ones skipped by offset. For this reason, the tool execution\ntime tends to increase with the offset value.", "parameters": [ { @@ -568,7 +1661,9 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], @@ -614,7 +1709,7 @@ { "name": "SearchSites", "qualifiedName": "Sharepoint.SearchSites", - "fullyQualifiedName": "Sharepoint.SearchSites@0.4.1", + "fullyQualifiedName": "Sharepoint.SearchSites@0.7.0", "description": "Search for SharePoint sites by name or description.\n\nIn case you need to retrieve a specific site by its name, ID or SharePoint URL, use the\n`Sharepoint.GetSite` tool instead, passing the ID, name or SharePoint URL to it. If you use\nthe `Sharepoint.SearchSites` tool to retrieve a single site by its name, too much CO2 will be\nreleased in the atmosphere and you will contribute to catastrophic climate change.", "parameters": [ { @@ -645,7 +1740,9 @@ "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["Sites.Read.All"] + "scopes": [ + "Sites.Read.All" + ] }, "secrets": [], "secretsInfo": [], @@ -678,16 +1775,100 @@ "tabLabel": "Call the Tool with User Authorization" } }, + { + "name": "SetSlideNotes", + "qualifiedName": "Sharepoint.SetSlideNotes", + "fullyQualifiedName": "Sharepoint.SetSlideNotes@0.7.0", + "description": "Set or update the speaker notes on a specific slide in a SharePoint PowerPoint.\n\nNotes can be formatted using markdown:\n- **bold** for bold text\n- *italic* for italic text\n- __underline__ for underlined text\n- Lines starting with - or * become bullet points\n- Indent with spaces for nested bullets\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.", + "parameters": [ + { + "name": "drive_id", + "type": "string", + "required": true, + "description": "The ID of the SharePoint drive containing the presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": true, + "description": "The ID of the PowerPoint presentation.", + "enum": null, + "inferrable": true + }, + { + "name": "slide_index", + "type": "integer", + "required": true, + "description": "The 1-based index of the slide to set notes on.", + "enum": null, + "inferrable": true + }, + { + "name": "notes", + "type": "string", + "required": true, + "description": "The speaker notes in markdown format. Supports **bold**, *italic*, __underline__, and bullet points (- or *).", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "microsoft", + "providerType": "oauth2", + "scopes": [ + "Sites.ReadWrite.All" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Confirmation of the notes update." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Sharepoint.SetSlideNotes", + "parameters": { + "drive_id": { + "value": "b!a1B2c3D4e5F6G7h8I9j0K", + "type": "string", + "required": true + }, + "item_id": { + "value": "01ABCD2345efGHIjklMNOpqrST", + "type": "string", + "required": true + }, + "slide_index": { + "value": 3, + "type": "integer", + "required": true + }, + "notes": { + "value": "Speaker notes:\n\n**Summary:** This slide highlights the main findings.\n\n*Key points:*\n- **Revenue growth** increased by 12% year-over-year.\n- *Customer satisfaction* improved across all regions.\n - __Support response time__ reduced by 40%.\n- Next steps:\n - Prioritize feature X\n - Schedule follow-up meeting\n\nPlease review the data before the presentation.", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "microsoft", + "tabLabel": "Call the Tool with User Authorization" + } + }, { "name": "WhoAmI", "qualifiedName": "Sharepoint.WhoAmI", - "fullyQualifiedName": "Sharepoint.WhoAmI@0.4.1", + "fullyQualifiedName": "Sharepoint.WhoAmI@0.7.0", "description": "Get information about the current user and their SharePoint environment.", "parameters": [], "auth": { "providerId": "microsoft", "providerType": "oauth2", - "scopes": ["User.Read"] + "scopes": [ + "User.Read" + ] }, "secrets": [], "secretsInfo": [], @@ -715,6 +1896,6 @@ ], "customImports": [], "subPages": [], - "generatedAt": "2026-01-26T17:41:02.555Z", - "summary": "Arcade.dev's SharePoint toolkit enables seamless integration with Microsoft SharePoint, enhancing productivity through advanced LLM tools. This toolkit provides developers with the capability to efficiently manage and retrieve information across various SharePoint resources.\n\n## Capabilities\n- Retrieve site, list, and drive information seamlessly.\n- Access and manage page content and associated metadata.\n- Execute specific searches for items within drives and sites.\n- Identify and list all accessible SharePoint sites for users.\n\n## OAuth\n**Provider:** Microsoft \n**Scopes:** Sites.Read.All, User.Read\n\n## Secrets\nNo secret types or names are required for this toolkit." -} + "generatedAt": "2026-02-19T22:07:27.116Z", + "summary": "Arcade.dev toolkit for Microsoft SharePoint provides LLM-driven access to SharePoint via Microsoft Graph. It enables programmatic management of sites, drives, files, lists, pages, and Office documents from conversational or automated flows.\n\n**Capabilities**\n- Manage content lifecycle across drives and sites: create, copy, move, delete, list and search items.\n- Create and modify Office artifacts (Word, PowerPoint) and manipulate slides/notes; export presentations and documents as Markdown.\n- Enumerate and read site pages, lists, metadata, and drive contents; handle large uploads with resumable sessions and best-effort concurrency checks.\n- Generate share links, monitor async operations, and retrieve current user/context information.\n\n**OAuth**\nProvider: microsoft\nScopes: Sites.Read.All, Sites.ReadWrite.All, User.Read" +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/slack.json b/toolkit-docs-generator/data/toolkits/slack.json index d704c970b..fccc75908 100644 --- a/toolkit-docs-generator/data/toolkits/slack.json +++ b/toolkit-docs-generator/data/toolkits/slack.json @@ -1,7 +1,7 @@ { "id": "Slack", "label": "Slack", - "version": "2.0.0", + "version": "2.1.0", "description": "Arcade.dev LLM tools for Slack", "metadata": { "category": "social", @@ -9,7 +9,7 @@ "isBYOC": false, "isPro": false, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/social-communication/slack", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/social-communication/slack", "isComingSoon": false, "isHidden": false }, @@ -19,9 +19,11 @@ "allScopes": [ "channels:history", "channels:read", + "channels:write", "chat:write", "groups:history", "groups:read", + "groups:write", "im:history", "im:read", "im:write", @@ -35,7 +37,7 @@ { "name": "GetConversationMetadata", "qualifiedName": "Slack.GetConversationMetadata", - "fullyQualifiedName": "Slack.GetConversationMetadata@2.0.0", + "fullyQualifiedName": "Slack.GetConversationMetadata@2.1.0", "description": "Get metadata of a Channel, a Direct Message (IM / DM) or a Multi-Person (MPIM) conversation.\n\nUse this tool to retrieve metadata about a conversation with a conversation_id, a channel name,\nor by the user_id(s), username(s), and/or email(s) of the user(s) in the conversation.\n\nThis tool does not return the messages in a conversation. To get the messages, use the\n'Slack.GetMessages' tool instead.\n\nProvide exactly one of:\n- conversation_id; or\n- channel_name; or\n- any combination of user_ids, usernames, and/or emails.", "parameters": [ { @@ -110,22 +112,22 @@ "required": false }, "channel_name": { - "value": "general", + "value": null, "type": "string", "required": false }, "usernames": { - "value": ["john_doe", "jane_smith"], + "value": null, "type": "array", "required": false }, "emails": { - "value": ["john@example.com", "jane@example.com"], + "value": null, "type": "array", "required": false }, "user_ids": { - "value": ["U123456", "U098765"], + "value": null, "type": "array", "required": false } @@ -138,7 +140,7 @@ { "name": "GetMessages", "qualifiedName": "Slack.GetMessages", - "fullyQualifiedName": "Slack.GetMessages@2.0.0", + "fullyQualifiedName": "Slack.GetMessages@2.1.0", "description": "Get messages in a Slack Channel, DM (direct message) or MPIM (multi-person) conversation.\n\nProvide exactly one of:\n- conversation_id; or\n- channel_name; or\n- any combination of user_ids, usernames, and/or emails.\n\nTo filter messages by an absolute datetime, use 'oldest_datetime' and/or 'latest_datetime'. If\nonly 'oldest_datetime' is provided, it will return messages from the oldest_datetime to the\ncurrent time. If only 'latest_datetime' is provided, it will return messages since the\nbeginning of the conversation to the latest_datetime.\n\nTo filter messages by a relative datetime (e.g. 3 days ago, 1 hour ago, etc.), use\n'oldest_relative' and/or 'latest_relative'. If only 'oldest_relative' is provided, it will\nreturn messages from the oldest_relative to the current time. If only 'latest_relative' is\nprovided, it will return messages from the current time to the latest_relative.\n\nDo not provide both 'oldest_datetime' and 'oldest_relative' or both 'latest_datetime' and\n'latest_relative'.\n\nLeave all arguments with the default None to get messages without date/time filtering", "parameters": [ { @@ -285,22 +287,22 @@ "required": false }, "oldest_relative": { - "value": "01:00:00", + "value": null, "type": "string", "required": false }, "latest_relative": { - "value": "00:30:00", + "value": null, "type": "string", "required": false }, "oldest_datetime": { - "value": null, + "value": "2026-02-01 00:00:00", "type": "string", "required": false }, "latest_datetime": { - "value": null, + "value": "2026-02-19 00:00:00", "type": "string", "required": false }, @@ -310,7 +312,7 @@ "required": false }, "next_cursor": { - "value": null, + "value": "dXNlcjpVMDYxTkYx", "type": "string", "required": false } @@ -323,7 +325,7 @@ { "name": "GetUsersInConversation", "qualifiedName": "Slack.GetUsersInConversation", - "fullyQualifiedName": "Slack.GetUsersInConversation@2.0.0", + "fullyQualifiedName": "Slack.GetUsersInConversation@2.1.0", "description": "Get the users in a Slack conversation (Channel, DM/IM, or MPIM) by its ID or by channel name.\n\nProvide exactly one of conversation_id or channel_name. Prefer providing a conversation_id,\nwhen available, since the performance is better.", "parameters": [ { @@ -392,12 +394,12 @@ "required": false }, "limit": { - "value": 100, + "value": 150, "type": "integer", "required": false }, "next_cursor": { - "value": "abc123token", + "value": "dXNlcjpVMEc5V0dK", "type": "string", "required": false } @@ -410,7 +412,7 @@ { "name": "GetUsersInfo", "qualifiedName": "Slack.GetUsersInfo", - "fullyQualifiedName": "Slack.GetUsersInfo@2.0.0", + "fullyQualifiedName": "Slack.GetUsersInfo@2.1.0", "description": "Get the information of one or more users in Slack by ID, username, and/or email.\n\nProvide any combination of user_ids, usernames, and/or emails. If you need to retrieve\ndata about multiple users, DO NOT CALL THE TOOL MULTIPLE TIMES. Instead, call it once\nwith all the user_ids, usernames, and/or emails. IF YOU CALL THIS TOOL MULTIPLE TIMES\nUNNECESSARILY, YOU WILL RELEASE MORE CO2 IN THE ATMOSPHERE AND CONTRIBUTE TO GLOBAL WARMING.\n\nIf you need to get metadata or messages of a conversation, use the\n`Slack.GetConversationMetadata` or `Slack.GetMessages` tool instead. These\ntools accept user_ids, usernames, and/or emails. Do not retrieve users' info first,\nas it is inefficient, releases more CO2 in the atmosphere, and contributes to climate change.", "parameters": [ { @@ -444,7 +446,10 @@ "auth": { "providerId": "slack", "providerType": "oauth2", - "scopes": ["users:read", "users:read.email"] + "scopes": [ + "users:read", + "users:read.email" + ] }, "secrets": [], "secretsInfo": [], @@ -457,17 +462,133 @@ "toolName": "Slack.GetUsersInfo", "parameters": { "user_ids": { - "value": ["U12345", "U67890"], + "value": [ + "U12345678", + "U23456789" + ], "type": "array", "required": false }, "usernames": { - "value": ["john_doe", "jane_smith"], + "value": [ + "alice", + "bob.smith" + ], "type": "array", "required": false }, "emails": { - "value": ["john@example.com", "jane@example.com"], + "value": [ + "alice@example.com", + "bob.smith@example.org" + ], + "type": "array", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "slack", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "InviteUsersToChannel", + "qualifiedName": "Slack.InviteUsersToChannel", + "fullyQualifiedName": "Slack.InviteUsersToChannel@2.1.0", + "description": "Invite users to a Slack channel or MPIM (multi-person direct message).\n\nThis tool invites specified users to join a Slack conversation. It works with:\n- Public channels\n- Private channels\n- MPIMs (multi-person direct messages / group DMs)\n\nYou can specify users by their user IDs, usernames, or email addresses.\n\nProvide exactly one of channel_id or channel_name, and at least one of user_ids, usernames,\nor emails.\n\nThe tool will resolve usernames and emails to user IDs before inviting them.\nUp to 100 users may be invited at once.", + "parameters": [ + { + "name": "channel_id", + "type": "string", + "required": false, + "description": "The ID of the Slack channel or MPIM (multi-person direct message) to invite users to. Provide exactly one of channel_id OR channel_name.", + "enum": null, + "inferrable": true + }, + { + "name": "channel_name", + "type": "string", + "required": false, + "description": "The name of the channel to invite users to. Prefer providing a channel_id when available for better performance. Note: MPIMs don't have names, so use channel_id for MPIMs.", + "enum": null, + "inferrable": true + }, + { + "name": "user_ids", + "type": "array", + "innerType": "string", + "required": false, + "description": "The Slack user IDs of the people to invite. Up to 100 users may be listed. Provide at least one of user_ids, usernames, or emails.", + "enum": null, + "inferrable": true + }, + { + "name": "usernames", + "type": "array", + "innerType": "string", + "required": false, + "description": "The Slack usernames of the people to invite. Prefer providing user_ids and/or emails when available for better performance.", + "enum": null, + "inferrable": true + }, + { + "name": "emails", + "type": "array", + "innerType": "string", + "required": false, + "description": "The email addresses of the people to invite.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "slack", + "providerType": "oauth2", + "scopes": [ + "channels:read", + "groups:read", + "channels:write", + "groups:write", + "users:read", + "users:read.email" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "The response from inviting users to the conversation" + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Slack.InviteUsersToChannel", + "parameters": { + "channel_id": { + "value": "C01234567", + "type": "string", + "required": false + }, + "channel_name": { + "value": null, + "type": "string", + "required": false + }, + "user_ids": { + "value": [ + "U12345678", + "U23456789", + "U34567890" + ], + "type": "array", + "required": false + }, + "usernames": { + "value": null, + "type": "array", + "required": false + }, + "emails": { + "value": null, "type": "array", "required": false } @@ -480,7 +601,7 @@ { "name": "ListConversations", "qualifiedName": "Slack.ListConversations", - "fullyQualifiedName": "Slack.ListConversations@2.0.0", + "fullyQualifiedName": "Slack.ListConversations@2.1.0", "description": "List metadata for Slack conversations (channels, DMs, MPIMs) the user is a member of.\n\nThis tool does not return the messages in a conversation. To get the messages, use the\n'Slack.GetMessages' tool instead. Calling this tool when the user is asking for messages\nwill release too much CO2 in the atmosphere and contribute to global warming.", "parameters": [ { @@ -517,7 +638,12 @@ "auth": { "providerId": "slack", "providerType": "oauth2", - "scopes": ["channels:read", "groups:read", "im:read", "mpim:read"] + "scopes": [ + "channels:read", + "groups:read", + "im:read", + "mpim:read" + ] }, "secrets": [], "secretsInfo": [], @@ -530,7 +656,10 @@ "toolName": "Slack.ListConversations", "parameters": { "conversation_types": { - "value": ["channel", "im"], + "value": [ + "public_channel", + "im" + ], "type": "array", "required": false }, @@ -540,7 +669,7 @@ "required": false }, "next_cursor": { - "value": "dXNlcl9mNTc3ZGQ1YjBlZDdmYzViZTA1NGUx", + "value": "dXNlcjpVMEc5V...", "type": "string", "required": false } @@ -553,7 +682,7 @@ { "name": "ListUsers", "qualifiedName": "Slack.ListUsers", - "fullyQualifiedName": "Slack.ListUsers@2.0.0", + "fullyQualifiedName": "Slack.ListUsers@2.1.0", "description": "List all users in the authenticated user's Slack team.\n\nIf you need to get metadata or messages of a conversation, use the\n`Slack.GetConversationMetadata` tool or `Slack.GetMessages` tool instead. These\ntools accept a user_id, username, and/or email. Do not use this tool to first retrieve user(s),\nas it is inefficient and releases more CO2 in the atmosphere, contributing to climate change.", "parameters": [ { @@ -584,7 +713,10 @@ "auth": { "providerId": "slack", "providerType": "oauth2", - "scopes": ["users:read", "users:read.email"] + "scopes": [ + "users:read", + "users:read.email" + ] }, "secrets": [], "secretsInfo": [], @@ -607,7 +739,7 @@ "required": false }, "next_cursor": { - "value": "abc123", + "value": "dXNlcjpVMDYxTkZURXw0MDAxMjM0NTY=", "type": "string", "required": false } @@ -620,7 +752,7 @@ { "name": "SendMessage", "qualifiedName": "Slack.SendMessage", - "fullyQualifiedName": "Slack.SendMessage@2.0.0", + "fullyQualifiedName": "Slack.SendMessage@2.1.0", "description": "Send a message to a Channel, Direct Message (IM/DM), or Multi-Person (MPIM) conversation\n\nProvide exactly one of:\n- channel_name; or\n- conversation_id; or\n- any combination of user_ids, usernames, and/or emails.\n\nIn case multiple user_ids, usernames, and/or emails are provided, the tool will open a\nmulti-person conversation with the specified people and send the message to it.", "parameters": [ { @@ -700,22 +832,22 @@ "toolName": "Slack.SendMessage", "parameters": { "message": { - "value": "Hello team, please check the latest updates!", + "value": "Hello team — this is a test message from the Slack.SendMessage tool. Please confirm receipt.", "type": "string", "required": true }, "channel_name": { - "value": "general", + "value": null, "type": "string", "required": false }, "conversation_id": { - "value": null, + "value": "C01ABCD2EFG", "type": "string", "required": false }, "user_ids": { - "value": ["U12345678", "U87654321"], + "value": null, "type": "array", "required": false }, @@ -738,13 +870,16 @@ { "name": "WhoAmI", "qualifiedName": "Slack.WhoAmI", - "fullyQualifiedName": "Slack.WhoAmI@2.0.0", + "fullyQualifiedName": "Slack.WhoAmI@2.1.0", "description": "Get comprehensive user profile and Slack information.\n\nThis tool provides detailed information about the authenticated user including\ntheir name, email, profile picture, and other important profile details from\nSlack services.", "parameters": [], "auth": { "providerId": "slack", "providerType": "oauth2", - "scopes": ["users:read", "users:read.email"] + "scopes": [ + "users:read", + "users:read.email" + ] }, "secrets": [], "secretsInfo": [], @@ -764,18 +899,7 @@ ], "documentationChunks": [], "customImports": [], - "subPages": [ - { - "type": "install", - "content": "# Arcade for Slack\n\nimport { Steps, Callout } from \"nextra/components\";\nimport { SignupLink } from \"@/app/_components/analytics\";\nimport { SlackAuthLink } from \"./slack-auth-link\";\n\n## Integrate Arcade with your Slack workspace\n\nArcade securely connects your AI agents to APIs, data, code, and other systems via Tools. Our integration for Slack allows Arcade's tools to connect to your Slack workspace, helping your team work more efficiently.\n\nYou can leverage this app in Arcade's Playground when you log in to the Arcade Dashboard, or in your own applications.\n\nWhile the Arcade app for Slack does not directly expose a Large Language Model (LLM) to you, you will likely use Arcade's tools in conjunction with an LLM. When using LLMs, there's always potential to generate inaccurate responses, summaries, or other output.\n\nArcade's sample app for Slack brings Arcade's powerful AI tool-calling capabilities to your team's everyday conversations. The Arcade app for Slack can:\n\n- Send messages to your Slack channels and direct messages on your behalf\n- Find information in your Slack channels and direct messages\n- Generate content, summaries, and responses for messages you receive\n- and more!\n\nFor more details on what tools are available and what scopes they require, see the [Slack MCP Server documentation](/resources/integrations/social-communication/slack).\n\n\n The Arcade app for Slack requires an active Arcade account. If you don't have\n one yet,{\" \"}\n \n sign up for free\n \n .\n\n\n## How it works\n\n\n### Install the Arcade app for Slack\nClick the \"Add to Slack\" button below to install Arcade in your workspace.\n\n\n\n\n You'll need to be a workspace admin or have permission to install apps to add\n Arcade to your Slack workspace.\n\n\n### Invite Arcade to your channels\n\nInvite Arcade to any channel or direct message by typing `/invite @Arcade` to allow it to read and interact with content in that channel.\n\n### Start using Arcade's Slack tools\n\nUse Arcade's [tools for Slack](/resources/integrations/social-communication/slack) to:\n\n- Send messages to channels and DMs\n- Find information in conversations\n- Generate summaries of discussions\n\nTry leveraging the Arcade tools for Slack in the Arcade Playground by [chatting with an LLM](https://api.arcade.dev/dashboard/playground/chat) asking, \"What are the last 5 messages in the general Slack channel?\" or [executing Slack tools directly](https://api.arcade.dev/dashboard/playground/execute?toolId=GetMessagesInChannelByName&toolkits=%5B%5D&authProviders=%5B%5D&secrets=%5B%5D&input=%7B%22owner%22%3A%22ArcadeAI%22%2C%22name%22%3A%22arcade-ai%22%2C%22starred%22%3A%22true%22%2C%22channel_name%22%3A%22general%22%2C%22limit%22%3A%225%22%7D) without interacting with an LLM.\n\n\n When using LLMs with Slack, responses may sometimes contain inaccuracies.\n Always review AI-generated content before taking action.\n\n\n\n\n## Next steps\n\nThe Arcade app for Slack is a sample for what Arcade can do with your Slack workspace. It's likely that for your own applications you'll need to [create your own app for Slack](/references/auth-providers/slack). Creating your own application for Slack will allow you to brand the app, customize the permissions, and more.\n\n## Need help?\n\nIf you have any questions or need assistance:\n\n- Check our [Slack MCP Server documentation](/resources/integrations/social-communication/slack)\n- [Contact our support team](/resources/contact-us)\n", - "relativePath": "install/page.mdx" - }, - { - "type": "environment-variables", - "content": "# Environment Variables\n\n### `SLACK_MAX_CONCURRENT_REQUESTS`\n\nArcade uses asynchronous calls to request Slack API endpoints. In some tools, multiple concurrent HTTP requests may be issued to speed up execution. This environment variable controls the maximum number of concurrent requests to Slack API in any tool execution.\n\nThe value must be a numeric string with an integer greater than or equal to 1.\n\n**Default:** `3`\n\n\n### `MAX_PAGINATION_SIZE_LIMIT`\n\nThis environment variable controls the maximum number of items requested in a single call to a Slack API endpoint. Some of the Slack tools allow the tool caller to request a larger number of items per tool call, but the tool will paginate the results internally while respecting the `MAX_PAGINATION_SIZE_LIMIT`.\n\n**Default:** `200` (Slack supports, but discourages a limit larger than 200)\n\n\n### `MAX_PAGINATION_TIMEOUT_SECONDS`\n\nControls the maximum number of seconds any given Slack tool should wait while paginating responses from the Slack API.\n\n**Default:** `30` (expressed in seconds)\n", - "relativePath": "environment-variables/page.mdx" - } - ], - "generatedAt": "2026-01-26T17:41:10.378Z", - "summary": "Arcade.dev provides a toolkit for integrating with Slack, enabling developers to enhance their applications with powerful Slack features. This toolkit allows for seamless communication, conversation management, and user interactions within Slack's ecosystem.\n\n**Capabilities**\n- Access conversation metadata, messages, and user information.\n- List users and conversations associated with the authenticated user.\n- Send messages to channels or direct conversations.\n\n**OAuth**\n- Provider: Slack \n- Scopes: channels:history, channels:read, chat:write, groups:history, groups:read, im:history, im:read, im:write, mpim:history, mpim:read, users:read, users:read.email\n\n**Secrets**\n- No secrets are required for this integration." -} + "subPages": [], + "generatedAt": "2026-02-19T22:07:47.726Z", + "summary": "Arcade.dev Slack toolkit provides programmatic access to Slack workspaces via OAuth2, enabling retrieval, management, and posting of conversations and user data. It lets developers read messages, query and manage conversation membership, invite users, and send messages from an authenticated app.\n\n**Capabilities**\n- Read and filter conversation messages and metadata across channels, DMs, and MPIMs.\n- Resolve and fetch user profiles and batch user info efficiently.\n- Manage membership and invitations, and send messages programmatically.\n- List accessible conversations and identify the authenticated user.\n\n**OAuth**\nProvider: slack\nScopes: channels:history, channels:read, channels:write, chat:write, groups:history, groups:read, groups:write, im:history, im:read, im:write, mpim:history, mpim:read, users:read, users:read.email" +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/stripe.json b/toolkit-docs-generator/data/toolkits/stripe.json index bff97efb0..2bc2c4e48 100644 --- a/toolkit-docs-generator/data/toolkits/stripe.json +++ b/toolkit-docs-generator/data/toolkits/stripe.json @@ -1,7 +1,7 @@ { "id": "Stripe", "label": "Stripe", - "version": "1.0.1", + "version": "1.0.2", "description": "Arcade.dev LLM tools for Stripe", "metadata": { "category": "payments", @@ -9,7 +9,7 @@ "isBYOC": false, "isPro": false, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/payments/stripe", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/payments/stripe", "isComingSoon": false, "isHidden": false }, @@ -18,7 +18,7 @@ { "name": "CreateBillingPortalSession", "qualifiedName": "Stripe.CreateBillingPortalSession", - "fullyQualifiedName": "Stripe.CreateBillingPortalSession@1.0.1", + "fullyQualifiedName": "Stripe.CreateBillingPortalSession@1.0.2", "description": "This tool will create a billing portal session.", "parameters": [ { @@ -39,7 +39,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -72,7 +74,7 @@ { "name": "CreateCustomer", "qualifiedName": "Stripe.CreateCustomer", - "fullyQualifiedName": "Stripe.CreateCustomer@1.0.1", + "fullyQualifiedName": "Stripe.CreateCustomer@1.0.2", "description": "This tool will create a customer in Stripe.", "parameters": [ { @@ -93,7 +95,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -126,7 +130,7 @@ { "name": "CreateInvoice", "qualifiedName": "Stripe.CreateInvoice", - "fullyQualifiedName": "Stripe.CreateInvoice@1.0.1", + "fullyQualifiedName": "Stripe.CreateInvoice@1.0.2", "description": "This tool will create an invoice in Stripe.", "parameters": [ { @@ -147,7 +151,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -180,7 +186,7 @@ { "name": "CreateInvoiceItem", "qualifiedName": "Stripe.CreateInvoiceItem", - "fullyQualifiedName": "Stripe.CreateInvoiceItem@1.0.1", + "fullyQualifiedName": "Stripe.CreateInvoiceItem@1.0.2", "description": "This tool will create an invoice item in Stripe.", "parameters": [ { @@ -209,7 +215,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -247,7 +255,7 @@ { "name": "CreatePaymentLink", "qualifiedName": "Stripe.CreatePaymentLink", - "fullyQualifiedName": "Stripe.CreatePaymentLink@1.0.1", + "fullyQualifiedName": "Stripe.CreatePaymentLink@1.0.2", "description": "This tool will create a payment link in Stripe.", "parameters": [ { @@ -268,7 +276,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -301,7 +311,7 @@ { "name": "CreatePrice", "qualifiedName": "Stripe.CreatePrice", - "fullyQualifiedName": "Stripe.CreatePrice@1.0.1", + "fullyQualifiedName": "Stripe.CreatePrice@1.0.2", "description": "This tool will create a price in Stripe. If a product has not already been", "parameters": [ { @@ -330,7 +340,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -368,7 +380,7 @@ { "name": "CreateProduct", "qualifiedName": "Stripe.CreateProduct", - "fullyQualifiedName": "Stripe.CreateProduct@1.0.1", + "fullyQualifiedName": "Stripe.CreateProduct@1.0.2", "description": "This tool will create a product in Stripe.", "parameters": [ { @@ -389,7 +401,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -422,7 +436,7 @@ { "name": "CreateRefund", "qualifiedName": "Stripe.CreateRefund", - "fullyQualifiedName": "Stripe.CreateRefund@1.0.1", + "fullyQualifiedName": "Stripe.CreateRefund@1.0.2", "description": "This tool will refund a payment intent in Stripe.", "parameters": [ { @@ -443,7 +457,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -476,7 +492,7 @@ { "name": "FinalizeInvoice", "qualifiedName": "Stripe.FinalizeInvoice", - "fullyQualifiedName": "Stripe.FinalizeInvoice@1.0.1", + "fullyQualifiedName": "Stripe.FinalizeInvoice@1.0.2", "description": "This tool will finalize an invoice in Stripe.", "parameters": [ { @@ -489,7 +505,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -517,7 +535,7 @@ { "name": "ListCustomers", "qualifiedName": "Stripe.ListCustomers", - "fullyQualifiedName": "Stripe.ListCustomers@1.0.1", + "fullyQualifiedName": "Stripe.ListCustomers@1.0.2", "description": "This tool will fetch a list of Customers from Stripe.", "parameters": [ { @@ -538,7 +556,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -571,7 +591,7 @@ { "name": "ListInvoices", "qualifiedName": "Stripe.ListInvoices", - "fullyQualifiedName": "Stripe.ListInvoices@1.0.1", + "fullyQualifiedName": "Stripe.ListInvoices@1.0.2", "description": "This tool will list invoices in Stripe.", "parameters": [ { @@ -592,7 +612,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -625,7 +647,7 @@ { "name": "ListPaymentIntents", "qualifiedName": "Stripe.ListPaymentIntents", - "fullyQualifiedName": "Stripe.ListPaymentIntents@1.0.1", + "fullyQualifiedName": "Stripe.ListPaymentIntents@1.0.2", "description": "This tool will list payment intents in Stripe.", "parameters": [ { @@ -646,7 +668,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -679,7 +703,7 @@ { "name": "ListPrices", "qualifiedName": "Stripe.ListPrices", - "fullyQualifiedName": "Stripe.ListPrices@1.0.1", + "fullyQualifiedName": "Stripe.ListPrices@1.0.2", "description": "This tool will fetch a list of Prices from Stripe.", "parameters": [ { @@ -700,7 +724,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -733,7 +759,7 @@ { "name": "ListProducts", "qualifiedName": "Stripe.ListProducts", - "fullyQualifiedName": "Stripe.ListProducts@1.0.1", + "fullyQualifiedName": "Stripe.ListProducts@1.0.2", "description": "This tool will fetch a list of Products from Stripe.", "parameters": [ { @@ -746,7 +772,9 @@ } ], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -774,11 +802,13 @@ { "name": "RetrieveBalance", "qualifiedName": "Stripe.RetrieveBalance", - "fullyQualifiedName": "Stripe.RetrieveBalance@1.0.1", + "fullyQualifiedName": "Stripe.RetrieveBalance@1.0.2", "description": "This tool will retrieve the balance from Stripe. It takes no input.", "parameters": [], "auth": null, - "secrets": ["STRIPE_SECRET_KEY"], + "secrets": [ + "STRIPE_SECRET_KEY" + ], "secretsInfo": [ { "name": "STRIPE_SECRET_KEY", @@ -803,12 +833,11 @@ "type": "markdown", "location": "auth", "position": "after", - "content": "The Arcade Stripe MCP Server uses the [Stripe Agent Toolkit](https://github.com/stripe/agent-toolkit) to interact with the Stripe API.\n- **Required Secret:**\n - `STRIPE_SECRET_KEY`: Your Stripe API key.", - "header": "## Auth" + "content": "The Arcade Stripe MCP Server uses the [Stripe Agent Toolkit](https://github.com/stripe/agent-toolkit) to interact with the Stripe API.\n- **Required Secret:**\n - `STRIPE_SECRET_KEY`: Your Stripe API key." } ], "customImports": [], "subPages": [], - "generatedAt": "2026-01-26T17:41:59.314Z", + "generatedAt": "2026-02-19T22:07:36.340Z", "summary": "Arcade.dev provides a powerful toolkit for integrating with Stripe, enabling seamless management of billing, customer data, and payment processes. This toolkit simplifies common tasks, making it easier for developers to leverage Stripe's capabilities.\n\n### Capabilities\n- Create and manage customers, products, and prices.\n- Generate invoices and billing portal sessions effortlessly.\n- Retrieve and list pertinent data such as invoices and payment intents.\n- Facilitate refunds and manage financial transactions seamlessly.\n\n### Secrets\n- **API Key**: Use the `STRIPE_SECRET_KEY` for authentication when interacting with the Stripe API." -} +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/x.json b/toolkit-docs-generator/data/toolkits/x.json index e7f6657f1..0b2b9cf76 100644 --- a/toolkit-docs-generator/data/toolkits/x.json +++ b/toolkit-docs-generator/data/toolkits/x.json @@ -1,7 +1,7 @@ { "id": "X", "label": "X", - "version": "1.1.1", + "version": "1.3.1", "description": "Arcade.dev LLM tools for X (Twitter)", "metadata": { "category": "social", @@ -9,20 +9,24 @@ "isBYOC": false, "isPro": false, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/social-communication/x", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/social-communication/x", "isComingSoon": false, "isHidden": false }, "auth": { "type": "oauth2", "providerId": "x", - "allScopes": ["tweet.read", "tweet.write", "users.read"] + "allScopes": [ + "tweet.read", + "tweet.write", + "users.read" + ] }, "tools": [ { "name": "DeleteTweetById", "qualifiedName": "X.DeleteTweetById", - "fullyQualifiedName": "X.DeleteTweetById@1.1.1", + "fullyQualifiedName": "X.DeleteTweetById@1.3.1", "description": "Delete a tweet on X (Twitter).", "parameters": [ { @@ -37,7 +41,11 @@ "auth": { "providerId": "x", "providerType": "oauth2", - "scopes": ["tweet.read", "tweet.write", "users.read"] + "scopes": [ + "tweet.read", + "tweet.write", + "users.read" + ] }, "secrets": [], "secretsInfo": [], @@ -63,7 +71,7 @@ { "name": "LookupSingleUserByUsername", "qualifiedName": "X.LookupSingleUserByUsername", - "fullyQualifiedName": "X.LookupSingleUserByUsername@1.1.1", + "fullyQualifiedName": "X.LookupSingleUserByUsername@1.3.1", "description": "Look up a user on X (Twitter) by their username.", "parameters": [ { @@ -78,7 +86,10 @@ "auth": { "providerId": "x", "providerType": "oauth2", - "scopes": ["users.read", "tweet.read"] + "scopes": [ + "users.read", + "tweet.read" + ] }, "secrets": [], "secretsInfo": [], @@ -104,7 +115,7 @@ { "name": "LookupTweetById", "qualifiedName": "X.LookupTweetById", - "fullyQualifiedName": "X.LookupTweetById@1.1.1", + "fullyQualifiedName": "X.LookupTweetById@1.3.1", "description": "Look up a tweet on X (Twitter) by tweet ID.", "parameters": [ { @@ -119,7 +130,10 @@ "auth": { "providerId": "x", "providerType": "oauth2", - "scopes": ["tweet.read", "users.read"] + "scopes": [ + "tweet.read", + "users.read" + ] }, "secrets": [], "secretsInfo": [], @@ -145,7 +159,7 @@ { "name": "PostTweet", "qualifiedName": "X.PostTweet", - "fullyQualifiedName": "X.PostTweet@1.1.1", + "fullyQualifiedName": "X.PostTweet@1.3.1", "description": "Post a tweet to X (Twitter).\n\nIMPORTANT NOTE:\nUse this tool ONLY when posting a tweet that is not a reply.\nIf you need to reply to a tweet, use the ReplyToTweet tool instead.\nIf you need to quote a tweet, you must include the quote_tweet_id parameter.", "parameters": [ { @@ -160,7 +174,7 @@ "name": "quote_tweet_id", "type": "string", "required": false, - "description": "The ID of the tweet you want to quote. It must be a valid integer as a string. Optional.", + "description": "The ID of the tweet you want to quote. It must be a valid integer as a string. Default is None.", "enum": null, "inferrable": true } @@ -168,7 +182,11 @@ "auth": { "providerId": "x", "providerType": "oauth2", - "scopes": ["tweet.read", "tweet.write", "users.read"] + "scopes": [ + "tweet.read", + "tweet.write", + "users.read" + ] }, "secrets": [], "secretsInfo": [], @@ -181,12 +199,12 @@ "toolName": "X.PostTweet", "parameters": { "tweet_text": { - "value": "Excited to share my latest project! Check it out! #innovation #tech", + "value": "Excited to share our new product launch today! Check it out at https://example.com #launch #product", "type": "string", "required": true }, "quote_tweet_id": { - "value": "1234567890", + "value": null, "type": "string", "required": false } @@ -199,7 +217,7 @@ { "name": "ReplyToTweet", "qualifiedName": "X.ReplyToTweet", - "fullyQualifiedName": "X.ReplyToTweet@1.1.1", + "fullyQualifiedName": "X.ReplyToTweet@1.3.1", "description": "Reply to a tweet on X (Twitter).\n\nIMPORTANT NOTE:\nUse this tool ONLY when replying to a tweet directly.\nIf you need to post a tweet that is not a reply, use the PostTweet tool instead.\nIf you need to quote a tweet on your reply, you must include the quote_tweet_id parameter.", "parameters": [ { @@ -230,7 +248,11 @@ "auth": { "providerId": "x", "providerType": "oauth2", - "scopes": ["tweet.read", "tweet.write", "users.read"] + "scopes": [ + "tweet.read", + "tweet.write", + "users.read" + ] }, "secrets": [], "secretsInfo": [], @@ -266,7 +288,7 @@ { "name": "SearchRecentTweetsByKeywords", "qualifiedName": "X.SearchRecentTweetsByKeywords", - "fullyQualifiedName": "X.SearchRecentTweetsByKeywords@1.1.1", + "fullyQualifiedName": "X.SearchRecentTweetsByKeywords@1.3.1", "description": "Search for recent tweets (last 7 days) on X (Twitter) by required keywords and phrases.\nIncludes replies and reposts.\nOne of the following input parameters MUST be provided: keywords, phrases", "parameters": [ { @@ -307,7 +329,10 @@ "auth": { "providerId": "x", "providerType": "oauth2", - "scopes": ["tweet.read", "users.read"] + "scopes": [ + "tweet.read", + "users.read" + ] }, "secrets": [], "secretsInfo": [], @@ -320,12 +345,19 @@ "toolName": "X.SearchRecentTweetsByKeywords", "parameters": { "keywords": { - "value": ["technology", "AI", "innovation"], + "value": [ + "technology", + "AI", + "innovation" + ], "type": "array", "required": false }, "phrases": { - "value": ["machine learning", "data science"], + "value": [ + "machine learning", + "data science" + ], "type": "array", "required": false }, @@ -348,7 +380,7 @@ { "name": "SearchRecentTweetsByUsername", "qualifiedName": "X.SearchRecentTweetsByUsername", - "fullyQualifiedName": "X.SearchRecentTweetsByUsername@1.1.1", + "fullyQualifiedName": "X.SearchRecentTweetsByUsername@1.3.1", "description": "Search for recent tweets (last 7 days) on X (Twitter) by username.\nIncludes replies and reposts.", "parameters": [ { @@ -379,7 +411,10 @@ "auth": { "providerId": "x", "providerType": "oauth2", - "scopes": ["tweet.read", "users.read"] + "scopes": [ + "tweet.read", + "users.read" + ] }, "secrets": [], "secretsInfo": [], @@ -411,11 +446,40 @@ "authProvider": "x", "tabLabel": "Call the Tool with User Authorization" } + }, + { + "name": "WhoAmI", + "qualifiedName": "X.WhoAmI", + "fullyQualifiedName": "X.WhoAmI@1.3.1", + "description": "Get information about the authenticated X (Twitter) user.\n\nReturns the current user's profile including their username, name, description,\nfollower counts, and other account information.", + "parameters": [], + "auth": { + "providerId": "x", + "providerType": "oauth2", + "scopes": [ + "users.read", + "tweet.read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Authenticated user's profile information" + }, + "documentationChunks": [], + "codeExample": { + "toolName": "X.WhoAmI", + "parameters": {}, + "requiresAuth": true, + "authProvider": "x", + "tabLabel": "Call the Tool with User Authorization" + } } ], "documentationChunks": [], "customImports": [], "subPages": [], - "generatedAt": "2026-01-26T17:46:46.899Z", - "summary": "Arcade.dev provides a powerful toolkit for interacting with X (Twitter), enabling developers to seamlessly integrate Twitter functionality into their applications. This toolkit offers a variety of features to manage tweets, user information, and search capabilities.\n\n**Capabilities**\n- Post, delete, and reply to tweets programmatically.\n- Search for recent tweets by keywords or usernames.\n- Retrieve user details by username.\n\n**OAuth**\nProvider: X (Twitter) \nScopes: tweet.read, tweet.write, users.read\n\n**Secrets** \nNo secrets are required for using this toolkit." -} + "generatedAt": "2026-02-19T22:07:46.589Z", + "summary": "Arcade.dev's X toolkit gives LLMs authenticated access to X (Twitter), enabling programmatic posting, replying, searching, and account inspection. It supports common tweet lifecycle tasks and ID/username lookups while enforcing reply vs. post semantics (use distinct reply/post flows and include quote IDs when quoting).\n\n**Capabilities**\n- Create and manage tweets and threaded replies with parameters for quoting and reply targeting.\n- Search and retrieve recent public tweets by keywords or username, including replies and reposts.\n- Lookup tweets and users by ID/username and fetch the authenticated account profile and metadata.\n- Perform content management operations (deletions) and automate moderation or synchronization workflows.\n\n**OAuth**\nProvider: x\nScopes: tweet.read, tweet.write, users.read\nOAuth2 authentication is required for read and write operations." +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/youtube.json b/toolkit-docs-generator/data/toolkits/youtube.json index 16d4fb2b0..4a6250e0e 100644 --- a/toolkit-docs-generator/data/toolkits/youtube.json +++ b/toolkit-docs-generator/data/toolkits/youtube.json @@ -1,7 +1,7 @@ { "id": "Youtube", "label": "Youtube", - "version": "3.1.2", + "version": "3.1.4", "description": "Arcade.dev LLM tools for searching for YouTube videos"", "metadata": { "category": "search", @@ -9,7 +9,7 @@ "isBYOC": true, "isPro": true, "type": "arcade", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/search/youtube", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/search/youtube", "isComingSoon": false, "isHidden": false }, @@ -18,7 +18,7 @@ { "name": "GetYoutubeVideoDetails", "qualifiedName": "Youtube.GetYoutubeVideoDetails", - "fullyQualifiedName": "Youtube.GetYoutubeVideoDetails@3.1.2", + "fullyQualifiedName": "Youtube.GetYoutubeVideoDetails@3.1.4", "description": "Get details about a YouTube video.", "parameters": [ { @@ -47,7 +47,9 @@ } ], "auth": null, - "secrets": ["SERP_API_KEY"], + "secrets": [ + "SERP_API_KEY" + ], "secretsInfo": [ { "name": "SERP_API_KEY", @@ -85,7 +87,7 @@ { "name": "SearchForVideos", "qualifiedName": "Youtube.SearchForVideos", - "fullyQualifiedName": "Youtube.SearchForVideos@3.1.2", + "fullyQualifiedName": "Youtube.SearchForVideos@3.1.4", "description": "Search for YouTube videos related to the query.", "parameters": [ { @@ -122,7 +124,9 @@ } ], "auth": null, - "secrets": ["SERP_API_KEY"], + "secrets": [ + "SERP_API_KEY" + ], "secretsInfo": [ { "name": "SERP_API_KEY", @@ -166,6 +170,6 @@ "documentationChunks": [], "customImports": [], "subPages": [], - "generatedAt": "2026-01-26T17:46:54.196Z", + "generatedAt": "2026-02-19T22:07:51.118Z", "summary": "Arcade.dev provides a toolkit for interacting with YouTube, enabling developers to search for videos and retrieve video details seamlessly. This toolkit simplifies tasks related to enhancing applications with YouTube content.\n\n**Capabilities** \n- Search for videos based on specific queries \n- Retrieve detailed information about YouTube videos \n- Supports integration of YouTube functionalities into applications \n- Allows quick access to video data for enhanced user experiences \n\n**OAuth** \n- No OAuth authentication required. \n\n**Secrets** \n- API Key: Use the `SERP_API_KEY` to authenticate API requests for video data." -} +} \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/zohobooksapi.json b/toolkit-docs-generator/data/toolkits/zohobooksapi.json index 8ca8d3fa6..4ddf86930 100644 --- a/toolkit-docs-generator/data/toolkits/zohobooksapi.json +++ b/toolkit-docs-generator/data/toolkits/zohobooksapi.json @@ -1,39 +1,44411 @@ { "id": "ZohoBooksApi", "label": "Zoho Books API", - "version": "0.0.0", - "description": null, + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho-books API.", "metadata": { "category": "payments", "iconUrl": "https://design-system.arcade.dev/icons/zoho-books.svg", "isBYOC": false, "isPro": false, "type": "arcade_starter", - "docsLink": "https://docs.arcade.dev/en/mcp-servers/payments/zoho-books-api", + "docsLink": "https://docs.arcade.dev/en/resources/integrations/payments/zoho-books-api", "isComingSoon": false, "isHidden": false }, - "auth": null, - "tools": [], - "documentationChunks": [ - { - "type": "section", - "location": "custom_section", - "position": "after", - "content": "## Secrets\n\nThis MCP Server requires the `ZOHO_SERVER_URL` secret to be configured. Learn how to [configure secrets](/guides/create-tools/tool-basics/create-tool-secrets).\n\n### Getting your Zoho Server URL\n\nThe Zoho Server URL is the base URL for your Zoho account's data center. Zoho operates in multiple data centers around the world, and you must use the correct URL for your account.\n\nYour Zoho Server URL depends on which data center your account is registered in:\n\n| Data Center | Server URL |\n| ----------- | --------------------------- |\n| US | `https://books.zoho.com` |\n| EU | `https://books.zoho.eu` |\n| India | `https://books.zoho.in` |\n| Australia | `https://books.zoho.com.au` |\n| China | `https://books.zoho.com.cn` |\n\nTo determine which data center your account uses:\n\n1. Log in to your Zoho Books account\n2. Look at the URL in your browser's address bar\n3. The domain (`.com`, `.eu`, `.in`, `.com.au`, or `.com.cn`) indicates your data center\n\nFor example, if you access Zoho Books at `https://books.zoho.eu`, your server URL is `https://books.zoho.eu`.\n\nThe server URL is used as the base for all API requests. For example, when retrieving invoices, the full URL would be constructed as:\n\n```\n{zoho_server_url}/api/v3/invoices?organization_id=...\n```\n\nWhich would become `https://books.zoho.com/api/v3/invoices?organization_id=...` for US accounts.", - "header": "## Secrets" - }, - { - "type": "markdown", - "location": "auth", - "position": "after", - "content": "The ZohoBooksApi MCP Server uses the Auth Provider with id `arcade-zoho` to connect to users' Zoho Books accounts. In order to use the MCP Server, you will need to configure the `arcade-zoho` auth provider.\nLearn how to configure the Zoho auth provider in the [Zoho auth provider documentation](/references/auth-providers/zoho).", - "header": "## Auth" + "auth": { + "type": "oauth2", + "providerId": "zoho", + "allScopes": [ + "ZohoBooks.accountants.CREATE", + "ZohoBooks.accountants.DELETE", + "ZohoBooks.accountants.READ", + "ZohoBooks.accountants.UPDATE", + "ZohoBooks.banking.CREATE", + "ZohoBooks.banking.DELETE", + "ZohoBooks.banking.READ", + "ZohoBooks.banking.UPDATE", + "ZohoBooks.bills.CREATE", + "ZohoBooks.bills.DELETE", + "ZohoBooks.bills.READ", + "ZohoBooks.bills.UPDATE", + "ZohoBooks.contacts.CREATE", + "ZohoBooks.contacts.DELETE", + "ZohoBooks.contacts.READ", + "ZohoBooks.contacts.UPDATE", + "ZohoBooks.creditnotes.CREATE", + "ZohoBooks.creditnotes.DELETE", + "ZohoBooks.creditnotes.READ", + "ZohoBooks.creditnotes.UPDATE", + "ZohoBooks.customerpayments.CREATE", + "ZohoBooks.customerpayments.DELETE", + "ZohoBooks.customerpayments.READ", + "ZohoBooks.customerpayments.UPDATE", + "ZohoBooks.custommodules.ALL", + "ZohoBooks.debitnotes.CREATE", + "ZohoBooks.debitnotes.DELETE", + "ZohoBooks.debitnotes.READ", + "ZohoBooks.debitnotes.UPDATE", + "ZohoBooks.estimates.CREATE", + "ZohoBooks.estimates.DELETE", + "ZohoBooks.estimates.READ", + "ZohoBooks.estimates.UPDATE", + "ZohoBooks.expenses.CREATE", + "ZohoBooks.expenses.DELETE", + "ZohoBooks.expenses.READ", + "ZohoBooks.expenses.UPDATE", + "ZohoBooks.fixedasset.CREATE", + "ZohoBooks.fixedasset.DELETE", + "ZohoBooks.fixedasset.READ", + "ZohoBooks.fixedasset.UPDATE", + "ZohoBooks.invoices.CREATE", + "ZohoBooks.invoices.DELETE", + "ZohoBooks.invoices.READ", + "ZohoBooks.invoices.UPDATE", + "ZohoBooks.projects.CREATE", + "ZohoBooks.projects.DELETE", + "ZohoBooks.projects.READ", + "ZohoBooks.projects.UPDATE", + "ZohoBooks.purchaseorders.CREATE", + "ZohoBooks.purchaseorders.DELETE", + "ZohoBooks.purchaseorders.READ", + "ZohoBooks.purchaseorders.UPDATE", + "ZohoBooks.salesorders.CREATE", + "ZohoBooks.salesorders.DELETE", + "ZohoBooks.salesorders.READ", + "ZohoBooks.salesorders.UPDATE", + "ZohoBooks.settings.ALL", + "ZohoBooks.settings.CREATE", + "ZohoBooks.settings.DELETE", + "ZohoBooks.settings.READ", + "ZohoBooks.settings.UPDATE", + "ZohoBooks.vendorpayments.CREATE", + "ZohoBooks.vendorpayments.DELETE", + "ZohoBooks.vendorpayments.READ", + "ZohoBooks.vendorpayments.UPDATE" + ] + }, + "tools": [ + { + "name": "AcceptEstimate", + "qualifiedName": "ZohoBooksApi.AcceptEstimate", + "fullyQualifiedName": "ZohoBooksApi.AcceptEstimate@1.0.0", + "description": "Mark a sent estimate as accepted if the customer has accepted it.\n\nUse this tool to update the status of a sent estimate to accepted once your customer has approved it.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID for the organization related to the estimate acceptance.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the estimate to be marked as accepted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_estimate_accepted'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AcceptEstimate", + "parameters": { + "organization_id": { + "value": "6971270000001234567", + "type": "string", + "required": true + }, + "estimate_identifier": { + "value": "EST-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateBankAccount", + "qualifiedName": "ZohoBooksApi.ActivateBankAccount", + "fullyQualifiedName": "ZohoBooksApi.ActivateBankAccount@1.0.0", + "description": "Activate a bank account in Zoho Books.\n\nThis tool is used to mark a bank account as active in Zoho Books. It should be called when there is a need to change the status of a bank account to active.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. This ID is required to activate a bank account within the specified organization.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank account to be activated in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_bank_account_active'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateBankAccount", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "bank_account_id": { + "value": "BA-78901234", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateChartOfAccount", + "qualifiedName": "ZohoBooksApi.ActivateChartOfAccount", + "fullyQualifiedName": "ZohoBooksApi.ActivateChartOfAccount@1.0.0", + "description": "Activate a chart of account in Zoho Books.\n\nUse this tool to update the status of a chart of account to active in Zoho Books. This is useful when you need to ensure an account is reactivated and available for transactions.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books that needs the account to be activated.", + "enum": null, + "inferrable": true + }, + { + "name": "account_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the account to be activated in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_chart_of_account_active'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateChartOfAccount", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "account_unique_identifier": { + "value": "ACCT-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateContact", + "qualifiedName": "ZohoBooksApi.ActivateContact", + "fullyQualifiedName": "ZohoBooksApi.ActivateContact@1.0.0", + "description": "Activate a contact in Zoho Books.\n\nUse this tool to mark a contact as active in Zoho Books. It should be called when a contact's status needs to be changed from inactive to active.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization to which the contact belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the contact to be marked as active.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_contact_active'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateContact", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "contact_identifier": { + "value": "1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateFixedAsset", + "qualifiedName": "ZohoBooksApi.ActivateFixedAsset", + "fullyQualifiedName": "ZohoBooksApi.ActivateFixedAsset@1.0.0", + "description": "Activate a fixed asset to begin depreciation calculation.\n\nUse this tool to mark a fixed asset as active, which will initiate the calculation of its depreciation.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization. This is required to identify which organization's asset to activate.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_id", + "type": "string", + "required": true, + "description": "Unique identifier of the fixed asset to activate for depreciation calculation.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_fixed_asset_active'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateFixedAsset", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "fixed_asset_id": { + "value": "FA-00098765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateInactiveItem", + "qualifiedName": "ZohoBooksApi.ActivateInactiveItem", + "fullyQualifiedName": "ZohoBooksApi.ActivateInactiveItem@1.0.0", + "description": "Activate an inactive item in Zoho Books.\n\nUse this tool to reactivate an item that has been previously marked as inactive in Zoho Books. It should be called when you need to make an item available again for transactions.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for your organization in Zoho Books. Required to activate an item.", + "enum": null, + "inferrable": true + }, + { + "name": "item_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the item to be activated in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_item_active'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateInactiveItem", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "item_identifier": { + "value": "ITEM-98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateInactiveUser", + "qualifiedName": "ZohoBooksApi.ActivateInactiveUser", + "fullyQualifiedName": "ZohoBooksApi.ActivateInactiveUser@1.0.0", + "description": "Mark an inactive user as active.\n\nUse this tool to activate a user who is currently marked as inactive in the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the user will be reactivated. Ensure it matches the organization's records.", + "enum": null, + "inferrable": true + }, + { + "name": "user_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the user to be activated.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_user_active'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateInactiveUser", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "user_identifier": { + "value": "user_987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateInvoiceReminder", + "qualifiedName": "ZohoBooksApi.ActivateInvoiceReminder", + "fullyQualifiedName": "ZohoBooksApi.ActivateInvoiceReminder@1.0.0", + "description": "Enable automated payment reminders for invoices.\n\nActivate automatic reminders for invoice payments to ensure timely settlements.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the invoice payment reminder is being activated.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice for which payment reminders are to be activated.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'enable_invoice_payment_reminder'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateInvoiceReminder", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateLocation", + "qualifiedName": "ZohoBooksApi.ActivateLocation", + "fullyQualifiedName": "ZohoBooksApi.ActivateLocation@1.0.0", + "description": "Marks a location as active.\n\nUse this tool to mark a specified location as active in the system. This is useful for enabling locations that were previously inactive.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to which the location belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "location_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the location to be marked as active.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_location_active'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateLocation", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "location_identifier": { + "value": "LOC-98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ActivateProject", + "qualifiedName": "ZohoBooksApi.ActivateProject", + "fullyQualifiedName": "ZohoBooksApi.ActivateProject@1.0.0", + "description": "Activate a project in Zoho Books.\n\nThis tool marks a specified project as active in Zoho Books. Call this tool when you need to change the status of a project to active to enable its functionalities or integrations.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in which the project is to be activated.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the project to activate in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_project_active'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ActivateProject", + "parameters": { + "organization_id": { + "value": "987654321", + "type": "string", + "required": true + }, + "project_identifier": { + "value": "PRJ-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddCommentToBill", + "qualifiedName": "ZohoBooksApi.AddCommentToBill", + "fullyQualifiedName": "ZohoBooksApi.AddCommentToBill@1.0.0", + "description": "Add a comment to a specific bill in Zoho Books.\n\n Use this tool to add a comment to a bill identified by its ID in Zoho Books. Useful for internal notes or communication about a bill.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique identifier of the organization in Zoho Books. Required to specify which organization's bill to comment on. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the bill to add a comment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_bill_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddCommentToBill", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": false + }, + "bill_identifier": { + "value": "BILL-00012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"description\":\"Please review the tax calculation on this bill and confirm before making payment.\",\"is_customer_visible\":false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddContactAddress", + "qualifiedName": "ZohoBooksApi.AddContactAddress", + "fullyQualifiedName": "ZohoBooksApi.AddContactAddress@1.0.0", + "description": "Add an additional address to a contact in Zoho Books.\n\n Use this tool to append a new address to an existing contact in Zoho Books. Suitable when updating contact details with more location information.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization for which the contact address will be added. This is required to specify the target organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_id", + "type": "string", + "required": false, + "description": "The unique identifier for the contact to which an address will be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_contact_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddContactAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "contact_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"contact_address\":{\"label\":\"Shipping\",\"is_primary_address\":false,\"address\":\"123 Market St\",\"street2\":\"Suite 200\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94103\",\"country\":\"USA\",\"phone\":\"+14155550123\",\"fax\":\"+14155550199\",\"attention\":\"John Doe\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddCreditNoteComment", + "qualifiedName": "ZohoBooksApi.AddCreditNoteComment", + "fullyQualifiedName": "ZohoBooksApi.AddCreditNoteComment@1.0.0", + "description": "Add a comment to an existing credit note.\n\n Use this tool to append a comment to a specific credit note by providing the credit note's ID and the comment text. Ideal for documenting additional information or context on credit notes.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The string ID of the organization to which the credit note belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": false, + "description": "Unique identifier of the credit note to which the comment will be added. This is required to specify the exact credit note targeted for the comment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_credit_note_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddCreditNoteComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6000000000001", + "type": "string", + "required": false + }, + "credit_note_id": { + "value": "CN-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\": {\"comment\": \"Issued credit for returned items. Customer notified via email.\", \"is_private\": false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddEstimateComment", + "qualifiedName": "ZohoBooksApi.AddEstimateComment", + "fullyQualifiedName": "ZohoBooksApi.AddEstimateComment@1.0.0", + "description": "Add a comment for a specific estimate in Zoho Books.\n\n Use this tool to add a comment to an existing estimate in Zoho Books. Call it when you need to append notes or feedback to an estimate record.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization within Zoho Books. It is required to specify which organization's estimate is being commented on. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the specific estimate to comment on. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_estimate_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddEstimateComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "369874321", + "type": "string", + "required": false + }, + "estimate_identifier": { + "value": "EST-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\": {\"content\": \"Please review the updated pricing for line items 2 and 3.\", \"notify_customer\": true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddFixedAssetComment", + "qualifiedName": "ZohoBooksApi.AddFixedAssetComment", + "fullyQualifiedName": "ZohoBooksApi.AddFixedAssetComment@1.0.0", + "description": "Add a comment to a fixed asset in Zoho Books.\n\n\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. This is required to add a comment to the fixed asset. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the fixed asset to add a comment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_fixed_asset_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddFixedAssetComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "fixed_asset_identifier": { + "value": "FA-2024-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"content\":\"Performed annual inspection. No issues found.\",\"is_private\":false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddInvoiceComment", + "qualifiedName": "ZohoBooksApi.AddInvoiceComment", + "fullyQualifiedName": "ZohoBooksApi.AddInvoiceComment@1.0.0", + "description": "Add a comment to a specific invoice.\n\n Use this tool to add a comment to an invoice by specifying the invoice ID. Useful for internal notes or communication related to invoice handling.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization for which the invoice belongs. It must be a valid and existing organization ID. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the invoice to add a comment to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_invoice_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddInvoiceComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6001978001", + "type": "string", + "required": false + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"comment\":\"Adding internal note: customer requested 30-day extension.\",\"is_private\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddJournalComment", + "qualifiedName": "ZohoBooksApi.AddJournalComment", + "fullyQualifiedName": "ZohoBooksApi.AddJournalComment@1.0.0", + "description": "Add a comment to a journal entry in Zoho Books.\n\n This tool adds a comment to a specified journal entry in Zoho Books. Call this tool when you need to annotate or provide additional information for a journal entry.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization in Zoho Books where the comment is to be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_unique_id", + "type": "string", + "required": false, + "description": "The unique identifier for the journal entry to which the comment will be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_journal_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddJournalComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60012345678", + "type": "string", + "required": false + }, + "journal_unique_id": { + "value": "JNL-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\": {\"content\": \"Reviewed and approved by accounting team.\", \"is_internal\": false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddProjectTask", + "qualifiedName": "ZohoBooksApi.AddProjectTask", + "fullyQualifiedName": "ZohoBooksApi.AddProjectTask@1.0.0", + "description": "Add a task to a specific project.\n\n Use this tool to add a task to a specified project in Zoho Books. It is suitable when you need to organize tasks within a project and track them through Zoho's project management system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the task is being added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the project in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_task'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddProjectTask", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": false + }, + "project_identifier": { + "value": "proj_112233", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"task\": {\"name\": \"Design homepage mockups\", \"description\": \"Create initial UI mockups for the new homepage\", \"start_date\": \"2025-03-01\", \"end_date\": \"2025-03-10\", \"owner_id\": \"987654321\", \"priority\": \"High\", \"status\": \"Open\", \"billable\": true, \"estimated_hours\": 24, \"tags\": [\"design\",\"homepage\"]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddPurchaseOrderComment", + "qualifiedName": "ZohoBooksApi.AddPurchaseOrderComment", + "fullyQualifiedName": "ZohoBooksApi.AddPurchaseOrderComment@1.0.0", + "description": "Add a comment to a purchase order in Zoho Books.\n\n\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. This ID is required to specify which organization's purchase order is being commented on. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the purchase order in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_purchase_order_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddPurchaseOrderComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "purchase_order_identifier": { + "value": "PO-987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"comment\":\"Please review the delivery schedule and confirm ASAP.\",\"is_public\":false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddRetainerInvoiceComment", + "qualifiedName": "ZohoBooksApi.AddRetainerInvoiceComment", + "fullyQualifiedName": "ZohoBooksApi.AddRetainerInvoiceComment@1.0.0", + "description": "Add a comment to a specific retainer invoice.\n\n This tool is used to add a comment to a specified retainer invoice in Zoho Books. It should be called when a user wishes to provide additional information or notes related to an existing retainer invoice.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique ID string of the organization in Zoho Books to add a comment to a retainer invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": false, + "description": "A unique identifier for the retainer invoice you want to comment on. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_retainer_invoice_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddRetainerInvoiceComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6001234567890", + "type": "string", + "required": false + }, + "retainer_invoice_id": { + "value": "3984750293487501", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"comment\":\"Please review this retainer invoice. Added note about scope change.\",\"is_private\":false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddSalesOrderComment", + "qualifiedName": "ZohoBooksApi.AddSalesOrderComment", + "fullyQualifiedName": "ZohoBooksApi.AddSalesOrderComment@1.0.0", + "description": "Add a comment to a sales order in Zoho Books.\n\n This tool is used to add a comment to a specific sales order in Zoho Books. It should be called when you need to leave additional remarks or notes on a sales order.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": false, + "description": "Unique identifier of the sales order to which the comment will be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_sales_order_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddSalesOrderComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "sales_order_id": { + "value": "SO-1001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"comment\":\"Please approve the applied discount and confirm delivery date.\",\"is_private\":false,\"send_notification\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AddVendorCreditComment", + "qualifiedName": "ZohoBooksApi.AddVendorCreditComment", + "fullyQualifiedName": "ZohoBooksApi.AddVendorCreditComment@1.0.0", + "description": "Add a comment to an existing vendor credit.\n\n Use this tool to add a comment to a vendor credit in Zoho Books. It should be called when you need to attach notes or additional information to a vendor credit entry.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required to specify which organization the vendor credit belongs to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the vendor credit to which the comment will be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_vendor_credit_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AddVendorCreditComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "vendor_credit_identifier": { + "value": "VC-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\": {\"comment\": \"Applied vendor credit after invoice reconciliation. See PO #PO-789.\", \"is_private\": false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApplyCreditNoteToInvoice", + "qualifiedName": "ZohoBooksApi.ApplyCreditNoteToInvoice", + "fullyQualifiedName": "ZohoBooksApi.ApplyCreditNoteToInvoice@1.0.0", + "description": "Apply credit note to existing invoices in Zoho Books.\n\n This tool applies a credit note to specific existing invoices within the Zoho Books platform. It should be called when you want to manage or adjust invoice balances by using available credit notes.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization within Zoho Books to which the credit note is being applied. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": false, + "description": "Unique identifier of the credit note to apply to invoices. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'apply_credit_note_to_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApplyCreditNoteToInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "credit_note_id": { + "value": "CN-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"invoices\":[{\"invoice_id\":\"INV-1001\",\"amount_applied\":150.00},{\"invoice_id\":\"INV-1002\",\"amount_applied\":50.00}],\"total_applied\":200.00,\"apply_date\":\"2026-02-19\",\"notes\":\"Applying credit to outstanding invoices\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApplyCreditsToInvoice", + "qualifiedName": "ZohoBooksApi.ApplyCreditsToInvoice", + "fullyQualifiedName": "ZohoBooksApi.ApplyCreditsToInvoice@1.0.0", + "description": "Apply customer credits to an invoice.\n\n This tool applies customer credits, from credit notes or excess payments, to a specified invoice. It can apply multiple credits at once.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization to identify where credits are applied. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the invoice to which credits will be applied. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'apply_credits_to_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApplyCreditsToInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "invoice_unique_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"credits\":[{\"credit_id\":\"CN-1001\",\"amount_applied\":150.00},{\"credit_id\":\"EP-2002\",\"amount_applied\":50.00}],\"total_applied\":200.00,\"notes\":\"Applying available credits to invoice\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApplyVendorCreditsToBill", + "qualifiedName": "ZohoBooksApi.ApplyVendorCreditsToBill", + "fullyQualifiedName": "ZohoBooksApi.ApplyVendorCreditsToBill@1.0.0", + "description": "Apply vendor credits to a bill.\n\n This tool applies vendor credits from excess payments to a specified bill. It is useful for managing accounts and applying multiple credits at once.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization where credits are being applied. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the bill to apply credits to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'apply_credits_to_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApplyVendorCreditsToBill", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "bill_identifier": { + "value": "BILL-98765", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_credits\":[{\"credit_id\":\"VC-2026-001\",\"amount_applied\":150.00},{\"credit_id\":\"VC-2026-002\",\"amount_applied\":50.00}],\"notes\":\"Applying excess vendor credits to bill\",\"apply_date\":\"2026-02-19\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApplyVendorCreditToBill", + "qualifiedName": "ZohoBooksApi.ApplyVendorCreditToBill", + "fullyQualifiedName": "ZohoBooksApi.ApplyVendorCreditToBill@1.0.0", + "description": "Apply vendor credit to an existing bill in Zoho Books.\n\n Use this tool to apply a specific vendor credit to existing bills. It helps manage and track accounts payable by adjusting bills with vendor credits.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization where the vendor credit will be applied. Required for identification within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the vendor credit to be applied to a bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'apply_credits_to_a_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApplyVendorCreditToBill", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6001979367", + "type": "string", + "required": false + }, + "vendor_credit_identifier": { + "value": "VC-1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"apply_to_bills\":[{\"bill_id\":\"BILL-987654\",\"amount_applied\":150.00,\"reference_number\":\"REF-2026-01\"}],\"note\":\"Applying remaining vendor credit to outstanding bill\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApproveBill", + "qualifiedName": "ZohoBooksApi.ApproveBill", + "fullyQualifiedName": "ZohoBooksApi.ApproveBill@1.0.0", + "description": "Approve a bill in Zoho Books.\n\nThis tool approves a specified bill in Zoho Books. It should be used when you need to change the status of a bill to approved.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization for which the bill needs approval.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the bill to be approved in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'approve_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApproveBill", + "parameters": { + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApproveCreditNote", + "qualifiedName": "ZohoBooksApi.ApproveCreditNote", + "fullyQualifiedName": "ZohoBooksApi.ApproveCreditNote@1.0.0", + "description": "Approve a credit note for a specified ID.\n\nUse this tool to approve a credit note by providing the specific credit note ID. This action confirms the validity and acceptance of the credit note within the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization for which the credit note is being approved.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_identifier", + "type": "string", + "required": true, + "description": "A unique string identifier for the specific credit note to approve.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'approve_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApproveCreditNote", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "credit_note_identifier": { + "value": "CN-2026-00042", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApproveEstimate", + "qualifiedName": "ZohoBooksApi.ApproveEstimate", + "fullyQualifiedName": "ZohoBooksApi.ApproveEstimate@1.0.0", + "description": "Approve an estimate in Zoho Books.\n\nUse this tool to approve an estimate in the Zoho Books system when you have the estimate ID. It should be called when an estimate needs to be confirmed as approved.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books whose estimate is being approved. This should be the unique identifier associated with the organization.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the estimate to be approved in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'approve_estimate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApproveEstimate", + "parameters": { + "organization_id": { + "value": "600000000000123", + "type": "string", + "required": true + }, + "estimate_identifier": { + "value": "EST-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApproveInvoice", + "qualifiedName": "ZohoBooksApi.ApproveInvoice", + "fullyQualifiedName": "ZohoBooksApi.ApproveInvoice@1.0.0", + "description": "Approve a specified invoice for processing.\n\nThis tool approves a pending invoice given its ID, making it ready for processing. Call this tool when an invoice requires approval to proceed.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the invoice is to be approved.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to approve.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'approve_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApproveInvoice", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-1001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApprovePurchaseOrder", + "qualifiedName": "ZohoBooksApi.ApprovePurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.ApprovePurchaseOrder@1.0.0", + "description": "Approve a purchase order.\n\nThis tool approves a specified purchase order in Zoho Books. It should be called when a purchase order needs to be authorized for further processing.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization for which to approve the purchase order. This should be a unique string identifier provided by Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the purchase order to be approved.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'approve_purchase_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApprovePurchaseOrder", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "purchase_order_identifier": { + "value": "PO-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApproveRetainerInvoice", + "qualifiedName": "ZohoBooksApi.ApproveRetainerInvoice", + "fullyQualifiedName": "ZohoBooksApi.ApproveRetainerInvoice@1.0.0", + "description": "Approve a retainer invoice in Zoho Books.\n\nUse this tool to approve a specific retainer invoice in Zoho Books when you have the invoice ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the retainer invoice is being approved.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice to approve.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'approve_retainer_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApproveRetainerInvoice", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "123456789012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApproveSalesOrder", + "qualifiedName": "ZohoBooksApi.ApproveSalesOrder", + "fullyQualifiedName": "ZohoBooksApi.ApproveSalesOrder@1.0.0", + "description": "Approve a specified sales order in Zoho Books.\n\nUse this tool to approve a particular sales order within the Zoho Books system. This is typically called when a sales order needs to be confirmed and finalized.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books required for approving a sales order.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "The unique identifier for the sales order to be approved.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'approve_sales_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApproveSalesOrder", + "parameters": { + "organization_identifier": { + "value": "60001234567", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO-9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ApproveVendorCredit", + "qualifiedName": "ZohoBooksApi.ApproveVendorCredit", + "fullyQualifiedName": "ZohoBooksApi.ApproveVendorCredit@1.0.0", + "description": "Approve a vendor credit in Zoho Books.\n\nThis tool approves a vendor credit in Zoho Books, marking the credit as accepted for the specified vendor credit ID.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books. This uniquely identifies the organization for which the vendor credit approval will be processed.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor credit to be approved.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'approve_vendor_credit'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ApproveVendorCredit", + "parameters": { + "organization_identifier": { + "value": "6000000000001", + "type": "string", + "required": true + }, + "vendor_credit_identifier": { + "value": "100000000012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AssignUsersToProject", + "qualifiedName": "ZohoBooksApi.AssignUsersToProject", + "fullyQualifiedName": "ZohoBooksApi.AssignUsersToProject@1.0.0", + "description": "Assign users to a specific project in Zoho Books.\n\n Use this tool to assign multiple users to a project in Zoho Books when managing project teams or updating project participation.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique ID of the organization in Zoho Books for which users are being assigned to a project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the project to which users will be assigned. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_project_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AssignUsersToProject", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "project_identifier": { + "value": "PRJ-1024", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"users\":[{\"user_id\":\"7890\",\"role\":\"Member\"},{\"user_id\":\"4567\",\"role\":\"Manager\"}],\"notify\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AssociateInvoiceWithSalesOrder", + "qualifiedName": "ZohoBooksApi.AssociateInvoiceWithSalesOrder", + "fullyQualifiedName": "ZohoBooksApi.AssociateInvoiceWithSalesOrder@1.0.0", + "description": "Link existing invoices to sales orders for tracking.\n\n This tool is used to associate existing invoices with one or more sales orders, enabling better tracking and management of orders and billing.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required for linking invoices with sales orders. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'map_invoice_with_salesorder'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AssociateInvoiceWithSalesOrder", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"invoices\":[{\"invoice_id\":\"123456789012345\",\"sales_order_ids\":[\"9876543210\",\"9876543211\"]},{\"invoice_id\":\"123456789012346\",\"sales_order_ids\":[\"9876543212\"]}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AttachExpenseReceipt", + "qualifiedName": "ZohoBooksApi.AttachExpenseReceipt", + "fullyQualifiedName": "ZohoBooksApi.AttachExpenseReceipt@1.0.0", + "description": "Attach a receipt to a specified expense.\n\nUse this tool to attach a receipt file to an existing expense record, identified by the expense ID. It is helpful when you need to provide proof or documentation for expense entries in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_id", + "type": "string", + "required": true, + "description": "Unique identifier for the expense to which the receipt will be attached.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_receipt_file", + "type": "string", + "required": false, + "description": "The file to attach as an expense receipt. Supported formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_expense_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AttachExpenseReceipt", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "expense_id": { + "value": "EXP-2026-000123", + "type": "string", + "required": true + }, + "expense_receipt_file": { + "value": "receipt-2026-02-19.pdf", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AttachFileToBill", + "qualifiedName": "ZohoBooksApi.AttachFileToBill", + "fullyQualifiedName": "ZohoBooksApi.AttachFileToBill@1.0.0", + "description": "Attach a file to a specific bill.\n\nUse this tool to attach a file to a specific bill in Zoho Books. It should be called when you need to upload and associate documents, such as receipts or invoices, with a bill.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books to which the bill belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bill for which the file will be attached. Use this to specify the target bill in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "file_attachment", + "type": "string", + "required": false, + "description": "File to attach to the bill. Accepted formats: gif, png, jpeg, jpg, bmp, pdf.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_bill_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AttachFileToBill", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "bill_id": { + "value": "BILL-2026-0001", + "type": "string", + "required": true + }, + "file_attachment": { + "value": "receipt-2026-02-19.pdf", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AttachFileToInvoice", + "qualifiedName": "ZohoBooksApi.AttachFileToInvoice", + "fullyQualifiedName": "ZohoBooksApi.AttachFileToInvoice@1.0.0", + "description": "Attach a file to an invoice.\n\n Use this tool to upload and attach a file to a specified retainer invoice. This is useful for adding supporting documents or additional information to invoices.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization to which the invoice belongs. Required to specify the correct entity for file attachment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the retainer invoice to which the file will be attached. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_retainer_invoice_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AttachFileToInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "687593211", + "type": "string", + "required": false + }, + "retainer_invoice_identifier": { + "value": "RINV-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"attachments\":[{\"file_name\":\"contract.pdf\",\"content\":\"JVBERi0xLjQKJcfs...\",\"mime_type\":\"application/pdf\"}],\"notes\":\"Signed contract attached\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AttachFileToJournal", + "qualifiedName": "ZohoBooksApi.AttachFileToJournal", + "fullyQualifiedName": "ZohoBooksApi.AttachFileToJournal@1.0.0", + "description": "Attach a file to a Zoho Books journal entry.\n\nThis tool is used to attach a file to a specific journal entry in Zoho Books. Use it when you need to upload and associate documents or files with journal entries for record-keeping or documentation purposes.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization where the file will be attached. This is used to specify the target organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_unique_identifier", + "type": "string", + "required": true, + "description": "Provide the unique identifier for the specific journal entry to which the file will be attached.", + "enum": null, + "inferrable": true + }, + { + "name": "attachment_file_path", + "type": "string", + "required": false, + "description": "The path to the file that will be attached to the journal in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "document_to_attach", + "type": "string", + "required": false, + "description": "The document or file to be attached to the journal entry in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "total_number_of_files", + "type": "integer", + "required": false, + "description": "Specify the total number of files to be attached to the journal. Ensure this matches the actual number of attachments.", + "enum": null, + "inferrable": true + }, + { + "name": "document_identifiers", + "type": "string", + "required": false, + "description": "A string of document IDs that need to be attached. These IDs should be associated with the documents intended for attachment.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_journal_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AttachFileToJournal", + "parameters": { + "organization_id": { + "value": "600012345678901", + "type": "string", + "required": true + }, + "journal_unique_identifier": { + "value": "1534000000001234567", + "type": "string", + "required": true + }, + "attachment_file_path": { + "value": "/home/user/documents/journal-attachment-2026-02-19.pdf", + "type": "string", + "required": false + }, + "document_to_attach": { + "value": "journal-attachment-2026-02-19.pdf", + "type": "string", + "required": false + }, + "total_number_of_files": { + "value": 1, + "type": "integer", + "required": false + }, + "document_identifiers": { + "value": "1534000000001111111", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AttachFileToPurchaseOrder", + "qualifiedName": "ZohoBooksApi.AttachFileToPurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.AttachFileToPurchaseOrder@1.0.0", + "description": "Attach a file to a specified purchase order.\n\nUse this tool to attach a file to a specified purchase order in Zoho Books. Useful for adding supplementary documents or files to your existing purchase orders.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "The unique identifier of the purchase order to which the file will be attached.", + "enum": null, + "inferrable": true + }, + { + "name": "file_attachment", + "type": "string", + "required": false, + "description": "The file to attach to the purchase order. Must be one of the following formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, or docx.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_purchase_order_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AttachFileToPurchaseOrder", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "9876543210", + "type": "string", + "required": true + }, + "file_attachment": { + "value": "purchase_order_9876543210.pdf", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AttachFileToSalesOrder", + "qualifiedName": "ZohoBooksApi.AttachFileToSalesOrder", + "fullyQualifiedName": "ZohoBooksApi.AttachFileToSalesOrder@1.0.0", + "description": "Attach a file to a specific sales order in Zoho Books.\n\nThis tool is used to attach a file to a specific sales order in Zoho Books. It should be called when you need to upload and associate a document with a sales order for tracking or record-keeping purposes.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order to which the file will be attached.", + "enum": null, + "inferrable": true + }, + { + "name": "file_to_attach", + "type": "string", + "required": false, + "description": "Path or identifier of the file to be attached to the sales order.", + "enum": null, + "inferrable": true + }, + { + "name": "document_file_path", + "type": "string", + "required": false, + "description": "Path to the document file that needs to be attached to the sales order.", + "enum": null, + "inferrable": true + }, + { + "name": "number_of_files", + "type": "integer", + "required": false, + "description": "Specify the total number of files to be attached to the sales order.", + "enum": null, + "inferrable": true + }, + { + "name": "document_identifiers", + "type": "string", + "required": false, + "description": "A string representing the IDs of the documents to attach. Comma-separated for multiple IDs.", + "enum": null, + "inferrable": true + }, + { + "name": "allow_sending_file_in_mail", + "type": "boolean", + "required": false, + "description": "Boolean indicating if the file can be sent in mail. True allows sending.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_sales_order_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AttachFileToSalesOrder", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "sales_order_identifier": { + "value": "SO-2026-0042", + "type": "string", + "required": true + }, + "file_to_attach": { + "value": "attachments/salesorder_SO-2026-0042.pdf", + "type": "string", + "required": false + }, + "document_file_path": { + "value": "/var/data/zoho/uploads/salesorder_SO-2026-0042.pdf", + "type": "string", + "required": false + }, + "number_of_files": { + "value": 1, + "type": "integer", + "required": false + }, + "document_identifiers": { + "value": "1122334455,6677889900", + "type": "string", + "required": false + }, + "allow_sending_file_in_mail": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "AttachInvoiceFile", + "qualifiedName": "ZohoBooksApi.AttachInvoiceFile", + "fullyQualifiedName": "ZohoBooksApi.AttachInvoiceFile@1.0.0", + "description": "Attach a file to a specified invoice.\n\nUse this tool to attach a file to a specific invoice using its ID. It is useful for adding documents related to the invoice.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization for which the invoice attachment is being added. This is required to identify the specific organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the invoice to attach the file to.", + "enum": null, + "inferrable": true + }, + { + "name": "file_to_attach", + "type": "string", + "required": false, + "description": "The file to be attached. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf.", + "enum": null, + "inferrable": true + }, + { + "name": "send_attachment_in_email", + "type": "boolean", + "required": false, + "description": "Set to True to send the attachment with the invoice when emailed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_invoice_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.AttachInvoiceFile", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + }, + "file_to_attach": { + "value": "contract.pdf", + "type": "string", + "required": false + }, + "send_attachment_in_email": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "BulkDeleteCustomerPayments", + "qualifiedName": "ZohoBooksApi.BulkDeleteCustomerPayments", + "fullyQualifiedName": "ZohoBooksApi.BulkDeleteCustomerPayments@1.0.0", + "description": "Delete multiple customer payments efficiently.\n\nUse this tool to remove several customer payments at once in Zoho Books. It's ideal for managing large-scale payment data cleanup.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier string for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_ids_to_delete", + "type": "string", + "required": true, + "description": "Comma-separated list of payment IDs to be deleted in the bulk operation.", + "enum": null, + "inferrable": true + }, + { + "name": "perform_bulk_delete", + "type": "boolean", + "required": true, + "description": "Set to true to perform the bulk delete operation for customer payments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_delete_customer_payments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.BulkDeleteCustomerPayments", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "payment_ids_to_delete": { + "value": "987654321,123456789,555666777", + "type": "string", + "required": true + }, + "perform_bulk_delete": { + "value": true, + "type": "boolean", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CancelFixedAsset", + "qualifiedName": "ZohoBooksApi.CancelFixedAsset", + "fullyQualifiedName": "ZohoBooksApi.CancelFixedAsset@1.0.0", + "description": "Cancel a fixed asset in Zoho Books.\n\nUse this tool to cancel a fixed asset in Zoho Books by providing the fixed asset ID. This changes the status of the asset to canceled.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required to specify which organization's fixed asset to cancel.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_id", + "type": "string", + "required": true, + "description": "Unique identifier for the fixed asset to be canceled.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_fixed_asset_cancel'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CancelFixedAsset", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "fixed_asset_id": { + "value": "FA-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CancelPurchaseOrder", + "qualifiedName": "ZohoBooksApi.CancelPurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.CancelPurchaseOrder@1.0.0", + "description": "Cancel a specific purchase order in Zoho Books.\n\nUse this tool to mark a purchase order as cancelled within the Zoho Books platform. This is useful when an order needs to be invalidated or stopped.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The identifier for the organization in Zoho Books. This ID is required to specify which organization's purchase order should be cancelled.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "The unique identifier of the purchase order to be cancelled.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_purchase_order_cancelled'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CancelPurchaseOrder", + "parameters": { + "organization_id": { + "value": "67890123456", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-2026-00042", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CancelWriteOffInvoice", + "qualifiedName": "ZohoBooksApi.CancelWriteOffInvoice", + "fullyQualifiedName": "ZohoBooksApi.CancelWriteOffInvoice@1.0.0", + "description": "Cancel the write-off amount of an invoice in Zoho Books.\n\nUse this tool to revert the write-off process of an invoice in Zoho Books. This action can be performed when an invoice's write-off needs to be canceled, typically to amend financial records or correct a mistake.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books whose invoice write-off is to be canceled.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_unique_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the invoice whose write-off is to be canceled.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'cancel_write_off_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CancelWriteOffInvoice", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "invoice_unique_identifier": { + "value": "INV-2026-045", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CategorizeBankTransaction", + "qualifiedName": "ZohoBooksApi.CategorizeBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.CategorizeBankTransaction@1.0.0", + "description": "Categorize an uncategorized bank transaction.\n\n This tool categorizes an uncategorized bank transaction by creating a new transaction. Use it when a bank transaction needs to be classified into a specific category.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "Provide the ID of the organization to categorize the transaction. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": false, + "description": "Unique identifier of the bank transaction to be categorized. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'categorize_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CategorizeBankTransaction", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": false + }, + "bank_transaction_id": { + "value": "BT_000123456", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"transaction_type\":\"expense\",\"date\":\"2026-02-01\",\"account_id\":\"1234567890\",\"contact_id\":\"987654321\",\"reference_number\":\"BTX-2026-0001\",\"amount\":500.00,\"currency_code\":\"USD\",\"description\":\"Office supplies purchase\",\"line_items\":[{\"item_id\":\"11111\",\"name\":\"Printer paper\",\"description\":\"A4 paper\",\"quantity\":5,\"rate\":20.00,\"amount\":100.00},{\"item_id\":\"22222\",\"name\":\"Ink cartridges\",\"description\":\"Black ink\",\"quantity\":2,\"rate\":200.00,\"amount\":400.00}],\"notes\":\"Categorized from bank import\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CategorizeBankTransactionAsExpense", + "qualifiedName": "ZohoBooksApi.CategorizeBankTransactionAsExpense", + "fullyQualifiedName": "ZohoBooksApi.CategorizeBankTransactionAsExpense@1.0.0", + "description": "Categorize an uncategorized bank transaction as an expense.\n\n Use this tool to classify an uncategorized bank transaction as an expense in Zoho Books. It should be called when a user needs to organize their financial records by assigning a transaction to the expense category.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. Required to identify which organization's transaction is being categorized. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": false, + "description": "Unique identifier for the bank transaction to be categorized as an expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "attachment_document", + "type": "string", + "required": false, + "description": "Document file to attach with the transaction as a string (e.g., base64 encoded or URL). Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "total_number_of_files", + "type": "integer", + "required": false, + "description": "Total count of files to be attached to the transaction. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "document_identifiers", + "type": "integer", + "required": false, + "description": "Comma-separated list of document IDs to be attached to the transaction. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'categorize_bank_transaction_as_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CategorizeBankTransactionAsExpense", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "ORG-123456", + "type": "string", + "required": false + }, + "bank_transaction_id": { + "value": "BTX-2026-0001", + "type": "string", + "required": false + }, + "attachment_document": { + "value": "https://example.com/receipts/receipt123.jpg", + "type": "string", + "required": false + }, + "total_number_of_files": { + "value": 1, + "type": "integer", + "required": false + }, + "document_identifiers": { + "value": 456, + "type": "integer", + "required": false + }, + "request_body": { + "value": "{\"account_id\":\"ACCT-98765\",\"transaction_date\":\"2026-01-15\",\"amount\":150.75,\"currency\":\"USD\",\"category_id\":\"CAT-1001\",\"description\":\"Office supplies purchase\",\"reference_number\":\"INV-5555\",\"attachments\":[{\"document_id\":456}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CategorizeBankTransactionPaymentRefund", + "qualifiedName": "ZohoBooksApi.CategorizeBankTransactionPaymentRefund", + "fullyQualifiedName": "ZohoBooksApi.CategorizeBankTransactionPaymentRefund@1.0.0", + "description": "Categorize bank transactions as payment refunds.\n\n Use this tool to categorize uncategorized bank transactions specifically as payment refunds in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_statement_line_id", + "type": "string", + "required": false, + "description": "Unique identifier for the bank statement line to be categorized. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'categorize_bank_transaction_as_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CategorizeBankTransactionPaymentRefund", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "bank_statement_line_id": { + "value": "BSL_987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"category\":\"payment_refund\",\"refund_date\":\"2025-01-15\",\"refund_amount\":150.00,\"reference_number\":\"REF12345\",\"note\":\"Refund processed for overpayment\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CategorizeRefundVendorCredit", + "qualifiedName": "ZohoBooksApi.CategorizeRefundVendorCredit", + "fullyQualifiedName": "ZohoBooksApi.CategorizeRefundVendorCredit@1.0.0", + "description": "Categorize transactions as vendor credit refunds.\n\n Use this tool to categorize an uncategorized transaction as a refund from a vendor credit in Zoho Books. Call this tool when you need to identify and organize transactions involving vendor credit refunds.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Specify the ID of the organization for which the transaction is being categorized as a vendor credit refund. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": false, + "description": "Unique identifier of the bank transaction to categorize as a vendor credit refund. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'categorize_as_vendor_credit_refunds'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CategorizeRefundVendorCredit", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6712345678", + "type": "string", + "required": false + }, + "bank_transaction_id": { + "value": "BT-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_credit_id\":\"VC-334455\",\"refund_amount\":150.00,\"refund_date\":\"2026-02-15\",\"account_id\":\"AC-998877\",\"notes\":\"Categorized as refund from vendor credit\",\"reference_number\":\"REF-5566\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CategorizeTransactionAsPayment", + "qualifiedName": "ZohoBooksApi.CategorizeTransactionAsPayment", + "fullyQualifiedName": "ZohoBooksApi.CategorizeTransactionAsPayment@1.0.0", + "description": "Categorize an uncategorized transaction as a Customer Payment.\n\n Use this tool to categorize an uncategorized bank transaction as a Customer Payment in Zoho Books. This should be called when you need to update the categorization status of bank transactions.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization in Zoho Books for which the transaction is being categorized. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": false, + "description": "Unique identifier of the bank transaction to be categorized as Customer Payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'categorize_bank_transaction_as_customer_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CategorizeTransactionAsPayment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "bank_transaction_id": { + "value": "987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"CUST_001\",\"payment_date\":\"2026-02-15\",\"amount\":1500.00,\"reference_number\":\"PMT-20260215-01\",\"payment_mode\":\"Bank Transfer\",\"notes\":\"Categorized via API\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CategorizeTransactionAsRefund", + "qualifiedName": "ZohoBooksApi.CategorizeTransactionAsRefund", + "fullyQualifiedName": "ZohoBooksApi.CategorizeTransactionAsRefund@1.0.0", + "description": "Categorize a transaction as a credit note refund.\n\n Use this tool to categorize an uncategorized bank transaction specifically as a refund from a credit note.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Must match the organization in Zoho Books to categorize transactions accurately. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_id", + "type": "string", + "required": false, + "description": "Unique identifier of the bank transaction to categorize as a refund from a credit note. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'categorize_as_credit_note_refunds'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CategorizeTransactionAsRefund", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "transaction_id": { + "value": "txn_000987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"credit_note_id\":\"CN-1001\",\"amount_applied\":150.00,\"date\":\"2025-02-15\",\"reference_number\":\"REF-2001\",\"notes\":\"Refund for overpayment\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CategorizeTransactionAsVendorPayment", + "qualifiedName": "ZohoBooksApi.CategorizeTransactionAsVendorPayment", + "fullyQualifiedName": "ZohoBooksApi.CategorizeTransactionAsVendorPayment@1.0.0", + "description": "Categorize a bank transaction as a vendor payment.\n\n Use this tool to categorize an uncategorized bank transaction as a vendor payment in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique string ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_id", + "type": "string", + "required": false, + "description": "Unique identifier of the bank transaction to categorize as vendor payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'categorize_bank_transaction_as_vendor_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CategorizeTransactionAsVendorPayment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "8001234567890", + "type": "string", + "required": false + }, + "transaction_id": { + "value": "bt_20260219_0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"payment\":{\"vendor_id\":\"450987654321\",\"payment_account_id\":\"1200456789\",\"date\":\"2026-02-19\",\"amount\":1500.75,\"reference_number\":\"VP-2026-0001\",\"payment_mode\":\"bank_transfer\",\"notes\":\"Payment for invoice INV-1001\",\"bank_transaction_id\":\"bt_20260219_0001\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CategorizeVendorPaymentRefund", + "qualifiedName": "ZohoBooksApi.CategorizeVendorPaymentRefund", + "fullyQualifiedName": "ZohoBooksApi.CategorizeVendorPaymentRefund@1.0.0", + "description": "Categorize bank transactions as Vendor Payment Refund.\n\n Use this tool to categorize uncategorized bank transactions as vendor payment refunds. It should be called when organizing financial data related to refunds from vendors.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization whose transactions are being categorized. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_statement_line_id", + "type": "string", + "required": false, + "description": "Unique identifier for the bank statement line to categorize as Vendor Payment Refund. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'categorize_as_vendor_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CategorizeVendorPaymentRefund", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "bank_statement_line_id": { + "value": "BSL_987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"transaction_type\":\"vendor_payment_refund\",\"refund_date\":\"2025-02-10\",\"amount\":150.75,\"currency_id\":\"USD\",\"vendor_id\":\"VEND_00123\",\"reference_number\":\"REF-20250210-01\",\"notes\":\"Refund for returned goods\",\"line_items\":[{\"item_id\":\"ITEM_456\",\"description\":\"Returned item refund\",\"amount\":150.75}] }", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CloneProject", + "qualifiedName": "ZohoBooksApi.CloneProject", + "fullyQualifiedName": "ZohoBooksApi.CloneProject@1.0.0", + "description": "Clone an existing project in Zoho Books.\n\n Use this tool to create a copy of an existing project in Zoho Books. It's useful for duplicating project setups with similar parameters or settings.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "project_unique_identifier", + "type": "string", + "required": false, + "description": "Unique string identifier of the project to be cloned. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'clone_project'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CloneProject", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "project_unique_identifier": { + "value": "proj_5f8e2c3a", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"project\":{\"name\":\"Website Redesign - Copy\",\"description\":\"Cloned from project 'Website Redesign' to use as template\",\"start_date\":\"2026-03-01\",\"end_date\":\"2026-06-30\",\"billable\":true,\"clone_options\":{\"clone_tasks\":true,\"clone_milestones\":true,\"clone_time_entries\":false,\"clone_team_members\":true}}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ConvertCreditNoteToDraft", + "qualifiedName": "ZohoBooksApi.ConvertCreditNoteToDraft", + "fullyQualifiedName": "ZohoBooksApi.ConvertCreditNoteToDraft@1.0.0", + "description": "Convert a voided credit note to a draft status.\n\nUse this tool to change the status of a voided credit note back to draft in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to be converted to draft.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_credit_note_draft'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ConvertCreditNoteToDraft", + "parameters": { + "organization_id": { + "value": "6000000000001", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "10000000000012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ConvertPurchaseOrderToBill", + "qualifiedName": "ZohoBooksApi.ConvertPurchaseOrderToBill", + "fullyQualifiedName": "ZohoBooksApi.ConvertPurchaseOrderToBill@1.0.0", + "description": "Fetch bill payload from purchase orders.\n\nThis tool retrieves the bill payload for selected purchase orders using their IDs. It should be called when you want to convert purchase orders into a bill. After obtaining the payload, use it to create a bill in the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Enter the ID of the organization for which the bill will be created.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_ids", + "type": "string", + "required": true, + "description": "Comma-separated IDs of the purchase orders to be converted into a bill.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'convert_purchase_order_to_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ConvertPurchaseOrderToBill", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "purchase_order_ids": { + "value": "1234567890,1234567891,1234567892", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateAssociatedTax", + "qualifiedName": "ZohoBooksApi.CreateAssociatedTax", + "fullyQualifiedName": "ZohoBooksApi.CreateAssociatedTax@1.0.0", + "description": "Create and associate a tax with an item.\n\n This tool creates a tax that can be added to an item within the Zoho Books system. It is used when a new tax needs to be defined and linked to specific goods or services.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization in Zoho Books where the tax will be created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_tax'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateAssociatedTax", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"tax\":{\"name\":\"State Sales Tax\",\"rate\":7.5,\"is_compound\":false,\"is_active\":true},\"associate_with\":{\"item_id\":\"9876543210987654321\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateBankAccount", + "qualifiedName": "ZohoBooksApi.CreateBankAccount", + "fullyQualifiedName": "ZohoBooksApi.CreateBankAccount@1.0.0", + "description": "Create a bank or credit card account in your organization.\n\n This tool is used to create a new bank account or credit card account for your organization via Zoho Books. Call this tool when you need to add financial accounts to manage and track transactions in your organization's accounting system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which to create the bank or credit card account. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_bank_account'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateBankAccount", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"account_name\":\"Main Checking\",\"account_type\":\"bank_account\",\"bank_name\":\"First National Bank\",\"account_number\":\"9876543210\",\"routing_number\":\"021000021\",\"currency_id\":\"USD\",\"opening_balance\":15000.00,\"opening_balance_date\":\"2026-02-01\",\"description\":\"Main operating account\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateBankTransaction", + "qualifiedName": "ZohoBooksApi.CreateBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.CreateBankTransaction@1.0.0", + "description": "Creates a bank transaction in Zoho Books.\n\n This tool is used to create a bank transaction within Zoho Books. It should be called when a user needs to log a financial transaction using allowed transaction types.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the bank transaction is to be created. This ID helps identify the specific organization within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateBankTransaction", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"account_id\":\"987654321\",\"transaction_type\":\"deposit\",\"transaction_date\":\"2026-02-15\",\"amount\":1500.00,\"currency_code\":\"USD\",\"description\":\"Client payment for invoice INV-1001\",\"reference_number\":\"BT-20260215-001\",\"customer_id\":\"CUST-001\",\"line_items\":[{\"description\":\"Consulting services\",\"amount\":1500.00,\"tax_id\":null,\"account_id\":\"40001\"}],\"attachments\":[]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateBusinessContact", + "qualifiedName": "ZohoBooksApi.CreateBusinessContact", + "fullyQualifiedName": "ZohoBooksApi.CreateBusinessContact@1.0.0", + "description": "Create a new business contact with comprehensive details.\n\n Use this tool to create a contact in Zoho Books with information such as name, company details, addresses, and more. This contact can be utilized for various business transactions like invoices and estimates.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the contact is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_contact'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateBusinessContact", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"contact_name\":\"Acme Subsidiary Ltd\",\"company_name\":\"Acme Corporation\",\"contact_type\":\"customer\",\"contact_persons\":[{\"first_name\":\"Jane\",\"last_name\":\"Doe\",\"email\":\"jane.doe@acme.com\",\"phone\":\"+1-555-0102\",\"is_primary_contact\":true},{\"first_name\":\"John\",\"last_name\":\"Smith\",\"email\":\"john.smith@acme.com\",\"phone\":\"+1-555-0199\",\"is_primary_contact\":false}],\"billing_address\":{\"attention\":\"Accounts Payable\",\"address\":\"123 Market Street, Suite 400\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94105\",\"country\":\"USA\",\"phone\":\"+1-415-555-0123\"},\"shipping_address\":{\"attention\":\"Receiving\",\"address\":\"456 Warehouse Ave\",\"city\":\"Oakland\",\"state\":\"CA\",\"zip\":\"94607\",\"country\":\"USA\",\"phone\":\"+1-510-555-0144\"},\"website\":\"https://www.acme.com\",\"currency_id\":\"USD\",\"payment_terms\":30,\"tax_id\":\"USGST123456\",\"notes\":\"Preferred customer. Apply 5% early payment discount when applicable.\",\"custom_fields\":[{\"label\":\"Account Manager\",\"value\":\"Sam Rivera\"}],\"is_active\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateChartOfAccount", + "qualifiedName": "ZohoBooksApi.CreateChartOfAccount", + "fullyQualifiedName": "ZohoBooksApi.CreateChartOfAccount@1.0.0", + "description": "Creates an account with a specified account type.\n\n This tool is used to create a new account within the chart of accounts by specifying the type of account desired. It is suitable when setting up financial frameworks or managing accounting structures.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the account is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_chart_of_account'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateChartOfAccount", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"name\":\"Sales Revenue\",\"account_type\":\"Income\",\"account_sub_type\":\"Sales\",\"code\":\"4000\",\"description\":\"Revenue from product sales\",\"opening_balance\":0.00,\"is_bank_account\":false}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateContactPerson", + "qualifiedName": "ZohoBooksApi.CreateContactPerson", + "fullyQualifiedName": "ZohoBooksApi.CreateContactPerson@1.0.0", + "description": "Create a contact person for a contact in Zoho Books.\n\n Use this tool to add a new contact person associated with a contact in Zoho Books. It facilitates managing additional contact person details within the platform.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization where the contact person will be created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_contact_person'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateContactPerson", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60000000001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"contact_person\":{\"contact_id\":\"50000000001\",\"first_name\":\"Jane\",\"last_name\":\"Doe\",\"email\":\"jane.doe@example.com\",\"phone\":\"+15555550123\",\"mobile\":\"+15555550124\",\"is_primary_contact\":true,\"designation\":\"Head of Procurement\",\"salutation\":\"Ms.\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateCreditNote", + "qualifiedName": "ZohoBooksApi.CreateCreditNote", + "fullyQualifiedName": "ZohoBooksApi.CreateCreditNote@1.0.0", + "description": "Create a new credit note for customer adjustments.\n\n Use this tool to create a credit note when issuing credits to customers for reasons such as returned items, overpayments, or necessary adjustments. It supports multi-currency, custom line items, tax calculations, and workflows.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the credit note is being created. Required for identifying the correct entity within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_id", + "type": "string", + "required": false, + "description": "Invoice ID for the required invoice to associate with the credit note. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "use_custom_credit_note_number", + "type": "boolean", + "required": false, + "description": "Set to true to provide your own credit note number, bypassing auto-numbering. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateCreditNote", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "invoice_id": { + "value": "87654321", + "type": "string", + "required": false + }, + "use_custom_credit_note_number": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"123456789\",\"date\":\"2026-02-15\",\"creditnote_number\":\"CN-2026-001\",\"reason\":\"Returned items\",\"line_items\":[{\"item_id\":\"987654321\",\"name\":\"Widget A\",\"description\":\"Returned due to defect\",\"quantity\":2,\"rate\":50.0,\"tax_id\":\"TAX123\"},{\"item_id\":\"987654322\",\"name\":\"Shipping Adjustment\",\"quantity\":1,\"rate\":10.0,\"tax_id\":null}],\"currency_code\":\"USD\",\"exchange_rate\":1.0,\"notes\":\"Credit issued for returned items and shipping.\",\"apply_to_invoice_id\":\"87654321\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateCurrency", + "qualifiedName": "ZohoBooksApi.CreateCurrency", + "fullyQualifiedName": "ZohoBooksApi.CreateCurrency@1.0.0", + "description": "Create a currency for transactions in Zoho Books.\n\n Use this tool to add a new currency for use in transactions within Zoho Books. This is useful when expanding the supported currencies for financial activities.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the currency is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_currency'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateCurrency", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"currency_code\":\"EUR\",\"currency_symbol\":\"€\",\"currency_name\":\"Euro\",\"decimal_places\":2,\"exchange_rate\":1.0,\"is_active\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateCurrencyAdjustment", + "qualifiedName": "ZohoBooksApi.CreateCurrencyAdjustment", + "fullyQualifiedName": "ZohoBooksApi.CreateCurrencyAdjustment@1.0.0", + "description": "Create a base currency adjustment.\n\n This tool creates an adjustment to the base currency based on the provided information. It is used to update and manage currency values in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. Required for currency adjustments. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "account_identifiers", + "type": "string", + "required": false, + "description": "Comma-separated IDs of accounts for currency adjustments in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_base_currency_adjustment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateCurrencyAdjustment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": false + }, + "account_identifiers": { + "value": "987654321,876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"date\":\"2026-02-19\",\"reference_number\":\"BA-2026-0001\",\"exchange_rate\":1.12,\"from_currency\":\"EUR\",\"to_currency\":\"USD\",\"adjustment_lines\":[{\"account_id\":\"987654321\",\"amount\":1000.00,\"description\":\"Monthly base currency revaluation\"},{\"account_id\":\"876543210\",\"amount\":-50.25,\"description\":\"Rounding difference\"}],\"notes\":\"Adjustment to reflect new closing rates\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateCustomerDebitNote", + "qualifiedName": "ZohoBooksApi.CreateCustomerDebitNote", + "fullyQualifiedName": "ZohoBooksApi.CreateCustomerDebitNote@1.0.0", + "description": "Create a customer debit note for invoice adjustments.\n\n This tool is used to create a customer debit note when there are additional charges or adjustments needed for an existing invoice in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "A unique identifier for the organization to which the debit note will be associated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_debit_note", + "type": "boolean", + "required": false, + "description": "Set to true to send the debit note to the associated contacts. Accepts true or false. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to ignore automatic debit note number generation, requiring manual entry. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_customer_debit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateCustomerDebitNote", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "600123456789012345", + "type": "string", + "required": false + }, + "send_debit_note": { + "value": true, + "type": "boolean", + "required": false + }, + "ignore_auto_number_generation": { + "value": false, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"123456789012345\",\"invoice_id\":\"987654321098765\",\"date\":\"2026-02-15\",\"reference_number\":\"DN-2026-0001\",\"line_items\":[{\"item_id\":\"11111111111\",\"description\":\"Adjustment for additional services\",\"rate\":150.00,\"quantity\":1,\"tax_id\":\"22222222222\"}],\"notes\":\"Debit note issued for additional services on invoice 987654321098765.\",\"custom_fields\":[{\"label\":\"Project\",\"value\":\"Website Redesign\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateCustomerEstimate", + "qualifiedName": "ZohoBooksApi.CreateCustomerEstimate", + "fullyQualifiedName": "ZohoBooksApi.CreateCustomerEstimate@1.0.0", + "description": "Create an estimate for a customer using Zoho Books.\n\n Use this tool to generate a new estimate for a customer within the Zoho Books system. This could be useful when users need to provide potential price quotes or service costs to clients.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the estimate is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_estimate_to_contact", + "type": "boolean", + "required": false, + "description": "Set to true to send the estimate to the contact person(s) associated with it, false to skip sending. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_automatic_estimate_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to bypass automatic estimate number generation. This requires specifying an estimate number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_estimate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateCustomerEstimate", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "987654321", + "type": "string", + "required": false + }, + "send_estimate_to_contact": { + "value": true, + "type": "boolean", + "required": false + }, + "ignore_automatic_estimate_number_generation": { + "value": false, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"543210987654321\",\"date\":\"2026-02-19\",\"expiry_date\":\"2026-03-21\",\"reference_number\":\"REF-2026-019\",\"line_items\":[{\"item_id\":\"111111\",\"name\":\"Consulting Services\",\"description\":\"Design and planning\",\"quantity\":10,\"rate\":150.0},{\"item_id\":\"222222\",\"name\":\"Development\",\"description\":\"Implementation\",\"quantity\":50,\"rate\":80.0}],\"discount\":{\"type\":\"percentage\",\"value\":5},\"notes\":\"Estimate valid for 30 days.\",\"terms\":\"Payment due within 30 days of acceptance.\",\"shipping_charge\":0,\"adjustment\":0}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateCustomerInvoice", + "qualifiedName": "ZohoBooksApi.CreateCustomerInvoice", + "fullyQualifiedName": "ZohoBooksApi.CreateCustomerInvoice@1.0.0", + "description": "Create an invoice for your customer.\n\n\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the invoice is created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_invoice_to_contacts", + "type": "boolean", + "required": false, + "description": "Boolean to determine if the invoice is sent to the contact persons. Use 'true' to send, 'false' otherwise. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to ignore auto invoice number generation, requiring manual input. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "enable_quick_create_mode", + "type": "boolean", + "required": false, + "description": "Enable quick create mode for streamlined invoice creation with minimal required fields. Set to true for activation. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "enable_batch_payments", + "type": "boolean", + "required": false, + "description": "Enable batch payment processing for the invoice. True means the invoice is included in batch operations. Requires 'is_quick_create' to be true. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateCustomerInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "send_invoice_to_contacts": { + "value": true, + "type": "boolean", + "required": false + }, + "ignore_auto_number_generation": { + "value": false, + "type": "boolean", + "required": false + }, + "enable_quick_create_mode": { + "value": true, + "type": "boolean", + "required": false + }, + "enable_batch_payments": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"987654321\",\"invoice_number\":\"INV-2026-001\",\"date\":\"2026-02-15\",\"due_date\":\"2026-03-17\",\"reference_number\":\"PO-7788\",\"line_items\":[{\"item_id\":\"1111\",\"name\":\"Consulting Services\",\"description\":\"Monthly consulting retainer\",\"rate\":150.0,\"quantity\":10,\"tax_id\":\"22\"},{\"name\":\"Expense Reimbursement\",\"description\":\"Travel expenses\",\"rate\":200.0,\"quantity\":1}],\"notes\":\"Thank you for your business.\",\"terms\":\"Payment due within 30 days.\",\"billing_address\":{\"street\":\"123 Main St\",\"city\":\"Springfield\",\"state\":\"IL\",\"zip\":\"62704\",\"country\":\"USA\"},\"shipping_address\":{\"street\":\"456 Market St\",\"city\":\"Springfield\",\"state\":\"IL\",\"zip\":\"62701\",\"country\":\"USA\"},\"currency_id\":\"USD\",\"exchange_rate\":1.0,\"allow_partial_payments\":false}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateCustomerPayment", + "qualifiedName": "ZohoBooksApi.CreateCustomerPayment", + "fullyQualifiedName": "ZohoBooksApi.CreateCustomerPayment@1.0.0", + "description": "Create a new customer payment in Zoho Books.\n\n Use this tool to record a new payment for a customer in Zoho Books. It should be called when you need to add a payment entry for accounting purposes or to update a customer's payment status.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. This is necessary to associate the payment with the correct organization. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_customer_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateCustomerPayment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"4698754321\",\"date\":\"2026-02-19\",\"amount\":250.00,\"payment_mode\":\"Cheque\",\"reference_number\":\"CHK-2026-001\",\"account_id\":\"5412367890\",\"description\":\"Payment for invoices INV-1001 and INV-1002\",\"invoices\":[{\"invoice_id\":\"6543210987\",\"amount_applied\":150.00},{\"invoice_id\":\"6543210988\",\"amount_applied\":100.00}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateCustomModule", + "qualifiedName": "ZohoBooksApi.CreateCustomModule", + "fullyQualifiedName": "ZohoBooksApi.CreateCustomModule@1.0.0", + "description": "Creates a custom module in Zoho Books.\n\n Use this tool to create a custom module in Zoho Books. Specify the module name as needed.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the custom module is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_module_name", + "type": "string", + "required": false, + "description": "Specify the name for the custom module to be created in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.custommodules.ALL" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_custom_module'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateCustomModule", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6789012345", + "type": "string", + "required": false + }, + "custom_module_name": { + "value": "Event Registrations", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"module_name\":\"Event Registrations\",\"singular_label\":\"Event Registration\",\"plural_label\":\"Event Registrations\",\"description\":\"Custom module to track event attendees and payments.\",\"is_custom\":true,\"fields\":[{\"label\":\"Attendee Name\",\"type\":\"text\",\"required\":true,\"api_name\":\"attendee_name\"},{\"label\":\"Email\",\"type\":\"email\",\"required\":true,\"api_name\":\"email\"},{\"label\":\"Event Date\",\"type\":\"date\",\"required\":true,\"api_name\":\"event_date\"},{\"label\":\"Ticket Type\",\"type\":\"picklist\",\"options\":[\"Standard\",\"VIP\",\"Student\"],\"api_name\":\"ticket_type\"},{\"label\":\"Amount Paid\",\"type\":\"currency\",\"api_name\":\"amount_paid\"}],\"layout\":{\"sections\":[{\"name\":\"Main Details\",\"fields\":[\"attendee_name\",\"email\",\"event_date\",\"ticket_type\",\"amount_paid\"]}]},\"permissions\":{\"view\":\"all\",\"edit\":\"owner\",\"delete\":\"admin\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateEmployeeForExpense", + "qualifiedName": "ZohoBooksApi.CreateEmployeeForExpense", + "fullyQualifiedName": "ZohoBooksApi.CreateEmployeeForExpense@1.0.0", + "description": "Create an employee for an expense record in Zoho Books.\n\n This tool is used to create a new employee entry for the purpose of logging an expense in Zoho Books. It should be called when there is a need to register an employee related to specific expenses.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books where the employee will be created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_employee'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateEmployeeForExpense", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"employee\":{\"first_name\":\"Jane\",\"last_name\":\"Smith\",\"email\":\"jane.smith@example.com\",\"mobile\":\"15551234567\",\"employee_code\":\"EXP-2026-001\",\"designation\":\"Field Engineer\",\"department_name\":\"Operations\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateExchangeRate", + "qualifiedName": "ZohoBooksApi.CreateExchangeRate", + "fullyQualifiedName": "ZohoBooksApi.CreateExchangeRate@1.0.0", + "description": "Create an exchange rate for a specified currency.\n\n This tool should be called when you need to create a new exchange rate for a specific currency in Zoho Books. It allows you to define exchange rates between specified currencies.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the exchange rate is being created. This must be a unique identifier within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the currency used to create the exchange rate in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_exchange_rate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateExchangeRate", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1122334455", + "type": "string", + "required": false + }, + "currency_identifier": { + "value": "INR", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"exchange_rate\":{\"date\":\"2026-02-19\",\"from_currency\":\"USD\",\"to_currency\":\"INR\",\"rate\":82.15,\"notes\":\"Quarterly update\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateExpense", + "qualifiedName": "ZohoBooksApi.CreateExpense", + "fullyQualifiedName": "ZohoBooksApi.CreateExpense@1.0.0", + "description": "Create a billable or non-billable expense record.\n\n Use this tool to create an expense entry that can be marked as billable or non-billable. Ideal for tracking expenses in your financial system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the expense is being recorded. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_receipt_file", + "type": "string", + "required": false, + "description": "File path or URL for the expense receipt. Accepted formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateExpense", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "expense_receipt_file": { + "value": "https://example.com/receipts/receipt-2026-02-15.pdf", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"date\":\"2026-02-15\",\"amount\":245.75,\"description\":\"Client dinner while onsite - Project Apollo\",\"account_id\":\"987654321\",\"customer_id\":\"555666777\",\"billable\":true,\"reference_number\":\"EXP-2026-0001\",\"currency\":\"USD\",\"exchange_rate\":1.0,\"project_id\":\"proj_001\",\"expense_items\":[{\"item_name\":\"Dinner\",\"amount\":200.0,\"tax_id\":\"tax_01\",\"billable\":true},{\"item_name\":\"Tip\",\"amount\":45.75,\"billable\":true}],\"is_inclusive_taxes\":false,\"notes\":\"Include on next invoice for client\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateFinancialAccountRule", + "qualifiedName": "ZohoBooksApi.CreateFinancialAccountRule", + "fullyQualifiedName": "ZohoBooksApi.CreateFinancialAccountRule@1.0.0", + "description": "Create and apply rules for banking and credit accounts.\n\n This tool allows you to create a rule for deposits, withdrawals, refunds, or charges on bank and credit card accounts. It should be called when you need to automate financial processes by setting specific rules for account transactions.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Used to specify which organization's account rules are being altered. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_bank_account_rule'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateFinancialAccountRule", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60012345678", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"rule_name\":\"Auto-categorize Stripe Deposits\",\"financial_account_id\":\"987654321\",\"account_type\":\"bank\",\"transaction_type\":\"deposit\",\"criteria\":[{\"field\":\"description\",\"operator\":\"contains\",\"value\":\"Stripe\"},{\"field\":\"amount\",\"operator\":\">=\",\"value\":\"100.00\"}],\"action\":{\"assign_ledger_id\":\"4001\",\"memo\":\"Auto-categorized Stripe deposits >= $100\"},\"apply_for_existing_transactions\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateFixedAsset", + "qualifiedName": "ZohoBooksApi.CreateFixedAsset", + "fullyQualifiedName": "ZohoBooksApi.CreateFixedAsset@1.0.0", + "description": "Create a fixed asset in Zoho Books.\n\n This tool is used to create a fixed asset in the Zoho Books platform. It should be called when a user wants to register a new fixed asset in their accounting records.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books for which the fixed asset is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_fixed_asset'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateFixedAsset", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"asset_name\":\"Office Laptop\",\"asset_account_id\":\"3456789012345678901\",\"purchase_date\":\"2024-07-15\",\"purchase_cost\":1500.00,\"salvage_value\":200.00,\"useful_life_months\":36,\"depreciation_method\":\"straight_line\",\"depreciation_start_date\":\"2024-08-01\",\"asset_code\":\"LT-001\",\"vendor_id\":\"9988776655\",\"notes\":\"Assigned to IT department\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateFixedAssetType", + "qualifiedName": "ZohoBooksApi.CreateFixedAssetType", + "fullyQualifiedName": "ZohoBooksApi.CreateFixedAssetType@1.0.0", + "description": "Create a fixed asset type in Zoho Books.\n\n Use this tool to create a new fixed asset type in Zoho Books whenever you need to categorize assets. It facilitates asset management by defining specific asset categories.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which to create the fixed asset type. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_fixed_asset_type'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateFixedAssetType", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"fixed_asset_type\":{\"name\":\"Office Computers\",\"description\":\"Desktop and laptop computers used by staff\",\"depreciation_method\":\"Straight Line\",\"useful_life_years\":3,\"salvage_value\":0.0,\"depreciation_rate\":33.33,\"account_id\":\"4000123456\",\"allow_revaluation\":false,\"capitalization_threshold\":1000.00}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateInvoiceFromSalesOrder", + "qualifiedName": "ZohoBooksApi.CreateInvoiceFromSalesOrder", + "fullyQualifiedName": "ZohoBooksApi.CreateInvoiceFromSalesOrder@1.0.0", + "description": "Create an invoice from a confirmed sales order.\n\nUse this tool to instantly generate an invoice based on confirmed sales orders. Ideal for automating billing processes directly from sales orders.", + "parameters": [ + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "The unique identifier of the confirmed sales order to create an invoice for.", + "enum": null, + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the invoice is being created. This must be a valid string ID.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_invoice_from_salesorder'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateInvoiceFromSalesOrder", + "parameters": { + "sales_order_id": { + "value": "SO-2026-000123", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60000001234", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateJournalEntry", + "qualifiedName": "ZohoBooksApi.CreateJournalEntry", + "fullyQualifiedName": "ZohoBooksApi.CreateJournalEntry@1.0.0", + "description": "Create a journal entry in Zoho Books.\n\n Use this tool to add a new journal entry in Zoho Books. It should be called when there's a need to record financial transactions manually.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_journal'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateJournalEntry", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"date\":\"2026-02-19\",\"reference_number\":\"JE-1001\",\"notes\":\"Monthly accruals\",\"journal_entries\":[{\"account_id\":\"123456789012345\",\"debit_or_credit\":\"debit\",\"amount\":1500.00,\"description\":\"Accrued expense\"},{\"account_id\":\"987654321098765\",\"debit_or_credit\":\"credit\",\"amount\":1500.00,\"description\":\"Accrued liability\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateNewZohoItem", + "qualifiedName": "ZohoBooksApi.CreateNewZohoItem", + "fullyQualifiedName": "ZohoBooksApi.CreateNewZohoItem@1.0.0", + "description": "Create a new item in Zoho Books inventory.\n\n Use this tool to create a new item in Zoho Books. This is useful for adding products or services to your Zoho inventory for tracking purposes.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_item'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateNewZohoItem", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"name\":\"Wireless Mouse\",\"sku\":\"WM-100\",\"description\":\"Ergonomic wireless mouse with USB receiver\",\"rate\":29.99,\"purchase_rate\":15.00,\"unit\":\"pcs\",\"item_type\":\"inventory\",\"opening_stock\":100,\"opening_stock_rate\":15.00,\"tax_id\":\"1234567890\",\"sales_account_id\":\"4000000000001\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateOpeningBalance", + "qualifiedName": "ZohoBooksApi.CreateOpeningBalance", + "fullyQualifiedName": "ZohoBooksApi.CreateOpeningBalance@1.0.0", + "description": "Creates an opening balance for accounts.\n\n Use this tool to create an opening balance with specified account information in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the opening balance is being created. This ID is required to specify the target organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_opening_balance'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateOpeningBalance", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"account_id\":\"987654321\",\"date\":\"2026-01-01\",\"amount\":1000.00,\"currency_code\":\"USD\",\"notes\":\"Initial opening balance for fiscal year\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateOrganizationInZohoBooks", + "qualifiedName": "ZohoBooksApi.CreateOrganizationInZohoBooks", + "fullyQualifiedName": "ZohoBooksApi.CreateOrganizationInZohoBooks@1.0.0", + "description": "Create a new organization in Zoho Books.\n\n Use this tool to create a new organization in the Zoho Books platform. It is called when there's a need to add organizational details to Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization to be created in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_organization'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateOrganizationInZohoBooks", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "org_9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"organization_name\":\"Acme Widgets LLC\",\"company_type\":\"Private Limited\",\"email\":\"accounts@acmewidgets.com\",\"phone\":\"+1-555-123-4567\",\"country\":\"United States\",\"currency_code\":\"USD\",\"time_zone\":\"America/New_York\",\"financial_year_start\":\"2026-04-01\",\"financial_year_end\":\"2027-03-31\",\"address\":{\"street\":\"123 Industrial Ave\",\"city\":\"Metropolis\",\"state\":\"NY\",\"zip\":\"10001\"},\"tax_registration_number\":\"98-7654321\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateOrganizationUser", + "qualifiedName": "ZohoBooksApi.CreateOrganizationUser", + "fullyQualifiedName": "ZohoBooksApi.CreateOrganizationUser@1.0.0", + "description": "Create a user for your organization in Zoho Books.\n\n This tool facilitates the creation of a new user within your organization using Zoho Books' services. It should be called when you need to register a new user in your organization's Zoho Books account.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books where the user will be created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateOrganizationUser", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"user\": {\"first_name\": \"Alice\", \"last_name\": \"Walker\", \"email\": \"alice.walker@example.com\", \"role_id\": \"54321\", \"mobile\": \"+15551234567\", \"status\": \"active\", \"send_invite\": true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateProject", + "qualifiedName": "ZohoBooksApi.CreateProject", + "fullyQualifiedName": "ZohoBooksApi.CreateProject@1.0.0", + "description": "Create a new project in Zoho Books.\n\n This tool facilitates the creation of a new project within Zoho Books. It should be called when there's a need to start a new project and integrate it into the Zoho Books system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique identifier for the organization in Zoho Books. Required for project creation. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_project'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateProject", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"project\":{\"name\":\"Website Redesign - Q2\",\"description\":\"Complete redesign of company website including CMS migration.\",\"customer_id\":\"54321\",\"start_date\":\"2026-03-01\",\"end_date\":\"2026-06-30\",\"status\":\"in_progress\",\"billing_method\":\"hourly\",\"hourly_rate\":150.00,\"budget\":20000.00,\"billable\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateRecurringBill", + "qualifiedName": "ZohoBooksApi.CreateRecurringBill", + "fullyQualifiedName": "ZohoBooksApi.CreateRecurringBill@1.0.0", + "description": "Create a recurring bill in Zoho Books.\n\n This tool creates a recurring bill in Zoho Books. Use it to automate periodic billing tasks and ensure payments are scheduled consistently.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization in Zoho Books for which the recurring bill will be created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_recurring_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateRecurringBill", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"987654321\",\"reference_number\":\"RB-1001\",\"start_date\":\"2026-03-01\",\"end_date\":\"2027-02-28\",\"repeat_every\":1,\"repeat_unit\":\"months\",\"line_items\":[{\"item_id\":\"111111\",\"description\":\"Monthly maintenance\",\"rate\":150.0,\"quantity\":1,\"account_id\":\"222222\"},{\"description\":\"Service fee\",\"rate\":25.0,\"quantity\":1,\"account_id\":\"222222\"}],\"notes\":\"Recurring monthly maintenance bill\",\"terms\":\"Pay within 30 days\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateRecurringExpense", + "qualifiedName": "ZohoBooksApi.CreateRecurringExpense", + "fullyQualifiedName": "ZohoBooksApi.CreateRecurringExpense@1.0.0", + "description": "Create a recurring expense in Zoho Books.\n\n Use this tool to create a recurring expense in Zoho Books. It allows you to automate expense tracking by setting expenses to recur at specified intervals.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. This ID is necessary to specify which organization's records to create the recurring expense under. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_recurring_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateRecurringExpense", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"recurring_expense\":{\"vendor_id\":\"987654321\",\"account_id\":\"11223344\",\"reference_number\":\"RE-1001\",\"date\":\"2026-03-01\",\"amount\":250.00,\"repeat_every\":1,\"repeat_type\":\"month\",\"starts_on\":\"2026-03-01\",\"ends_on\":\"2027-03-01\",\"description\":\"Monthly SaaS subscription\",\"line_items\":[{\"account_id\":\"11223344\",\"name\":\"SaaS Subscription\",\"description\":\"Premium plan - monthly\",\"quantity\":1,\"rate\":250.00,\"tax_id\":null}],\"is_active\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateRecurringInvoice", + "qualifiedName": "ZohoBooksApi.CreateRecurringInvoice", + "fullyQualifiedName": "ZohoBooksApi.CreateRecurringInvoice@1.0.0", + "description": "Create a new recurring invoice in Zoho Books.\n\n This tool creates a new recurring invoice within Zoho Books. Use this tool when you need to automate the billing of customers on a regular schedule. It returns the details of the invoice created, enabling tracking and management of recurring payments.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the recurring invoice is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_recurring_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateRecurringInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"987654321\",\"start_date\":\"2026-03-01\",\"end_date\":\"2027-03-01\",\"repeat_every\":1,\"repeat_unit\":\"month\",\"next_billing_date\":\"2026-03-01\",\"line_items\":[{\"item_id\":\"112233\",\"name\":\"Premium SaaS Subscription\",\"rate\":49.99,\"quantity\":1,\"discount\":0}],\"currency_code\":\"USD\",\"notes\":\"Monthly premium subscription\",\"terms\":\"Payment due within 15 days\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateRetainerInvoice", + "qualifiedName": "ZohoBooksApi.CreateRetainerInvoice", + "fullyQualifiedName": "ZohoBooksApi.CreateRetainerInvoice@1.0.0", + "description": "Create a retainer invoice for a customer.\n\n Use this tool to create a retainer invoice for a customer through Zoho Books. It should be called when you need to generate an invoice requiring advance payment or retaining fees for services or products.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization for which the retainer invoice is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to ignore automatic invoice number generation and manually input the invoice number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_retainer_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateRetainerInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"123456789\",\"date\":\"2026-02-19\",\"retainer_invoice_number\":\"RET-2026-0001\",\"line_items\":[{\"name\":\"Consulting retainer\",\"description\":\"Monthly consulting retainer for February 2026\",\"quantity\":1,\"rate\":1500.00,\"tax_id\":\"987654321\"}],\"billing_type\":\"customer\",\"notes\":\"Retainer for ongoing consulting services.\",\"terms\":\"Retainer is non-refundable.\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateSalesOrder", + "qualifiedName": "ZohoBooksApi.CreateSalesOrder", + "fullyQualifiedName": "ZohoBooksApi.CreateSalesOrder@1.0.0", + "description": "Create a sales order for a customer.\n\n This tool creates a sales order for a customer using Zoho Books. It should be called when you need to generate a new sales order in your accounting system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the sales order is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "total_number_of_files", + "type": "integer", + "required": false, + "description": "Specify the total number of files to be attached to the sales order. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "document_attachment", + "type": "string", + "required": false, + "description": "A document to be attached to the sales order. Provide as a string containing the document details or content. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to ignore auto sales order number generation, requiring manual sales order number entry. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "can_send_via_email", + "type": "boolean", + "required": false, + "description": "Set to true if the file can be sent via email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_sales_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateSalesOrder", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "1234567890abcdef", + "type": "string", + "required": false + }, + "total_number_of_files": { + "value": 1, + "type": "integer", + "required": false + }, + "document_attachment": { + "value": "data:application/pdf;base64,JVBERi0xLjQKJcTl8uXrp/Og0MTGCjEgMCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXMgMyAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdPj4KZW5kb2JqCnhyZWYKMCA0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxMCAwMDAwMCBuIAowMDAwMDAwMDY3IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA0L1Jvb3QgMSAwIFIvSW5mbyA0IDAgUi9JRCBbPEQ1Q0Q0QkU3RUI1Q0Q0QkU3RUI1Q0Q0QkU3Pj4+PgpzdGFydHhyZWYKMTA0NgolJUVPRg==", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": true, + "type": "boolean", + "required": false + }, + "can_send_via_email": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"salesorder\":{\"salesorder_number\":\"SO-2026-001\",\"customer_id\":\"54321\",\"date\":\"2026-02-19\",\"status\":\"open\",\"line_items\":[{\"item_id\":\"1001\",\"name\":\"Widget A\",\"description\":\"High-quality widget\",\"rate\":49.99,\"quantity\":5,\"tax_id\":\"2001\"},{\"item_id\":\"1002\",\"name\":\"Widget B\",\"rate\":29.5,\"quantity\":2}],\"shipping_address\":{\"address\":\"123 Example Lane\",\"city\":\"Metropolis\",\"state\":\"NY\",\"zip\":\"10001\",\"country\":\"USA\"},\"billing_address\":{\"address\":\"456 Billing Rd\",\"city\":\"Metropolis\",\"state\":\"NY\",\"zip\":\"10002\",\"country\":\"USA\"},\"notes\":\"Deliver between 9am-5pm.\",\"reference_number\":\"REF-789\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateSalesReceipt", + "qualifiedName": "ZohoBooksApi.CreateSalesReceipt", + "fullyQualifiedName": "ZohoBooksApi.CreateSalesReceipt@1.0.0", + "description": "Create a sales receipt for immediate payment transactions.\n\n\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique identifier for the organization needed to create the sales receipt. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to ignore automatic sales receipt number generation, requiring manual entry of the receipt number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_receipt_via_email", + "type": "boolean", + "required": false, + "description": "Set to true to send the sales receipt to the customer via email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_sales_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateSalesReceipt", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": true, + "type": "boolean", + "required": false + }, + "send_receipt_via_email": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"1234567890\",\"date\":\"2025-02-15\",\"salesreceipt_number\":\"SR-1001\",\"reference_number\":\"PO-7890\",\"line_items\":[{\"item_id\":\"987654321\",\"description\":\"Wireless Mouse\",\"quantity\":2,\"rate\":25.0,\"tax_id\":\"111111111\"}],\"payments\":[{\"amount\":50.0,\"date\":\"2025-02-15\",\"payment_mode\":\"Cash\",\"account_id\":\"222222222\",\"reference_number\":\"PAY-1001\"}],\"notes\":\"Paid in full at time of purchase\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateTaxAuthority", + "qualifiedName": "ZohoBooksApi.CreateTaxAuthority", + "fullyQualifiedName": "ZohoBooksApi.CreateTaxAuthority@1.0.0", + "description": "Create a tax authority in Zoho Books.\n\n Use this tool to create a new tax authority in Zoho Books. Suitable for financial administrators managing tax compliance.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the tax authority is to be created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_tax_authority'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateTaxAuthority", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"tax_authority\": {\"name\": \"California State Tax Authority\",\"code\": \"CA_SALES_TAX\",\"registration_number\": \"CA-REG-987654321\",\"description\": \"State-level sales and use tax authority for California\",\"is_active\": true,\"jurisdiction\": \"California, USA\",\"contact_email\": \"taxsupport@state.ca.gov\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateTaxExemption", + "qualifiedName": "ZohoBooksApi.CreateTaxExemption", + "fullyQualifiedName": "ZohoBooksApi.CreateTaxExemption@1.0.0", + "description": "Create a tax exemption in Zoho Books.\n\n Use this tool to create a tax exemption in Zoho Books when you need to apply tax exemptions for transactions or customers.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books for which the tax exemption is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_tax_exemption'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateTaxExemption", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"tax_exemption\":{\"name\":\"Non-profit Exemption\",\"exemption_number\":\"NP-2026-001\",\"exemption_type\":\"customer\",\"start_date\":\"2026-01-01\",\"end_date\":\"2030-12-31\",\"note\":\"Exemption for registered non-profit organization\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateTaxGroup", + "qualifiedName": "ZohoBooksApi.CreateTaxGroup", + "fullyQualifiedName": "ZohoBooksApi.CreateTaxGroup@1.0.0", + "description": "Create a tax group with multiple associated taxes.\n\n This tool calls the Zoho Books API to create a tax group, allowing you to associate multiple taxes into a single group. Use this tool when you need to manage and apply tax groups for accounting purposes.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization within Zoho Books. This is required to create a tax group. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_tax_group'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateTaxGroup", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"tax_group\": {\"name\": \"State & Federal Tax\",\"taxes\": [{\"tax_id\": \"987654321\",\"tax_name\": \"State Sales Tax\",\"tax_percentage\": 4.5},{\"tax_id\": \"876543219\",\"tax_name\": \"Federal Tax\",\"tax_percentage\": 2.5}],\"is_active\": true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateVendorBill", + "qualifiedName": "ZohoBooksApi.CreateVendorBill", + "fullyQualifiedName": "ZohoBooksApi.CreateVendorBill@1.0.0", + "description": "Create a bill received from your vendor.\n\n Use this tool to log and manage invoices received from vendors by creating a bill in your system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in which the bill will be created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "attachment_file_path", + "type": "string", + "required": false, + "description": "Path to the file to attach. Accepts GIF, PNG, JPEG, JPG, BMP, and PDF formats. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateVendorBill", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "attachment_file_path": { + "value": "/files/vendor_bill_invoice.pdf", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"987654321\",\"bill_number\":\"BILL-2026-001\",\"reference_number\":\"PO-5555\",\"date\":\"2026-02-10\",\"due_date\":\"2026-03-12\",\"currency_id\":\"USD\",\"exchange_rate\":1.0,\"line_items\":[{\"item_id\":\"111111\",\"description\":\"Widget A\",\"quantity\":10,\"rate\":15.5,\"tax_id\":\"2222\"},{\"description\":\"Consulting services\",\"account_id\":\"333333\",\"quantity\":5,\"rate\":100.0}],\"notes\":\"Payment due within 30 days\",\"shipping_charge\":20.0,\"adjustment\":-5.0}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateVendorCredit", + "qualifiedName": "ZohoBooksApi.CreateVendorCredit", + "fullyQualifiedName": "ZohoBooksApi.CreateVendorCredit@1.0.0", + "description": "Create vendor credit for returns or adjustments.\n\n Use this tool to record new vendor credits for returned items, overpayments, or adjustments. Supports multi-currency, custom line items, taxes, and workflows.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the vendor credit is being created. Must be a valid organization ID. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_id", + "type": "string", + "required": false, + "description": "Identifier of the bill associated with the vendor credit. Required for linking the credit to a specific transaction. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to bypass auto number generation. A vendor credit number becomes mandatory when enabled. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_vendor_credit'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateVendorCredit", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "bill_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": false, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"54321\",\"reference_number\":\"VC-2026-001\",\"date\":\"2026-02-19\",\"currency_id\":\"USD\",\"exchange_rate\":1.0,\"line_items\":[{\"item_id\":\"1001\",\"name\":\"Returned Widget\",\"description\":\"Return of defective unit\",\"rate\":50.0,\"quantity\":2,\"tax_id\":\"2001\",\"account_id\":\"4001\"}],\"adjustments\":[{\"amount\":10.0,\"description\":\"Restocking fee\"}],\"notes\":\"Vendor credit issued for returned items\",\"custom_fields\":[{\"label\":\"ReturnReason\",\"value\":\"Defective\"}],\"reference_id\":\"RC-REF-001\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateVendorPayment", + "qualifiedName": "ZohoBooksApi.CreateVendorPayment", + "fullyQualifiedName": "ZohoBooksApi.CreateVendorPayment@1.0.0", + "description": "Create and apply a payment to a vendor's bill.\n\n This tool is used to record a payment made to a vendor, with the option to apply the payment either partially or fully to the vendor's outstanding bills.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization to which the vendor payment belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_vendor_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateVendorPayment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "6000000000001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"123456789012345\",\"payment_mode\":\"Bank Transfer\",\"amount\":1500.00,\"date\":\"2026-02-15\",\"reference_number\":\"BT-2026-0001\",\"account_id\":\"987654321098765\",\"description\":\"Payment for February supplies\",\"apply_to_bills\":[{\"bill_id\":\"BILL-1001\",\"amount_applied\":1000.00},{\"bill_id\":\"BILL-1002\",\"amount_applied\":500.00}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateVendorPurchaseOrder", + "qualifiedName": "ZohoBooksApi.CreateVendorPurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.CreateVendorPurchaseOrder@1.0.0", + "description": "Generate a purchase order for a vendor.\n\n Use this tool to create a purchase order for a vendor in Zoho Books. It facilitates procurement by initiating an order with specified vendor details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books for which the purchase order is being created. Required to specify the target organization. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "file_attachment", + "type": "string", + "required": false, + "description": "File path or URL to attach. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to disable automatic purchase order number generation, requiring a manual number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_purchase_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateVendorPurchaseOrder", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "file_attachment": { + "value": "https://example.com/attachments/spec-sheet.pdf", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": false, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"1234567890123456789\",\"vendor_name\":\"Acme Supplies Ltd\",\"date\":\"2026-02-19\",\"reference_number\":\"REF-2026-001\",\"purchaseorder_number\":\"PO-1001\",\"line_items\":[{\"item_id\":\"987654321\",\"name\":\"High Capacity Battery\",\"description\":\"Rechargeable battery, 5000mAh\",\"rate\":25.5,\"quantity\":100,\"tax_id\":\"TAX123\",\"account_id\":\"ACCT001\"},{\"item_id\":\"987654322\",\"name\":\"Charging Cable\",\"description\":\"USB-C to USB-A, 1m\",\"rate\":3.75,\"quantity\":200,\"tax_id\":\"TAX123\",\"account_id\":\"ACCT002\"}],\"shipping_charge\":50.0,\"discount\":20.0,\"notes\":\"Please deliver to warehouse B by end of month.\",\"shipping_address\":{\"attention\":\"Receiving Dept\",\"street\":\"123 Warehouse Ave\",\"city\":\"Metropolis\",\"state\":\"CA\",\"zip\":\"94107\",\"country\":\"USA\"},\"billing_address\":{\"attention\":\"Accounts Payable\",\"street\":\"456 Corporate Blvd\",\"city\":\"Metropolis\",\"state\":\"CA\",\"zip\":\"94105\",\"country\":\"USA\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreateZohoBookLocation", + "qualifiedName": "ZohoBooksApi.CreateZohoBookLocation", + "fullyQualifiedName": "ZohoBooksApi.CreateZohoBookLocation@1.0.0", + "description": "Create a new location in Zoho Books.\n\n Use this tool to create a new business location within Zoho Books. It handles the setup of location data, allowing integration of new physical or digital locations into the Zoho Books system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the location is being created in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_location'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreateZohoBookLocation", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890123456789", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"location\":{\"name\":\"Downtown Store\",\"code\":\"DT001\",\"phone\":\"+1-555-0100\",\"email\":\"store-downtown@example.com\",\"website\":\"https://downtown.example.com\",\"address\":{\"street\":\"123 Main St\",\"city\":\"Metropolis\",\"state\":\"NY\",\"zip\":\"10001\",\"country\":\"USA\"},\"is_primary\":true,\"notes\":\"Main retail outlet\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CreditNoteRefundListing", + "qualifiedName": "ZohoBooksApi.CreditNoteRefundListing", + "fullyQualifiedName": "ZohoBooksApi.CreditNoteRefundListing@1.0.0", + "description": "Retrieve a paginated list of credit note refunds.\n\nUse this tool to get a list of all credit note refunds, including pagination information for navigating through large sets of data.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Use this to specify which organization's credit note refunds to list.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_identifier", + "type": "string", + "required": false, + "description": "ID of the customer for whom the credit note is raised. Provide to filter refunds by customer.", + "enum": null, + "inferrable": true + }, + { + "name": "refunds_sort_column", + "type": "string", + "required": false, + "description": "Specifies the attribute to sort the credit note refunds. Use values like 'refund_mode', 'reference_number', 'date', 'creditnote_number', 'customer_name', 'amount_bcy', or 'amount_fcy'.", + "enum": null, + "inferrable": true + }, + { + "name": "pagination_page_number", + "type": "integer", + "required": false, + "description": "Page number for pagination to specify which page of results to retrieve. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to display per page in the paginated results. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_credit_note_refunds'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CreditNoteRefundListing", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "customer_identifier": { + "value": "9876543210", + "type": "string", + "required": false + }, + "refunds_sort_column": { + "value": "date", + "type": "string", + "required": false + }, + "pagination_page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "CrmToBooksContactImport", + "qualifiedName": "ZohoBooksApi.CrmToBooksContactImport", + "fullyQualifiedName": "ZohoBooksApi.CrmToBooksContactImport@1.0.0", + "description": "Import a customer from Zoho CRM to Zoho Books using CRM contact ID.\n\nUse this tool when you need to import a customer from Zoho CRM to Zoho Books based on their CRM contact ID. Ensure that Zoho Books is integrated with Zoho CRM using the correct sync settings for contacts.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "zoho_crm_contact_id", + "type": "string", + "required": true, + "description": "Unique identifier for the Zoho CRM contact to import into Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'import_customer_using_crm_contact_id'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.CrmToBooksContactImport", + "parameters": { + "organization_id": { + "value": "6001234567890123456", + "type": "string", + "required": true + }, + "zoho_crm_contact_id": { + "value": "1000000000000123456", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeactivateBankAccount", + "qualifiedName": "ZohoBooksApi.DeactivateBankAccount", + "fullyQualifiedName": "ZohoBooksApi.DeactivateBankAccount@1.0.0", + "description": "Deactivate a bank account in Zoho Books.\n\nUse this tool to mark a bank account as inactive in Zoho Books. This can be useful when an account is no longer in use and should be temporarily disabled.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books. This is required to identify which organization's bank account to deactivate.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank account to deactivate in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_bank_account_inactive'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeactivateBankAccount", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "bank_account_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeactivateChartOfAccount", + "qualifiedName": "ZohoBooksApi.DeactivateChartOfAccount", + "fullyQualifiedName": "ZohoBooksApi.DeactivateChartOfAccount@1.0.0", + "description": "Deactivate a specific chart of account.\n\nUse this tool to mark a specific chart of account as inactive in Zoho Books. This is helpful when you need to manage account statuses and ensure they reflect current business requirements.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization to deactivate the chart of account for.", + "enum": null, + "inferrable": true + }, + { + "name": "account_identifier", + "type": "string", + "required": true, + "description": "The unique identifier of the account to be deactivated.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_chart_of_account_inactive'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeactivateChartOfAccount", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "account_identifier": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeactivateProject", + "qualifiedName": "ZohoBooksApi.DeactivateProject", + "fullyQualifiedName": "ZohoBooksApi.DeactivateProject@1.0.0", + "description": "Deactivate a project in Zoho Books.\n\nUse this tool to mark a project as inactive in Zoho Books when it is no longer active or needed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required for identifying the organization for the project update.", + "enum": null, + "inferrable": true + }, + { + "name": "project_id", + "type": "string", + "required": true, + "description": "The unique identifier of the project to be marked as inactive.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_project_inactive'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeactivateProject", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "project_id": { + "value": "987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeactivateUserAccount", + "qualifiedName": "ZohoBooksApi.DeactivateUserAccount", + "fullyQualifiedName": "ZohoBooksApi.DeactivateUserAccount@1.0.0", + "description": "Deactivate a user's account in Zoho Books.\n\nUse this tool to mark an active user as inactive within Zoho Books. It is useful when needing to revoke access or deactivate an account.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization within Zoho Books to which the user belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "user_unique_identifier", + "type": "string", + "required": true, + "description": "Provide the unique identifier of the user to be deactivated.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_user_inactive'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeactivateUserAccount", + "parameters": { + "organization_id": { + "value": "663453000000123456", + "type": "string", + "required": true + }, + "user_unique_identifier": { + "value": "a1b2c3d4-5678-90ab-cdef-1234567890ab", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeclineEstimate", + "qualifiedName": "ZohoBooksApi.DeclineEstimate", + "fullyQualifiedName": "ZohoBooksApi.DeclineEstimate@1.0.0", + "description": "Marks a sent estimate as declined if rejected by customer.\n\nUse this tool to update the status of an estimate to 'declined' when a customer has rejected it. This is helpful in maintaining accurate records of customer interactions.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization for which the estimate is being declined.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the estimate to mark as declined.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_estimate_declined'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeclineEstimate", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "estimate_identifier": { + "value": "EST-1001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteAccount", + "qualifiedName": "ZohoBooksApi.DeleteAccount", + "fullyQualifiedName": "ZohoBooksApi.DeleteAccount@1.0.0", + "description": "Delete a chart of account in Zoho Books.\n\nUse this tool to delete an existing chart of account. Note that accounts associated with transactions or products cannot be deleted.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "account_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the account to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_chart_of_account'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteAccount", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "account_identifier": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteAssetComment", + "qualifiedName": "ZohoBooksApi.DeleteAssetComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteAssetComment@1.0.0", + "description": "Delete a comment from a fixed asset in Zoho Books.\n\nUse this tool to delete an existing comment on a fixed asset within Zoho Books by specifying the fixed asset and comment IDs.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization to specify which organization's asset comment you want to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the fixed asset to delete a comment from.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_id", + "type": "string", + "required": true, + "description": "Unique identifier of the comment to be deleted from the fixed asset.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_fixed_asset_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteAssetComment", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "fixed_asset_identifier": { + "value": "FA-2023-0001", + "type": "string", + "required": true + }, + "comment_id": { + "value": "CMT-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteBankAccount", + "qualifiedName": "ZohoBooksApi.DeleteBankAccount", + "fullyQualifiedName": "ZohoBooksApi.DeleteBankAccount@1.0.0", + "description": "Delete a bank account from your organization.\n\nUse this tool to permanently delete a bank account associated with your organization in Zoho Books. This should be called when you need to remove an account to prevent future transactions.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to identify which organization's bank account is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank account to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_bank_account'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteBankAccount", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "bank_account_unique_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteBankAccountRule", + "qualifiedName": "ZohoBooksApi.DeleteBankAccountRule", + "fullyQualifiedName": "ZohoBooksApi.DeleteBankAccountRule@1.0.0", + "description": "Deletes a bank account rule, removing its effect on transactions.\n\nUse this tool to delete a specific bank account rule, making it inapplicable to future transactions.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID representing the organization. Required for identifying the correct account.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_rule_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank account rule to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_bank_account_rule'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteBankAccountRule", + "parameters": { + "organization_identifier": { + "value": "org_1234567890", + "type": "string", + "required": true + }, + "bank_account_rule_id": { + "value": "rule_9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteBankTransaction", + "qualifiedName": "ZohoBooksApi.DeleteBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.DeleteBankTransaction@1.0.0", + "description": "Delete a bank transaction using its ID.\n\nUse this tool to delete a specific bank transaction by providing the transaction ID. Ideal for managing and cleaning up bank account transactions.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Specify the ID of the organization to target for transaction deletion.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": true, + "description": "Unique identifier for the bank transaction to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteBankTransaction", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "bank_transaction_id": { + "value": "btx_987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteBillAttachment", + "qualifiedName": "ZohoBooksApi.DeleteBillAttachment", + "fullyQualifiedName": "ZohoBooksApi.DeleteBillAttachment@1.0.0", + "description": "Delete the file attached to a specific bill.\n\nThis tool deletes the file attached to a specified bill in Zoho Books. It should be called when there's a need to remove an attachment associated with a bill.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization within Zoho Books. This is required to specify which organization's bill attachment is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the specific bill whose attachment is to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_bill_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteBillAttachment", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "bill_unique_identifier": { + "value": "BILL-0001234", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteBillComment", + "qualifiedName": "ZohoBooksApi.DeleteBillComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteBillComment@1.0.0", + "description": "Delete a specific comment from a bill in Zoho Books.\n\nUse this tool to remove a comment from a specific bill in Zoho Books when the comment is no longer needed or was made in error.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization from which the bill comment will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the bill from which the comment will be deleted. This ID is necessary to specify the correct bill in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_id", + "type": "string", + "required": true, + "description": "Unique identifier of the comment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_bill_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteBillComment", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "BILL-00012345", + "type": "string", + "required": true + }, + "comment_id": { + "value": "CMT-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteBillPayment", + "qualifiedName": "ZohoBooksApi.DeleteBillPayment", + "fullyQualifiedName": "ZohoBooksApi.DeleteBillPayment@1.0.0", + "description": "Delete a payment made to a bill.\n\nUse this tool to delete an existing payment associated with a bill when necessary. It helps in managing and correcting payment records in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the bill payment is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the bill to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_payment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the bill payment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_bill_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteBillPayment", + "parameters": { + "organization_id": { + "value": "842391234", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "BILL-2026-0001", + "type": "string", + "required": true + }, + "bill_payment_identifier": { + "value": "BPAY-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteContact", + "qualifiedName": "ZohoBooksApi.DeleteContact", + "fullyQualifiedName": "ZohoBooksApi.DeleteContact@1.0.0", + "description": "Delete an existing contact from the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization from which the contact will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the contact to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_contact'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteContact", + "parameters": { + "organization_id": { + "value": "60000000000", + "type": "string", + "required": true + }, + "contact_unique_identifier": { + "value": "bcd12345-6789-ef01-2345-6789abcdef01", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteContactAddress", + "qualifiedName": "ZohoBooksApi.DeleteContactAddress", + "fullyQualifiedName": "ZohoBooksApi.DeleteContactAddress@1.0.0", + "description": "Deletes an additional address of a contact.\n\nThis tool deletes an additional address of a specific contact in Zoho Books when given the contact and address IDs. Use it to manage contact address details.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique ID of the organization in Zoho Books required for address deletion.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier for the contact whose address you want to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "address_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the address to be deleted for the specified contact.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_contact_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteContactAddress", + "parameters": { + "organization_id": { + "value": "600000000000123", + "type": "string", + "required": true + }, + "contact_unique_id": { + "value": "contact_9876543210", + "type": "string", + "required": true + }, + "address_identifier": { + "value": "address_12345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteContactPerson", + "qualifiedName": "ZohoBooksApi.DeleteContactPerson", + "fullyQualifiedName": "ZohoBooksApi.DeleteContactPerson@1.0.0", + "description": "Delete an existing contact person from the records.\n\nUse this tool to remove a contact person using their unique ID from the records. It should be called when a user's contact details are no longer needed or need to be removed for any reason.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization to identify which entity the contact person belongs to.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_person_id", + "type": "string", + "required": true, + "description": "Unique identifier for the contact person to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_contact_person'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteContactPerson", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "contact_person_id": { + "value": "987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCreditNote", + "qualifiedName": "ZohoBooksApi.DeleteCreditNote", + "fullyQualifiedName": "ZohoBooksApi.DeleteCreditNote@1.0.0", + "description": "Delete an existing credit note using its ID.\n\nUse this tool to delete a specific credit note by providing its unique ID. This action is irreversible.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose credit note you wish to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCreditNote", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "CN-2025-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCreditNoteComment", + "qualifiedName": "ZohoBooksApi.DeleteCreditNoteComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteCreditNoteComment@1.0.0", + "description": "Delete a specific comment from a credit note.\n\nUse this tool to delete a comment from a credit note in Zoho Books. It requires the credit note ID and the comment ID to specify which comment to remove.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required for deleting a credit note comment.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to which the comment belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_unique_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the comment to be deleted from a credit note.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_credit_note_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCreditNoteComment", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "9876543210", + "type": "string", + "required": true + }, + "comment_unique_identifier": { + "value": "cmt_13579", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCreditNoteInvoice", + "qualifiedName": "ZohoBooksApi.DeleteCreditNoteInvoice", + "fullyQualifiedName": "ZohoBooksApi.DeleteCreditNoteInvoice@1.0.0", + "description": "Delete the credits applied to an invoice of a credit note.\n\nUse this tool to remove credits applied to an invoice associated with a credit note, ensuring the invoice record reflects modified credits.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to identify which organization's data is being manipulated.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier for the credit note to delete its associated invoice credits.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note invoice to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_invoice_of_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCreditNoteInvoice", + "parameters": { + "organization_id": { + "value": "6000123456789012345", + "type": "string", + "required": true + }, + "credit_note_unique_id": { + "value": "CN-2026-00012345", + "type": "string", + "required": true + }, + "credit_note_invoice_id": { + "value": "CNI-9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCreditNoteRefund", + "qualifiedName": "ZohoBooksApi.DeleteCreditNoteRefund", + "fullyQualifiedName": "ZohoBooksApi.DeleteCreditNoteRefund@1.0.0", + "description": "Delete a specific credit note refund by ID.\n\nUse this tool to remove a credit note refund for a given credit note and refund ID when it's no longer needed or was made in error.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to delete a credit note refund.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to be refunded.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_refund_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note refund to delete.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_credit_note_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCreditNoteRefund", + "parameters": { + "organization_id": { + "value": "678901234", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "CN-2026-0001", + "type": "string", + "required": true + }, + "credit_note_refund_id": { + "value": "CRF-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCurrencyAdjustment", + "qualifiedName": "ZohoBooksApi.DeleteCurrencyAdjustment", + "fullyQualifiedName": "ZohoBooksApi.DeleteCurrencyAdjustment@1.0.0", + "description": "Deletes the specified base currency adjustment.\n\nUse this tool to delete a specific base currency adjustment by providing its ID. Useful for managing and updating financial records.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization whose currency adjustment you want to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "base_currency_adjustment_id", + "type": "string", + "required": true, + "description": "Unique identifier of the base currency adjustment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_base_currency_adjustment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCurrencyAdjustment", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "base_currency_adjustment_id": { + "value": "bca_9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCustomerDebitNote", + "qualifiedName": "ZohoBooksApi.DeleteCustomerDebitNote", + "fullyQualifiedName": "ZohoBooksApi.DeleteCustomerDebitNote@1.0.0", + "description": "Delete an existing customer debit note in Zoho Books.\n\nUse this tool to delete a customer debit note in Zoho Books. Note that debit notes with payments or credit notes applied cannot be deleted.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization within Zoho Books. Required to specify which organization's data to access or modify.", + "enum": null, + "inferrable": true + }, + { + "name": "debit_note_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier for the debit note to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_customer_debit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCustomerDebitNote", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "debit_note_unique_id": { + "value": "DN-00012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCustomerPayment", + "qualifiedName": "ZohoBooksApi.DeleteCustomerPayment", + "fullyQualifiedName": "ZohoBooksApi.DeleteCustomerPayment@1.0.0", + "description": "Delete an existing payment for a customer.\n\nUse this tool when you need to delete a specific customer payment by its payment ID. It confirms the removal of the payment record.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose payment is being deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the payment to be deleted. Required to specify which payment record should be removed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_customer_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCustomerPayment", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "payment_identifier": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCustomerPaymentRefund", + "qualifiedName": "ZohoBooksApi.DeleteCustomerPaymentRefund", + "fullyQualifiedName": "ZohoBooksApi.DeleteCustomerPaymentRefund@1.0.0", + "description": "Delete a refund for an existing customer payment.\n\nThis tool should be called when you need to delete a refund associated with an existing customer payment in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the refund deletion is requested.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_payment_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the customer payment associated with the refund to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "refund_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the refund to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_customer_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCustomerPaymentRefund", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "customer_payment_identifier": { + "value": "PAYMENT-2026-0001", + "type": "string", + "required": true + }, + "refund_identifier": { + "value": "REFUND-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCustomModule", + "qualifiedName": "ZohoBooksApi.DeleteCustomModule", + "fullyQualifiedName": "ZohoBooksApi.DeleteCustomModule@1.0.0", + "description": "Deletes a specified custom module in Zoho Books.\n\nThis tool is used to delete a custom module within Zoho Books. It should be called when you need to remove a specific custom module by its name.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "module_name", + "type": "string", + "required": true, + "description": "The name of the custom module to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.custommodules.ALL" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_custom_module'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCustomModule", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "module_name": { + "value": "CustomProjects", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteCustomModuleRecord", + "qualifiedName": "ZohoBooksApi.DeleteCustomModuleRecord", + "fullyQualifiedName": "ZohoBooksApi.DeleteCustomModuleRecord@1.0.0", + "description": "Delete an individual record from a custom module.\n\nUse this tool to delete specific records from a custom module in Zoho Books. Provide the module name and module ID to identify and remove the desired record.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's module record to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "module_name", + "type": "string", + "required": true, + "description": "Name of the custom module containing the record to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_module_id", + "type": "integer", + "required": true, + "description": "The unique integer ID of the custom module to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.custommodules.ALL" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_custom_module_record'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteCustomModuleRecord", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "module_name": { + "value": "Custom_Module_Contacts", + "type": "string", + "required": true + }, + "custom_module_id": { + "value": 10123, + "type": "integer", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteEmployeeRecord", + "qualifiedName": "ZohoBooksApi.DeleteEmployeeRecord", + "fullyQualifiedName": "ZohoBooksApi.DeleteEmployeeRecord@1.0.0", + "description": "Remove an employee from the records in Zoho Books.\n\nThis tool is used to delete an existing employee in Zoho Books. It should be called when there is a need to permanently remove an employee's record from the system.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization to uniquely identify it for employee deletion.", + "enum": null, + "inferrable": true + }, + { + "name": "employee_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the employee to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_employee'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteEmployeeRecord", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "employee_identifier": { + "value": "EMP_98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteEstimate", + "qualifiedName": "ZohoBooksApi.DeleteEstimate", + "fullyQualifiedName": "ZohoBooksApi.DeleteEstimate@1.0.0", + "description": "Delete an existing estimate in Zoho Books.\n\nUse this tool to remove an estimate by providing its unique estimate ID in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization where the estimate will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_id", + "type": "string", + "required": true, + "description": "Unique identifier for the estimate to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_estimate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteEstimate", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "estimate_id": { + "value": "100000012345678", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteEstimateComment", + "qualifiedName": "ZohoBooksApi.DeleteEstimateComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteEstimateComment@1.0.0", + "description": "Delete an estimate comment.\n\nUse this tool to remove a comment from an estimate in Zoho Books. Ideal for cleaning up or managing comments related to estimates.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization where the estimate comment is located.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_unique_id", + "type": "string", + "required": true, + "description": "The unique identifier for the estimate, required to specify which estimate's comment to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the comment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_estimate_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteEstimateComment", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "estimate_unique_id": { + "value": "EST-2026-0001", + "type": "string", + "required": true + }, + "comment_unique_identifier": { + "value": "cmt_98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteExchangeRate", + "qualifiedName": "ZohoBooksApi.DeleteExchangeRate", + "fullyQualifiedName": "ZohoBooksApi.DeleteExchangeRate@1.0.0", + "description": "Delete an exchange rate for a specific currency.\n\nUse this tool to delete an exchange rate using the specified currency and exchange rate IDs.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the exchange rate is being deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the currency whose exchange rate is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "exchange_rate_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the exchange rate to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_exchange_rate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteExchangeRate", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "currency_identifier": { + "value": "USD", + "type": "string", + "required": true + }, + "exchange_rate_identifier": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteExistingBill", + "qualifiedName": "ZohoBooksApi.DeleteExistingBill", + "fullyQualifiedName": "ZohoBooksApi.DeleteExistingBill@1.0.0", + "description": "Deletes an existing bill if no payments are applied.\n\nCall this tool to delete a bill in Zoho Books if the bill has no payments applied. It confirms successful deletion of the bill.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books needed to delete the bill.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "The unique identifier of the bill you wish to delete.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteExistingBill", + "parameters": { + "organization_identifier": { + "value": "1122334455", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteExpenseEntry", + "qualifiedName": "ZohoBooksApi.DeleteExpenseEntry", + "fullyQualifiedName": "ZohoBooksApi.DeleteExpenseEntry@1.0.0", + "description": "Delete an existing expense entry in Zoho Books.\n\nUse this tool to delete a specific expense entry from Zoho Books when you need to remove an incorrect or unnecessary record.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the expense to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteExpenseEntry", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "expense_identifier": { + "value": "EXP-2026-000123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteExpenseReceipt", + "qualifiedName": "ZohoBooksApi.DeleteExpenseReceipt", + "fullyQualifiedName": "ZohoBooksApi.DeleteExpenseReceipt@1.0.0", + "description": "Deletes the receipt attached to an expense.\n\nUse this tool to remove the receipt associated with a specific expense in Zoho Books, identified by the expense ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization for which the expense receipt is to be deleted. Ensure it's accurate to target the correct entity.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_id", + "type": "string", + "required": true, + "description": "Unique identifier for the expense whose receipt is to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_expense_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteExpenseReceipt", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "expense_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteFixedAsset", + "qualifiedName": "ZohoBooksApi.DeleteFixedAsset", + "fullyQualifiedName": "ZohoBooksApi.DeleteFixedAsset@1.0.0", + "description": "Delete a specified fixed asset.\n\nUse this tool to delete a fixed asset by providing its ID. This action is irreversible, so ensure you have the correct ID before proceeding.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization from which the fixed asset will be deleted. Ensure this ID corresponds to the correct organization.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the fixed asset to be deleted. This ID is required to specify which asset to remove.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_fixed_asset'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteFixedAsset", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "fixed_asset_identifier": { + "value": "FA-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteFixedAssetType", + "qualifiedName": "ZohoBooksApi.DeleteFixedAssetType", + "fullyQualifiedName": "ZohoBooksApi.DeleteFixedAssetType@1.0.0", + "description": "Deletes a specified fixed asset type from the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_type_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the fixed asset type to delete.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_fixed_asset_type'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteFixedAssetType", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "fixed_asset_type_identifier": { + "value": "FAT-001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteInvoiceAttachment", + "qualifiedName": "ZohoBooksApi.DeleteInvoiceAttachment", + "fullyQualifiedName": "ZohoBooksApi.DeleteInvoiceAttachment@1.0.0", + "description": "Delete the file attached to an invoice.\n\nThis tool should be called to delete an attachment from a specified invoice in Zoho Books. Useful for managing or cleaning up invoice files.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the invoice attachment will be deleted. This is required to authenticate and identify the specific organization on Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to delete the attachment from. Must match the invoice's ID in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_invoice_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteInvoiceAttachment", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "501234567890123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteInvoiceComment", + "qualifiedName": "ZohoBooksApi.DeleteInvoiceComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteInvoiceComment@1.0.0", + "description": "Delete a specific comment from an invoice.\n\nUse this tool to remove a comment from an invoice in Zoho Books. It is useful when a comment is no longer relevant or was added by mistake.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to delete the comment from.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_unique_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the comment to be deleted from the invoice.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_invoice_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteInvoiceComment", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-1001", + "type": "string", + "required": true + }, + "comment_unique_identifier": { + "value": "cmt-9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteInvoiceDocument", + "qualifiedName": "ZohoBooksApi.DeleteInvoiceDocument", + "fullyQualifiedName": "ZohoBooksApi.DeleteInvoiceDocument@1.0.0", + "description": "Delete a document attached to an invoice.\n\nPermanently removes a document from an invoice in Zoho Books. This tool should be called when there is a need to delete a specific non-system-generated document associated with an invoice.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to specify which organization's invoice document is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_id", + "type": "string", + "required": true, + "description": "The unique identifier of the invoice from which the document will be deleted. This ID is required and must be a valid invoice in the system.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_document_id", + "type": "string", + "required": true, + "description": "The unique ID of the document to be deleted from the invoice.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_invoice_document'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteInvoiceDocument", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "invoice_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "invoice_document_id": { + "value": "112233445566", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteInvoiceExpenseReceipt", + "qualifiedName": "ZohoBooksApi.DeleteInvoiceExpenseReceipt", + "fullyQualifiedName": "ZohoBooksApi.DeleteInvoiceExpenseReceipt@1.0.0", + "description": "Delete attached expense receipts from an invoice.\n\nUse this tool to delete expense receipts that are attached to an invoice, specifically those raised from an expense.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization from which the expense receipt will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the expense to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_invoice_expense_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteInvoiceExpenseReceipt", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "expense_identifier": { + "value": "EXP-9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteInvoiceInZohoBooks", + "qualifiedName": "ZohoBooksApi.DeleteInvoiceInZohoBooks", + "fullyQualifiedName": "ZohoBooksApi.DeleteInvoiceInZohoBooks@1.0.0", + "description": "Delete an existing invoice in Zoho Books.\n\nUse this tool to delete an existing invoice in Zoho Books. Note that invoices with payments or credit notes applied cannot be deleted.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the invoice is to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteInvoiceInZohoBooks", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-1001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteInvoicePayment", + "qualifiedName": "ZohoBooksApi.DeleteInvoicePayment", + "fullyQualifiedName": "ZohoBooksApi.DeleteInvoicePayment@1.0.0", + "description": "Delete a payment made to an invoice in Zoho Books.\n\nUse this tool to remove a payment record from an invoice in Zoho Books when it was entered incorrectly or is no longer needed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books to which the payment belongs. This is required to identify the specific organization for deleting the invoice payment.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to delete the payment from.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_payment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice payment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_invoice_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteInvoicePayment", + "parameters": { + "organization_id": { + "value": "60000000001", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + }, + "invoice_payment_identifier": { + "value": "1000000000000012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteItemInZohoBooks", + "qualifiedName": "ZohoBooksApi.DeleteItemInZohoBooks", + "fullyQualifiedName": "ZohoBooksApi.DeleteItemInZohoBooks@1.0.0", + "description": "Delete an item from Zoho Books.\n\nThis tool deletes an item from Zoho Books. It should be called to remove items that are no longer needed, provided they are not part of any transaction.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books from which you wish to delete the item.", + "enum": null, + "inferrable": true + }, + { + "name": "item_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the item to be deleted from Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_item'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteItemInZohoBooks", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "item_identifier": { + "value": "ITEM-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteJournalComment", + "qualifiedName": "ZohoBooksApi.DeleteJournalComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteJournalComment@1.0.0", + "description": "Delete a journal comment in Zoho Books.\n\nUse this tool to delete a specific comment from a journal entry in Zoho Books. It should be called when you need to remove unwanted or incorrect comments from a journal.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's journal comment should be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier of the journal for which the comment will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_id", + "type": "string", + "required": true, + "description": "Unique identifier of the comment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_journal_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteJournalComment", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "journal_unique_id": { + "value": "JRN-00012345", + "type": "string", + "required": true + }, + "comment_id": { + "value": "CMT-9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteJournalEntry", + "qualifiedName": "ZohoBooksApi.DeleteJournalEntry", + "fullyQualifiedName": "ZohoBooksApi.DeleteJournalEntry@1.0.0", + "description": "Delete a specific journal entry by ID.\n\nThis tool deletes a journal entry in Zoho Books when provided with the specific journal ID. Use this to remove incorrect or unnecessary journal records.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization associated with the journal to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_entry_id", + "type": "string", + "required": true, + "description": "The unique identifier for the journal entry to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_journal'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteJournalEntry", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "journal_entry_id": { + "value": "1234567890123456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteLastImportedBankStatement", + "qualifiedName": "ZohoBooksApi.DeleteLastImportedBankStatement", + "fullyQualifiedName": "ZohoBooksApi.DeleteLastImportedBankStatement@1.0.0", + "description": "Delete the last imported bank statement.\n\nUse this tool to delete the most recently imported bank statement from the specified bank account. Useful for correcting errors or removing unnecessary data.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. This is required to specify which organization's bank statement needs to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the bank account from which the statement will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_statement_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank statement to be deleted. Required for identifying which statement to remove.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_last_imported_bank_statement'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteLastImportedBankStatement", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "bank_account_unique_identifier": { + "value": "ba_9a8b7c6d5e4f", + "type": "string", + "required": true + }, + "bank_statement_id": { + "value": "bs_20260218_0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteLocation", + "qualifiedName": "ZohoBooksApi.DeleteLocation", + "fullyQualifiedName": "ZohoBooksApi.DeleteLocation@1.0.0", + "description": "Delete a location from the system.\n\nUse this tool to remove a location by specifying its unique identifier in the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization to which the location belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "location_id", + "type": "string", + "required": true, + "description": "The unique identifier of the location to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_location'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteLocation", + "parameters": { + "organization_id": { + "value": "org_987654321", + "type": "string", + "required": true + }, + "location_id": { + "value": "loc_123abc", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteLoggedTimeEntry", + "qualifiedName": "ZohoBooksApi.DeleteLoggedTimeEntry", + "fullyQualifiedName": "ZohoBooksApi.DeleteLoggedTimeEntry@1.0.0", + "description": "Delete a specific logged time entry.\n\nUse this tool to delete a logged time entry from a project by specifying the time entry ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization from which the time entry will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "time_entry_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the logged time entry to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_time_entry'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteLoggedTimeEntry", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "time_entry_identifier": { + "value": "timeentry_abc123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteMultipleVendorPayments", + "qualifiedName": "ZohoBooksApi.DeleteMultipleVendorPayments", + "fullyQualifiedName": "ZohoBooksApi.DeleteMultipleVendorPayments@1.0.0", + "description": "Delete multiple vendor payments in one action.\n\nUse this tool to delete multiple vendor payments at once, streamlining payment management and cleanup tasks.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization from which the vendor payments are to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_payment_ids", + "type": "string", + "required": true, + "description": "Comma-separated list of vendor payment IDs to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "bulk_delete", + "type": "boolean", + "required": true, + "description": "Set to true to perform bulk deletion of vendor payments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_delete_vendor_payments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteMultipleVendorPayments", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "vendor_payment_ids": { + "value": "1000000001,1000000002,1000000003", + "type": "string", + "required": true + }, + "bulk_delete": { + "value": true, + "type": "boolean", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteOpeningBalance", + "qualifiedName": "ZohoBooksApi.DeleteOpeningBalance", + "fullyQualifiedName": "ZohoBooksApi.DeleteOpeningBalance@1.0.0", + "description": "Delete the entered opening balance in Zoho Books.\n\nUse this tool to remove the existing opening balance from Zoho Books settings when adjustments or corrections are needed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose opening balance is to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_opening_balance'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteOpeningBalance", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteProject", + "qualifiedName": "ZohoBooksApi.DeleteProject", + "fullyQualifiedName": "ZohoBooksApi.DeleteProject@1.0.0", + "description": "Deletes an existing project in Zoho Books.\n\nCall this tool to delete an existing project in Zoho Books using the project ID. It confirms the deletion of the specified project.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to identify the organization from which the project will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "project_id", + "type": "string", + "required": true, + "description": "Unique identifier of the project to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_project'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteProject", + "parameters": { + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": true + }, + "project_id": { + "value": "PRJ-98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteProjectComment", + "qualifiedName": "ZohoBooksApi.DeleteProjectComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteProjectComment@1.0.0", + "description": "Delete a specific comment from a project.\n\nUse this tool to delete a comment from a specified project. Useful when you need to remove unwanted or outdated comments from project discussions.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the comment is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the project to delete the comment from.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the comment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_project_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteProjectComment", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "project_identifier": { + "value": "proj_98765", + "type": "string", + "required": true + }, + "comment_unique_identifier": { + "value": "comment_12ab34", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteProjectTask", + "qualifiedName": "ZohoBooksApi.DeleteProjectTask", + "fullyQualifiedName": "ZohoBooksApi.DeleteProjectTask@1.0.0", + "description": "Remove a task from a specific project in Zoho Books.\n\nCall this tool to delete a specified task from a project using Zoho Books API. Use it when you need to manage project tasks and remove any that are no longer relevant.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization to which the task belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the project from which a task will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "task_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the task to be deleted in the project.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_task'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteProjectTask", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "project_identifier": { + "value": "a1b2c3d4-5678-90ab-cdef-1234567890ab", + "type": "string", + "required": true + }, + "task_identifier": { + "value": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeletePurchaseOrder", + "qualifiedName": "ZohoBooksApi.DeletePurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.DeletePurchaseOrder@1.0.0", + "description": "Delete an existing purchase order in Zoho Books.\n\nUse this tool to remove a purchase order by providing its ID. The endpoint confirms the deletion once the operation is successful.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization within Zoho Books. Required to specify which organization's purchase order is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the purchase order to delete.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_purchase_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeletePurchaseOrder", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "purchase_order_identifier": { + "value": "PO-2026-000123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeletePurchaseOrderAttachment", + "qualifiedName": "ZohoBooksApi.DeletePurchaseOrderAttachment", + "fullyQualifiedName": "ZohoBooksApi.DeletePurchaseOrderAttachment@1.0.0", + "description": "Deletes the attachment from a purchase order.\n\nThis tool is used to delete the file attached to a specified purchase order in Zoho Books, identified by the purchase order ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. This is required to specify which organization's records to access or modify.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the purchase order to delete the attachment from.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_purchase_order_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeletePurchaseOrderAttachment", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeletePurchaseOrderComment", + "qualifiedName": "ZohoBooksApi.DeletePurchaseOrderComment", + "fullyQualifiedName": "ZohoBooksApi.DeletePurchaseOrderComment@1.0.0", + "description": "Delete a comment from a purchase order.\n\nUse this tool to remove a specific comment associated with a purchase order by providing the purchase order ID and the comment ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Provide this to specify which organization's purchase order comment you wish to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the purchase order to delete the comment from.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the comment to be deleted. Required to specify which comment to remove from a purchase order.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_purchase_order_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeletePurchaseOrderComment", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-2026-0001", + "type": "string", + "required": true + }, + "comment_unique_identifier": { + "value": "cmt-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteRecurringBill", + "qualifiedName": "ZohoBooksApi.DeleteRecurringBill", + "fullyQualifiedName": "ZohoBooksApi.DeleteRecurringBill@1.0.0", + "description": "Delete an existing recurring bill in Zoho Books.\n\nUse this tool to delete a recurring bill identified by its ID in Zoho Books. This is useful when managing financial records and removing bills that are no longer needed.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization in Zoho Books to delete a recurring bill from.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the recurring bill to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_recurring_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteRecurringBill", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "recurring_bill_identifier": { + "value": "RB-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteRecurringExpense", + "qualifiedName": "ZohoBooksApi.DeleteRecurringExpense", + "fullyQualifiedName": "ZohoBooksApi.DeleteRecurringExpense@1.0.0", + "description": "Delete an existing recurring expense in Zoho Books.\n\nUse this tool to delete a recurring expense from Zoho Books when it's no longer needed or has been replaced. The tool confirms the successful removal of the specified recurring expense.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_id", + "type": "string", + "required": true, + "description": "The unique identifier for the recurring expense to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_recurring_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteRecurringExpense", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "recurring_expense_id": { + "value": "987654321098765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteRecurringInvoice", + "qualifiedName": "ZohoBooksApi.DeleteRecurringInvoice", + "fullyQualifiedName": "ZohoBooksApi.DeleteRecurringInvoice@1.0.0", + "description": "Delete an existing recurring invoice.\n\nCall this tool to remove a recurring invoice from the system. Ensure you have the correct invoice ID to successfully delete the desired invoice.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization to which the recurring invoice belongs. Required for identifying the correct organization.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier for the recurring invoice to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_recurring_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteRecurringInvoice", + "parameters": { + "organization_id": { + "value": "60000000001", + "type": "string", + "required": true + }, + "recurring_invoice_id": { + "value": "RI-2026-000123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteRetainerInvoice", + "qualifiedName": "ZohoBooksApi.DeleteRetainerInvoice", + "fullyQualifiedName": "ZohoBooksApi.DeleteRetainerInvoice@1.0.0", + "description": "Delete an existing retainer invoice.\n\nUse this tool to delete a retainer invoice. Note that invoices with applied payments or credit notes cannot be deleted.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization whose retainer invoice you want to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice to delete. Required for specifying the invoice to be removed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_retainer_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteRetainerInvoice", + "parameters": { + "organization_id": { + "value": "1122334455", + "type": "string", + "required": true + }, + "retainer_invoice_identifier": { + "value": "RINV-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteRetainerInvoiceAttachment", + "qualifiedName": "ZohoBooksApi.DeleteRetainerInvoiceAttachment", + "fullyQualifiedName": "ZohoBooksApi.DeleteRetainerInvoiceAttachment@1.0.0", + "description": "Delete a file attached to a retainer invoice.\n\nUse this tool to delete a specific file attached to a retainer invoice. Call it when you need to remove an attachment from an invoice in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books whose invoice attachment is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice to specify which invoice's attachment should be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "document_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice document to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_retainer_invoice_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteRetainerInvoiceAttachment", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "RI-2048", + "type": "string", + "required": true + }, + "document_id": { + "value": "DOC-abc123xyz", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteRetainerInvoiceComment", + "qualifiedName": "ZohoBooksApi.DeleteRetainerInvoiceComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteRetainerInvoiceComment@1.0.0", + "description": "Remove a specific comment from a retainer invoice.\n\nUse this tool to delete a comment from a retainer invoice in Zoho Books by providing the retainer invoice ID and the comment ID.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization within Zoho Books for which the comment is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice to find the specific invoice for comment deletion.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the comment to be deleted from the retainer invoice.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_retainer_invoice_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteRetainerInvoiceComment", + "parameters": { + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "987654321", + "type": "string", + "required": true + }, + "comment_identifier": { + "value": "cmt_112233", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteSalesOrder", + "qualifiedName": "ZohoBooksApi.DeleteSalesOrder", + "fullyQualifiedName": "ZohoBooksApi.DeleteSalesOrder@1.0.0", + "description": "Delete an existing sales order.\n\nUse this tool to delete an existing sales order by its ID. It cannot delete invoiced sales orders.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization for which the sales order will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier for the sales order to be deleted. Ensure it is not invoiced.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_sales_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteSalesOrder", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "4839456000001234567", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteSalesOrderAttachment", + "qualifiedName": "ZohoBooksApi.DeleteSalesOrderAttachment", + "fullyQualifiedName": "ZohoBooksApi.DeleteSalesOrderAttachment@1.0.0", + "description": "Delete an attached file from a sales order in Zoho Books.\n\nCall this tool to remove an attached file from a specified sales order in Zoho Books. Useful for managing and updating records by deleting unnecessary or outdated attachments.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization whose sales order attachment is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier for the sales order from which the attachment will be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_sales_order_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteSalesOrderAttachment", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO-1001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteSalesOrderComment", + "qualifiedName": "ZohoBooksApi.DeleteSalesOrderComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteSalesOrderComment@1.0.0", + "description": "Delete a comment from a sales order in Zoho Books.\n\nUse this tool to remove a comment from a specific sales order in Zoho Books by providing the sales order ID and the comment ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization. This ID is required to specify which organization's sales order comment needs to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order to delete the comment from.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the comment to delete.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_sales_order_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteSalesOrderComment", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO-000123456", + "type": "string", + "required": true + }, + "comment_identifier": { + "value": "CMT-abcdef123456", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteSalesReceipt", + "qualifiedName": "ZohoBooksApi.DeleteSalesReceipt", + "fullyQualifiedName": "ZohoBooksApi.DeleteSalesReceipt@1.0.0", + "description": "Delete an existing sales receipt in Zoho Books.\n\nThis tool deletes a specified sales receipt from Zoho Books. It should be used when you need to permanently remove a sales receipt by its ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_receipt_id", + "type": "string", + "required": true, + "description": "The unique identifier for the sales receipt to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_sales_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteSalesReceipt", + "parameters": { + "organization_id": { + "value": "569874321", + "type": "string", + "required": true + }, + "sales_receipt_id": { + "value": "SR-2026-000345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteTax", + "qualifiedName": "ZohoBooksApi.DeleteTax", + "fullyQualifiedName": "ZohoBooksApi.DeleteTax@1.0.0", + "description": "Delete a simple or compound tax in Zoho Books.\n\nUse this tool to remove a specific tax, whether simple or compound, from the Zoho Books system. This is useful when managing taxes and ensuring only relevant ones are active.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization within Zoho Books. This is required to specify which organization's tax entry to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the tax to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_tax'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteTax", + "parameters": { + "organization_id": { + "value": "600000000000001", + "type": "string", + "required": true + }, + "tax_identifier": { + "value": "345678901234567", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteTaxAuthority", + "qualifiedName": "ZohoBooksApi.DeleteTaxAuthority", + "fullyQualifiedName": "ZohoBooksApi.DeleteTaxAuthority@1.0.0", + "description": "Delete a specific tax authority.\n\nUse this tool to delete a tax authority when you need its removal confirmed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to identify which one the tax authority belongs to.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_authority_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the tax authority to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_tax_authority'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteTaxAuthority", + "parameters": { + "organization_id": { + "value": "67234567890", + "type": "string", + "required": true + }, + "tax_authority_identifier": { + "value": "TA-98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteTaxExemption", + "qualifiedName": "ZohoBooksApi.DeleteTaxExemption", + "fullyQualifiedName": "ZohoBooksApi.DeleteTaxExemption@1.0.0", + "description": "Delete a specific tax exemption from Zoho Books.\n\nUse this tool to delete a tax exemption in Zoho Books when you need to remove a specific exemption entry.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_exemption_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the tax exemption to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_tax_exemption'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteTaxExemption", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "tax_exemption_identifier": { + "value": "TXEXMPT_98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteTaxGroup", + "qualifiedName": "ZohoBooksApi.DeleteTaxGroup", + "fullyQualifiedName": "ZohoBooksApi.DeleteTaxGroup@1.0.0", + "description": "Delete a tax group if not associated with transactions.\n\nUse this tool to delete a tax group from Zoho Books. Note that tax groups associated with transactions cannot be deleted.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_group_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the tax group to be deleted. Ensure it's not associated with active transactions to proceed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_tax_group'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteTaxGroup", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "tax_group_identifier": { + "value": "112233445566778899", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteTimeEntries", + "qualifiedName": "ZohoBooksApi.DeleteTimeEntries", + "fullyQualifiedName": "ZohoBooksApi.DeleteTimeEntries@1.0.0", + "description": "Delete time tracking entries from projects.\n\nUse this tool to delete time entries from projects in Zoho Books. It should be called when you need to remove specific time tracking records.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization to identify which entity's time entries will be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_time_entries'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteTimeEntries", + "parameters": { + "organization_identifier": { + "value": "org_987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteTransaction", + "qualifiedName": "ZohoBooksApi.DeleteTransaction", + "fullyQualifiedName": "ZohoBooksApi.DeleteTransaction@1.0.0", + "description": "Delete a specified accounting transaction.\n\nThis tool is used to delete a specified transaction from the chart of accounts in Zoho Books. Call this tool when you need to remove a transaction permanently.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the transaction will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the transaction to be deleted in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_chart_of_account_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteTransaction", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "transaction_identifier": { + "value": "TXN-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteVendorCredit", + "qualifiedName": "ZohoBooksApi.DeleteVendorCredit", + "fullyQualifiedName": "ZohoBooksApi.DeleteVendorCredit@1.0.0", + "description": "Delete a vendor credit by its ID.\n\nUse this tool to delete a specific vendor credit using its unique ID. This is typically required when a vendor credit is no longer valid or was added by mistake.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's vendor credit to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor credit to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_vendor_credit'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteVendorCredit", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "vendor_credit_identifier": { + "value": "VC-00012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteVendorCreditComment", + "qualifiedName": "ZohoBooksApi.DeleteVendorCreditComment", + "fullyQualifiedName": "ZohoBooksApi.DeleteVendorCreditComment@1.0.0", + "description": "Delete a vendor credit comment in Zoho Books.\n\nUse this tool to delete a specific comment from a vendor credit in Zoho Books. This is useful when you need to manage or clean up vendor credit records by removing unnecessary or incorrect comments.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_id", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor credit to specify which comment to delete.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_id", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor credit comment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_vendor_credit_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteVendorCreditComment", + "parameters": { + "organization_id": { + "value": "1623456789", + "type": "string", + "required": true + }, + "vendor_credit_id": { + "value": "VC-987654321", + "type": "string", + "required": true + }, + "comment_id": { + "value": "CMT-24680", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteVendorCreditRefund", + "qualifiedName": "ZohoBooksApi.DeleteVendorCreditRefund", + "fullyQualifiedName": "ZohoBooksApi.DeleteVendorCreditRefund@1.0.0", + "description": "Delete a vendor credit refund in Zoho Books.\n\nUse this tool to delete a specific vendor credit refund in Zoho Books when you have the vendor credit ID and refund ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization to which the vendor credit refund belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor credit, required to delete the refund.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_refund_id", + "type": "string", + "required": true, + "description": "Unique identifier for the specific vendor credit refund you wish to delete.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_vendor_credit_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteVendorCreditRefund", + "parameters": { + "organization_id": { + "value": "6000000000001234567", + "type": "string", + "required": true + }, + "vendor_credit_identifier": { + "value": "VC-000987654321", + "type": "string", + "required": true + }, + "vendor_credit_refund_id": { + "value": "VCR-000123456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteVendorPayment", + "qualifiedName": "ZohoBooksApi.DeleteVendorPayment", + "fullyQualifiedName": "ZohoBooksApi.DeleteVendorPayment@1.0.0", + "description": "Delete an existing vendor payment in Zoho Books.\n\nUse this tool to delete a specific vendor payment in Zoho Books when you have the payment ID and need to erase it from the records.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the vendor payment is to be deleted. This is required to identify the correct organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_payment_id", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor payment to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_vendor_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteVendorPayment", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "vendor_payment_id": { + "value": "987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DeleteVendorPaymentRefund", + "qualifiedName": "ZohoBooksApi.DeleteVendorPaymentRefund", + "fullyQualifiedName": "ZohoBooksApi.DeleteVendorPaymentRefund@1.0.0", + "description": "Delete a refund from an existing vendor payment.\n\nUse this tool to remove a specific refund associated with a vendor payment. It's useful when a refund needs to be retracted or corrected.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization to which the vendor payment refund belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the payment to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_payment_refund_id", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor payment refund to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_vendor_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DeleteVendorPaymentRefund", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "payment_identifier": { + "value": "PAY-2026-0001", + "type": "string", + "required": true + }, + "vendor_payment_refund_id": { + "value": "RFND-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DisableContactPaymentReminder", + "qualifiedName": "ZohoBooksApi.DisableContactPaymentReminder", + "fullyQualifiedName": "ZohoBooksApi.DisableContactPaymentReminder@1.0.0", + "description": "Disable automated payment reminders for a contact.\n\nThis tool is used to disable automated payment reminders for a specific contact in Zoho Books. It should be called when you want to stop the system from sending payment reminders to a particular contact.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which payment reminders will be disabled.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the contact to disable payment reminders for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'disable_contact_payment_reminder'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DisableContactPaymentReminder", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "contact_unique_identifier": { + "value": "c1a2b3c4d5e6f7", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "DisableInvoicePaymentReminder", + "qualifiedName": "ZohoBooksApi.DisableInvoicePaymentReminder", + "fullyQualifiedName": "ZohoBooksApi.DisableInvoicePaymentReminder@1.0.0", + "description": "Disable automated payment reminders for an invoice.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's invoice reminders are being disabled.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to disable payment reminders.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'disable_invoice_payment_reminder'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.DisableInvoicePaymentReminder", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-1001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "EmailContactStatement", + "qualifiedName": "ZohoBooksApi.EmailContactStatement", + "fullyQualifiedName": "ZohoBooksApi.EmailContactStatement@1.0.0", + "description": "Sends an email statement to a specified contact.\n\n This tool triggers an email statement to be sent to a specific contact using Zoho Books. If no JSON input is provided, the email will use default content. Use this tool when you need to send financial statements to clients or contacts.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required to send the email statement to a specified contact. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the contact to send the statement to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "statement_start_date", + "type": "string", + "required": false, + "description": "The starting date for the statement in the format [yyyy-mm-dd]. If omitted, the current month will be used. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "statement_end_date", + "type": "string", + "required": false, + "description": "End date for the statement in the format [yyyy-mm-dd]. If not provided, the current month's statement will be sent. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "attachment_files", + "type": "string", + "required": false, + "description": "Files to be attached with the statement email, in multipart/form-data format. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_contact_statement'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.EmailContactStatement", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "contact_identifier": { + "value": "987654321", + "type": "string", + "required": false + }, + "statement_start_date": { + "value": "2026-01-01", + "type": "string", + "required": false + }, + "statement_end_date": { + "value": "2026-01-31", + "type": "string", + "required": false + }, + "attachment_files": { + "value": "statement_Jan2026.pdf", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"email\":{\"subject\":\"Monthly Statement - January 2026\",\"message\":\"Dear Client,\\n\\nPlease find your statement for the period attached.\\n\\nRegards,\\nYour Company\",\"to_mail_ids\":[\"client@example.com\"],\"cc_mail_ids\":[\"accounting@example.com\"],\"bcc_mail_ids\":[],\"include_payments\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "EmailCreditNote", + "qualifiedName": "ZohoBooksApi.EmailCreditNote", + "fullyQualifiedName": "ZohoBooksApi.EmailCreditNote@1.0.0", + "description": "Send a credit note via email.\n\n Use this tool to email a credit note to the intended recipient. It's useful for sending invoice adjustments to clients.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "ID of the organization for which the credit note is being emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": false, + "description": "Unique identifier of the credit note to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_id_for_credit_note", + "type": "string", + "required": false, + "description": "Customer ID for whom the credit note is raised. Used to identify the recipient of the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "email_attachments", + "type": "string", + "required": false, + "description": "The file paths or URLs of files to attach to the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.EmailCreditNote", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "987654321", + "type": "string", + "required": false + }, + "credit_note_id": { + "value": "345678901234", + "type": "string", + "required": false + }, + "customer_id_for_credit_note": { + "value": "555444333", + "type": "string", + "required": false + }, + "email_attachments": { + "value": "https://example.com/creditnote_terms.pdf", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"to_mail_ids\":[\"client@example.com\"],\"subject\":\"Credit Note CN-1001\",\"content\":\"Dear Customer,\\nPlease find attached your credit note.\",\"send_from\":\"invoices@yourcompany.com\",\"attach_pdf\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "EmailRetainerInvoiceToCustomer", + "qualifiedName": "ZohoBooksApi.EmailRetainerInvoiceToCustomer", + "fullyQualifiedName": "ZohoBooksApi.EmailRetainerInvoiceToCustomer@1.0.0", + "description": "Send a retainer invoice to a customer via email.\n\n This tool emails a retainer invoice to the specified customer. If no custom content is provided, the email will use the default content.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": false, + "description": "The unique identifier of the retainer invoice to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "email_attachments", + "type": "string", + "required": false, + "description": "List of file paths or URLs for files to attach to the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_customer_statement", + "type": "boolean", + "required": false, + "description": "Set to true to send the customer statement PDF with the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "attach_invoice_to_email", + "type": "boolean", + "required": false, + "description": "Attach the retainer invoice to the email if true. Accepts a boolean value. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_retainer_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.EmailRetainerInvoiceToCustomer", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "retainer_invoice_id": { + "value": "987654321098765", + "type": "string", + "required": false + }, + "email_attachments": { + "value": "https://example.com/files/terms.pdf,https://cdn.example.com/images/logo.png", + "type": "string", + "required": false + }, + "send_customer_statement": { + "value": true, + "type": "boolean", + "required": false + }, + "attach_invoice_to_email": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"send_email\":true,\"subject\":\"Your Retainer Invoice\",\"message\":\"Hello Customer,\\n\\nPlease find attached your retainer invoice. If you have any questions, reply to this email.\\n\\nBest regards,\\nAcme Corp\",\"to_mail_ids\":[\"customer@example.com\"],\"cc_mail_ids\":[\"accounting@example.com\"],\"bcc_mail_ids\":[]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "EmailSalesOrderToCustomer", + "qualifiedName": "ZohoBooksApi.EmailSalesOrderToCustomer", + "fullyQualifiedName": "ZohoBooksApi.EmailSalesOrderToCustomer@1.0.0", + "description": "Email a sales order to a customer.\n\n Send an email containing the sales order to the customer, with optional custom content. If no content is provided, the default email content will be used.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the sales order is being emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": false, + "description": "Provide the unique identifier of the sales order to be emailed to the customer. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the sales order to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_attachments", + "type": "string", + "required": false, + "description": "A list of file paths or URLs for attachments to include with the sales order email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "file_name", + "type": "string", + "required": false, + "description": "Specify the name of the file to be attached to the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "include_sales_order_attachment", + "type": "boolean", + "required": false, + "description": "Specify true to include the sales order attachment in the email, or false to exclude it. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_sales_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.EmailSalesOrderToCustomer", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6677889900", + "type": "string", + "required": false + }, + "sales_order_id": { + "value": "SO12345", + "type": "string", + "required": false + }, + "sales_order_identifier": { + "value": "SO-2026-0001", + "type": "string", + "required": false + }, + "sales_order_attachments": { + "value": "[\"https://cdn.example.com/docs/so_SO12345.pdf\",\"https://example.com/terms.pdf\"]", + "type": "string", + "required": false + }, + "file_name": { + "value": "SalesOrder_SO12345.pdf", + "type": "string", + "required": false + }, + "include_sales_order_attachment": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"subject\":\"Your Sales Order SO12345\",\"message\":\"Dear Customer,\\n\\nPlease find attached your sales order. Contact us if you have any questions.\\n\\nBest regards,\\nAcme Corp\",\"to_mail_ids\":[\"customer@example.com\"],\"cc_mail_ids\":[\"sales@example.com\"],\"bcc_mail_ids\":[],\"send_from_org_email_id\":\"9876543210\",\"is_send\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "EmailSalesReceiptToCustomer", + "qualifiedName": "ZohoBooksApi.EmailSalesReceiptToCustomer", + "fullyQualifiedName": "ZohoBooksApi.EmailSalesReceiptToCustomer@1.0.0", + "description": "Email a sales receipt to the customer.\n\n Use this tool to send a sales receipt via email to a specific customer. It should be called when you need to deliver the sales receipt directly to the customer.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "sales_receipt_identifier", + "type": "string", + "required": false, + "description": "The unique identifier of the sales receipt to be emailed to the customer. It must be a string. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "attach_pdf", + "type": "boolean", + "required": false, + "description": "Set to true to send the sales receipt PDF with the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_sales_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.EmailSalesReceiptToCustomer", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "sales_receipt_identifier": { + "value": "SR_1234567890", + "type": "string", + "required": false + }, + "attach_pdf": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"to_mail_ids\":[\"customer@example.com\"],\"subject\":\"Your Sales Receipt\",\"body\":\"Hello,\\n\\nPlease find attached your sales receipt.\\n\\nThank you.\",\"send_from_org_email_id\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "EnableContactPortalAccess", + "qualifiedName": "ZohoBooksApi.EnableContactPortalAccess", + "fullyQualifiedName": "ZohoBooksApi.EnableContactPortalAccess@1.0.0", + "description": "Enable portal access for a specified contact in Zoho Books.\n\n Use this tool to enable portal access for a contact in Zoho Books, allowing them to interact with their account through the portal.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization within Zoho Books, required to enable portal access for a contact. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_id", + "type": "string", + "required": false, + "description": "Unique identifier for the specific contact whose portal access is to be enabled. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'enable_contact_portal'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.EnableContactPortalAccess", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "600012345678901234", + "type": "string", + "required": false + }, + "contact_unique_id": { + "value": "1234567890abcdef", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"portal_access\": {\"enabled\": true, \"email\": \"jane.doe@example.com\", \"first_name\": \"Jane\", \"last_name\": \"Doe\", \"send_invitation\": true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "EnableOrganizationLocations", + "qualifiedName": "ZohoBooksApi.EnableOrganizationLocations", + "fullyQualifiedName": "ZohoBooksApi.EnableOrganizationLocations@1.0.0", + "description": "Enable locations for an organization in Zoho Books.\n\nUse this tool to enable location settings for an organization in Zoho Books, allowing tracking and management of different locations within the company's account.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization for which to enable location tracking.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'enable_locations'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.EnableOrganizationLocations", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "EnablePaymentReminder", + "qualifiedName": "ZohoBooksApi.EnablePaymentReminder", + "fullyQualifiedName": "ZohoBooksApi.EnablePaymentReminder@1.0.0", + "description": "Enable automated payment reminders for a contact.\n\nThis tool is used to enable automated payment reminders for a specific contact, improving timely payment handling.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the unique ID of the organization for which to enable payment reminders.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the contact for whom the payment reminder is enabled.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'enable_contact_payment_reminder'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.EnablePaymentReminder", + "parameters": { + "organization_id": { + "value": "1224578000000123456", + "type": "string", + "required": true + }, + "contact_unique_identifier": { + "value": "5f8d04b2-1a3c-4a1b-bc9e-2f3d4e5a6b7c", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ExcludeBankTransaction", + "qualifiedName": "ZohoBooksApi.ExcludeBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.ExcludeBankTransaction@1.0.0", + "description": "Exclude a transaction from a bank or credit card account.\n\nUse this tool to exclude a specific transaction from your bank or credit card account records. Ideal for removing unwanted or incorrect entries.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to which the transaction belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank transaction to be excluded.", + "enum": null, + "inferrable": true + }, + { + "name": "account_id_for_transaction_exclusion", + "type": "string", + "required": false, + "description": "The ID of the account from which a transaction will be excluded. This is a mandatory field.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'exclude_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ExcludeBankTransaction", + "parameters": { + "organization_id": { + "value": "6678293000000123456", + "type": "string", + "required": true + }, + "transaction_id": { + "value": "4050000000123456789", + "type": "string", + "required": true + }, + "account_id_for_transaction_exclusion": { + "value": "4050000000987654321", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ExportAndPrintEstimates", + "qualifiedName": "ZohoBooksApi.ExportAndPrintEstimates", + "fullyQualifiedName": "ZohoBooksApi.ExportAndPrintEstimates@1.0.0", + "description": "Export and print estimates as a PDF file.\n\nUse this tool to export up to 25 estimates as a PDF file and prepare them for printing.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization whose estimates are to be exported and printed.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_ids_to_export", + "type": "string", + "required": true, + "description": "Comma-separated list of estimate IDs to export and print. Maximum of 25 IDs allowed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_print_estimates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ExportAndPrintEstimates", + "parameters": { + "organization_id": { + "value": "629873465", + "type": "string", + "required": true + }, + "estimate_ids_to_export": { + "value": "EST-1001,EST-1002,EST-1003,EST-1004", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ExportAndPrintInvoices", + "qualifiedName": "ZohoBooksApi.ExportAndPrintInvoices", + "fullyQualifiedName": "ZohoBooksApi.ExportAndPrintInvoices@1.0.0", + "description": "Export and print multiple invoices as PDFs.\n\nUse this tool to export and print up to 25 invoices at a time in PDF format.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's invoices to print.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifiers", + "type": "string", + "required": true, + "description": "A comma-separated string of up to 25 invoice IDs to export and print as PDFs.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_print_invoices'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ExportAndPrintInvoices", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "invoice_identifiers": { + "value": "INV-1001,INV-1002,INV-1003,INV-1004,INV-1005", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ExportEstimatesAsPdf", + "qualifiedName": "ZohoBooksApi.ExportEstimatesAsPdf", + "fullyQualifiedName": "ZohoBooksApi.ExportEstimatesAsPdf@1.0.0", + "description": "Export up to 25 estimates as a single PDF document.\n\nUse this tool to export multiple estimates (up to 25) in one consolidated PDF document. Ideal for compiling estimates quickly into a single file for review or sharing.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required to specify which organization's estimates are to be exported.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_ids", + "type": "string", + "required": true, + "description": "Comma-separated list of estimate IDs to include in the PDF. Maximum of 25 IDs allowed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_export_estimates_as_pdf'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ExportEstimatesAsPdf", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "estimate_ids": { + "value": "EST-1001,EST-1002,EST-1003", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ExportInvoicesAsPdf", + "qualifiedName": "ZohoBooksApi.ExportInvoicesAsPdf", + "fullyQualifiedName": "ZohoBooksApi.ExportInvoicesAsPdf@1.0.0", + "description": "Export up to 25 invoices as a single PDF file.\n\nUse this tool to export multiple invoices into a single PDF document. Ideal for consolidating up to 25 invoices in one file.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which invoices are being exported.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_ids", + "type": "string", + "required": true, + "description": "Comma-separated list of invoice IDs to export as a PDF. Maximum of 25 IDs allowed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_export_invoices_as_pdf'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ExportInvoicesAsPdf", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "invoice_ids": { + "value": "INV-1001,INV-1002,INV-1003", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ExportPrintSalesOrders", + "qualifiedName": "ZohoBooksApi.ExportPrintSalesOrders", + "fullyQualifiedName": "ZohoBooksApi.ExportPrintSalesOrders@1.0.0", + "description": "Export and print sales orders as PDFs.\n\nExports up to 25 sales orders as PDF files for printing. This tool is used to generate printable documents of sales orders in batch format.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization whose sales orders you want to export and print as PDFs.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_print_sales_orders'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ExportPrintSalesOrders", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ExportSalesOrdersPdf", + "qualifiedName": "ZohoBooksApi.ExportSalesOrdersPdf", + "fullyQualifiedName": "ZohoBooksApi.ExportSalesOrdersPdf@1.0.0", + "description": "Export sales orders as a single PDF document.\n\nUse this tool to export up to 25 sales orders into a single PDF file from Zoho Books. It is useful for generating and retrieving sales documentation in bulk for reporting or archiving.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose sales orders will be exported as a PDF. This ID is required to access and retrieve the sales order data from Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_export_sales_orders_as_pdf'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ExportSalesOrdersPdf", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "FetchAssetHistory", + "qualifiedName": "ZohoBooksApi.FetchAssetHistory", + "fullyQualifiedName": "ZohoBooksApi.FetchAssetHistory@1.0.0", + "description": "Fetch the detailed history of a specific fixed asset.\n\nThis tool retrieves a comprehensive history of a fixed asset, detailing its journey from acquisition to write-off. It should be called when you need insights into a fixed asset's lifecycle.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose asset history is being requested.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the fixed asset. Required to fetch its detailed history.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number to retrieve, with a default value of 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Defaults to 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_fixed_asset_history'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.FetchAssetHistory", + "parameters": { + "organization_id": { + "value": "6789012345678901234", + "type": "string", + "required": true + }, + "fixed_asset_identifier": { + "value": "FA-2021-0001", + "type": "string", + "required": true + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 200, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "FetchBankAccountRules", + "qualifiedName": "ZohoBooksApi.FetchBankAccountRules", + "fullyQualifiedName": "ZohoBooksApi.FetchBankAccountRules@1.0.0", + "description": "Fetch rules for a specified bank account.\n\nThis tool fetches all the rules created for a given bank or credit card account ID. It's used to retrieve details about transaction rules associated with a specific account.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. This ID is necessary to fetch the rules linked with the specified bank or credit card account.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_id", + "type": "integer", + "required": true, + "description": "ID of the bank or credit card account to fetch rules for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_bank_account_rules'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.FetchBankAccountRules", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "bank_account_id": { + "value": 12345678, + "type": "integer", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "FetchBankTransactionDetails", + "qualifiedName": "ZohoBooksApi.FetchBankTransactionDetails", + "fullyQualifiedName": "ZohoBooksApi.FetchBankTransactionDetails@1.0.0", + "description": "Fetch details of a specific bank transaction by ID.\n\nUse this tool to retrieve detailed information about a bank transaction by providing its transaction ID. This is useful for accessing specific transaction records in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the bank transaction details need to be fetched.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": true, + "description": "Unique identifier for the bank transaction to fetch its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.FetchBankTransactionDetails", + "parameters": { + "organization_id": { + "value": "60000000001", + "type": "string", + "required": true + }, + "bank_transaction_id": { + "value": "BT-1023456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "FetchEmployeeDetails", + "qualifiedName": "ZohoBooksApi.FetchEmployeeDetails", + "fullyQualifiedName": "ZohoBooksApi.FetchEmployeeDetails@1.0.0", + "description": "Retrieve detailed information about an employee.\n\nThis tool is used to obtain comprehensive details of a specific employee by their ID in Zoho Books. It should be called when detailed employee information is needed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. This ID is necessary to specify which organization's employee details are being requested.", + "enum": null, + "inferrable": true + }, + { + "name": "employee_unique_id", + "type": "string", + "required": true, + "description": "The unique identifier for the employee whose details are to be fetched in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_employee'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.FetchEmployeeDetails", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "employee_unique_id": { + "value": "5f4d3c2b-1a9e-4b8c-9d0f-abcdef123456", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "FetchVendorCreditRefunds", + "qualifiedName": "ZohoBooksApi.FetchVendorCreditRefunds", + "fullyQualifiedName": "ZohoBooksApi.FetchVendorCreditRefunds@1.0.0", + "description": "Retrieve a paginated list of vendor credit refunds.\n\nUse this tool to obtain detailed information about vendor credit refunds, useful for financial reconciliation and tracking vendor transactions. This tool supports pagination.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization for which to list vendor credit refunds.", + "enum": null, + "inferrable": true + }, + { + "name": "search_vendor_credits_by_customer_id", + "type": "integer", + "required": false, + "description": "Search for vendor credits linked to a specific customer using their ID.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_last_modified_time", + "type": "string", + "required": false, + "description": "Search vendor credits using the last modified time as a filter. This expects a date-time string, typically in ISO 8601 format, to narrow down results by when they were last modified.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_vendor_credits_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort vendor credits by. Allowed values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, reference_number.", + "enum": null, + "inferrable": true + }, + { + "name": "pagination_page_number", + "type": "integer", + "required": false, + "description": "Specify the page number of results to retrieve for pagination. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of vendor credits to return per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_vendor_credit_refunds1'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.FetchVendorCreditRefunds", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "search_vendor_credits_by_customer_id": { + "value": 456789, + "type": "integer", + "required": false + }, + "vendor_credit_last_modified_time": { + "value": "2024-12-05T08:30:00Z", + "type": "string", + "required": false + }, + "sort_vendor_credits_by_column": { + "value": "last_modified_time", + "type": "string", + "required": false + }, + "pagination_page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "FetchVendorPaymentDetails", + "qualifiedName": "ZohoBooksApi.FetchVendorPaymentDetails", + "fullyQualifiedName": "ZohoBooksApi.FetchVendorPaymentDetails@1.0.0", + "description": "Retrieve details of a vendor payment by payment ID.\n\nCall this tool to get detailed information about a specific vendor payment using the payment ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to retrieve the vendor payment details.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the payment to retrieve its details.", + "enum": null, + "inferrable": true + }, + { + "name": "include_tax_information", + "type": "boolean", + "required": false, + "description": "Set to true to fetch tax information for the vendor payment.", + "enum": null, + "inferrable": true + }, + { + "name": "fetch_statement_line_info", + "type": "boolean", + "required": false, + "description": "Set to true to fetch statement line information for the vendor payment.", + "enum": null, + "inferrable": true + }, + { + "name": "print_payment", + "type": "boolean", + "required": false, + "description": "Specify true to print the Vendor Payment details.", + "enum": null, + "inferrable": true + }, + { + "name": "is_bill_payment_id", + "type": "boolean", + "required": false, + "description": "True if the ID is for a Bill Payment, false for a Vendor Payment.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_vendor_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.FetchVendorPaymentDetails", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "payment_identifier": { + "value": "VPAY-2026-0001", + "type": "string", + "required": true + }, + "include_tax_information": { + "value": true, + "type": "boolean", + "required": false + }, + "fetch_statement_line_info": { + "value": false, + "type": "boolean", + "required": false + }, + "print_payment": { + "value": false, + "type": "boolean", + "required": false + }, + "is_bill_payment_id": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "FindMatchingBankTransactions", + "qualifiedName": "ZohoBooksApi.FindMatchingBankTransactions", + "fullyQualifiedName": "ZohoBooksApi.FindMatchingBankTransactions@1.0.0", + "description": "Find matching uncategorized bank transactions.\n\nThis tool retrieves a list of uncategorized bank transactions that match specified criteria. It can also handle invoices, bills, and credit notes by recording and matching new payment or refund transactions.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to search transactions for.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_id", + "type": "string", + "required": true, + "description": "Unique identifier for the bank transaction to search for matching entries.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank transaction to be matched.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_type", + "type": "string", + "required": false, + "description": "Specify the type of transaction. Allowed values: deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return. Note: Some types are module-specific and cannot be created under this endpoint.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_date_after", + "type": "string", + "required": false, + "description": "Specify the date after which transactions should be filtered. Use YYYY-MM-DD format.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_date_before", + "type": "string", + "required": false, + "description": "Specify a date in YYYY-MM-DD format. Transactions before this date will be filtered.", + "enum": null, + "inferrable": true + }, + { + "name": "minimum_transaction_amount", + "type": "number", + "required": false, + "description": "Minimum amount to filter transactions. Only transactions equal to or greater than this amount are included.", + "enum": null, + "inferrable": true + }, + { + "name": "maximum_transaction_amount", + "type": "number", + "required": false, + "description": "Maximum amount for filtering transactions. Only transactions with an amount less than or equal to this value will be included.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_contact_name", + "type": "string", + "required": false, + "description": "Name of the contact person involved in the transaction.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_reference_number", + "type": "string", + "required": false, + "description": "Reference number of the transaction to filter matching records.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "Page number to fetch. Default is 1, used for pagination.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to be fetched per page. The default value is 200.", + "enum": null, + "inferrable": true + }, + { + "name": "show_all_transactions", + "type": "boolean", + "required": false, + "description": "Set to true to display all transactions without applying filters; false to filter transactions.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_matching_bank_transactions'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.FindMatchingBankTransactions", + "parameters": { + "organization_id": { + "value": "9876543210", + "type": "string", + "required": true + }, + "transaction_id": { + "value": "txn_20260215_001", + "type": "string", + "required": true + }, + "bank_transaction_id": { + "value": "bt_20260215_ABC", + "type": "string", + "required": true + }, + "transaction_type": { + "value": "deposit", + "type": "string", + "required": false + }, + "filter_date_after": { + "value": "2026-01-01", + "type": "string", + "required": false + }, + "filter_date_before": { + "value": "2026-01-31", + "type": "string", + "required": false + }, + "minimum_transaction_amount": { + "value": 100, + "type": "integer", + "required": false + }, + "maximum_transaction_amount": { + "value": 5000, + "type": "integer", + "required": false + }, + "transaction_contact_name": { + "value": "Acme Corporation", + "type": "string", + "required": false + }, + "transaction_reference_number": { + "value": "REF-20260115-01", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + }, + "show_all_transactions": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GenerateInvoicePaymentLink", + "qualifiedName": "ZohoBooksApi.GenerateInvoicePaymentLink", + "fullyQualifiedName": "ZohoBooksApi.GenerateInvoicePaymentLink@1.0.0", + "description": "Generate a payment link for an invoice with expiry.\n\nUse this tool to generate a unique payment link for a specified invoice, including setting an expiry date for the link.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "Specify the organization's unique ID.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_transaction_id", + "type": "string", + "required": true, + "description": "The unique ID of the transaction or invoice for which the payment link is generated.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_type", + "type": "string", + "required": true, + "description": "Specifies the type of transaction, typically 'Invoice'.", + "enum": null, + "inferrable": true + }, + { + "name": "link_type", + "type": "string", + "required": true, + "description": "Specifies whether the payment link is Private or Public.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_link_expiry_date", + "type": "string", + "required": true, + "description": "The date when the payment link should expire. Use format: yyyy-MM-dd.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.ALL" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'generate_invoice_payment_link'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GenerateInvoicePaymentLink", + "parameters": { + "organization_identifier": { + "value": "org_123456789", + "type": "string", + "required": true + }, + "invoice_transaction_id": { + "value": "INV-2026-00042", + "type": "string", + "required": true + }, + "transaction_type": { + "value": "Invoice", + "type": "string", + "required": true + }, + "link_type": { + "value": "Private", + "type": "string", + "required": true + }, + "payment_link_expiry_date": { + "value": "2026-03-31", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetAccountDetails", + "qualifiedName": "ZohoBooksApi.GetAccountDetails", + "fullyQualifiedName": "ZohoBooksApi.GetAccountDetails@1.0.0", + "description": "Retrieve detailed information for a specified account.\n\nThis tool is used to obtain detailed information about a specific account from the chart of accounts. It should be called when you need to access account specifics such as account name, type, and other related details.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization to which the account belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "account_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier for the account details request.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_chart_of_account'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetAccountDetails", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "account_unique_id": { + "value": "10000000000001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetAssetDepreciationSummary", + "qualifiedName": "ZohoBooksApi.GetAssetDepreciationSummary", + "fullyQualifiedName": "ZohoBooksApi.GetAssetDepreciationSummary@1.0.0", + "description": "Displays detailed future depreciation rates for a fixed asset.\n\nUse this tool to obtain a summary of an asset's future depreciation rates. It is helpful for financial forecasting and decision-making regarding fixed assets.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the asset's future depreciation rates are to be retrieved.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the fixed asset to fetch its future depreciation rates.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_fixed_asset_forecast'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetAssetDepreciationSummary", + "parameters": { + "organization_identifier": { + "value": "org_678901234", + "type": "string", + "required": true + }, + "fixed_asset_identifier": { + "value": "asset_ABC12345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetBankAccountDetails", + "qualifiedName": "ZohoBooksApi.GetBankAccountDetails", + "fullyQualifiedName": "ZohoBooksApi.GetBankAccountDetails@1.0.0", + "description": "Retrieve detailed information of a specified bank account.\n\nCall this tool to get a comprehensive view of a bank account by specifying its account ID. Useful for accessing detailed account data within Zoho Books.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID for the organization. Required to specify which organization's data to access.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_id", + "type": "string", + "required": true, + "description": "Unique identifier used to specify the bank account for detailed retrieval.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_bank_account'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetBankAccountDetails", + "parameters": { + "organization_identifier": { + "value": "8000000000001", + "type": "string", + "required": true + }, + "bank_account_id": { + "value": "ba_9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetBankAccountRuleDetails", + "qualifiedName": "ZohoBooksApi.GetBankAccountRuleDetails", + "fullyQualifiedName": "ZohoBooksApi.GetBankAccountRuleDetails@1.0.0", + "description": "Retrieve details of a specific bank account rule.\n\nCall this tool to get information about a specific rule in a bank account using its rule ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which to retrieve the bank account rule details.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_rule_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank account rule to retrieve its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_bank_account_rule'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetBankAccountRuleDetails", + "parameters": { + "organization_id": { + "value": "345678901234", + "type": "string", + "required": true + }, + "bank_account_rule_id": { + "value": "bkrule_7890abc123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetBankTransactions", + "qualifiedName": "ZohoBooksApi.GetBankTransactions", + "fullyQualifiedName": "ZohoBooksApi.GetBankTransactions@1.0.0", + "description": "Retrieve all transaction details for a bank account.\n\nUse this tool to obtain detailed information about all transactions involved in a specific bank account. It is helpful for financial analysis and record-keeping.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "A unique ID representing the organization for which transactions are being queried. This is required to specify the context of the request.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_id", + "type": "integer", + "required": false, + "description": "Unique identifier for the bank account to retrieve transactions for.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_type_filter", + "type": "string", + "required": false, + "description": "Specify the type of transactions to retrieve. Expected as a string, e.g., 'expense', 'income'.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_date_range", + "type": "string", + "required": false, + "description": "Specify the start and end date for the transaction date range. Use 'date_start' for the start and 'date_end' for the end date.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_amount_range", + "type": "number", + "required": false, + "description": "Set a range of transaction amounts to filter transactions. Use two numbers: start amount, end amount.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_status_list_view", + "type": "string", + "required": false, + "description": "Filter transactions by status: all, uncategorized, manually_added, matched, excluded, categorized.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_reference_number", + "type": "string", + "required": false, + "description": "Search for a transaction using its reference number for more precise results.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_filter_type", + "type": "string", + "required": false, + "description": "Filter transactions by type: Status.All, Status.Uncategorized, Status.Categorized, Status.ManuallyAdded, Status.Excluded, Status.Matched.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_transactions_by", + "type": "string", + "required": false, + "description": "Specify how to sort transactions. Allowed value: 'date'.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_status_filter", + "type": "string", + "required": false, + "description": "Filter transactions by status: All, uncategorized, manually_added, matched, excluded, categorized.", + "enum": null, + "inferrable": true + }, + { + "name": "search_transactions_by_text", + "type": "string", + "required": false, + "description": "Search transactions using contact name or transaction description.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_page_number", + "type": "integer", + "required": false, + "description": "Page number of transactions to fetch, with a default value of 1. Used for pagination.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of transaction records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_bank_transactions'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetBankTransactions", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "bank_account_id": { + "value": 987654321, + "type": "integer", + "required": false + }, + "transaction_type_filter": { + "value": "expense", + "type": "string", + "required": false + }, + "transaction_date_range": { + "value": { + "date_start": "2026-01-01", + "date_end": "2026-01-31" + }, + "type": "string", + "required": false + }, + "transaction_amount_range": { + "value": [ + 100, + 5000 + ], + "type": "integer", + "required": false + }, + "transaction_status_list_view": { + "value": "matched", + "type": "string", + "required": false + }, + "transaction_reference_number": { + "value": "PAYREF-20260115-001", + "type": "string", + "required": false + }, + "transaction_filter_type": { + "value": "Status.Matched", + "type": "string", + "required": false + }, + "sort_transactions_by": { + "value": "date", + "type": "string", + "required": false + }, + "transaction_status_filter": { + "value": "matched", + "type": "string", + "required": false + }, + "search_transactions_by_text": { + "value": "Acme Supplies", + "type": "string", + "required": false + }, + "transaction_page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 200, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetBaseCurrencyAdjustmentDetails", + "qualifiedName": "ZohoBooksApi.GetBaseCurrencyAdjustmentDetails", + "fullyQualifiedName": "ZohoBooksApi.GetBaseCurrencyAdjustmentDetails@1.0.0", + "description": "Retrieve base currency adjustment details by ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose currency adjustment details are being retrieved.", + "enum": null, + "inferrable": true + }, + { + "name": "base_currency_adjustment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the base currency adjustment to retrieve its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_base_currency_adjustment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetBaseCurrencyAdjustmentDetails", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "base_currency_adjustment_identifier": { + "value": "1000000000000154321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetBillHistory", + "qualifiedName": "ZohoBooksApi.GetBillHistory", + "fullyQualifiedName": "ZohoBooksApi.GetBillHistory@1.0.0", + "description": "Retrieve the complete history and comments for a bill.\n\nThis tool retrieves the entire history and comments associated with a specified bill. It is useful for reviewing past interactions and notes on a bill.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "String identifier for the organization whose bill history and comments you wish to retrieve.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the bill to retrieve its history and comments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_bill_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetBillHistory", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "BILL-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetBillPaymentsList", + "qualifiedName": "ZohoBooksApi.GetBillPaymentsList", + "fullyQualifiedName": "ZohoBooksApi.GetBillPaymentsList@1.0.0", + "description": "Retrieve the list of payments made for a specific bill.\n\nThis tool provides a list of all payments made for a specified bill using the bill ID. It should be called when you need to view detailed payment history for a particular bill.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization for which to retrieve bill payments.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the specific bill to retrieve payment details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_bill_payments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetBillPaymentsList", + "parameters": { + "organization_id": { + "value": "679123456", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "BILL-2026-000123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetContactActivityRecentComments", + "qualifiedName": "ZohoBooksApi.GetContactActivityRecentComments", + "fullyQualifiedName": "ZohoBooksApi.GetContactActivityRecentComments@1.0.0", + "description": "Retrieve recent comments for a specific contact.\n\nUse this tool to get a list of recent comments or activities associated with a specific contact in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose contact comments you want to retrieve.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the contact to retrieve recent comments.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "Page number to be fetched. Defaults to 1 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to be fetched per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_contact_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetContactActivityRecentComments", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "contact_unique_identifier": { + "value": "9876543210", + "type": "string", + "required": true + }, + "page_number_to_fetch": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetContactAddresses", + "qualifiedName": "ZohoBooksApi.GetContactAddresses", + "fullyQualifiedName": "ZohoBooksApi.GetContactAddresses@1.0.0", + "description": "Retrieve addresses for a specified contact.\n\nGet the shipping, billing, and additional addresses of a specific contact in Zoho Books. This tool is useful for retrieving address details when needing to display or utilize contact information in applications.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. This ID is necessary to fetch the contact's addresses within the specified organization.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_id", + "type": "string", + "required": true, + "description": "Unique identifier of the contact in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_contact_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetContactAddresses", + "parameters": { + "organization_id": { + "value": "1122334455", + "type": "string", + "required": true + }, + "contact_id": { + "value": "9988776655", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetContactPersonDetails", + "qualifiedName": "ZohoBooksApi.GetContactPersonDetails", + "fullyQualifiedName": "ZohoBooksApi.GetContactPersonDetails@1.0.0", + "description": "Retrieve details of a specific contact person.\n\nUse this tool to get detailed information about a specific contact person associated with a given contact in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. This identifies which organization the contact person belongs to.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the contact in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_person_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the contact person in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_contact_person'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetContactPersonDetails", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "contact_identifier": { + "value": "987654321098765", + "type": "string", + "required": true + }, + "contact_person_identifier": { + "value": "112233445566778", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetContactRefundHistory", + "qualifiedName": "ZohoBooksApi.GetContactRefundHistory", + "fullyQualifiedName": "ZohoBooksApi.GetContactRefundHistory@1.0.0", + "description": "Retrieve the refund history of a specific contact.\n\nUse this tool to get a list of all refunds associated with a particular contact in Zoho Books. This can be useful for financial reconciliations or customer service inquiries related to refund transactions.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to access the specific account data.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the contact in Zoho Books for refund history retrieval.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "The page number to fetch for the contact's refund history. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specifies how many refund records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_contact_refunds'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetContactRefundHistory", + "parameters": { + "organization_id": { + "value": "1000000000001", + "type": "string", + "required": true + }, + "contact_unique_identifier": { + "value": "contact_abc123", + "type": "string", + "required": true + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 200, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetContactStatementMailContent", + "qualifiedName": "ZohoBooksApi.GetContactStatementMailContent", + "fullyQualifiedName": "ZohoBooksApi.GetContactStatementMailContent@1.0.0", + "description": "Retrieve the statement email content for a contact.\n\nUse this tool to get the content of a statement email for a specified contact in Zoho Books.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization to retrieve statement mail content for the contact.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the contact to retrieve the statement mail content.", + "enum": null, + "inferrable": true + }, + { + "name": "statement_start_date", + "type": "string", + "required": false, + "description": "Start date for the statement. Use format [yyyy-mm-dd]. Defaults to current month if not provided.", + "enum": null, + "inferrable": true + }, + { + "name": "statement_end_date", + "type": "string", + "required": false, + "description": "End date for the statement in the format [yyyy-mm-dd].", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_contact_statement_mail'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetContactStatementMailContent", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "contact_unique_identifier": { + "value": "321654987012345", + "type": "string", + "required": true + }, + "statement_start_date": { + "value": "2026-01-01", + "type": "string", + "required": false + }, + "statement_end_date": { + "value": "2026-01-31", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCreditNoteComments", + "qualifiedName": "ZohoBooksApi.GetCreditNoteComments", + "fullyQualifiedName": "ZohoBooksApi.GetCreditNoteComments@1.0.0", + "description": "Retrieve comments and history of a credit note.\n\nUse this tool to obtain the history and comments associated with a specific credit note by providing the credit note's ID. This can be useful for tracking changes or feedback related to the credit transaction.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "Provide the organization's unique ID to retrieve credit note comments.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Provide the unique identifier of the credit note to retrieve its comments and history.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_credit_note_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCreditNoteComments", + "parameters": { + "organization_identifier": { + "value": "60001234567", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "CN-1001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCreditNoteDetails", + "qualifiedName": "ZohoBooksApi.GetCreditNoteDetails", + "fullyQualifiedName": "ZohoBooksApi.GetCreditNoteDetails@1.0.0", + "description": "Retrieve details of a specific credit note using its ID.\n\nCall this tool to obtain detailed information about an existing credit note by providing its unique identifier. Useful for tracking, reviewing, or managing credit notes within Zoho Books.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "The unique identifier of the credit note to retrieve details for. This ID is essential for accessing the specific credit note information.", + "enum": null, + "inferrable": true + }, + { + "name": "response_format", + "type": "string", + "required": false, + "description": "Specify the format of the credit note details: json, pdf, or html. Default is html.", + "enum": null, + "inferrable": true + }, + { + "name": "export_with_default_print_option", + "type": "boolean", + "required": false, + "description": "Specify whether to export the credit note PDF with the default print option. Use 'true' or 'false'.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCreditNoteDetails", + "parameters": { + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "987654321", + "type": "string", + "required": true + }, + "response_format": { + "value": "json", + "type": "string", + "required": false + }, + "export_with_default_print_option": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCreditNoteEmailContent", + "qualifiedName": "ZohoBooksApi.GetCreditNoteEmailContent", + "fullyQualifiedName": "ZohoBooksApi.GetCreditNoteEmailContent@1.0.0", + "description": "Retrieve email content for a given credit note.\n\nUse this tool to get the email content associated with a specified credit note by its ID.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization to retrieve the credit note email content for. This is a required field.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to retrieve its email content.", + "enum": null, + "inferrable": true + }, + { + "name": "specified_email_template_id", + "type": "string", + "required": false, + "description": "ID of a specific email template. If not provided, defaults to customer's or the default template.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_credit_note_email'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCreditNoteEmailContent", + "parameters": { + "organization_identifier": { + "value": "ORG_1234567890", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "CN_9876543210", + "type": "string", + "required": true + }, + "specified_email_template_id": { + "value": "TEMPLATE_555666", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCreditNotePdfTemplates", + "qualifiedName": "ZohoBooksApi.GetCreditNotePdfTemplates", + "fullyQualifiedName": "ZohoBooksApi.GetCreditNotePdfTemplates@1.0.0", + "description": "Retrieve all credit note PDF templates from Zoho Books.\n\nUse this tool to obtain a list of all available credit note PDF templates from Zoho Books. It's useful when you need to browse or select a specific credit note template for use.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to fetch credit note templates.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_credit_note_templates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCreditNotePdfTemplates", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCreditNoteRefund", + "qualifiedName": "ZohoBooksApi.GetCreditNoteRefund", + "fullyQualifiedName": "ZohoBooksApi.GetCreditNoteRefund@1.0.0", + "description": "Retrieve refund details for a specific credit note.\n\nUse this tool to obtain information about the refund of a specific credit note by providing the credit note ID and refund ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization for which the credit note refund is being retrieved. Use a valid organization identifier.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to retrieve refund details for.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_refund_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note refund to retrieve specific refund details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_credit_note_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCreditNoteRefund", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "194001000000012345", + "type": "string", + "required": true + }, + "credit_note_refund_id": { + "value": "194001000000098765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCurrencyDetails", + "qualifiedName": "ZohoBooksApi.GetCurrencyDetails", + "fullyQualifiedName": "ZohoBooksApi.GetCurrencyDetails@1.0.0", + "description": "Get the details of a specific currency.\n\nUse this tool to obtain detailed information about a particular currency by its ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the currency details are requested.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the currency to fetch details for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_currency'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCurrencyDetails", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "currency_identifier": { + "value": "USD", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCurrencyExchangeRate", + "qualifiedName": "ZohoBooksApi.GetCurrencyExchangeRate", + "fullyQualifiedName": "ZohoBooksApi.GetCurrencyExchangeRate@1.0.0", + "description": "Retrieve details of a specific currency exchange rate.\n\nThis tool is used to get details of an exchange rate associated with a specified currency. It should be called when you need information about a specific exchange rate for financial or currency conversion purposes.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which you want to retrieve exchange rate details.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the currency. Use to specify the currency for the exchange rate details.", + "enum": null, + "inferrable": true + }, + { + "name": "exchange_rate_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier of the exchange rate to retrieve details for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_exchange_rate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCurrencyExchangeRate", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "currency_unique_identifier": { + "value": "USD", + "type": "string", + "required": true + }, + "exchange_rate_unique_id": { + "value": "EXRATE_987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCurrentRunningTimer", + "qualifiedName": "ZohoBooksApi.GetCurrentRunningTimer", + "fullyQualifiedName": "ZohoBooksApi.GetCurrentRunningTimer@1.0.0", + "description": "Retrieve the current running timer for a user.\n\nUse this tool to get information about the current running timer for personal time tracking in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization whose running timer is being retrieved.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_running_timer'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCurrentRunningTimer", + "parameters": { + "organization_id": { + "value": "6723456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCurrentUserDetails", + "qualifiedName": "ZohoBooksApi.GetCurrentUserDetails", + "fullyQualifiedName": "ZohoBooksApi.GetCurrentUserDetails@1.0.0", + "description": "Retrieve details of the current user from Zoho Books.\n\nUse this tool to get information about the currently authenticated user in Zoho Books. Ideal for scenarios where user-specific data is needed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books to retrieve the current user details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_current_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCurrentUserDetails", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCustomerDebitNote", + "qualifiedName": "ZohoBooksApi.GetCustomerDebitNote", + "fullyQualifiedName": "ZohoBooksApi.GetCustomerDebitNote@1.0.0", + "description": "Retrieve the details of a customer debit note from Zoho Books.\n\nThis tool is used to get detailed information about a specific customer debit note by its ID from Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Organization ID for the request. This ID is required to specify the organization from which to retrieve the debit note.", + "enum": null, + "inferrable": true + }, + { + "name": "debit_note_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier for the specific debit note to retrieve details.", + "enum": null, + "inferrable": true + }, + { + "name": "response_format", + "type": "string", + "required": false, + "description": "Format of the debit note details. Options are json, pdf, or html. Default is json.", + "enum": null, + "inferrable": true + }, + { + "name": "print_pdf", + "type": "boolean", + "required": false, + "description": "If true, print the exported PDF version of the debit note; otherwise, do not print.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_customer_debit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCustomerDebitNote", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "debit_note_unique_id": { + "value": "DN-2026-0001", + "type": "string", + "required": true + }, + "response_format": { + "value": "pdf", + "type": "string", + "required": false + }, + "print_pdf": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCustomerPaymentDetails", + "qualifiedName": "ZohoBooksApi.GetCustomerPaymentDetails", + "fullyQualifiedName": "ZohoBooksApi.GetCustomerPaymentDetails@1.0.0", + "description": "Retrieve details of a specific customer payment.\n\nUse this tool to obtain information about a specific customer payment by providing the payment ID. Ideal for retrieving payment history or verifying payment details.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the payment details are requested.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_identifier", + "type": "string", + "required": true, + "description": "The unique identifier of the payment to retrieve details for.", + "enum": null, + "inferrable": true + }, + { + "name": "response_format", + "type": "string", + "required": false, + "description": "Format of the response. Allowed values: 'json' or 'pdf'. Default is 'json'.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_customer_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCustomerPaymentDetails", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "payment_identifier": { + "value": "PMT-2026-00012345", + "type": "string", + "required": true + }, + "response_format": { + "value": "json", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCustomerPaymentRefundDetails", + "qualifiedName": "ZohoBooksApi.GetCustomerPaymentRefundDetails", + "fullyQualifiedName": "ZohoBooksApi.GetCustomerPaymentRefundDetails@1.0.0", + "description": "Obtain details of a specific customer payment refund.\n\nUse this tool to get detailed information about a particular refund related to a customer's payment.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization. This is required to specify which organization's data to access.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_payment_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier of the customer payment to retrieve refund details.", + "enum": null, + "inferrable": true + }, + { + "name": "refund_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the refund for the specified customer payment.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_customer_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCustomerPaymentRefundDetails", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "customer_payment_unique_id": { + "value": "cpay_5f8d9a2b3c4e", + "type": "string", + "required": true + }, + "refund_identifier": { + "value": "refund_1a2b3c4d5e6f", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetCustomModuleRecordDetails", + "qualifiedName": "ZohoBooksApi.GetCustomModuleRecordDetails", + "fullyQualifiedName": "ZohoBooksApi.GetCustomModuleRecordDetails@1.0.0", + "description": "Fetch details of an organization in Zoho Books.\n\nUse this tool to retrieve details of a specific organization by providing the module name and module ID in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "module_name", + "type": "string", + "required": true, + "description": "The name of the module associated with the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_module_id", + "type": "integer", + "required": true, + "description": "The ID for the specific custom module in Zoho Books that you want to retrieve details for. This value should be an integer.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.custommodules.ALL" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_custom_module_record_details'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetCustomModuleRecordDetails", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "module_name": { + "value": "CustomModule", + "type": "string", + "required": true + }, + "custom_module_id": { + "value": 101, + "type": "integer", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetEstimateComments", + "qualifiedName": "ZohoBooksApi.GetEstimateComments", + "fullyQualifiedName": "ZohoBooksApi.GetEstimateComments@1.0.0", + "description": "Get the complete history and comments of an estimate.\n\nThis tool retrieves all comments and historical data associated with a specific estimate. Use it to track changes or discussions about an estimate.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization whose estimate comments are needed.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the estimate to retrieve its history and comments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_estimate_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetEstimateComments", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "estimate_identifier": { + "value": "EST-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetEstimateEmailContent", + "qualifiedName": "ZohoBooksApi.GetEstimateEmailContent", + "fullyQualifiedName": "ZohoBooksApi.GetEstimateEmailContent@1.0.0", + "description": "Retrieve the email content for a specific estimate.\n\nUse this tool to get the email content associated with a specific estimate by providing the estimate ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which you want to retrieve the estimate email content.", + "enum": null, + "inferrable": true + }, + { + "name": "email_template_id", + "type": "string", + "required": true, + "description": "Optional. Specify a template ID to retrieve the email content based on a specific template. If not provided, defaults to the customer's associated or default template.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_id", + "type": "string", + "required": true, + "description": "Unique identifier for the estimate to retrieve its email content.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_estimate_email'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetEstimateEmailContent", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "email_template_id": { + "value": "ETPL-001", + "type": "string", + "required": true + }, + "estimate_id": { + "value": "EST-00012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetEstimateTemplates", + "qualifiedName": "ZohoBooksApi.GetEstimateTemplates", + "fullyQualifiedName": "ZohoBooksApi.GetEstimateTemplates@1.0.0", + "description": "Retrieve all estimate PDF templates.\n\nThis tool retrieves a list of all available PDF templates used for estimates. It should be called when users need to view or select templates for estimate documents.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to fetch estimate templates.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_estimate_templates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetEstimateTemplates", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetExpenseComments", + "qualifiedName": "ZohoBooksApi.GetExpenseComments", + "fullyQualifiedName": "ZohoBooksApi.GetExpenseComments@1.0.0", + "description": "Retrieve comments and history for a specific expense.\n\nThis tool should be called to get the discussion and history associated with an expense, specified by its ID, in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books required to fetch the expense comments.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier for the expense to retrieve its comments and history in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_expense_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetExpenseComments", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "expense_unique_id": { + "value": "345678901234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetExpenseDetails", + "qualifiedName": "ZohoBooksApi.GetExpenseDetails", + "fullyQualifiedName": "ZohoBooksApi.GetExpenseDetails@1.0.0", + "description": "Retrieve details of a specific expense by ID.\n\nUse this tool to get detailed information about an expense by providing the expense ID. Ideal for financial reviews or tracking specific expenses.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "String representing the ID of the organization for which the expense details are requested.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the expense to retrieve its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetExpenseDetails", + "parameters": { + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": true + }, + "expense_identifier": { + "value": "EXP-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetFixedAssetDetails", + "qualifiedName": "ZohoBooksApi.GetFixedAssetDetails", + "fullyQualifiedName": "ZohoBooksApi.GetFixedAssetDetails@1.0.0", + "description": "Retrieve details of a fixed asset using its ID.\n\nThis tool is used to obtain detailed information about a fixed asset by providing its unique ID. It should be called when you need specific details about an asset in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization for which you want to retrieve the asset details.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the fixed asset to retrieve its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_fixed_asset'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetFixedAssetDetails", + "parameters": { + "organization_id": { + "value": "54789012345", + "type": "string", + "required": true + }, + "fixed_asset_identifier": { + "value": "FA-2024-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetFixedAssetsList", + "qualifiedName": "ZohoBooksApi.GetFixedAssetsList", + "fullyQualifiedName": "ZohoBooksApi.GetFixedAssetsList@1.0.0", + "description": "Retrieve a list of fixed assets from Zoho Books.\n\nUse this tool to obtain a detailed list of fixed assets stored in Zoho Books. Ideal for managing and reviewing asset inventories.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which to list fixed assets.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_fixed_asset_status", + "type": "string", + "required": false, + "description": "Filter the fixed asset list by status. Valid inputs: Status.All, Status.Active, Status.Cancel, Status.FullyDepreciated, Status.WriteOff, Status.Sold, Status.Draft.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort the fixed asset list. Choose from: asset_name, asset_number, asset_cost, created_time, current_asset_value.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_order", + "type": "string", + "required": false, + "description": "Sort the fixed asset list in ascending or descending order. Use 'A' for ascending and 'D' for descending.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "The page number to fetch from the fixed asset list. Defaults to 1 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of fixed asset records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_fixed_assets'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetFixedAssetsList", + "parameters": { + "organization_id": { + "value": "987654321012345", + "type": "string", + "required": true + }, + "filter_fixed_asset_status": { + "value": "Status.Active", + "type": "string", + "required": false + }, + "sort_by_column": { + "value": "asset_name", + "type": "string", + "required": false + }, + "sort_order": { + "value": "D", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetFixedAssetTypeList", + "qualifiedName": "ZohoBooksApi.GetFixedAssetTypeList", + "fullyQualifiedName": "ZohoBooksApi.GetFixedAssetTypeList@1.0.0", + "description": "Retrieve a list of fixed asset types.\n\nCall this tool to obtain a list of all available fixed asset types in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique identifier for the organization to retrieve asset types for.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "The page number to retrieve for the list of fixed asset types. Defaults to 1 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_fixed_asset_type_list'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetFixedAssetTypeList", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "page_number_to_fetch": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetInvoiceAttachment", + "qualifiedName": "ZohoBooksApi.GetInvoiceAttachment", + "fullyQualifiedName": "ZohoBooksApi.GetInvoiceAttachment@1.0.0", + "description": "Fetch attachment file from a specified invoice.\n\nCall this tool to retrieve the file attached to a specific invoice using its ID. Useful for accessing documents associated with invoices.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization to retrieve the invoice attachment for.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to fetch the attachment from.", + "enum": null, + "inferrable": true + }, + { + "name": "get_thumbnail", + "type": "boolean", + "required": false, + "description": "Set to true to get the thumbnail of the invoice attachment.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_invoice_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetInvoiceAttachment", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + }, + "get_thumbnail": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetInvoiceComments", + "qualifiedName": "ZohoBooksApi.GetInvoiceComments", + "fullyQualifiedName": "ZohoBooksApi.GetInvoiceComments@1.0.0", + "description": "Get comments and history of an invoice.\n\nUse this tool to retrieve the full history and all comments associated with a specific invoice.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the invoice comments and history are being retrieved. Must be a unique string identifier.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the specific invoice to retrieve comments and history.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_invoice_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetInvoiceComments", + "parameters": { + "organization_id": { + "value": "org_8a9b7c6d5e4f3g2h", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetInvoiceCreditsApplied", + "qualifiedName": "ZohoBooksApi.GetInvoiceCreditsApplied", + "fullyQualifiedName": "ZohoBooksApi.GetInvoiceCreditsApplied@1.0.0", + "description": "Retrieve the credits applied to a specific invoice.\n\nUse this tool to obtain a list of all credits that have been applied to a particular invoice. It should be called when detailed invoice credit information is needed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to retrieve credits applied to an invoice.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice for which credits are applied.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_invoice_credits_applied'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetInvoiceCreditsApplied", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetInvoiceDetails", + "qualifiedName": "ZohoBooksApi.GetInvoiceDetails", + "fullyQualifiedName": "ZohoBooksApi.GetInvoiceDetails@1.0.0", + "description": "Retrieve details of a specific invoice by ID.\n\nThis tool is used to get detailed information about a specific invoice using its ID. It can be called when needing to verify invoice details, check status, or confirm amounts.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the invoice details are requested.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice. Used to specify which invoice details to retrieve.", + "enum": null, + "inferrable": true + }, + { + "name": "format_type", + "type": "string", + "required": false, + "description": "Specify the format for invoice details: json, pdf, or html. Default is json.", + "enum": null, + "inferrable": true + }, + { + "name": "print_pdf", + "type": "boolean", + "required": false, + "description": "Boolean value indicating whether to print the exported PDF.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetInvoiceDetails", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-000123", + "type": "string", + "required": true + }, + "format_type": { + "value": "pdf", + "type": "string", + "required": false + }, + "print_pdf": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetInvoiceEmailContent", + "qualifiedName": "ZohoBooksApi.GetInvoiceEmailContent", + "fullyQualifiedName": "ZohoBooksApi.GetInvoiceEmailContent@1.0.0", + "description": "Retrieve the email content for a specific invoice.\n\nUse this tool to get the formatted email content of a particular invoice by specifying the invoice ID. Ideal for scenarios where you need to access or send invoice details via email.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to retrieve invoice email content for the specified organization.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to retrieve its email content.", + "enum": null, + "inferrable": true + }, + { + "name": "email_template_id", + "type": "string", + "required": false, + "description": "Optional. Specify a template ID to get the email content based on a specific template. Defaults to customer-associated or default template if not provided.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_invoice_email'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetInvoiceEmailContent", + "parameters": { + "organization_identifier": { + "value": "org_987654321", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + }, + "email_template_id": { + "value": "tmpl_45A", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetInvoiceList", + "qualifiedName": "ZohoBooksApi.GetInvoiceList", + "fullyQualifiedName": "ZohoBooksApi.GetInvoiceList@1.0.0", + "description": "Retrieve and organize a list of invoices from Zoho Books.\n\nThis tool fetches a list of invoices using Zoho Books' API with options for pagination, filtering, searching, and sorting. Useful for finding specific invoices or browsing records systematically.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization for which invoices are being queried. This ID is crucial for accessing the correct set of invoices within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_invoice_number", + "type": "string", + "required": false, + "description": "Search for invoices using their unique invoice number. Supports 'startswith' and 'contains' variants. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_invoice_by_item_name", + "type": "string", + "required": false, + "description": "Filters invoices by product or service name in line items. Supports 'item_name_startswith' and 'item_name_contains'. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_item_id", + "type": "string", + "required": false, + "description": "Search invoices by item ID. Use the unique identifier of a product or service to filter invoices that include specific line items.", + "enum": null, + "inferrable": true + }, + { + "name": "item_description_filter", + "type": "string", + "required": false, + "description": "Filter invoices by item description using keywords. Supports 'startswith' and 'contains' variants. Max 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_reference_number", + "type": "string", + "required": false, + "description": "Search invoices by reference number, such as purchase order or project codes, to find invoices associated with specific projects or transactions.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_name", + "type": "string", + "required": false, + "description": "Search for invoices using the customer's name, with a maximum length of 100 characters, to generate customer-specific reports or find all invoices for a customer.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_id", + "type": "string", + "required": false, + "description": "ID of the recurring invoice from which the invoice is created. Use to filter invoices tied to specific recurring billing cycles.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_email_filter", + "type": "string", + "required": false, + "description": "Filter invoices by the customer's email address. Maximum length is 100 characters. Ideal for finding specific customer invoices or customer segment analysis.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_total_amount", + "type": "string", + "required": false, + "description": "Search and filter invoices based on the final total amount, including taxes, discounts, and adjustments. Useful for finding invoices within specific price ranges or identifying high-value transactions.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_outstanding_balance", + "type": "string", + "required": false, + "description": "Filter invoices by outstanding balance to find overdue invoices, track receivables, or generate aging reports.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_custom_field", + "type": "string", + "required": false, + "description": "Search invoices using custom fields. Supports 'custom_field_startswith' and 'custom_field_contains' for partial matching.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_date_filter", + "type": "string", + "required": false, + "description": "Filter invoices by invoice date using yyyy-mm-dd format. Supports variants like date_start, date_end, date_before, and date_after to find invoices within specific date ranges.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_due_date_filter", + "type": "string", + "required": false, + "description": "Filter invoices by due date using yyyy-mm-dd format. Supports start, end, before, and after variants for flexible searching.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_creation_date", + "type": "string", + "required": false, + "description": "Filter invoices by creation date with yyyy-mm-dd format. Supports variants: start, end, before, and after.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_last_modified_time", + "type": "string", + "required": false, + "description": "Filters invoices modified after a specific timestamp in YYYY-MM-DDTHH:MM:SS-UTC format. Useful for identifying recently updated invoices.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_status", + "type": "string", + "required": false, + "description": "Filter invoices by their current status (e.g., sent, draft, overdue, etc.).", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_id", + "type": "string", + "required": false, + "description": "Filters invoices using the unique customer ID. Use the ID from the Contacts API to find all invoices for a specific customer.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_invoices_by_criteria", + "type": "string", + "required": false, + "description": "Filter invoices by status (e.g., Status.Sent, Status.Paid) or payment expected date using Date.PaymentExpectedDate.", + "enum": null, + "inferrable": true + }, + { + "name": "general_search_text", + "type": "string", + "required": false, + "description": "General search for invoices by invoice number, purchase order, or customer name. Accepts up to 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort invoices by. Options: customer_name, invoice_number, date, due_date, total, balance, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_crm_potential_id", + "type": "integer", + "required": false, + "description": "Find invoices linked to a specific CRM deal or opportunity using its potential ID from Zoho CRM.", + "enum": null, + "inferrable": true + }, + { + "name": "response_format_type", + "type": "integer", + "required": false, + "description": "Specifies the desired response format: 0 for all invoices, 1 for all invoices with counts and totals, 2 for count only, 3 for count and totals, 4 for invoices and totals.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number to fetch from paginated results. Default is 1. Use with 'per_page' for navigating large data sets.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Default is 200, maximum is 200. Use to control result size for performance optimization.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_invoices'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetInvoiceList", + "parameters": { + "organization_id": { + "value": "7212345678901234567", + "type": "string", + "required": true + }, + "search_by_invoice_number": { + "value": "startswith:INV-2026", + "type": "string", + "required": false + }, + "search_invoice_by_item_name": { + "value": "item_name_contains:Consulting", + "type": "string", + "required": false + }, + "search_by_item_id": { + "value": "ITEM-00123", + "type": "string", + "required": false + }, + "item_description_filter": { + "value": "contains:monthly subscription", + "type": "string", + "required": false + }, + "search_reference_number": { + "value": "PO-7890", + "type": "string", + "required": false + }, + "search_by_customer_name": { + "value": "Acme Corporation", + "type": "string", + "required": false + }, + "recurring_invoice_id": { + "value": "RINV-2024001", + "type": "string", + "required": false + }, + "customer_email_filter": { + "value": "billing@acme-corp.com", + "type": "string", + "required": false + }, + "search_by_total_amount": { + "value": ">=1000.00", + "type": "string", + "required": false + }, + "search_by_outstanding_balance": { + "value": ">0.00", + "type": "string", + "required": false + }, + "search_by_custom_field": { + "value": "custom_field_contains:ProjectX", + "type": "string", + "required": false + }, + "invoice_date_filter": { + "value": "date_start:2026-01-01,date_end:2026-01-31", + "type": "string", + "required": false + }, + "invoice_due_date_filter": { + "value": "date_after:2026-02-01,date_before:2026-03-01", + "type": "string", + "required": false + }, + "filter_by_creation_date": { + "value": "date_start:2025-12-01,date_end:2026-01-15", + "type": "string", + "required": false + }, + "filter_by_last_modified_time": { + "value": "2026-02-15T09:45:00Z", + "type": "string", + "required": false + }, + "invoice_status": { + "value": "overdue", + "type": "string", + "required": false + }, + "search_by_customer_id": { + "value": "543210987654321", + "type": "string", + "required": false + }, + "filter_invoices_by_criteria": { + "value": "Status.Paid", + "type": "string", + "required": false + }, + "general_search_text": { + "value": "INV-2026 Acme", + "type": "string", + "required": false + }, + "sort_by_column": { + "value": "date", + "type": "string", + "required": false + }, + "search_by_crm_potential_id": { + "value": 98765, + "type": "integer", + "required": false + }, + "response_format_type": { + "value": 1, + "type": "integer", + "required": false + }, + "page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetInvoicePayments", + "qualifiedName": "ZohoBooksApi.GetInvoicePayments", + "fullyQualifiedName": "ZohoBooksApi.GetInvoicePayments@1.0.0", + "description": "Retrieve a list of payments for a specific invoice.\n\nUse this tool to get detailed information about payments made for a specific invoice by providing the invoice ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to retrieve invoice payments for.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to retrieve its payment details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_invoice_payments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetInvoicePayments", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetJournalDetails", + "qualifiedName": "ZohoBooksApi.GetJournalDetails", + "fullyQualifiedName": "ZohoBooksApi.GetJournalDetails@1.0.0", + "description": "Retrieve the details of a specific journal entry in Zoho Books.\n\nThis tool retrieves information about a specific journal entry from Zoho Books, using the journal ID. It should be called when details of a journal entry are needed.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books required to retrieve journal details.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_unique_id", + "type": "string", + "required": true, + "description": "The unique identifier for the journal to retrieve its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_journal'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetJournalDetails", + "parameters": { + "organization_identifier": { + "value": "874563210", + "type": "string", + "required": true + }, + "journal_unique_id": { + "value": "JRN-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetJournalList", + "qualifiedName": "ZohoBooksApi.GetJournalList", + "fullyQualifiedName": "ZohoBooksApi.GetJournalList@1.0.0", + "description": "Retrieve a list of accounting journals.\n\nUse this tool to get a list of accounting journals. It's useful for accessing journal entries in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to retrieve journals for.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_entry_number", + "type": "string", + "required": false, + "description": "Search journals by journal entry number using exact match or variants like 'entry_number_startswith' and 'entry_number_contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_reference_number", + "type": "string", + "required": false, + "description": "Search journals by reference number. Use 'startswith:' or 'contains:' for filtering options.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_date_search", + "type": "string", + "required": false, + "description": "Specify date criteria to search journals. Use date_start, date_end, date_before, or date_after.", + "enum": null, + "inferrable": true + }, + { + "name": "search_journal_notes", + "type": "string", + "required": false, + "description": "Search journals by their associated notes. Options: 'startswith' or 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_last_modified_time", + "type": "string", + "required": false, + "description": "Search for journals using the last modified time as a filter criterion. Provide a valid timestamp to filter entries updated after that time.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_total_filter", + "type": "number", + "required": false, + "description": "Filter journals based on total amount using keys like total_less_than or total_greater_equals.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_id", + "type": "integer", + "required": false, + "description": "Use a specific Customer ID to search for journals in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_id", + "type": "integer", + "required": false, + "description": "Specify the Vendor ID to search journals associated with that vendor.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_journals_by_date", + "type": "string", + "required": false, + "description": "Specify the time period to filter journals by date. Options: JournalDate.All, JournalDate.Today, JournalDate.ThisWeek, JournalDate.ThisMonth, JournalDate.ThisQuarter, JournalDate.ThisYear.", + "enum": null, + "inferrable": true + }, + { + "name": "sorting_column_for_journals", + "type": "string", + "required": false, + "description": "Specify the field to sort journals by. Options: 'journal_date', 'entry_number', 'reference_number', 'total'.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "Page number of the journal list to retrieve. Default value is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of journal records to be fetched per page. Default value is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_journals'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetJournalList", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "journal_entry_number": { + "value": "entry_number_startswith:JR-2026", + "type": "string", + "required": false + }, + "search_by_reference_number": { + "value": "contains:REF-555", + "type": "string", + "required": false + }, + "journal_date_search": { + "value": "date_start:2026-01-01,date_end:2026-01-31", + "type": "string", + "required": false + }, + "search_journal_notes": { + "value": "contains:monthly reconciliation", + "type": "string", + "required": false + }, + "search_by_last_modified_time": { + "value": "2026-02-01T00:00:00Z", + "type": "string", + "required": false + }, + "journal_total_filter": { + "value": "total_greater_equals:1000.00", + "type": "integer", + "required": false + }, + "search_by_customer_id": { + "value": 98765, + "type": "integer", + "required": false + }, + "vendor_id": { + "value": 54321, + "type": "integer", + "required": false + }, + "filter_journals_by_date": { + "value": "JournalDate.ThisMonth", + "type": "string", + "required": false + }, + "sorting_column_for_journals": { + "value": "journal_date", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetLastImportedBankStatement", + "qualifiedName": "ZohoBooksApi.GetLastImportedBankStatement", + "fullyQualifiedName": "ZohoBooksApi.GetLastImportedBankStatement@1.0.0", + "description": "Retrieve the last imported bank statement details for an account.\n\nUse this tool to get information about the most recently imported bank statement for a specified account. It provides insights into the account's latest financial activities.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization used to retrieve the bank statement.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank account for retrieving the last imported statement.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_last_imported_bank_statement'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetLastImportedBankStatement", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "bank_account_id": { + "value": "BA-9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetOpeningBalance", + "qualifiedName": "ZohoBooksApi.GetOpeningBalance", + "fullyQualifiedName": "ZohoBooksApi.GetOpeningBalance@1.0.0", + "description": "Retrieves the opening balance for accounts.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to retrieve the opening balance for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_opening_balance'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetOpeningBalance", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetOrganizationDetails", + "qualifiedName": "ZohoBooksApi.GetOrganizationDetails", + "fullyQualifiedName": "ZohoBooksApi.GetOrganizationDetails@1.0.0", + "description": "Retrieve details of an organization from Zoho Books.\n\nUse this tool to get comprehensive details about a specific organization in Zoho Books by providing the organization ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique identifier for the organization in Zoho Books. Used to retrieve specific organization details.", + "enum": null, + "inferrable": true + }, + { + "name": "org_id", + "type": "string", + "required": true, + "description": "Unique identifier for the specific organization.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_organization'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetOrganizationDetails", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "org_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetOrganizationUsers", + "qualifiedName": "ZohoBooksApi.GetOrganizationUsers", + "fullyQualifiedName": "ZohoBooksApi.GetOrganizationUsers@1.0.0", + "description": "Retrieve the list of all users in the organization.\n\nUse this tool to get an updated list of all users within the organization. Ideal for tasks needing user information or management.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to retrieve its users. Provide a valid organization ID as a string.", + "enum": null, + "inferrable": true + }, + { + "name": "user_status_filter", + "type": "string", + "required": false, + "description": "Filter users based on their status. Options: Status.All, Status.Active, Status.Inactive, Status.Invited, Status.Deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_users_by_column", + "type": "string", + "required": false, + "description": "Specify the attribute to sort users by. Allowed values are name, email, user_role, and status.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number to be retrieved, with default being 1. Specify to navigate through pages.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of user records to retrieve per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_users'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetOrganizationUsers", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "user_status_filter": { + "value": "Status.Active", + "type": "string", + "required": false + }, + "sort_users_by_column": { + "value": "name", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetPaymentReminderEmailContent", + "qualifiedName": "ZohoBooksApi.GetPaymentReminderEmailContent", + "fullyQualifiedName": "ZohoBooksApi.GetPaymentReminderEmailContent@1.0.0", + "description": "Fetch the email content of a payment reminder for an invoice.\n\nUse this tool to obtain the email content for a payment reminder associated with a specific invoice. Ideal for scenarios where you need to preview or edit reminder emails before sending.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID for the organization within Zoho Books for which the payment reminder email content is being fetched.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the specific invoice to fetch the reminder email content.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_payment_reminder_mail_content_for_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetPaymentReminderEmailContent", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-000123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetProjectComments", + "qualifiedName": "ZohoBooksApi.GetProjectComments", + "fullyQualifiedName": "ZohoBooksApi.GetProjectComments@1.0.0", + "description": "Retrieve comments for a specified project.\n\nUse this tool to get detailed comments for a specified project by providing the project ID.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization to fetch project comments for.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the project to fetch comments for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_project_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetProjectComments", + "parameters": { + "organization_identifier": { + "value": "60012345678", + "type": "string", + "required": true + }, + "project_identifier": { + "value": "PRJ-98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetProjectDetails", + "qualifiedName": "ZohoBooksApi.GetProjectDetails", + "fullyQualifiedName": "ZohoBooksApi.GetProjectDetails@1.0.0", + "description": "Retrieve detailed information of a specific project by ID.\n\nCall this tool to fetch details about a specific project using its ID. Useful for obtaining comprehensive project information.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization to retrieve project details.", + "enum": null, + "inferrable": true + }, + { + "name": "project_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the project to retrieve detailed information.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_project'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetProjectDetails", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "project_unique_identifier": { + "value": "PRJ-9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetProjectTasks", + "qualifiedName": "ZohoBooksApi.GetProjectTasks", + "fullyQualifiedName": "ZohoBooksApi.GetProjectTasks@1.0.0", + "description": "Retrieve a list of tasks for a specified project.\n\nUse this tool to obtain a list of tasks added to a specific project in Zoho Books. It should be called when you need detailed task information for project management or oversight.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. This is required to specify which organization's project tasks to retrieve.", + "enum": null, + "inferrable": true + }, + { + "name": "project_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier for the project to fetch tasks.", + "enum": null, + "inferrable": true + }, + { + "name": "fetch_page_number", + "type": "integer", + "required": false, + "description": "The page number of results to retrieve. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of task records to fetch per page. Defaults to 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_tasks'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetProjectTasks", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "project_unique_id": { + "value": "proj_987654321", + "type": "string", + "required": true + }, + "fetch_page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetProjectUserDetails", + "qualifiedName": "ZohoBooksApi.GetProjectUserDetails", + "fullyQualifiedName": "ZohoBooksApi.GetProjectUserDetails@1.0.0", + "description": "Fetch details of a user within a project in Zoho Books.\n\nUse this tool to obtain information about a specific user's involvement in a particular project in Zoho Books. It is ideal for checking user roles or assignments within a project.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to fetch the user details associated with the specified project.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the project in Zoho Books to fetch user details from.", + "enum": null, + "inferrable": true + }, + { + "name": "user_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the user within the project. Required to fetch user-specific details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_project_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetProjectUserDetails", + "parameters": { + "organization_identifier": { + "value": "org_1234567890", + "type": "string", + "required": true + }, + "project_identifier": { + "value": "proj_0987654321", + "type": "string", + "required": true + }, + "user_identifier": { + "value": "user_5678901234", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetPurchaseOrderComments", + "qualifiedName": "ZohoBooksApi.GetPurchaseOrderComments", + "fullyQualifiedName": "ZohoBooksApi.GetPurchaseOrderComments@1.0.0", + "description": "Retrieve comments and history of a purchase order.\n\nFetches the complete history and comments of a specified purchase order, useful for tracking and reviewing order details.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization to retrieve purchase order comments for. Required to specify which organization's data to access.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "Unique identifier for the specific purchase order to retrieve comments and history.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_purchase_order_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetPurchaseOrderComments", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetPurchaseOrderEmailContent", + "qualifiedName": "ZohoBooksApi.GetPurchaseOrderEmailContent", + "fullyQualifiedName": "ZohoBooksApi.GetPurchaseOrderEmailContent@1.0.0", + "description": "Retrieves the email content of a purchase order.\n\nUse this tool to get the email content related to a specific purchase order by providing its ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization to retrieve the purchase order email content for.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the purchase order to retrieve its email content.", + "enum": null, + "inferrable": true + }, + { + "name": "email_template_id", + "type": "string", + "required": false, + "description": "Get the email content based on a specific email template. Defaults to customer-associated or default template if not provided.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_purchase_order_email'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetPurchaseOrderEmailContent", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-2026-0001", + "type": "string", + "required": true + }, + "email_template_id": { + "value": "ET-450", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetPurchaseOrderTemplates", + "qualifiedName": "ZohoBooksApi.GetPurchaseOrderTemplates", + "fullyQualifiedName": "ZohoBooksApi.GetPurchaseOrderTemplates@1.0.0", + "description": "Retrieve all purchase order PDF templates from Zoho Books.\n\nThis tool is used to obtain a list of all available purchase order PDF templates in Zoho Books. It should be called when there's a need to view or select from existing purchase order templates.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization for retrieving purchase order templates.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_purchase_order_templates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetPurchaseOrderTemplates", + "parameters": { + "organization_id": { + "value": "7220000000001234567", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRecurringBillDetails", + "qualifiedName": "ZohoBooksApi.GetRecurringBillDetails", + "fullyQualifiedName": "ZohoBooksApi.GetRecurringBillDetails@1.0.0", + "description": "Retrieve details of a recurring bill from Zoho Books.\n\nThis tool retrieves comprehensive details of a specified recurring bill using its ID. It should be called when detailed information about a recurring bill is required from Zoho Books.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_bill_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier for the recurring bill in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_recurring_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRecurringBillDetails", + "parameters": { + "organization_identifier": { + "value": "347890123", + "type": "string", + "required": true + }, + "recurring_bill_unique_id": { + "value": "RBILL-2024-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRecurringBillHistory", + "qualifiedName": "ZohoBooksApi.GetRecurringBillHistory", + "fullyQualifiedName": "ZohoBooksApi.GetRecurringBillHistory@1.0.0", + "description": "Get history and comments of a recurring bill.\n\nUse this tool to fetch detailed history and comments related to a specific recurring bill by providing the recurring bill ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which you want to get the recurring bill history.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the specific recurring bill. Required to fetch its history and comments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_recurring_bill_history'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRecurringBillHistory", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "recurring_bill_identifier": { + "value": "RB-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRecurringExpenseDetails", + "qualifiedName": "ZohoBooksApi.GetRecurringExpenseDetails", + "fullyQualifiedName": "ZohoBooksApi.GetRecurringExpenseDetails@1.0.0", + "description": "Get details of a specific recurring expense in Zoho Books.\n\nUse this tool to retrieve information about a particular recurring expense by providing its ID. Helpful for managing or reviewing ongoing expense details.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization to retrieve its specific recurring expense details from Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_id", + "type": "string", + "required": true, + "description": "Unique identifier for the recurring expense to retrieve its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_recurring_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRecurringExpenseDetails", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "recurring_expense_id": { + "value": "RE-2026-000123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRecurringExpenseHistory", + "qualifiedName": "ZohoBooksApi.GetRecurringExpenseHistory", + "fullyQualifiedName": "ZohoBooksApi.GetRecurringExpenseHistory@1.0.0", + "description": "Get history and comments of a recurring expense.\n\nUse this tool to retrieve the history and comments associated with a specific recurring expense in Zoho Books. Call this tool when you need detailed information about past actions and notes on a recurring expense item.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the recurring expense history is requested.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_id", + "type": "string", + "required": true, + "description": "Unique identifier for the specific recurring expense to retrieve history and comments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_recurring_expense_history'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRecurringExpenseHistory", + "parameters": { + "organization_id": { + "value": "600123456789", + "type": "string", + "required": true + }, + "recurring_expense_id": { + "value": "REX-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRecurringInvoiceDetails", + "qualifiedName": "ZohoBooksApi.GetRecurringInvoiceDetails", + "fullyQualifiedName": "ZohoBooksApi.GetRecurringInvoiceDetails@1.0.0", + "description": "Retrieve details of a specific recurring invoice.\n\nUse this tool to access detailed information about a recurring invoice using its ID. It's useful for financial tracking and management purposes.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to access organization-specific data.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the recurring invoice to retrieve its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_recurring_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRecurringInvoiceDetails", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "recurring_invoice_identifier": { + "value": "RECINV-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRecurringInvoiceHistory", + "qualifiedName": "ZohoBooksApi.GetRecurringInvoiceHistory", + "fullyQualifiedName": "ZohoBooksApi.GetRecurringInvoiceHistory@1.0.0", + "description": "Get the complete history and comments of a recurring invoice.\n\nUse this tool to retrieve detailed history and comment logs for a specific recurring invoice. Ideal for reviewing past transactions and communication related to an invoice.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization. Required to access invoice history.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier for the specific recurring invoice to retrieve its history and comments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_recurring_invoice_history'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRecurringInvoiceHistory", + "parameters": { + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": true + }, + "recurring_invoice_id": { + "value": "RINV-00012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRetainerInvoiceAttachment", + "qualifiedName": "ZohoBooksApi.GetRetainerInvoiceAttachment", + "fullyQualifiedName": "ZohoBooksApi.GetRetainerInvoiceAttachment@1.0.0", + "description": "Retrieve the file attached to a retainer invoice.\n\nUse this tool to get the file that has been attached to a specific retainer invoice. It is helpful when you need to view or download the attached document related to the invoice.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose invoice attachment you want to retrieve.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice for which the attachment is to be retrieved.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_retainer_invoice_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRetainerInvoiceAttachment", + "parameters": { + "organization_id": { + "value": "6001234567890123456", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "RINV-2026-00042", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRetainerInvoiceDetails", + "qualifiedName": "ZohoBooksApi.GetRetainerInvoiceDetails", + "fullyQualifiedName": "ZohoBooksApi.GetRetainerInvoiceDetails@1.0.0", + "description": "Retrieve details of a specific retainer invoice.\n\nUse this tool to obtain details about a retainer invoice by specifying the invoice ID. Ideal for checking invoice status, amount, and related information.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization to retrieve the retainer invoice for.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice to retrieve details for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_retainer_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRetainerInvoiceDetails", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "RINV-2026-00047", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRetainerInvoiceHistory", + "qualifiedName": "ZohoBooksApi.GetRetainerInvoiceHistory", + "fullyQualifiedName": "ZohoBooksApi.GetRetainerInvoiceHistory@1.0.0", + "description": "Get the history and comments of a retainer invoice.\n\nFetches complete history and comments for a specific retainer invoice by ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to fetch its retainer invoice history.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice to look up its history and comments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_retainer_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRetainerInvoiceHistory", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "RINV-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetRetainerInvoiceTemplates", + "qualifiedName": "ZohoBooksApi.GetRetainerInvoiceTemplates", + "fullyQualifiedName": "ZohoBooksApi.GetRetainerInvoiceTemplates@1.0.0", + "description": "Retrieve all retainer invoice PDF templates.\n\nCall this tool to get a list of all available retainer invoice PDF templates from Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to retrieve retainer invoice templates from.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_retainer_invoice_templates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetRetainerInvoiceTemplates", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetSalesOrderAttachment", + "qualifiedName": "ZohoBooksApi.GetSalesOrderAttachment", + "fullyQualifiedName": "ZohoBooksApi.GetSalesOrderAttachment@1.0.0", + "description": "Retrieve the file attached to a specific sales order.\n\nUse this tool to get the file attached to a sales order in Zoho Books by providing the sales order ID. It returns the file associated with the specified order.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order to retrieve the attachment for.", + "enum": null, + "inferrable": true + }, + { + "name": "require_preview_of_sales_order", + "type": "boolean", + "required": false, + "description": "Specify whether a preview of the Sales Order is required. Use True for preview, False for no preview.", + "enum": null, + "inferrable": true + }, + { + "name": "require_inline_response", + "type": "boolean", + "required": false, + "description": "Set to true if an inline response is needed, displaying directly in the browser.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_sales_order_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetSalesOrderAttachment", + "parameters": { + "organization_id": { + "value": "600012345678901234", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "459000000123456", + "type": "string", + "required": true + }, + "require_preview_of_sales_order": { + "value": true, + "type": "boolean", + "required": false + }, + "require_inline_response": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetSalesOrderComments", + "qualifiedName": "ZohoBooksApi.GetSalesOrderComments", + "fullyQualifiedName": "ZohoBooksApi.GetSalesOrderComments@1.0.0", + "description": "Retrieve the history and comments of a sales order.\n\nUse this tool to obtain all comments and the complete history associated with a specific sales order when needing detailed insights or updates.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which to retrieve sales order comments.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order to retrieve comments and history for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_sales_order_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetSalesOrderComments", + "parameters": { + "organization_id": { + "value": "6001234567890123456", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetSalesOrderDetails", + "qualifiedName": "ZohoBooksApi.GetSalesOrderDetails", + "fullyQualifiedName": "ZohoBooksApi.GetSalesOrderDetails@1.0.0", + "description": "Retrieve details of a specific sales order.\n\nThis tool is used to get the details of a sales order from Zoho Books. It should be called when there's a need to look up information about a particular sales order, such as for verification or record-keeping purposes.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. This ID is used to specify the organization within Zoho Books whose sales order details need to be retrieved.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order required to retrieve its details.", + "enum": null, + "inferrable": true + }, + { + "name": "output_format", + "type": "string", + "required": false, + "description": "Specifies the format in which to receive the sales order details. Options include: json, csv, xml, xls, xlsx, pdf, jhtml, and html. Default is json.", + "enum": null, + "inferrable": true + }, + { + "name": "print_pdf", + "type": "boolean", + "required": false, + "description": "Set to true to print the exported PDF of the sales order, otherwise false.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_sales_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetSalesOrderDetails", + "parameters": { + "organization_id": { + "value": "org_1234567890", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO-987654321", + "type": "string", + "required": true + }, + "output_format": { + "value": "pdf", + "type": "string", + "required": false + }, + "print_pdf": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetSalesOrderEmailContent", + "qualifiedName": "ZohoBooksApi.GetSalesOrderEmailContent", + "fullyQualifiedName": "ZohoBooksApi.GetSalesOrderEmailContent@1.0.0", + "description": "Retrieve email content for a specific sales order.\n\nThis tool is used to get the email content associated with a particular sales order, identified by its sales order ID. Use it when you need to view or analyze the email details of a sales order in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization in Zoho Books for which the sales order email content is required.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order to retrieve its email content.", + "enum": null, + "inferrable": true + }, + { + "name": "email_template_id", + "type": "string", + "required": false, + "description": "Optional. ID of the email template for retrieving specific email content. If not provided, defaults will be used.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_sales_order_email'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetSalesOrderEmailContent", + "parameters": { + "organization_id": { + "value": "987654321", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO-2026-000123", + "type": "string", + "required": true + }, + "email_template_id": { + "value": "ET-4501", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetSalesOrderTemplates", + "qualifiedName": "ZohoBooksApi.GetSalesOrderTemplates", + "fullyQualifiedName": "ZohoBooksApi.GetSalesOrderTemplates@1.0.0", + "description": "Retrieve all sales order PDF templates from Zoho Books.\n\nUse this tool to get a list of all available sales order PDF templates in Zoho Books. This is helpful when you need to view or manage your sales order templates.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "A string representing the ID of the organization. Required to specify which organization's sales order templates to retrieve.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_sales_order_templates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetSalesOrderTemplates", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetSalesReceiptDetails", + "qualifiedName": "ZohoBooksApi.GetSalesReceiptDetails", + "fullyQualifiedName": "ZohoBooksApi.GetSalesReceiptDetails@1.0.0", + "description": "Retrieve the details of a sales receipt.\n\nThis tool fetches the specific details of a sales receipt using the provided sales receipt ID. It should be called when detailed information about a particular sales receipt is needed.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization for which the sales receipt is being retrieved.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_receipt_id", + "type": "string", + "required": true, + "description": "The unique identifier for the sales receipt to be retrieved. Required for fetching the specific sales receipt details.", + "enum": null, + "inferrable": true + }, + { + "name": "output_format", + "type": "string", + "required": false, + "description": "Specifies the format in which to retrieve the sales receipt details. Options are 'json', 'pdf', or 'html'. Default is 'json'.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_sales_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetSalesReceiptDetails", + "parameters": { + "organization_identifier": { + "value": "60012345678", + "type": "string", + "required": true + }, + "sales_receipt_id": { + "value": "SR-0009876543", + "type": "string", + "required": true + }, + "output_format": { + "value": "json", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetTaskDetails", + "qualifiedName": "ZohoBooksApi.GetTaskDetails", + "fullyQualifiedName": "ZohoBooksApi.GetTaskDetails@1.0.0", + "description": "Retrieve detailed information about a specific task in a project.\n\nThis tool should be called to obtain comprehensive details about a particular task within a project. It helps in understanding task specifics by providing relevant task data from Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "project_id", + "type": "string", + "required": true, + "description": "Unique identifier of the project.", + "enum": null, + "inferrable": true + }, + { + "name": "task_unique_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the task to retrieve details for from Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_task'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetTaskDetails", + "parameters": { + "organization_id": { + "value": "359482000000123456", + "type": "string", + "required": true + }, + "project_id": { + "value": "proj_5f9b2c8a", + "type": "string", + "required": true + }, + "task_unique_identifier": { + "value": "task_9a8b7c6d", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetTaxAuthorities", + "qualifiedName": "ZohoBooksApi.GetTaxAuthorities", + "fullyQualifiedName": "ZohoBooksApi.GetTaxAuthorities@1.0.0", + "description": "Retrieve the list of tax authorities.\n\nUse this tool to obtain a list of all tax authorities, which can be helpful for managing tax-related settings or compliance.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which to retrieve tax authorities.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_tax_authorities'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetTaxAuthorities", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetTaxAuthorityDetails", + "qualifiedName": "ZohoBooksApi.GetTaxAuthorityDetails", + "fullyQualifiedName": "ZohoBooksApi.GetTaxAuthorityDetails@1.0.0", + "description": "Retrieve details of a specific tax authority.\n\nUse this tool to obtain information about a tax authority by providing its unique ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization to retrieve tax authority details.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_authority_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier of the tax authority to retrieve details for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_tax_authority'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetTaxAuthorityDetails", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "tax_authority_unique_id": { + "value": "TA-00123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetTaxDetails", + "qualifiedName": "ZohoBooksApi.GetTaxDetails", + "fullyQualifiedName": "ZohoBooksApi.GetTaxDetails@1.0.0", + "description": "Retrieve the details of a specific tax.\n\nUse this tool to obtain information about a specific simple or compound tax by providing the tax ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization to retrieve tax details from.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for retrieving specific tax details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_tax'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetTaxDetails", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "tax_identifier": { + "value": "1000000000001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetTaxExemptionDetails", + "qualifiedName": "ZohoBooksApi.GetTaxExemptionDetails", + "fullyQualifiedName": "ZohoBooksApi.GetTaxExemptionDetails@1.0.0", + "description": "Retrieve the details of a tax exemption using its ID.\n\nThis tool retrieves details about a specific tax exemption identified by its ID. It is useful for understanding exemption specifics within financial settings.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to access the organization's tax exemption details.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_exemption_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the tax exemption to retrieve details for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_tax_exemption'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetTaxExemptionDetails", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "tax_exemption_identifier": { + "value": "TXEX-2024-001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetTaxExemptionsList", + "qualifiedName": "ZohoBooksApi.GetTaxExemptionsList", + "fullyQualifiedName": "ZohoBooksApi.GetTaxExemptionsList@1.0.0", + "description": "Retrieve a list of tax exemptions from Zoho Books.\n\nCall this tool to get information about the current tax exemptions available in Zoho Books. It provides details on all tax exemptions configured in the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization whose tax exemptions are being requested.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_tax_exemptions'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetTaxExemptionsList", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetTimeEntryDetails", + "qualifiedName": "ZohoBooksApi.GetTimeEntryDetails", + "fullyQualifiedName": "ZohoBooksApi.GetTimeEntryDetails@1.0.0", + "description": "Retrieve details of a specific time entry.\n\nUse this tool to get detailed information about a specific time entry by providing the time entry ID. It's useful for tracking and managing project time entries.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the time entry details are requested.", + "enum": null, + "inferrable": true + }, + { + "name": "time_entry_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the time entry to retrieve details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_time_entry'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetTimeEntryDetails", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "time_entry_identifier": { + "value": "TE-2026-000123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetUserDetails", + "qualifiedName": "ZohoBooksApi.GetUserDetails", + "fullyQualifiedName": "ZohoBooksApi.GetUserDetails@1.0.0", + "description": "Retrieve detailed information about a specific user in Zoho Books.\n\nThis tool fetches the details of a user from Zoho Books using their user ID. It should be called when user information such as name, email, or role is required.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to specify the organization context for API calls.", + "enum": null, + "inferrable": true + }, + { + "name": "user_unique_identifier", + "type": "string", + "required": true, + "description": "A unique string that identifies the user in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetUserDetails", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "user_unique_identifier": { + "value": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetVendorCreditComments", + "qualifiedName": "ZohoBooksApi.GetVendorCreditComments", + "fullyQualifiedName": "ZohoBooksApi.GetVendorCreditComments@1.0.0", + "description": "Retrieve history and comments for a vendor credit.\n\nUse this tool to get the history and comments associated with a specific vendor credit by providing the vendor credit ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization. This ID is required to access the vendor credit comments.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the specific vendor credit to retrieve its history and comments.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_vendor_credit_comments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetVendorCreditComments", + "parameters": { + "organization_id": { + "value": "669874321", + "type": "string", + "required": true + }, + "vendor_credit_identifier": { + "value": "VC-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetVendorCreditDetails", + "qualifiedName": "ZohoBooksApi.GetVendorCreditDetails", + "fullyQualifiedName": "ZohoBooksApi.GetVendorCreditDetails@1.0.0", + "description": "Retrieve details of a specific vendor credit.\n\nUse this tool to obtain detailed information about a vendor credit by providing the specific vendor credit ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose vendor credit details are being requested.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_id", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor credit to retrieve details.", + "enum": null, + "inferrable": true + }, + { + "name": "output_format", + "type": "string", + "required": false, + "description": "Specify the format for vendor credit details. Options: json, xml, csv, xls, pdf, html, jhtml. Default is html.", + "enum": null, + "inferrable": true + }, + { + "name": "export_vendor_credit_pdf", + "type": "boolean", + "required": false, + "description": "Set to true to export the vendor credit as a PDF with default print options. Accepts 'true', 'false', 'on', 'off'.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_vendor_credit'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetVendorCreditDetails", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "vendor_credit_id": { + "value": "VC-987654321", + "type": "string", + "required": true + }, + "output_format": { + "value": "json", + "type": "string", + "required": false + }, + "export_vendor_credit_pdf": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetVendorCreditRefund", + "qualifiedName": "ZohoBooksApi.GetVendorCreditRefund", + "fullyQualifiedName": "ZohoBooksApi.GetVendorCreditRefund@1.0.0", + "description": "Retrieve a refund for a specific vendor credit.\n\nFetches details of a refund associated with a specific vendor credit using the vendor credit ID and refund ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization to which the vendor credit belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor credit to retrieve the refund details.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_refund_id", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor credit refund for the specific transaction. Required to retrieve refund details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_vendor_credit_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetVendorCreditRefund", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "vendor_credit_identifier": { + "value": "VC-2026-0001", + "type": "string", + "required": true + }, + "vendor_credit_refund_id": { + "value": "RFD-2026-045", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetVendorPaymentEmailContent", + "qualifiedName": "ZohoBooksApi.GetVendorPaymentEmailContent", + "fullyQualifiedName": "ZohoBooksApi.GetVendorPaymentEmailContent@1.0.0", + "description": "Retrieve email content for a vendor payment receipt.\n\nThis tool retrieves the pre-filled email details for a vendor payment, including the message subject, body, recipients, sender, and attachments. Use it to easily compose and send a payment receipt email to vendors.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to retrieve the vendor payment email content.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_payment_id", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor payment to retrieve email content.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_vendor_payment_email_content'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetVendorPaymentEmailContent", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "vendor_payment_id": { + "value": "VPAY-9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "GetVendorPaymentRefundDetails", + "qualifiedName": "ZohoBooksApi.GetVendorPaymentRefundDetails", + "fullyQualifiedName": "ZohoBooksApi.GetVendorPaymentRefundDetails@1.0.0", + "description": "Retrieve details of a specific vendor payment refund.\n\nUse this tool to obtain information about a particular refund of a vendor payment, identified by the payment ID and refund ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization whose vendor payment refund details are requested.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the payment associated with the vendor refund.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_payment_refund_id", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor payment refund to retrieve its details.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_vendor_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.GetVendorPaymentRefundDetails", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "payment_identifier": { + "value": "PMT-00012345", + "type": "string", + "required": true + }, + "vendor_payment_refund_id": { + "value": "VRF-00098765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ImportBankStatements", + "qualifiedName": "ZohoBooksApi.ImportBankStatements", + "fullyQualifiedName": "ZohoBooksApi.ImportBankStatements@1.0.0", + "description": "Import bank or credit card feeds into your account.\n\n Use this tool to import bank or credit card statements directly into your account for seamless financial management. This should be called when you need to process new bank or credit card data into the system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization to import bank statements for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'import_bank_statements'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ImportBankStatements", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "678901234", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"account_id\":\"1234567890\",\"file_format\":\"OFX\",\"feed_date\":\"2026-02-18\",\"transactions\":[{\"date\":\"2026-02-15\",\"description\":\"ACME Corp Payment\",\"amount\":-250.00,\"currency\":\"USD\",\"transaction_type\":\"debit\",\"reference\":\"CHK1001\"},{\"date\":\"2026-02-14\",\"description\":\"Payroll Deposit\",\"amount\":1500.00,\"currency\":\"USD\",\"transaction_type\":\"credit\",\"reference\":\"DEP2002\"}],\"notes\":\"Imported via API\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ImportCrmProductToZohoBooks", + "qualifiedName": "ZohoBooksApi.ImportCrmProductToZohoBooks", + "fullyQualifiedName": "ZohoBooksApi.ImportCrmProductToZohoBooks@1.0.0", + "description": "Import a product from Zoho CRM to Zoho Books.\n\nUse this tool to import an item from Zoho CRM into Zoho Books by specifying its CRM product ID. This enables synchronization of product data between the two services.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. This is required to import products from Zoho CRM.", + "enum": null, + "inferrable": true + }, + { + "name": "crm_product_id", + "type": "string", + "required": true, + "description": "Unique identifier of the Zoho CRM product to be imported into Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint ''." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ImportCrmProductToZohoBooks", + "parameters": { + "organization_identifier": { + "value": "6140320000001234567", + "type": "string", + "required": true + }, + "crm_product_id": { + "value": "318210000000123456", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ImportCustomerFromCrm", + "qualifiedName": "ZohoBooksApi.ImportCustomerFromCrm", + "fullyQualifiedName": "ZohoBooksApi.ImportCustomerFromCrm@1.0.0", + "description": "Import a customer from Zoho CRM to Zoho Books using CRM account ID.\n\nUse this tool to import a customer from Zoho CRM into Zoho Books by providing the CRM account ID. This requires integration between Zoho Books and Zoho CRM either through Accounts and Contacts sync or Accounts only sync.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique identifier for the organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "crm_account_id", + "type": "string", + "required": true, + "description": "Unique identifier of the Zoho CRM account to import the customer from.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'import_customer_using_crm_account_id'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ImportCustomerFromCrm", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "crm_account_id": { + "value": "4800000000001234567", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ImportVendorFromCrm", + "qualifiedName": "ZohoBooksApi.ImportVendorFromCrm", + "fullyQualifiedName": "ZohoBooksApi.ImportVendorFromCrm@1.0.0", + "description": "Import a vendor from Zoho CRM to Zoho Books using CRM vendor ID.\n\nUse this tool to import a vendor from Zoho CRM to Zoho Books via Vendor-only sync, requiring the CRM vendor ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books for which the vendor is being imported. This ID is used to specify the target organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "zoho_crm_vendor_id", + "type": "string", + "required": true, + "description": "Unique identifier of the Zoho CRM vendor to import.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'import_vendor_using_crm_vendor_id'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ImportVendorFromCrm", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "zoho_crm_vendor_id": { + "value": "1234567000000123456", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "InviteUserToProject", + "qualifiedName": "ZohoBooksApi.InviteUserToProject", + "fullyQualifiedName": "ZohoBooksApi.InviteUserToProject@1.0.0", + "description": "Invite a user to a project in Zoho Books.\n\n Use this tool to send an invitation to a user to join a specific project in Zoho Books. This is helpful when you need to collaborate with others by adding them to project teams.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization in Zoho Books where the project is located. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "project_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the project in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'invite_project_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.InviteUserToProject", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "project_unique_identifier": { + "value": "proj_987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"invite\":{\"email\":\"jane.doe@example.com\",\"first_name\":\"Jane\",\"last_name\":\"Doe\",\"role\":\"member\",\"send_notification\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListAccountTransactions", + "qualifiedName": "ZohoBooksApi.ListAccountTransactions", + "fullyQualifiedName": "ZohoBooksApi.ListAccountTransactions@1.0.0", + "description": "Retrieve transactions for a specified account.\n\nUse this tool to list all transactions associated with a given account. Ideal for tracking financial activities related to specific accounts.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique identifier for the organization whose account transactions are being queried.", + "enum": null, + "inferrable": true + }, + { + "name": "account_id", + "type": "string", + "required": true, + "description": "The unique ID of the account to retrieve transactions for.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_date_range", + "type": "string", + "required": false, + "description": "Specify a date range for searching transactions. Use 'yyyy-mm-dd' format. Supports 'date.start', 'date.end', 'date.before', and 'date.after'.", + "enum": null, + "inferrable": true + }, + { + "name": "amount_range", + "type": "number", + "required": false, + "description": "Specify the amount range to filter account transactions. Use fields like less_than, less_equals, greater_than, and greater_equals to define the criteria.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_account_type", + "type": "string", + "required": false, + "description": "Filter accounts based on account type and status. Options: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income, AccountType.Expense.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_type", + "type": "string", + "required": false, + "description": "Filter transactions by type, such as 'invoice', 'expense', or 'refund'.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by", + "type": "string", + "required": false, + "description": "Specify the column to sort transactions. Possible values: 'account_name', 'account_type'.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number to be fetched for the transaction list. Defaults to 1 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to be fetched per page. Default is 200. Specify a custom integer to override.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_chart_of_account_transactions'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListAccountTransactions", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "account_id": { + "value": "acc_987654321", + "type": "string", + "required": true + }, + "transaction_date_range": { + "value": { + "date.start": "2024-01-01", + "date.end": "2024-01-31" + }, + "type": "string", + "required": false + }, + "amount_range": { + "value": { + "greater_equals": 100, + "less_equals": 1000 + }, + "type": "integer", + "required": false + }, + "filter_by_account_type": { + "value": "AccountType.Asset", + "type": "string", + "required": false + }, + "transaction_type": { + "value": "expense", + "type": "string", + "required": false + }, + "sort_by": { + "value": "account_name", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListActiveInventoryItems", + "qualifiedName": "ZohoBooksApi.ListActiveInventoryItems", + "fullyQualifiedName": "ZohoBooksApi.ListActiveInventoryItems@1.0.0", + "description": "Retrieve a paginated list of all active inventory items.\n\nUse this tool to fetch a list of all active items from the inventory. It provides the data with pagination to manage large sets of items efficiently.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to fetch items from.", + "enum": null, + "inferrable": true + }, + { + "name": "item_name_search", + "type": "string", + "required": false, + "description": "Search for items by name using prefixes 'name_startswith' or 'name_contains'. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "description_filter", + "type": "string", + "required": false, + "description": "Search items by description. Use keywords or phrases up to 100 characters. Prefix with 'description_startswith' or 'description_contains' for specific filtering.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_rate_criteria", + "type": "string", + "required": false, + "description": "Specify rate conditions to filter items. Use format like 'rate_less_than:100'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_tax_id", + "type": "string", + "required": false, + "description": "Search for items using the tax ID as a filter.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_name_filter", + "type": "string", + "required": false, + "description": "Filter items by their tax name.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_exemption_identifier", + "type": "string", + "required": false, + "description": "ID for the tax exemption. Required if is_taxable is false.", + "enum": null, + "inferrable": true + }, + { + "name": "associated_account_id", + "type": "string", + "required": false, + "description": "ID of the account to associate the item with.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_items_by_status", + "type": "string", + "required": false, + "description": "Filter items by status. Allowed values are 'Status.All', 'Status.Active', and 'Status.Inactive'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_items_by_text", + "type": "string", + "required": false, + "description": "Search for items by name or description, up to 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_items_by", + "type": "string", + "required": false, + "description": "Specify the attribute to sort items by. Allowed values: 'name', 'rate', 'tax_name'.", + "enum": null, + "inferrable": true + }, + { + "name": "sat_item_key_code", + "type": "string", + "required": false, + "description": "SAT Item key code used to filter items. Provide a valid string key code for lookup.", + "enum": null, + "inferrable": true + }, + { + "name": "sat_unit_code", + "type": "string", + "required": false, + "description": "SAT Unit code for specific inventory items. Used to search or filter items based on their unit code.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "The page number of active items to retrieve, with a default of 1 if unspecified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + }, + { + "name": "is_item_taxable", + "type": "boolean", + "required": false, + "description": "Boolean indicating if the item is taxable. True means the item is taxable.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_items'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListActiveInventoryItems", + "parameters": { + "organization_id": { + "value": "ORG-1234567890", + "type": "string", + "required": true + }, + "item_name_search": { + "value": "name_startswith:Widget", + "type": "string", + "required": false + }, + "description_filter": { + "value": "description_contains:durable, lightweight", + "type": "string", + "required": false + }, + "search_by_rate_criteria": { + "value": "rate_less_than:100", + "type": "string", + "required": false + }, + "search_by_tax_id": { + "value": "TAX-98765", + "type": "string", + "required": false + }, + "tax_name_filter": { + "value": "GST", + "type": "string", + "required": false + }, + "tax_exemption_identifier": { + "value": "EXEMPT-001", + "type": "string", + "required": false + }, + "associated_account_id": { + "value": "ACC-445566", + "type": "string", + "required": false + }, + "filter_items_by_status": { + "value": "Status.Active", + "type": "string", + "required": false + }, + "search_items_by_text": { + "value": "compact widget", + "type": "string", + "required": false + }, + "sort_items_by": { + "value": "name", + "type": "string", + "required": false + }, + "sat_item_key_code": { + "value": "SAT-ITEM-001", + "type": "string", + "required": false + }, + "sat_unit_code": { + "value": "SAT-UNIT-PCS", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + }, + "is_item_taxable": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListAllBills", + "qualifiedName": "ZohoBooksApi.ListAllBills", + "fullyQualifiedName": "ZohoBooksApi.ListAllBills@1.0.0", + "description": "Retrieve all bills with pagination support.\n\nThis tool is used to list all bills available in the system, providing pagination information to navigate through large datasets. It should be called whenever there's a need to view or analyze billing details over multiple pages.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's bills to list.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_bill_number", + "type": "string", + "required": false, + "description": "Filter bills using the bill number. Use exact matches, prefix with 'bill_number_startswith', or substring with 'bill_number_contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_reference_number", + "type": "string", + "required": false, + "description": "Filter bills by reference number. Supports exact matches, prefix matching using `reference_number_startswith`, and substring matching using `reference_number_contains`. Useful for finding bills by external references or vendor invoice numbers.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_date_filter", + "type": "string", + "required": false, + "description": "Filter bills by bill date in YYYY-MM-DD format. Use for specific dates, date ranges (date_start/date_end), or relative dates (date_before/date_after).", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_status", + "type": "string", + "required": false, + "description": "Specify the status of bills to filter by. Options include 'paid', 'open', 'overdue', 'void', or 'partially_paid'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_description_text", + "type": "string", + "required": false, + "description": "Filter bills using description text. Supports exact matches, prefix matching with 'description_startswith', or substring matching with 'description_contains'. Useful for finding bills by line item descriptions or vendor notes.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_vendor_name", + "type": "string", + "required": false, + "description": "Filter bills by vendor name. Use prefix matching with 'vendor_name_startswith' or substring matching with 'vendor_name_contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_total_amount", + "type": "number", + "required": false, + "description": "Filter bills by total amount using conditions like less than, greater than, etc. Specify conditions using keys like 'total_less_than' or 'total_greater_than'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_vendor_id", + "type": "integer", + "required": false, + "description": "Unique identifier to filter bills by a specific vendor, retrieving all related bills.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_id", + "type": "integer", + "required": false, + "description": "Filter bills by a specific item ID. Retrieves all bills containing a particular product or service item based on its unique identifier.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_bill_identifier", + "type": "integer", + "required": false, + "description": "Filter bills by a specific recurring bill ID to retrieve all bills generated from a recurring template or schedule.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_purchase_order_id", + "type": "integer", + "required": false, + "description": "Specify the Purchase Order ID to filter bills associated with a specific order. Helps track procurement workflows.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_last_modified_time", + "type": "string", + "required": false, + "description": "Filter bills by last modification timestamp using ISO 8601 format (YYYY-MM-DDTHH:MM:SS+/-HHMM) to find bills modified at or after a specific time.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_status_filter", + "type": "string", + "required": false, + "description": "Filter bills by status. Options: Status.All, Status.PartiallyPaid, Status.Paid, Status.Overdue, Status.Void, Status.Open.", + "enum": null, + "inferrable": true + }, + { + "name": "search_text", + "type": "string", + "required": false, + "description": "Filter bills using general text across bill number, reference number, and vendor name to find matches. Useful for quick searches.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number for pagination to navigate multiple pages of bills.", + "enum": null, + "inferrable": true + }, + { + "name": "bills_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of bills to retrieve per page. Default is 200, but adjustable for performance needs and rate limits.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort bills by. Available options: vendor_name, bill_number, date, due_date, total, balance, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "sorting_order", + "type": "string", + "required": false, + "description": "Specify the sort order for bills: 'A' for ascending, 'D' for descending.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_bills'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListAllBills", + "parameters": { + "organization_id": { + "value": "619182345", + "type": "string", + "required": true + }, + "filter_by_bill_number": { + "value": "bill_number_startswith:BN-2026", + "type": "string", + "required": false + }, + "filter_by_reference_number": { + "value": "reference_number_contains:PO-789", + "type": "string", + "required": false + }, + "bill_date_filter": { + "value": "date_start:2026-01-01,date_end:2026-01-31", + "type": "string", + "required": false + }, + "filter_by_status": { + "value": "open", + "type": "string", + "required": false + }, + "filter_by_description_text": { + "value": "description_contains:consulting", + "type": "string", + "required": false + }, + "filter_by_vendor_name": { + "value": "vendor_name_contains:Acme", + "type": "string", + "required": false + }, + "filter_by_total_amount": { + "value": 1500, + "type": "integer", + "required": false + }, + "filter_by_vendor_id": { + "value": 98765, + "type": "integer", + "required": false + }, + "filter_by_item_id": { + "value": 54321, + "type": "integer", + "required": false + }, + "recurring_bill_identifier": { + "value": 112233, + "type": "integer", + "required": false + }, + "filter_by_purchase_order_id": { + "value": 445566, + "type": "integer", + "required": false + }, + "filter_by_last_modified_time": { + "value": "2026-02-01T08:30:00+0000", + "type": "string", + "required": false + }, + "bill_status_filter": { + "value": "Status.Open", + "type": "string", + "required": false + }, + "search_text": { + "value": "Acme invoice Feb", + "type": "string", + "required": false + }, + "page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "bills_per_page": { + "value": 100, + "type": "integer", + "required": false + }, + "sort_by_column": { + "value": "date", + "type": "string", + "required": false + }, + "sorting_order": { + "value": "D", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListBankAccounts", + "qualifiedName": "ZohoBooksApi.ListBankAccounts", + "fullyQualifiedName": "ZohoBooksApi.ListBankAccounts@1.0.0", + "description": "List all bank and credit card accounts for your organization.\n\nUse this tool to retrieve all bank and credit card accounts associated with your organization in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. This is required to list all associated bank and credit card accounts in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "account_status_filter", + "type": "string", + "required": false, + "description": "Specify the status to filter accounts: 'Status.All', 'Status.Active', or 'Status.Inactive'.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by", + "type": "string", + "required": false, + "description": "Specify the sorting criterion for the accounts. Options: 'account_name', 'account_type', 'account_code'.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "The page number of results to retrieve. Defaults to 1 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to be fetched per page. Default value is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_bank_accounts'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListBankAccounts", + "parameters": { + "organization_id": { + "value": "1234567890abcdef", + "type": "string", + "required": true + }, + "account_status_filter": { + "value": "Status.Active", + "type": "string", + "required": false + }, + "sort_by": { + "value": "account_name", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListBaseCurrencyAdjustments", + "qualifiedName": "ZohoBooksApi.ListBaseCurrencyAdjustments", + "fullyQualifiedName": "ZohoBooksApi.ListBaseCurrencyAdjustments@1.0.0", + "description": "Fetch base currency adjustments list from Zoho Books.\n\nThis tool retrieves a list of base currency adjustments from Zoho Books. Call this tool when you need to obtain current base currency adjustments for accounting or financial reporting purposes.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to retrieve currency adjustments from.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_date", + "type": "string", + "required": false, + "description": "Filter the base currency adjustment list by specific date ranges. Allowed values are: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter, Date.ThisYear.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_currency_adjustment_list_by", + "type": "string", + "required": false, + "description": "Specify the sorting criterion for the currency adjustment list. Options include: adjustment_date, exchange_rate, currency_code, debit_or_credit, or gain_or_loss.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_last_modified_time", + "type": "string", + "required": false, + "description": "Use a timestamp to filter adjustments by their last modified time.", + "enum": null, + "inferrable": true + }, + { + "name": "fetch_page_number", + "type": "integer", + "required": false, + "description": "The page number to fetch. Defaults to 1 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_base_currency_adjustments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListBaseCurrencyAdjustments", + "parameters": { + "organization_id": { + "value": "a1b2c3d4e5f6g7h8i9j0", + "type": "string", + "required": true + }, + "filter_by_date": { + "value": "Date.ThisMonth", + "type": "string", + "required": false + }, + "sort_currency_adjustment_list_by": { + "value": "exchange_rate", + "type": "string", + "required": false + }, + "search_by_last_modified_time": { + "value": "2026-02-10T12:00:00Z", + "type": "string", + "required": false + }, + "fetch_page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListBillsWithVendorCredit", + "qualifiedName": "ZohoBooksApi.ListBillsWithVendorCredit", + "fullyQualifiedName": "ZohoBooksApi.ListBillsWithVendorCredit@1.0.0", + "description": "List bills with applied vendor credit from a vendor credit ID.\n\nFetch a list of bills where a specific vendor credit has been applied. Use this tool to understand how vendor credits are distributed across bills.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to fetch applicable bills for vendor credit.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_id", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor credit to list the applied bills.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_bills_credited'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListBillsWithVendorCredit", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "vendor_credit_id": { + "value": "40000012345678", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListChartOfAccounts", + "qualifiedName": "ZohoBooksApi.ListChartOfAccounts", + "fullyQualifiedName": "ZohoBooksApi.ListChartOfAccounts@1.0.0", + "description": "Retrieve a list of all chart of accounts.\n\nUse this tool to obtain a complete list of chart of accounts with pagination support. Ideal for financial data management.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to retrieve chart of accounts for.", + "enum": null, + "inferrable": true + }, + { + "name": "account_type_filter", + "type": "string", + "required": false, + "description": "Filter accounts based on type and status. Options: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income, AccountType.Expense.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_accounts_by", + "type": "string", + "required": false, + "description": "Specify how to sort the accounts. Options: 'account_name', 'account_type'.", + "enum": null, + "inferrable": true + }, + { + "name": "last_modified_time_filter", + "type": "string", + "required": false, + "description": "Fetch accounts modified since a specific timestamp, formatted as YYYY-MM-DDTHH:MM:SSZ.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number to retrieve. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to retrieve per page. Defaults to 200 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "include_balance", + "type": "boolean", + "required": false, + "description": "Include current account balances in the response when set to true.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_chart_of_accounts'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListChartOfAccounts", + "parameters": { + "organization_id": { + "value": "9876543210", + "type": "string", + "required": true + }, + "account_type_filter": { + "value": "AccountType.Active", + "type": "string", + "required": false + }, + "sort_accounts_by": { + "value": "account_name", + "type": "string", + "required": false + }, + "last_modified_time_filter": { + "value": "2024-06-01T00:00:00Z", + "type": "string", + "required": false + }, + "page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + }, + "include_balance": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListChildExpenses", + "qualifiedName": "ZohoBooksApi.ListChildExpenses", + "fullyQualifiedName": "ZohoBooksApi.ListChildExpenses@1.0.0", + "description": "Retrieve child expenses from a recurring expense.\n\nUse this tool to list expenses that have been generated from a specific recurring expense. Useful for tracking individual instances of a recurring cost.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to list child expenses for.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the recurring expense to retrieve child expenses.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_expenses_by", + "type": "string", + "required": false, + "description": "Specify the field to sort expenses. Valid options: next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "fetch_page_number", + "type": "integer", + "required": false, + "description": "Specify the page number to retrieve. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of expense records to retrieve per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_child_expenses_of_recurring_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListChildExpenses", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "recurring_expense_identifier": { + "value": "rec_987654321", + "type": "string", + "required": true + }, + "sort_expenses_by": { + "value": "next_expense_date", + "type": "string", + "required": false + }, + "fetch_page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCompanyEmployees", + "qualifiedName": "ZohoBooksApi.ListCompanyEmployees", + "fullyQualifiedName": "ZohoBooksApi.ListCompanyEmployees@1.0.0", + "description": "Retrieve a paginated list of all employees.\n\nUse this tool to obtain a list of employees from the company database, including pagination for handling large sets of data. Ideal for getting employee details in an organized manner.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose employees are being listed. This should be provided as a string.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "The page number to fetch. Default is 1 for the first page.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of employee records to retrieve per page, with a default of 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_employees'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCompanyEmployees", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 200, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListConfiguredCurrencies", + "qualifiedName": "ZohoBooksApi.ListConfiguredCurrencies", + "fullyQualifiedName": "ZohoBooksApi.ListConfiguredCurrencies@1.0.0", + "description": "Retrieve the list of configured currencies in Zoho Books.\n\nThis tool retrieves the list of all currencies configured within Zoho Books. Use it when you need to know which currencies are set up in the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required to retrieve currency data for a specific organization.", + "enum": null, + "inferrable": true + }, + { + "name": "exclude_base_currency_filter", + "type": "string", + "required": false, + "description": "Set to exclude the base currency from the result. Use 'Currencies.ExcludeBaseCurrency'.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "The page number of currency records to fetch. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of currency records to fetch per page. Defaults to 200 if not specified.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_currencies'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListConfiguredCurrencies", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "exclude_base_currency_filter": { + "value": "Currencies.ExcludeBaseCurrency", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListContactPersons", + "qualifiedName": "ZohoBooksApi.ListContactPersons", + "fullyQualifiedName": "ZohoBooksApi.ListContactPersons@1.0.0", + "description": "Retrieve contact persons for a given contact ID.\n\nUse this tool to list all contact persons associated with a specific contact ID, utilizing pagination.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the contact persons are being retrieved.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the contact to retrieve associated persons.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "The page number to fetch when listing contact persons. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specifies the number of contact records to retrieve per page. The default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_contact_persons'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListContactPersons", + "parameters": { + "organization_id": { + "value": "785312345", + "type": "string", + "required": true + }, + "contact_identifier": { + "value": "C1234567890", + "type": "string", + "required": true + }, + "page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCreditNoteInvoices", + "qualifiedName": "ZohoBooksApi.ListCreditNoteInvoices", + "fullyQualifiedName": "ZohoBooksApi.ListCreditNoteInvoices@1.0.0", + "description": "List invoices to which the credit note is applied.\n\nUse this tool to retrieve a list of invoices that are associated with a specific credit note.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which you want to list the invoices associated with the credit note.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to retrieve associated invoices.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_invoices_of_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCreditNoteInvoices", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "123456789012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCreditNoteRefunds", + "qualifiedName": "ZohoBooksApi.ListCreditNoteRefunds", + "fullyQualifiedName": "ZohoBooksApi.ListCreditNoteRefunds@1.0.0", + "description": "Retrieve refunds for a specific credit note.\n\nUse this tool to list all refunds associated with a particular credit note by specifying its ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to retrieve credit note refunds for.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to retrieve refunds for.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number to retrieve in paginated results. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "results_per_page", + "type": "integer", + "required": false, + "description": "Number of records to return per page, controlling pagination. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_credit_note_refunds1'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCreditNoteRefunds", + "parameters": { + "organization_id": { + "value": "6001234567890123456", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "CN-2026-000123", + "type": "string", + "required": true + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "results_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCreditNotes", + "qualifiedName": "ZohoBooksApi.ListCreditNotes", + "fullyQualifiedName": "ZohoBooksApi.ListCreditNotes@1.0.0", + "description": "Retrieve and filter a list of credit notes.\n\nRetrieve a paginated list of credit notes using filters and sorting based on date, status, amount, customer details, items, taxes, and custom fields.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which you want to list credit notes. Required for identification and retrieval.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_number", + "type": "string", + "required": false, + "description": "Filter credit notes by a specific credit note number. The number must be a unique identifier, up to 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_date", + "type": "string", + "required": false, + "description": "Filter credit notes by the date they were raised. Use yyyy-mm-dd format to search for specific credit notes.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_status", + "type": "string", + "required": false, + "description": "Specify the status to filter credit notes. Options include: 'open', 'closed', 'void', or 'draft'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_total_amount", + "type": "number", + "required": false, + "description": "Filter credit notes by their total amount. Input a specific total value to retrieve matching credit notes.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_reference_number", + "type": "string", + "required": false, + "description": "Filter credit notes by their reference number, limited to 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_customer_name", + "type": "string", + "required": false, + "description": "Filter credit notes by customer name. Use to search for credit notes associated with a specific customer. Max-Length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_name", + "type": "string", + "required": false, + "description": "Search for credit notes by item name. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_customer_id", + "type": "string", + "required": false, + "description": "Search for credit notes associated with a specific customer using the customer ID. Retrieve customer IDs from the contacts API.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_description", + "type": "string", + "required": false, + "description": "Filter credit notes by item description. Use 'startswith:' or 'contains:' for flexible matching. Max length of 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_id", + "type": "string", + "required": false, + "description": "Filter credit notes by item ID to find notes containing a specific item. Obtain item IDs from the items API.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_line_item_id", + "type": "string", + "required": false, + "description": "Search for credit notes containing a specific line item using its ID.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_tax_id", + "type": "string", + "required": false, + "description": "Filter credit notes using a specific tax ID. Retrieve the tax ID from the taxes API.", + "enum": null, + "inferrable": true + }, + { + "name": "status_filter", + "type": "string", + "required": false, + "description": "Filter credit notes by status using predefined values: 'Status.All', 'Status.Open', 'Status.Draft', 'Status.Closed', 'Status.Void'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_text", + "type": "string", + "required": false, + "description": "Search credit notes across multiple fields like credit note number, customer name, and reference number. Max-length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_credit_notes_by_column", + "type": "string", + "required": false, + "description": "Specify the column by which to sort the credit notes. Allowed values: 'customer_name', 'creditnote_number', 'balance', 'total', 'date', and 'created_time'.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number for pagination. Specify which page of results to retrieve. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of credit notes to be returned per page for pagination. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_credit_notes'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCreditNotes", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "credit_note_number": { + "value": "CN-2026-001", + "type": "string", + "required": false + }, + "filter_date": { + "value": "2026-02-15", + "type": "string", + "required": false + }, + "filter_by_status": { + "value": "open", + "type": "string", + "required": false + }, + "filter_by_total_amount": { + "value": 1500.75, + "type": "integer", + "required": false + }, + "filter_by_reference_number": { + "value": "REF-7890", + "type": "string", + "required": false + }, + "filter_by_customer_name": { + "value": "Acme Corporation", + "type": "string", + "required": false + }, + "filter_by_item_name": { + "value": "Widget Pro", + "type": "string", + "required": false + }, + "filter_by_customer_id": { + "value": "CUST-98765", + "type": "string", + "required": false + }, + "filter_by_item_description": { + "value": "contains:premium widget", + "type": "string", + "required": false + }, + "filter_by_item_id": { + "value": "ITEM-54321", + "type": "string", + "required": false + }, + "filter_by_line_item_id": { + "value": "LINE-1111", + "type": "string", + "required": false + }, + "filter_by_tax_id": { + "value": "TAX-222", + "type": "string", + "required": false + }, + "status_filter": { + "value": "Status.Open", + "type": "string", + "required": false + }, + "search_text": { + "value": "CN-2026 Acme REF-7890", + "type": "string", + "required": false + }, + "sort_credit_notes_by_column": { + "value": "date", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCurrencyAdjustmentAccounts", + "qualifiedName": "ZohoBooksApi.ListCurrencyAdjustmentAccounts", + "fullyQualifiedName": "ZohoBooksApi.ListCurrencyAdjustmentAccounts@1.0.0", + "description": "Retrieve accounts involved in currency adjustments.\n\nThis tool retrieves a list of accounts that have transactions affected by a specified exchange rate. Use this to find financial accounts needing currency adjustment.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which the currency adjustment accounts are needed.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_id_for_adjustment", + "type": "string", + "required": true, + "description": "ID of the currency to post an adjustment for. This specifies which currency is being adjusted.", + "enum": null, + "inferrable": true + }, + { + "name": "adjustment_date", + "type": "string", + "required": true, + "description": "Specify the date for the currency adjustment in YYYY-MM-DD format.", + "enum": null, + "inferrable": true + }, + { + "name": "exchange_rate", + "type": "number", + "required": true, + "description": "Specify the exchange rate for the currency to affect transactions.", + "enum": null, + "inferrable": true + }, + { + "name": "adjustment_notes", + "type": "string", + "required": true, + "description": "Notes for the base currency adjustment, providing additional information or context.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_base_currency_adjustment_accounts'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCurrencyAdjustmentAccounts", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "currency_id_for_adjustment": { + "value": "USD", + "type": "string", + "required": true + }, + "adjustment_date": { + "value": "2026-02-19", + "type": "string", + "required": true + }, + "exchange_rate": { + "value": 1.2345, + "type": "integer", + "required": true + }, + "adjustment_notes": { + "value": "Monthly currency revaluation for USD transactions as of 2026-02-19.", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCurrencyExchangeRates", + "qualifiedName": "ZohoBooksApi.ListCurrencyExchangeRates", + "fullyQualifiedName": "ZohoBooksApi.ListCurrencyExchangeRates@1.0.0", + "description": "Retrieve exchange rates for a specific currency.\n\nThis tool fetches a list of configured exchange rates for a given currency using its ID. Call this tool to obtain exchange rate information associated with a particular currency.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to retrieve exchange rates.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the currency to retrieve exchange rates.", + "enum": null, + "inferrable": true + }, + { + "name": "exchange_rate_from_date", + "type": "string", + "required": false, + "description": "Date to start retrieving exchange rates. Returns rates from this date or nearest previous match.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Sorts the exchange rates by the specified column. Only 'effective_date' is allowed.", + "enum": null, + "inferrable": true + }, + { + "name": "return_current_date_exchange_rate_only", + "type": "boolean", + "required": false, + "description": "Set to true to return the exchange rate only if it's available for the current date.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_exchange_rates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCurrencyExchangeRates", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "currency_identifier": { + "value": "USD", + "type": "string", + "required": true + }, + "exchange_rate_from_date": { + "value": "2024-01-01", + "type": "string", + "required": false + }, + "sort_by_column": { + "value": "effective_date", + "type": "string", + "required": false + }, + "return_current_date_exchange_rate_only": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCustomerDebitNotes", + "qualifiedName": "ZohoBooksApi.ListCustomerDebitNotes", + "fullyQualifiedName": "ZohoBooksApi.ListCustomerDebitNotes@1.0.0", + "description": "Retrieve and organize customer debit notes easily.\n\nUse this tool to access customer debit notes with options for pagination, filtering, searching, and sorting, allowing you to view and organize debit note data efficiently.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization for this request. Required for identifying the organization whose debit notes are being queried.", + "enum": null, + "inferrable": true + }, + { + "name": "search_item_name", + "type": "string", + "required": false, + "description": "Search debit notes based on product or service names. Supports 'item_name_startswith' and 'item_name_contains'. Max length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_item_id", + "type": "string", + "required": false, + "description": "Search for customer debit notes using a specific item ID to filter based on product or service identifiers.", + "enum": null, + "inferrable": true + }, + { + "name": "item_description_filter", + "type": "string", + "required": false, + "description": "Filter debit notes by item description using detailed descriptions of products or services. Supports 'startswith' and 'contains' variants. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_name", + "type": "string", + "required": false, + "description": "Search debit notes by customer name. Filters based on the business or individual name. Maximum 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_email_filter", + "type": "string", + "required": false, + "description": "Filter debit notes by customer email address, with a maximum length of 100 characters, to find specific customers or generate segment reports.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_total_amount", + "type": "string", + "required": false, + "description": "Filter debit notes by the total amount, including taxes, discounts, and adjustments. Useful for finding specific price ranges or high-value transactions.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_outstanding_balance", + "type": "string", + "required": false, + "description": "Filter debit notes by the remaining unpaid amount owed by the customer. Useful for finding overdue debit notes, tracking receivables, or generating aging reports.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_custom_field", + "type": "string", + "required": false, + "description": "Filter debit notes using custom fields. Supports 'custom_field_startswith' and 'custom_field_contains' for searching specific text patterns.", + "enum": null, + "inferrable": true + }, + { + "name": "search_date_range", + "type": "string", + "required": false, + "description": "Filter debit notes by creation date using yyyy-mm-dd format. Supports variants: date_start, date_end, date_before, date_after.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_due_date", + "type": "string", + "required": false, + "description": "Search debit notes by due date using yyyy-mm-dd format. Supports 'due_date_start', 'due_date_end', 'due_date_before', and 'due_date_after' variants.", + "enum": null, + "inferrable": true + }, + { + "name": "creation_date_filter", + "type": "string", + "required": false, + "description": "Filter debit notes by creation date. Use formats: 'yyyy-mm-dd', 'created_date_start', 'created_date_end', 'created_date_before', or 'created_date_after'.", + "enum": null, + "inferrable": true + }, + { + "name": "last_modified_timestamp", + "type": "string", + "required": false, + "description": "Filter debit notes modified after this timestamp in YYYY-MM-DDTHH:MM:SS-UTC format.", + "enum": null, + "inferrable": true + }, + { + "name": "status_filter", + "type": "string", + "required": false, + "description": "Filter debit notes by their status. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid, viewed.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_id", + "type": "string", + "required": false, + "description": "Search debit notes by the customer's unique identifier. Use the customer ID from the Contacts API to find all corresponding debit notes.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_debit_note_type", + "type": "string", + "required": false, + "description": "Set to 'Type.DebitNote' to filter debit notes specifically. Required for this search.", + "enum": null, + "inferrable": true + }, + { + "name": "general_search_text", + "type": "string", + "required": false, + "description": "Search debit notes by number, purchase order, or customer name. Max 100 characters. Useful for quick searches across multiple fields.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_debit_notes_by_column", + "type": "string", + "required": false, + "description": "Sort debit notes by a specific column. Allowed values: customer_name, debit_note_number, date, due_date, total, balance, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "Page number to retrieve from paginated results. Default is 1. Use with `per_page` to navigate extensive debit note data efficiently.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of records to retrieve per page, up to a maximum of 200. The default value is 200. This helps manage data transfer efficiency.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_customer_debit_notes'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCustomerDebitNotes", + "parameters": { + "organization_identifier": { + "value": "ORG-123456", + "type": "string", + "required": true + }, + "search_item_name": { + "value": "item_name_contains:Deluxe Widget", + "type": "string", + "required": false + }, + "search_by_item_id": { + "value": "ITM-1001", + "type": "string", + "required": false + }, + "item_description_filter": { + "value": "contains:stainless steel finish", + "type": "string", + "required": false + }, + "search_by_customer_name": { + "value": "Acme Corporation", + "type": "string", + "required": false + }, + "customer_email_filter": { + "value": "billing@acme.com", + "type": "string", + "required": false + }, + "search_by_total_amount": { + "value": "100.00-1000.00", + "type": "string", + "required": false + }, + "search_by_outstanding_balance": { + "value": ">=50.00", + "type": "string", + "required": false + }, + "search_by_custom_field": { + "value": "custom_field_contains:ProjectPhoenix", + "type": "string", + "required": false + }, + "search_date_range": { + "value": "date_start=2024-01-01&date_end=2024-06-30", + "type": "string", + "required": false + }, + "filter_due_date": { + "value": "due_date_before=2024-07-01", + "type": "string", + "required": false + }, + "creation_date_filter": { + "value": "created_date_start=2024-01-01", + "type": "string", + "required": false + }, + "last_modified_timestamp": { + "value": "2025-02-10T12:34:56Z", + "type": "string", + "required": false + }, + "status_filter": { + "value": "overdue", + "type": "string", + "required": false + }, + "search_by_customer_id": { + "value": "CUST-7890", + "type": "string", + "required": false + }, + "filter_by_debit_note_type": { + "value": "Type.DebitNote", + "type": "string", + "required": false + }, + "general_search_text": { + "value": "DN-2024-009", + "type": "string", + "required": false + }, + "sort_debit_notes_by_column": { + "value": "due_date", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCustomerPaymentRefunds", + "qualifiedName": "ZohoBooksApi.ListCustomerPaymentRefunds", + "fullyQualifiedName": "ZohoBooksApi.ListCustomerPaymentRefunds@1.0.0", + "description": "Retrieve refunds for a specified customer payment.\n\nUse this tool to list all refunds related to a particular customer payment by providing the customer payment ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization. Required to specify which organization's data to access.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_payment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the customer payment to retrieve associated refunds.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number to fetch. Defaults to 1 if not provided.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Defaults to 200 if not specified.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_customer_payment_refunds'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCustomerPaymentRefunds", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "customer_payment_identifier": { + "value": "100000000012345", + "type": "string", + "required": true + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 200, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCustomerPayments", + "qualifiedName": "ZohoBooksApi.ListCustomerPayments", + "fullyQualifiedName": "ZohoBooksApi.ListCustomerPayments@1.0.0", + "description": "List all payments made by your customers.\n\nUse this tool to retrieve a list of all the payments made by your customers. It is useful for financial analysis, reconciliation, or customer support purposes.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization. Required to specify which organization's payments to list.", + "enum": null, + "inferrable": true + }, + { + "name": "search_customer_name", + "type": "string", + "required": false, + "description": "Filter payments by customer name using 'startswith' or 'contains' variants. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_reference_number", + "type": "string", + "required": false, + "description": "Search payments by reference number. Supports 'startswith' and 'contains' variants. Max-length 100.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_date", + "type": "string", + "required": false, + "description": "Specify the date of the customer payment in YYYY-MM-DD format to filter results.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_amount_filter", + "type": "number", + "required": false, + "description": "Filter payments by amount using variants: less_than, less_equals, greater_than, or greater_equals.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_notes", + "type": "string", + "required": false, + "description": "Search payments using customer notes, supporting 'startswith' and 'contains' variants.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_mode_filter", + "type": "string", + "required": false, + "description": "Filter payments by specifying the payment mode. Use 'startswith' or 'contains' for partial matching.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_payments_by_mode", + "type": "string", + "required": false, + "description": "Filter payments by the payment mode. Accepted values include: All, Check, Cash, BankTransfer, Paypal, CreditCard, GoogleCheckout, Credit, Authorizenet, BankRemittance, Payflowpro, Stripe, TwoCheckout, Braintree, Others.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_column", + "type": "string", + "required": false, + "description": "Specify the column to sort the payments by. Common options include date, amount, or customer name.", + "enum": null, + "inferrable": true + }, + { + "name": "search_term_for_payments", + "type": "string", + "required": false, + "description": "Search payments by reference number, customer name, or payment description. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_id", + "type": "string", + "required": false, + "description": "The unique identifier for the customer involved in the payment. Use this to target specific customer transactions.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "The page number of payment records to be retrieved. Defaults to 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to be fetched per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_customer_payments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCustomerPayments", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "search_customer_name": { + "value": "contains:Acme", + "type": "string", + "required": false + }, + "search_by_reference_number": { + "value": "startswith:INV-100", + "type": "string", + "required": false + }, + "payment_date": { + "value": "2026-02-15", + "type": "string", + "required": false + }, + "payment_amount_filter": { + "value": 1500.75, + "type": "integer", + "required": false + }, + "search_by_customer_notes": { + "value": "contains:refund", + "type": "string", + "required": false + }, + "payment_mode_filter": { + "value": "contains:CreditCard", + "type": "string", + "required": false + }, + "filter_payments_by_mode": { + "value": "CreditCard", + "type": "string", + "required": false + }, + "sort_column": { + "value": "date", + "type": "string", + "required": false + }, + "search_term_for_payments": { + "value": "monthly subscription", + "type": "string", + "required": false + }, + "customer_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListCustomModuleRecords", + "qualifiedName": "ZohoBooksApi.ListCustomModuleRecords", + "fullyQualifiedName": "ZohoBooksApi.ListCustomModuleRecords@1.0.0", + "description": "Fetches records from a specified custom module.\n\nUse this tool to retrieve the list of records from a specific custom module in Zoho Books. Provide the module name to get the corresponding records.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the Zoho organization to fetch records from.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_module_name", + "type": "string", + "required": true, + "description": "Name of the custom module from which to retrieve records in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.custommodules.ALL" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_records_of_custom_module'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListCustomModuleRecords", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "custom_module_name": { + "value": "Project_Expenses", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListEstimates", + "qualifiedName": "ZohoBooksApi.ListEstimates", + "fullyQualifiedName": "ZohoBooksApi.ListEstimates@1.0.0", + "description": "Retrieve a list of all estimates with pagination.\n\nUse this tool to fetch all estimates, including pagination information, from Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Specifies the ID of the organization to filter the estimates.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_number_filter", + "type": "string", + "required": false, + "description": "Specify an estimate number or use variants like 'startswith' or 'contains' for partial matching to filter estimates.", + "enum": null, + "inferrable": true + }, + { + "name": "reference_number_filter", + "type": "string", + "required": false, + "description": "Filter or search estimates by their reference number. Supports partial matches using 'startswith' and 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_name", + "type": "string", + "required": false, + "description": "Search estimates by customer's name with optional variants for partial matches, such as 'startswith' and 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "total_filter", + "type": "number", + "required": false, + "description": "Specify a condition to search estimates by their total amount. Use variants like 'less_than', 'less_equals', 'greater_than', and 'greater_equals' for range queries.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_customer_id", + "type": "string", + "required": false, + "description": "Filter or search estimates using the unique customer ID. Use the `customer_id` provided by the Contacts API for the same organization to retrieve estimates linked to a specific customer.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_id", + "type": "string", + "required": false, + "description": "Filter or search estimates by the unique item ID. Use the item_id returned by the Items API for the same organization to find estimates including a specific product or service.", + "enum": null, + "inferrable": true + }, + { + "name": "item_name_filter", + "type": "string", + "required": false, + "description": "Search estimates by item name. Supports variants like 'item_name_startswith' and 'item_name_contains' for partial matches.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_item_description", + "type": "string", + "required": false, + "description": "Search estimates by item description. Use variants 'item_description_startswith' and 'item_description_contains' for pattern matching.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_custom_field", + "type": "string", + "required": false, + "description": "Search estimates by a custom field, supporting variants like 'startswith' or 'contains' for partial matches. Useful for identifying estimates linked to specific custom data.", + "enum": null, + "inferrable": true + }, + { + "name": "expiry_date", + "type": "string", + "required": false, + "description": "Specify the expiration date of the estimates to filter the results. Use the format YYYY-MM-DD.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_date_filter", + "type": "string", + "required": false, + "description": "Search estimates by date using variants like 'date_start', 'date_end', 'date_before', or 'date_after'.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_status_filter", + "type": "string", + "required": false, + "description": "Filter estimates by status. Allowed values: draft, sent, invoiced, accepted, declined, expired.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_estimates_by_status", + "type": "string", + "required": false, + "description": "Specify the status to filter estimates. Allowed values: Status.All, Status.Sent, Status.Draft, Status.Invoiced, Status.Accepted, Status.Declined, Status.Expired.", + "enum": null, + "inferrable": true + }, + { + "name": "keyword_search", + "type": "string", + "required": false, + "description": "Keyword search across estimate number, reference number, or customer name to quickly find matching estimates.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_estimates_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort estimates by. Options: customer_name, estimate_number, date, total, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "deal_potential_id", + "type": "integer", + "required": false, + "description": "Potential ID of a Deal in CRM. Use this to filter estimates linked to specific deals.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number to fetch. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_estimates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListEstimates", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "estimate_number_filter": { + "value": "startswith:EST-2026", + "type": "string", + "required": false + }, + "reference_number_filter": { + "value": "contains:REF", + "type": "string", + "required": false + }, + "customer_name": { + "value": "contains:Acme Corp", + "type": "string", + "required": false + }, + "total_filter": { + "value": "greater_equals:1500.00", + "type": "integer", + "required": false + }, + "filter_by_customer_id": { + "value": "654321", + "type": "string", + "required": false + }, + "filter_by_item_id": { + "value": "98765", + "type": "string", + "required": false + }, + "item_name_filter": { + "value": "item_name_contains:Consulting", + "type": "string", + "required": false + }, + "search_by_item_description": { + "value": "item_description_contains:monthly retainer", + "type": "string", + "required": false + }, + "search_by_custom_field": { + "value": "custom_field_1_startswith:VIP", + "type": "string", + "required": false + }, + "expiry_date": { + "value": "2026-12-31", + "type": "string", + "required": false + }, + "estimate_date_filter": { + "value": "date_start:2026-01-01,date_end:2026-12-31", + "type": "string", + "required": false + }, + "estimate_status_filter": { + "value": "sent", + "type": "string", + "required": false + }, + "filter_estimates_by_status": { + "value": "Status.Sent", + "type": "string", + "required": false + }, + "keyword_search": { + "value": "ACME", + "type": "string", + "required": false + }, + "sort_estimates_by_column": { + "value": "date", + "type": "string", + "required": false + }, + "deal_potential_id": { + "value": 54321, + "type": "integer", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListExpenses", + "qualifiedName": "ZohoBooksApi.ListExpenses", + "fullyQualifiedName": "ZohoBooksApi.ListExpenses@1.0.0", + "description": "Retrieve a list of expenses with pagination.\n\nUse this tool to get a paginated list of all expenses recorded in the system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique identifier for the organization whose expenses are being queried.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_description", + "type": "string", + "required": false, + "description": "Search expenses by description, supports 'description_startswith' and 'description_contains'. Max-length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_reference_number", + "type": "string", + "required": false, + "description": "Search expenses by part or complete reference number using 'startswith' or 'contains'. Max-length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_date", + "type": "string", + "required": false, + "description": "Search expenses by expense date. Use variants: date_start, date_end, date_before, or date_after. Format [yyyy-mm-dd].", + "enum": null, + "inferrable": true + }, + { + "name": "expense_status", + "type": "string", + "required": false, + "description": "Search expenses by status. Allowed values: unbilled, invoiced, reimbursed, non-billable, billable.", + "enum": null, + "inferrable": true + }, + { + "name": "amount_filter", + "type": "number", + "required": false, + "description": "Search expenses by amount using the variants: less_than, less_equals, greater_than, or greater_equals.", + "enum": null, + "inferrable": true + }, + { + "name": "search_expense_account_name", + "type": "string", + "required": false, + "description": "Search expenses by account name. Use 'startswith:' or 'contains:'. Max length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_name_filter", + "type": "string", + "required": false, + "description": "Filter expenses by customer name. Supports 'startswith' and 'contains' variants. Max length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_name_filter", + "type": "string", + "required": false, + "description": "Filter expenses by vendor name using 'vendor_name_startswith' or 'vendor_name_contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_account_customer_id", + "type": "string", + "required": false, + "description": "The ID of the expense account for the customer. Use this to filter expenses specific to a customer's account.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_id", + "type": "string", + "required": false, + "description": "ID of the vendor associated with the expense.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_id", + "type": "string", + "required": false, + "description": "The ID used to search for expenses associated with a recurring expense.", + "enum": null, + "inferrable": true + }, + { + "name": "paid_through_account_id", + "type": "string", + "required": false, + "description": "The ID of the account through which the expense was paid.", + "enum": null, + "inferrable": true + }, + { + "name": "search_expenses_text", + "type": "string", + "required": false, + "description": "Search expenses by account name, description, customer name, or vendor name. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_expenses_by", + "type": "string", + "required": false, + "description": "Sort expenses by the specified column. Allowed values: date, account_name, total, bcy_total, reference_number, customer_name, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_status_filter", + "type": "string", + "required": false, + "description": "Filter expenses by status. Allowed values: 'Status.All', 'Status.Billable', 'Status.Nonbillable', 'Status.Reimbursed', 'Status.Invoiced', 'Status.Unbilled'.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number to fetch, with the default starting at 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of expense records to fetch per page. Defaults to 200 if not specified.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_expenses'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListExpenses", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "search_by_description": { + "value": "description_contains:printer toner", + "type": "string", + "required": false + }, + "search_by_reference_number": { + "value": "contains:REF-2026", + "type": "string", + "required": false + }, + "filter_by_date": { + "value": "date_start:2026-01-01,date_end:2026-01-31", + "type": "string", + "required": false + }, + "expense_status": { + "value": "invoiced", + "type": "string", + "required": false + }, + "amount_filter": { + "value": 150.75, + "type": "integer", + "required": false + }, + "search_expense_account_name": { + "value": "contains:Office Supplies", + "type": "string", + "required": false + }, + "customer_name_filter": { + "value": "startswith:Acme", + "type": "string", + "required": false + }, + "vendor_name_filter": { + "value": "vendor_name_contains:Office Depot", + "type": "string", + "required": false + }, + "expense_account_customer_id": { + "value": "cust_98765", + "type": "string", + "required": false + }, + "vendor_id": { + "value": "vendor_12345", + "type": "string", + "required": false + }, + "recurring_expense_id": { + "value": "recurring_45678", + "type": "string", + "required": false + }, + "paid_through_account_id": { + "value": "acct_001122", + "type": "string", + "required": false + }, + "search_expenses_text": { + "value": "office supplies printer", + "type": "string", + "required": false + }, + "sort_expenses_by": { + "value": "date", + "type": "string", + "required": false + }, + "expense_status_filter": { + "value": "Status.Invoiced", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListInventoryLocations", + "qualifiedName": "ZohoBooksApi.ListInventoryLocations", + "fullyQualifiedName": "ZohoBooksApi.ListInventoryLocations@1.0.0", + "description": "Retrieve all available locations from Zoho Inventory.\n\nUse this tool to get a comprehensive list of all the available locations in your Zoho Inventory. It should be called when you need to access inventory location details.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_locations'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListInventoryLocations", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListInvoiceTemplates", + "qualifiedName": "ZohoBooksApi.ListInvoiceTemplates", + "fullyQualifiedName": "ZohoBooksApi.ListInvoiceTemplates@1.0.0", + "description": "Fetch all invoice PDF templates from Zoho Books.\n\nThis tool retrieves a list of all available invoice PDF templates in Zoho Books. Use this to access template options for invoices.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to fetch invoice templates for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_invoice_templates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListInvoiceTemplates", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListOrganizations", + "qualifiedName": "ZohoBooksApi.ListOrganizations", + "fullyQualifiedName": "ZohoBooksApi.ListOrganizations@1.0.0", + "description": "Retrieve the list of organizations from Zoho Books.\n\nUse this tool to obtain a list of all organizations associated with the user's Zoho Books account. It is useful for managing and accessing organization-specific data or settings.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization to list details for.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_organizations'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListOrganizations", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListProjectInvoices", + "qualifiedName": "ZohoBooksApi.ListProjectInvoices", + "fullyQualifiedName": "ZohoBooksApi.ListProjectInvoices@1.0.0", + "description": "Retrieve invoices for a specific project in Zoho Books.\n\nCall this endpoint to obtain a list of all invoices associated with a particular project within Zoho Books. This tool is useful when you need to review or manage billing details for project-based work.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to access the specific organization's project invoices.", + "enum": null, + "inferrable": true + }, + { + "name": "project_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the specific project to retrieve invoices for.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_invoices_by", + "type": "string", + "required": false, + "description": "Specify the column to sort invoices by. Options are: 'invoice_number', 'date', 'total', 'balance', 'created_time'.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "Specify the page number to retrieve from the list of invoices. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "The number of invoice records to fetch per page. Defaults to 200 if not specified.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_project_invoices'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListProjectInvoices", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "project_unique_identifier": { + "value": "proj_5f8a1b2c3d4e", + "type": "string", + "required": true + }, + "sort_invoices_by": { + "value": "date", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListProjects", + "qualifiedName": "ZohoBooksApi.ListProjects", + "fullyQualifiedName": "ZohoBooksApi.ListProjects@1.0.0", + "description": "Retrieve a list of all projects with pagination.\n\nThis tool is used to get a list of all projects from Zoho Books, with support for pagination. Call this tool to retrieve project data when managing tasks or resources.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which to list projects.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_projects_by_status", + "type": "string", + "required": false, + "description": "Filter projects by status. Use Status.All, Status.Active, or Status.Inactive.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_id", + "type": "string", + "required": false, + "description": "Search projects using the customer's ID to filter results.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_projects_by", + "type": "string", + "required": false, + "description": "Sort projects by project name, customer name, rate, or created time.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number to retrieve. Defaults to 1 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Defaults to 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_projects'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListProjects", + "parameters": { + "organization_id": { + "value": "1234567890123456789", + "type": "string", + "required": true + }, + "filter_projects_by_status": { + "value": "Status.Active", + "type": "string", + "required": false + }, + "search_by_customer_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "sort_projects_by": { + "value": "project_name", + "type": "string", + "required": false + }, + "page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListProjectUsers", + "qualifiedName": "ZohoBooksApi.ListProjectUsers", + "fullyQualifiedName": "ZohoBooksApi.ListProjectUsers@1.0.0", + "description": "Get a list of users associated with a project.\n\nUse this tool to retrieve users linked to a specific project in Zoho Books. This is useful for managing project collaborations and assignments.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID representing the organization in Zoho Books. Required to access project users.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the project to retrieve associated users.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_project_users'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListProjectUsers", + "parameters": { + "organization_id": { + "value": "54123456789", + "type": "string", + "required": true + }, + "project_identifier": { + "value": "1200000000000123456", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListPurchaseOrders", + "qualifiedName": "ZohoBooksApi.ListPurchaseOrders", + "fullyQualifiedName": "ZohoBooksApi.ListPurchaseOrders@1.0.0", + "description": "Retrieve a list of all purchase orders.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization to filter purchase orders.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_purchaseorder_number", + "type": "string", + "required": false, + "description": "Search purchase order by number. Supports exact, starts with, and contains variants.", + "enum": null, + "inferrable": true + }, + { + "name": "reference_number_search", + "type": "string", + "required": false, + "description": "Search for a purchase order using the exact or partial reference number. Supports 'startswith' and 'contains' methods.", + "enum": null, + "inferrable": true + }, + { + "name": "creation_date", + "type": "string", + "required": false, + "description": "Creation date for purchase order search in YYYY-MM-DD format.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_status", + "type": "string", + "required": false, + "description": "Filter purchase orders by status. Options: draft, open, billed, cancelled.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_item_description", + "type": "string", + "required": false, + "description": "Search purchase orders by item description. Use partial matches or specific description. Includes variants like 'startswith' and 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_name", + "type": "string", + "required": false, + "description": "Search purchase orders by vendor name with optional 'startswith' or 'contains' variants.", + "enum": null, + "inferrable": true + }, + { + "name": "total_amount_filter", + "type": "number", + "required": false, + "description": "Filter purchase orders by total amount. Use options like 'start', 'end', 'less_than', 'less_equals', 'greater_than', 'greater_equals' to specify the range or comparison.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_identifier", + "type": "string", + "required": false, + "description": "Specify the unique ID of the vendor to filter purchase orders. Useful for grouping POs by a specific vendor.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_last_modified_time", + "type": "string", + "required": false, + "description": "ISO 8601 format (YYYY-MM-DDTHH:MM:SS±HH:MM) to filter POs by last modified time. For finding recently updated POs.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_item_id", + "type": "string", + "required": false, + "description": "Search purchase orders using the unique item ID to find POs containing a specific item.", + "enum": null, + "inferrable": true + }, + { + "name": "status_filter", + "type": "string", + "required": false, + "description": "Filter purchase orders by status. Use 'Status.All', 'Status.Draft', 'Status.Open', 'Status.Billed', or 'Status.Cancelled'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_purchase_order_text", + "type": "string", + "required": false, + "description": "Search for purchase orders by number, reference, or vendor name. Allows general searching across multiple fields for quick lookup.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Column to sort purchase orders by. Options: vendor_name, purchaseorder_number, date, delivery_date, total, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_custom_field", + "type": "string", + "required": false, + "description": "Search purchase orders using custom field criteria. Supports 'startswith' and 'contains' variants.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number to fetch, with a default value of 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specifies the number of purchase orders to retrieve per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_purchase_orders'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListPurchaseOrders", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "search_by_purchaseorder_number": { + "value": "PO-2026-001", + "type": "string", + "required": false + }, + "reference_number_search": { + "value": "startswith:REF-2026", + "type": "string", + "required": false + }, + "creation_date": { + "value": "2026-02-01", + "type": "string", + "required": false + }, + "purchase_order_status": { + "value": "open", + "type": "string", + "required": false + }, + "search_by_item_description": { + "value": "contains:steel bolts", + "type": "string", + "required": false + }, + "vendor_name": { + "value": "startswith:Acme", + "type": "string", + "required": false + }, + "total_amount_filter": { + "value": 1500, + "type": "integer", + "required": false + }, + "vendor_identifier": { + "value": "9876543210", + "type": "string", + "required": false + }, + "search_by_last_modified_time": { + "value": "2026-02-15T12:30:00+00:00", + "type": "string", + "required": false + }, + "search_by_item_id": { + "value": "ITEM-4321", + "type": "string", + "required": false + }, + "status_filter": { + "value": "Status.Open", + "type": "string", + "required": false + }, + "search_purchase_order_text": { + "value": "Acme Supplies", + "type": "string", + "required": false + }, + "sort_by_column": { + "value": "date", + "type": "string", + "required": false + }, + "search_by_custom_field": { + "value": "contains:projectX", + "type": "string", + "required": false + }, + "page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListRecurringExpenses", + "qualifiedName": "ZohoBooksApi.ListRecurringExpenses", + "fullyQualifiedName": "ZohoBooksApi.ListRecurringExpenses@1.0.0", + "description": "Retrieve all recurring expenses from your records.\n\nUse this tool to fetch a list of all recurring expenses. Ideal for situations where you need to review or manage periodic expenses systematically.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization whose recurring expenses need to be listed.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_name_filter", + "type": "string", + "required": false, + "description": "Filter recurring expenses by name using either 'startswith' or 'contains'. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_last_created_date", + "type": "string", + "required": false, + "description": "Filter recurring expenses based on last generated expense date. Use formats: last_created_date_start, last_created_date_end, last_created_date_before, last_created_date_after with date [yyyy-mm-dd].", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_next_expense_date", + "type": "string", + "required": false, + "description": "Filter recurring expenses by dates related to the next expected expense. Options include 'next_expense_date_start', 'next_expense_date_end', 'next_expense_date_before', and 'next_expense_date_after'. Format is 'yyyy-mm-dd'.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_status", + "type": "string", + "required": false, + "description": "Specify the status of expenses to search for. Allowed values are 'active', 'stopped', and 'expired'.", + "enum": null, + "inferrable": true + }, + { + "name": "account_id_for_expense", + "type": "string", + "required": false, + "description": "Specify the unique identifier for the expense account to filter expenses associated with it.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_account_name", + "type": "string", + "required": false, + "description": "Search expenses by account name with options for exact match or partial match using 'startswith' and 'contains'. Max-length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "amount_filter", + "type": "number", + "required": false, + "description": "Specify a filter for expense amounts, such as 'amount_less_than', 'amount_less_equals', 'amount_greater_than', or 'amount_greater_than'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_name", + "type": "string", + "required": false, + "description": "Search recurring expenses by customer name. Use variants 'customer_name_startswith' or 'customer_name_contains'. Max 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_customer_id", + "type": "string", + "required": false, + "description": "Specify the customer ID to search expenses associated with that customer.", + "enum": null, + "inferrable": true + }, + { + "name": "paid_through_account_id", + "type": "string", + "required": false, + "description": "ID of the account through which the expense was paid. Used to filter expenses.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_status_filter", + "type": "string", + "required": false, + "description": "Filter recurring expenses by their status. Use 'Status.All', 'Status.Active', 'Status.Expired', or 'Status.Stopped'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_expenses_by_text", + "type": "string", + "required": false, + "description": "Specify text to search expenses by account name, description, customer name, or vendor name. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_expenses_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort expenses by. Allowed values: next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "The page number of records to retrieve, starting from 1. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify how many records to retrieve per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_recurring_expenses'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListRecurringExpenses", + "parameters": { + "organization_id": { + "value": "ORG-123456", + "type": "string", + "required": true + }, + "recurring_expense_name_filter": { + "value": "contains=IT Support", + "type": "string", + "required": false + }, + "search_by_last_created_date": { + "value": "last_created_date_start=2025-01-01", + "type": "string", + "required": false + }, + "filter_by_next_expense_date": { + "value": "next_expense_date_after=2026-03-01", + "type": "string", + "required": false + }, + "expense_status": { + "value": "active", + "type": "string", + "required": false + }, + "account_id_for_expense": { + "value": "EXP-ACC-001", + "type": "string", + "required": false + }, + "filter_by_account_name": { + "value": "startswith=Utilities", + "type": "string", + "required": false + }, + "amount_filter": { + "value": 1500.75, + "type": "integer", + "required": false + }, + "search_by_customer_name": { + "value": "customer_name_startswith=Acme", + "type": "string", + "required": false + }, + "search_by_customer_id": { + "value": "CUST-98765", + "type": "string", + "required": false + }, + "paid_through_account_id": { + "value": "PAY-ACC-555", + "type": "string", + "required": false + }, + "expense_status_filter": { + "value": "Status.Active", + "type": "string", + "required": false + }, + "search_expenses_by_text": { + "value": "printer lease", + "type": "string", + "required": false + }, + "sort_expenses_by_column": { + "value": "next_expense_date", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListRecurringInvoices", + "qualifiedName": "ZohoBooksApi.ListRecurringInvoices", + "fullyQualifiedName": "ZohoBooksApi.ListRecurringInvoices@1.0.0", + "description": "Retrieve details of all recurring invoices.\n\nUse this tool to get detailed information on all recurring invoices. Ideal for managing invoicing schedules and monitoring recurring payments.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization for which you want to list the recurring invoices. Required for accessing specific organization's data.", + "enum": null, + "inferrable": true + }, + { + "name": "recurrence_unique_name", + "type": "string", + "required": false, + "description": "Unique name for the recurring profile, provided by the user. Max-length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_item_name", + "type": "string", + "required": false, + "description": "Search recurring invoices by item name, using 'item_name_startswith' or 'profileitemname_contains' variants.", + "enum": null, + "inferrable": true + }, + { + "name": "item_description_filter", + "type": "string", + "required": false, + "description": "Search for recurring invoices by item description using 'startswith' or 'contains' criteria.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_name", + "type": "string", + "required": false, + "description": "Name of the customer for whom the recurring invoice is raised. Use this to filter invoices by customer.", + "enum": null, + "inferrable": true + }, + { + "name": "line_item_id", + "type": "string", + "required": false, + "description": "Specify the line item ID for filtering recurring invoices.", + "enum": null, + "inferrable": true + }, + { + "name": "item_id", + "type": "string", + "required": false, + "description": "Unique identifier for the item associated with the recurring invoice.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_identifier", + "type": "string", + "required": false, + "description": "ID of the tax or tax group associated with the recurring invoice.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_note", + "type": "string", + "required": false, + "description": "A short note for the recurring invoice, providing additional details or context.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_start_date", + "type": "string", + "required": false, + "description": "The date on which the recurring invoice starts. Format: YYYY-MM-DD.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_end_date", + "type": "string", + "required": false, + "description": "The date when the recurring invoice expires, formatted as YYYY-MM-DD.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_id", + "type": "string", + "required": false, + "description": "The ID of the customer for whom the recurring invoice is raised. Use this to filter invoices specific to a customer.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_status", + "type": "string", + "required": false, + "description": "Status of the recurring invoice: 'active', 'stopped', or 'expired'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_recurring_invoice_status", + "type": "string", + "required": false, + "description": "Filter recurring invoices by status or payment expected date. Allowed values: Status.All, Status.Active, Status.Stopped, Status.Expired.", + "enum": null, + "inferrable": true + }, + { + "name": "search_text", + "type": "string", + "required": false, + "description": "Search invoices by invoice number, purchase order, or customer name. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort the recurring invoices by. Leave empty for no sorting.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "The page number to fetch, with a default value of 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to retrieve per page, with a default of 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_recurring_invoices'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListRecurringInvoices", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "recurrence_unique_name": { + "value": "monthly_subscription_basic", + "type": "string", + "required": false + }, + "search_by_item_name": { + "value": "item_name_startswith:Pro", + "type": "string", + "required": false + }, + "item_description_filter": { + "value": "contains:maintenance", + "type": "string", + "required": false + }, + "customer_name": { + "value": "Acme Corporation", + "type": "string", + "required": false + }, + "line_item_id": { + "value": "LI_98765", + "type": "string", + "required": false + }, + "item_id": { + "value": "ITM_12345", + "type": "string", + "required": false + }, + "tax_identifier": { + "value": "TAX_18", + "type": "string", + "required": false + }, + "invoice_note": { + "value": "Monthly subscription invoice - includes maintenance", + "type": "string", + "required": false + }, + "recurring_invoice_start_date": { + "value": "2024-01-01", + "type": "string", + "required": false + }, + "recurring_invoice_end_date": { + "value": "2025-12-31", + "type": "string", + "required": false + }, + "customer_id": { + "value": "CUST_1001", + "type": "string", + "required": false + }, + "recurring_invoice_status": { + "value": "active", + "type": "string", + "required": false + }, + "filter_recurring_invoice_status": { + "value": "Status.Active", + "type": "string", + "required": false + }, + "search_text": { + "value": "INV-2025-001", + "type": "string", + "required": false + }, + "sort_by_column": { + "value": "next_payment_date", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListRetainerInvoices", + "qualifiedName": "ZohoBooksApi.ListRetainerInvoices", + "fullyQualifiedName": "ZohoBooksApi.ListRetainerInvoices@1.0.0", + "description": "List all retainer invoices with pagination.\n\nRetrieve a complete list of retainer invoices. Use this tool to access invoices with pagination support.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Specifies the column to sort retainer invoices by. Allowed values: 'customer_name', 'retainer_invoice_number', 'date', 'due_date', 'total', 'balance', 'created_time'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_invoices_by_status_or_date", + "type": "string", + "required": false, + "description": "Filter invoices by status or payment expected date. Valid values: Status.All, Status.Sent, Status.Draft, Status.OverDue, Status.Paid, Status.Void, Status.Unpaid, Status.PartiallyPaid, Status.Viewed, Date.PaymentExpectedDate.", + "enum": null, + "inferrable": true + }, + { + "name": "sorting_order", + "type": "string", + "required": false, + "description": "The order for sorting retainer invoices. Typically 'asc' for ascending or 'desc' for descending.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specifies the page number for pagination when listing retainer invoices.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + }, + { + "name": "print_pdf", + "type": "boolean", + "required": false, + "description": "Set to true to print the exported PDF of retainer invoices.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_retainer_invoices'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListRetainerInvoices", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "sort_by_column": { + "value": "date", + "type": "string", + "required": false + }, + "filter_invoices_by_status_or_date": { + "value": "Status.Sent", + "type": "string", + "required": false + }, + "sorting_order": { + "value": "desc", + "type": "string", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + }, + "print_pdf": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListSalesOrders", + "qualifiedName": "ZohoBooksApi.ListSalesOrders", + "fullyQualifiedName": "ZohoBooksApi.ListSalesOrders@1.0.0", + "description": "Retrieve a list of all sales orders.\n\nUse this tool to get a complete list of sales orders. It helps in managing and reviewing sales transactions efficiently.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization for which sales orders are to be listed.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_column", + "type": "string", + "required": false, + "description": "Column field to sort sales order results. Options: customer_name, salesorder_number, shipment_date, last_modified_time, reference_number, total, date, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "cross_field_search_text", + "type": "string", + "required": false, + "description": "A general search term for matching text across fields like sales order number, reference number, and customer name for quick identification.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_sales_order_by_status", + "type": "string", + "required": false, + "description": "Filter sales orders by status. Options: All, Open, Draft, OverDue, PartiallyInvoiced, Invoiced, Void, Closed.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_sales_order_number", + "type": "string", + "required": false, + "description": "Filter sales orders by sales order number with operators: startswith, not_in, in, or contains. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_name", + "type": "string", + "required": false, + "description": "Filter sales orders by line item name. Use matching operators like startswith, not_in, in, and contains. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_id", + "type": "string", + "required": false, + "description": "Filter sales orders by a specific line item identifier to retrieve orders containing a particular product or service.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_description", + "type": "string", + "required": false, + "description": "Filter sales orders by line item description. Supports variants like startswith, not_in, in, and contains. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_reference_number", + "type": "string", + "required": false, + "description": "Filter sales orders by external reference number using operators like `startswith`, `not_in`, `in`, and `contains`.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_name_filter", + "type": "string", + "required": false, + "description": "Filter sales orders by customer name with operators like startswith, not_in, in, and contains. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_total", + "type": "number", + "required": false, + "description": "Specify range operators to filter sales orders by total. Use total_start, total_end, total_less_than, total_greater_than, etc.", + "enum": null, + "inferrable": true + }, + { + "name": "creation_date_filter", + "type": "string", + "required": false, + "description": "Filter sales orders by creation date using operators like `date_start`, `date_end`, `date_before`, `date_after`. Format: `yyyy-mm-dd`.", + "enum": null, + "inferrable": true + }, + { + "name": "shipment_date_filter", + "type": "string", + "required": false, + "description": "Specify the shipment date filter for sales orders. Use variants such as 'shipment_date_start', 'shipment_date_end', 'shipment_date_before', and 'shipment_date_after' in 'yyyy-mm-dd' format.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_status", + "type": "string", + "required": false, + "description": "Filter sales orders by their status. Allowed values: draft, open, invoiced, partially_invoiced, void, and overdue.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_customer_id", + "type": "string", + "required": false, + "description": "Filter sales orders by specific customer ID. Retrieves orders associated with a customer for CRM and reporting.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_representative_id", + "type": "string", + "required": false, + "description": "Filter sales orders by specific sales representative ID for tracking and reporting purposes.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_ids", + "type": "string", + "required": false, + "description": "Comma-separated list of sales order IDs to filter results. Maximum length is 200 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "last_modified_time", + "type": "string", + "required": false, + "description": "Specify the last modified time of the sales order to filter results. Use the format 'yyyy-mm-dd'.", + "enum": null, + "inferrable": true + }, + { + "name": "response_format", + "type": "string", + "required": false, + "description": "Specifies the format for sales order details. Must be one of: json, csv, xml, xls, xlsx, pdf, jhtml, or html. Default is json.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_view_id", + "type": "string", + "required": false, + "description": "ID of the custom view to filter sales orders based on predefined criteria.", + "enum": null, + "inferrable": true + }, + { + "name": "deal_crm_potential_id", + "type": "integer", + "required": false, + "description": "Potential ID of a Deal in CRM. Used to filter sales orders associated with a specific deal.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number for retrieving paginated sales order results. Default is 1 for the first page.", + "enum": null, + "inferrable": true + }, + { + "name": "max_sales_orders_per_page", + "type": "integer", + "required": false, + "description": "Specify the maximum number of sales order records to return per page. Default is 200 for optimal performance and memory usage.", + "enum": null, + "inferrable": true + }, + { + "name": "enable_printing", + "type": "boolean", + "required": false, + "description": "Enable printing of the exported PDF. Use when 'accept' is set to 'pdf' and 'salesorder_ids' includes values.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_sales_orders'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListSalesOrders", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "sort_column": { + "value": "date", + "type": "string", + "required": false + }, + "cross_field_search_text": { + "value": "SO-2026", + "type": "string", + "required": false + }, + "filter_sales_order_by_status": { + "value": "Open", + "type": "string", + "required": false + }, + "filter_by_sales_order_number": { + "value": "startswith:SO-", + "type": "string", + "required": false + }, + "filter_by_item_name": { + "value": "contains:Widget", + "type": "string", + "required": false + }, + "filter_by_item_id": { + "value": "ITEM-98765", + "type": "string", + "required": false + }, + "filter_by_item_description": { + "value": "contains:replacement part", + "type": "string", + "required": false + }, + "filter_by_reference_number": { + "value": "in:REF-1001,REF-1002", + "type": "string", + "required": false + }, + "customer_name_filter": { + "value": "startswith:Acme", + "type": "string", + "required": false + }, + "filter_by_total": { + "value": "total_start:100,total_end:1000", + "type": "integer", + "required": false + }, + "creation_date_filter": { + "value": "date_start:2026-01-01,date_end:2026-01-31", + "type": "string", + "required": false + }, + "shipment_date_filter": { + "value": "shipment_date_start:2026-02-01,shipment_date_end:2026-02-10", + "type": "string", + "required": false + }, + "sales_order_status": { + "value": "open", + "type": "string", + "required": false + }, + "filter_by_customer_id": { + "value": "CUST-44321", + "type": "string", + "required": false + }, + "sales_representative_id": { + "value": "SR-202", + "type": "string", + "required": false + }, + "sales_order_ids": { + "value": "SO-1001,SO-1002,SO-1003", + "type": "string", + "required": false + }, + "last_modified_time": { + "value": "2026-02-15", + "type": "string", + "required": false + }, + "response_format": { + "value": "json", + "type": "string", + "required": false + }, + "custom_view_id": { + "value": "CV-77", + "type": "string", + "required": false + }, + "deal_crm_potential_id": { + "value": 31415, + "type": "integer", + "required": false + }, + "page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "max_sales_orders_per_page": { + "value": 100, + "type": "integer", + "required": false + }, + "enable_printing": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListSalesReceipts", + "qualifiedName": "ZohoBooksApi.ListSalesReceipts", + "fullyQualifiedName": "ZohoBooksApi.ListSalesReceipts@1.0.0", + "description": "Retrieve a list of all sales receipts.\n\nUse this tool to obtain a comprehensive list of all sales receipts. It should be called when there's a need to review or analyze sales transaction records.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to list sales receipts.", + "enum": null, + "inferrable": true + }, + { + "name": "search_receipt_by_number", + "type": "string", + "required": false, + "description": "Search for receipts using their unique number. Supports 'startswith' and 'contains' filters. Max length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_item_name", + "type": "string", + "required": false, + "description": "Search sales receipts by item name using 'startswith' or 'contains' variants. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort sales receipts by. Options: customer_name, receipt_number, date, total, created_time.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_sales_receipts_by_status", + "type": "string", + "required": false, + "description": "Filter sales receipts based on their status. Options include date ranges like 'ThisWeek', and statuses like 'Status.Draft'.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_identifier", + "type": "string", + "required": false, + "description": "Filter sales receipts by specific customer identifier. Provide the unique ID of the customer to retrieve their sales receipts.", + "enum": null, + "inferrable": true + }, + { + "name": "date_filter", + "type": "string", + "required": false, + "description": "Filter sales receipts by date using variants like date_start, date_end, date_before, and date_after. Use yyyy-mm-dd format.", + "enum": null, + "inferrable": true + }, + { + "name": "total_filter_options", + "type": "number", + "required": false, + "description": "Filter sales receipts using range operators like total_start, total_end, total_less_than, and total_greater_than. Expects a number specifying the total amount.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Specify the page number for retrieving paginated sales receipt results. Defaults to 1.", + "enum": null, + "inferrable": true + }, + { + "name": "max_records_per_page", + "type": "integer", + "required": false, + "description": "Specify the maximum number of sales receipt records to return per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_sales_receipts'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListSalesReceipts", + "parameters": { + "organization_id": { + "value": "537182900000123456", + "type": "string", + "required": true + }, + "search_receipt_by_number": { + "value": "contains:SR-2026-0001", + "type": "string", + "required": false + }, + "search_by_item_name": { + "value": "startswith:Widget", + "type": "string", + "required": false + }, + "sort_by_column": { + "value": "date", + "type": "string", + "required": false + }, + "filter_sales_receipts_by_status": { + "value": "Status.Paid", + "type": "string", + "required": false + }, + "customer_identifier": { + "value": "537182900000654321", + "type": "string", + "required": false + }, + "date_filter": { + "value": "date_start=2026-01-01&date_end=2026-01-31", + "type": "string", + "required": false + }, + "total_filter_options": { + "value": 100, + "type": "integer", + "required": false + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "max_records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListTaxes", + "qualifiedName": "ZohoBooksApi.ListTaxes", + "fullyQualifiedName": "ZohoBooksApi.ListTaxes@1.0.0", + "description": "Retrieve a list of simple and compound taxes.\n\nUse this tool to get a list of simple and compound taxes available in the system, with options for pagination.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique ID of the organization to list taxes for.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number of the tax list to retrieve. Defaults to 1 if not specified.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "The number of tax records to retrieve per page. Defaults to 200 if not specified.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_taxes'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListTaxes", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 200, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListTimeEntries", + "qualifiedName": "ZohoBooksApi.ListTimeEntries", + "fullyQualifiedName": "ZohoBooksApi.ListTimeEntries@1.0.0", + "description": "Retrieve all time entries with pagination.\n\nCall this tool to get a list of all time entries for projects, supporting pagination if needed.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. Required to retrieve time entries specific to this organization.", + "enum": null, + "inferrable": true + }, + { + "name": "start_date_for_time_entries", + "type": "string", + "required": false, + "description": "Date from which the time entries should start being fetched. Expected format is YYYY-MM-DD.", + "enum": null, + "inferrable": true + }, + { + "name": "end_date_for_time_entries", + "type": "string", + "required": false, + "description": "The end date for fetching logged time entries in YYYY-MM-DD format.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_time_entries_by", + "type": "string", + "required": false, + "description": "Filter time entries by date or status. Use values like Date.Today, Date.ThisMonth, Status.Unbilled, etc.", + "enum": null, + "inferrable": true + }, + { + "name": "project_id", + "type": "string", + "required": false, + "description": "Search for time entries by specifying the project ID.", + "enum": null, + "inferrable": true + }, + { + "name": "search_time_entries_by_user_id", + "type": "string", + "required": false, + "description": "Search and filter time entries based on a specific user's ID. Provide the ID as a string.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_time_entries_by", + "type": "string", + "required": false, + "description": "Sort time entries by project name, task name, user name, log date, timer start time, or customer name.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "Page number to retrieve time entries from, starting at 1 by default.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Defaults to 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_time_entries'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListTimeEntries", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "start_date_for_time_entries": { + "value": "2026-01-01", + "type": "string", + "required": false + }, + "end_date_for_time_entries": { + "value": "2026-01-31", + "type": "string", + "required": false + }, + "filter_time_entries_by": { + "value": "Date.ThisMonth", + "type": "string", + "required": false + }, + "project_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "search_time_entries_by_user_id": { + "value": "55555", + "type": "string", + "required": false + }, + "sort_time_entries_by": { + "value": "log_date", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListVendorCreditRefunds", + "qualifiedName": "ZohoBooksApi.ListVendorCreditRefunds", + "fullyQualifiedName": "ZohoBooksApi.ListVendorCreditRefunds@1.0.0", + "description": "Retrieve all refunds for a specified vendor credit.\n\nUse this tool to get a list of all refunds associated with a particular vendor credit by providing the vendor credit ID.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "Unique string ID of the organization for which refunds are to be listed.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_id", + "type": "string", + "required": true, + "description": "The unique identifier for a specific vendor credit whose refunds are to be listed.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number for pagination, specifying which set of results to retrieve. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of refunds to return per page for pagination. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_vendor_credit_refunds'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListVendorCreditRefunds", + "parameters": { + "organization_identifier": { + "value": "org_123456789", + "type": "string", + "required": true + }, + "vendor_credit_id": { + "value": "VC-2026-0001", + "type": "string", + "required": true + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListVendorCredits", + "qualifiedName": "ZohoBooksApi.ListVendorCredits", + "fullyQualifiedName": "ZohoBooksApi.ListVendorCredits@1.0.0", + "description": "Retrieve and filter vendor credits from Zoho Books.\n\nRetrieve a paginated list of vendor credits using various filtering, sorting, and search capabilities, such as by date, status, amount, vendor details, items, taxes, and custom fields.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_number_filter", + "type": "string", + "required": false, + "description": "Filter vendor credits by specific vendor credit number. Supports partial matching with options like 'startswith' and 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_creation_date", + "type": "string", + "required": false, + "description": "Filter vendor credits by creation date using yyyy-mm-dd format. Supports date_start, date_end, date_before, and date_after for range filtering.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_status", + "type": "string", + "required": false, + "description": "Filter vendor credits by their current status. Allowed values: 'open', 'closed', 'void', or 'draft'.", + "enum": null, + "inferrable": true + }, + { + "name": "total_amount_filter", + "type": "string", + "required": false, + "description": "Filter vendor credits by total amount. Use variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than, total_greater_equals.", + "enum": null, + "inferrable": true + }, + { + "name": "reference_number_filter", + "type": "string", + "required": false, + "description": "Filter vendor credits by their reference number, supporting 'startswith' and 'contains' for partial matches.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_vendor_name", + "type": "string", + "required": false, + "description": "Filter vendor credits by vendor name, supporting partial matches with 'startswith' and 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_name", + "type": "string", + "required": false, + "description": "Filter vendor credits by item name. Use 'startswith:' or 'contains:' as prefixes for partial matching.", + "enum": null, + "inferrable": true + }, + { + "name": "item_description_filter", + "type": "string", + "required": false, + "description": "Filter vendor credits by item description. Supports partial matching with 'startswith' and 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_notes_content", + "type": "string", + "required": false, + "description": "Filter vendor credits by notes content. Use partial matching with variants: notes_startswith or notes_contains.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_custom_field", + "type": "string", + "required": false, + "description": "Filter vendor credits by custom field values. Use 'custom_field_startswith' or 'custom_field_contains' for partial matching.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_last_modified_time", + "type": "string", + "required": false, + "description": "Filter vendor credits by last modified time using ISO 8601 format (yyyy-mm-ddThh:mm:ss-hh:mm).", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_customer_id", + "type": "integer", + "required": false, + "description": "Filter vendor credits by a specific customer ID to find credits associated with that customer. Retrieve customer IDs from the contacts API.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_line_item_id", + "type": "integer", + "required": false, + "description": "Filter vendor credits by a specific line item ID to find credits containing the item.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_item_id", + "type": "integer", + "required": false, + "description": "Filter vendor credits by a specific item ID. Use this to find vendor credits containing the item. Retrieve item IDs from the items API.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_tax_id", + "type": "integer", + "required": false, + "description": "Filter vendor credits by specific tax ID to find credits with that tax applied. Tax IDs are retrieved from the taxes API.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_status", + "type": "string", + "required": false, + "description": "Filter vendor credits by status using predefined values: Status.All, Status.Open, Status.Draft, Status.Closed, Status.Void.", + "enum": null, + "inferrable": true + }, + { + "name": "search_text", + "type": "string", + "required": false, + "description": "Enter text to search vendor credits by credit number, vendor name, and reference number.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Specify which column to sort vendor credits by. Options: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, reference_number.", + "enum": null, + "inferrable": true + }, + { + "name": "pagination_page_number", + "type": "integer", + "required": false, + "description": "Specify the page number to retrieve results from for pagination. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "pagination_records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of vendor credit records to return per page. The default value is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_vendor_credits'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListVendorCredits", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "vendor_credit_number_filter": { + "value": "contains:VC-2026", + "type": "string", + "required": false + }, + "filter_by_creation_date": { + "value": "date_start:2025-01-01,date_end:2025-03-31", + "type": "string", + "required": false + }, + "vendor_credit_status": { + "value": "open", + "type": "string", + "required": false + }, + "total_amount_filter": { + "value": "total_greater_than:1000.00", + "type": "string", + "required": false + }, + "reference_number_filter": { + "value": "startswith:REF-", + "type": "string", + "required": false + }, + "filter_by_vendor_name": { + "value": "contains:Acme Corp", + "type": "string", + "required": false + }, + "filter_by_item_name": { + "value": "startswith:Widget", + "type": "string", + "required": false + }, + "item_description_filter": { + "value": "contains:replacement part", + "type": "string", + "required": false + }, + "filter_by_notes_content": { + "value": "notes_contains:credit for returned goods", + "type": "string", + "required": false + }, + "filter_by_custom_field": { + "value": "custom_field_contains:ProjectX", + "type": "string", + "required": false + }, + "filter_by_last_modified_time": { + "value": "2025-02-15T10:30:00-05:00", + "type": "string", + "required": false + }, + "filter_by_customer_id": { + "value": 98765, + "type": "integer", + "required": false + }, + "filter_by_line_item_id": { + "value": 54321, + "type": "integer", + "required": false + }, + "filter_by_item_id": { + "value": 111222, + "type": "integer", + "required": false + }, + "filter_by_tax_id": { + "value": 333, + "type": "integer", + "required": false + }, + "filter_by_status": { + "value": "Status.Open", + "type": "string", + "required": false + }, + "search_text": { + "value": "ACME VC-2026", + "type": "string", + "required": false + }, + "sort_by_column": { + "value": "date", + "type": "string", + "required": false + }, + "pagination_page_number": { + "value": 2, + "type": "integer", + "required": false + }, + "pagination_records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListVendorPaymentRefunds", + "qualifiedName": "ZohoBooksApi.ListVendorPaymentRefunds", + "fullyQualifiedName": "ZohoBooksApi.ListVendorPaymentRefunds@1.0.0", + "description": "List all refunds for a vendor payment.\n\nRetrieve a list of all refunds associated with a specific vendor payment in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization in Zoho Books to list the refunds for. This should be a unique identifier as specified by Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor payment to fetch refunds for.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number", + "type": "integer", + "required": false, + "description": "Page number to be fetched, starting from 1. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_vendor_payment_refunds'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListVendorPaymentRefunds", + "parameters": { + "organization_id": { + "value": "6000000001", + "type": "string", + "required": true + }, + "payment_identifier": { + "value": "VPAY-2026-00042", + "type": "string", + "required": true + }, + "page_number": { + "value": 1, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 50, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ListVendorPayments", + "qualifiedName": "ZohoBooksApi.ListVendorPayments", + "fullyQualifiedName": "ZohoBooksApi.ListVendorPayments@1.0.0", + "description": "Fetch all payments made to vendors.\n\nUse this tool to retrieve a list of all vendor payments. It helps manage and track financial transactions with vendors.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization whose vendor payments you want to list.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_name_query", + "type": "string", + "required": false, + "description": "Search payments by vendor name using parameters like startswith or contains.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_reference_number", + "type": "string", + "required": false, + "description": "Search payments using the reference number. Supports variants: 'startswith' and 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_number_search", + "type": "string", + "required": false, + "description": "Search payments using the payment number with options for exact match, starts with, or contains.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_date_filter", + "type": "string", + "required": false, + "description": "Specify the date for payment filtering. Use variants like 'date_start', 'date_end', 'date_before', and 'date_after'.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_amount_filter", + "type": "number", + "required": false, + "description": "Filter payments by amount paid to the vendor. Use variants: 'less_than', 'less_equals', 'greater_than', 'greater_equals' to specify the condition.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_payment_mode", + "type": "string", + "required": false, + "description": "Search payments by payment mode using variants like 'startswith' or 'contains'.", + "enum": null, + "inferrable": true + }, + { + "name": "search_with_payment_notes", + "type": "string", + "required": false, + "description": "Search payments using notes with options like startswith or contains.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_id", + "type": "string", + "required": false, + "description": "The unique ID of the vendor, used to search payments by vendor ID.", + "enum": null, + "inferrable": true + }, + { + "name": "last_modified_time_filter", + "type": "string", + "required": false, + "description": "Filter vendor payments by their last modified time. Use a date-time string in ISO 8601 format.", + "enum": null, + "inferrable": true + }, + { + "name": "search_payments_by_bill_id", + "type": "string", + "required": false, + "description": "Search payments using the specific Bill ID associated with the transaction.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_description", + "type": "string", + "required": false, + "description": "Search payments by description. Use 'description_startswith' or 'description_contains' variants for specific matches.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_payment_mode", + "type": "string", + "required": false, + "description": "Filter payments by payment mode. Options include All, Check, Cash, BankTransfer, Paypal, CreditCard, GoogleCheckout, Credit, Authorizenet, BankRemittance, Payflowpro, and Others.", + "enum": null, + "inferrable": true + }, + { + "name": "search_text", + "type": "string", + "required": false, + "description": "Search for payments using reference number, vendor name, or payment description.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_payments_by", + "type": "string", + "required": false, + "description": "Sort payments by column. Options: vendor_name, date, reference_number, amount, balance.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "Specify the page number of results to fetch. Default is 1.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "Specify the number of records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_vendor_payments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ListVendorPayments", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "vendor_name_query": { + "value": "startswith:Acme", + "type": "string", + "required": false + }, + "search_by_reference_number": { + "value": "contains:REF-2024", + "type": "string", + "required": false + }, + "payment_number_search": { + "value": "startswith:PMT-2024", + "type": "string", + "required": false + }, + "payment_date_filter": { + "value": "date_start:2024-01-01;date_end:2024-12-31", + "type": "string", + "required": false + }, + "payment_amount_filter": { + "value": 1500.75, + "type": "integer", + "required": false + }, + "search_by_payment_mode": { + "value": "contains:BankTransfer", + "type": "string", + "required": false + }, + "search_with_payment_notes": { + "value": "contains:retainer", + "type": "string", + "required": false + }, + "vendor_id": { + "value": "987654321", + "type": "string", + "required": false + }, + "last_modified_time_filter": { + "value": "2025-02-15T10:30:00Z", + "type": "string", + "required": false + }, + "search_payments_by_bill_id": { + "value": "BILL-2024-0001", + "type": "string", + "required": false + }, + "search_by_description": { + "value": "description_contains:service fee", + "type": "string", + "required": false + }, + "filter_payment_mode": { + "value": "BankTransfer", + "type": "string", + "required": false + }, + "search_text": { + "value": "Acme retainer invoice", + "type": "string", + "required": false + }, + "sort_payments_by": { + "value": "date", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "LogTimeEntries", + "qualifiedName": "ZohoBooksApi.LogTimeEntries", + "fullyQualifiedName": "ZohoBooksApi.LogTimeEntries@1.0.0", + "description": "Log time entries in Zoho Books.\n\n Use this tool to log time entries for projects in Zoho Books. It should be called when you need to track time spent on project tasks.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. Required for logging time entries. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_time_entries'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.LogTimeEntries", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"time_entries\":[{\"user_id\":\"1122334455\",\"project_id\":\"9988776655\",\"task_id\":\"5544332211\",\"date\":\"2026-02-18\",\"hours\":4.25,\"notes\":\"Implemented API integration and wrote unit tests\",\"billable\":true,\"bill_rate\":85.00}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkBillOpen", + "qualifiedName": "ZohoBooksApi.MarkBillOpen", + "fullyQualifiedName": "ZohoBooksApi.MarkBillOpen@1.0.0", + "description": "Mark a void bill as open in Zoho Books.\n\nUse this tool to change the status of a void bill to open in Zoho Books. Call this tool when you need to reactivate a bill that was previously voided.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization in Zoho Books to mark the bill as open.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bill to mark as open in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_bill_open'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkBillOpen", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "bill_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkBillVoid", + "qualifiedName": "ZohoBooksApi.MarkBillVoid", + "fullyQualifiedName": "ZohoBooksApi.MarkBillVoid@1.0.0", + "description": "Mark a bill as void in Zoho Books.\n\nUse this tool to update the status of a bill to void in Zoho Books when you need to cancel or invalidate a bill.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Used to specify which organization's bill should be marked as void.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the bill to mark as void in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_bill_void'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkBillVoid", + "parameters": { + "organization_id": { + "value": "6001234567890123456", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "BILL-2026-00123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkContactInactive", + "qualifiedName": "ZohoBooksApi.MarkContactInactive", + "fullyQualifiedName": "ZohoBooksApi.MarkContactInactive@1.0.0", + "description": "Mark a Zoho Books contact as inactive.\n\nUse this tool to mark a contact as inactive in Zoho Books, allowing for better organization and active contact management.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the contact in Zoho Books. Required to specify which contact to mark as inactive.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_contact_inactive'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkContactInactive", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "contact_identifier": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkCreditNoteOpen", + "qualifiedName": "ZohoBooksApi.MarkCreditNoteOpen", + "fullyQualifiedName": "ZohoBooksApi.MarkCreditNoteOpen@1.0.0", + "description": "Convert a draft credit note to open status in Zoho Books.\n\nUse this tool to change the status of a credit note from Draft to Open in Zoho Books. This is helpful when you need to activate a credit note that has been prepared and saved as a draft.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to be converted to Open status.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_credit_note_open'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkCreditNoteOpen", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "123456789012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkCreditNoteVoid", + "qualifiedName": "ZohoBooksApi.MarkCreditNoteVoid", + "fullyQualifiedName": "ZohoBooksApi.MarkCreditNoteVoid@1.0.0", + "description": "Marks a credit note as void in Zoho Books.\n\nUse this tool to mark a specific credit note as void, altering its status in the Zoho Books system.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books to mark the credit note as void.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to mark as void in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_credit_note_void'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkCreditNoteVoid", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "credit_note_identifier": { + "value": "CN-2026-00042", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkEstimateAsSent", + "qualifiedName": "ZohoBooksApi.MarkEstimateAsSent", + "fullyQualifiedName": "ZohoBooksApi.MarkEstimateAsSent@1.0.0", + "description": "Mark a draft estimate as sent.\n\nUse this tool to mark a draft estimate in Zoho Books as sent. Call this when you need to update the status of an estimate to indicate it has been sent to a client.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to identify which organization's estimate to mark as sent.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the estimate to be marked as sent.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_estimate_sent'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkEstimateAsSent", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "estimate_identifier": { + "value": "EST-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkFixedAssetAsDraft", + "qualifiedName": "ZohoBooksApi.MarkFixedAssetAsDraft", + "fullyQualifiedName": "ZohoBooksApi.MarkFixedAssetAsDraft@1.0.0", + "description": "Set a fixed asset status to draft in Zoho Books.\n\nUse this tool to change the status of a specific fixed asset to draft in Zoho Books. This is useful when revising asset details or temporarily removing it from active use.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the fixed asset status will be changed.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the fixed asset in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_fixed_asset_draft'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkFixedAssetAsDraft", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "fixed_asset_identifier": { + "value": "FA-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkInvoiceAsDraft", + "qualifiedName": "ZohoBooksApi.MarkInvoiceAsDraft", + "fullyQualifiedName": "ZohoBooksApi.MarkInvoiceAsDraft@1.0.0", + "description": "Mark a voided invoice as draft in Zoho Books.\n\nThis tool is used to change the status of a voided invoice to draft in Zoho Books. It should be called when there is a need to edit or resubmit an invoice previously marked as void.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to be marked as draft.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_invoice_draft'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkInvoiceAsDraft", + "parameters": { + "organization_identifier": { + "value": "60000012345", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-1001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkInvoiceAsSent", + "qualifiedName": "ZohoBooksApi.MarkInvoiceAsSent", + "fullyQualifiedName": "ZohoBooksApi.MarkInvoiceAsSent@1.0.0", + "description": "Mark a draft invoice as sent.\n\nUse this tool to change the status of a draft invoice to 'sent'. Ideal for when an invoice is ready to be sent out to a client.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique identifier of the organization for which the invoice will be marked as sent.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to be marked as sent.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_invoice_sent'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkInvoiceAsSent", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "invoice_unique_identifier": { + "value": "INV-2026-00042", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkInvoiceSent", + "qualifiedName": "ZohoBooksApi.MarkInvoiceSent", + "fullyQualifiedName": "ZohoBooksApi.MarkInvoiceSent@1.0.0", + "description": "Marks a draft retainer invoice as sent.\n\nUse this tool to update the status of a draft retainer invoice to 'sent' in Zoho Books. This is useful when you need to track the invoice as having been dispatched to a client.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This ID is necessary to specify which organization's invoice should be marked as sent.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice to be marked as sent.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_retainer_invoice_sent'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkInvoiceSent", + "parameters": { + "organization_id": { + "value": "6000000000000123456", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "9000000000000456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkItemInactive", + "qualifiedName": "ZohoBooksApi.MarkItemInactive", + "fullyQualifiedName": "ZohoBooksApi.MarkItemInactive@1.0.0", + "description": "Mark an item as inactive in Zoho Books.\n\nUse this tool to mark an active item as inactive in Zoho Books. Useful for managing inventory and item status.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required for specifying which organization's item to mark as inactive.", + "enum": null, + "inferrable": true + }, + { + "name": "item_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the item to be marked inactive.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_item_inactive'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkItemInactive", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "item_identifier": { + "value": "1000000000001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkLocationInactive", + "qualifiedName": "ZohoBooksApi.MarkLocationInactive", + "fullyQualifiedName": "ZohoBooksApi.MarkLocationInactive@1.0.0", + "description": "Marks a specific location as inactive in Zoho Books.\n\nUse this tool to set a location's status to inactive within Zoho Books. This is helpful for managing locations that are no longer in use.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books to mark the location as inactive.", + "enum": null, + "inferrable": true + }, + { + "name": "location_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the location to be marked as inactive in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_location_inactive'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkLocationInactive", + "parameters": { + "organization_id": { + "value": "672345678", + "type": "string", + "required": true + }, + "location_identifier": { + "value": "LOC-98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkPrimaryContactPerson", + "qualifiedName": "ZohoBooksApi.MarkPrimaryContactPerson", + "fullyQualifiedName": "ZohoBooksApi.MarkPrimaryContactPerson@1.0.0", + "description": "Mark a contact person as primary for a contact.\n\nUse this tool to designate a specific contact person as the primary contact for a particular contact. Useful for managing contact hierarchies within an organization.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the organization. This is required to specify which organization's contact is being updated.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_person_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the contact person to be marked as primary.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_contact_person_primary'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkPrimaryContactPerson", + "parameters": { + "organization_identifier": { + "value": "org_987654321", + "type": "string", + "required": true + }, + "contact_person_identifier": { + "value": "cp_123456789", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkPurchaseOrderBilled", + "qualifiedName": "ZohoBooksApi.MarkPurchaseOrderBilled", + "fullyQualifiedName": "ZohoBooksApi.MarkPurchaseOrderBilled@1.0.0", + "description": "Mark a purchase order as billed in Zoho Books.\n\nUse this tool to update the status of a purchase order to 'billed' in Zoho Books. This is useful when a purchase order has been fulfilled and needs to be recorded as billed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. Required to perform actions within the specified organization.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the purchase order to be marked as billed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_purchase_order_billed'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkPurchaseOrderBilled", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkRetainerInvoiceAsDraft", + "qualifiedName": "ZohoBooksApi.MarkRetainerInvoiceAsDraft", + "fullyQualifiedName": "ZohoBooksApi.MarkRetainerInvoiceAsDraft@1.0.0", + "description": "Mark a voided retainer invoice as draft.\n\nUse this tool to change the status of a voided retainer invoice back to draft. This is useful when you need to reuse or edit a voided invoice within Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice to be marked as draft.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_retainer_invoice_draft'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkRetainerInvoiceAsDraft", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkSalesOrderAsVoid", + "qualifiedName": "ZohoBooksApi.MarkSalesOrderAsVoid", + "fullyQualifiedName": "ZohoBooksApi.MarkSalesOrderAsVoid@1.0.0", + "description": "Mark a sales order as void in Zoho Books.\n\n Use this tool to transition a specified sales order to a void status, effectively canceling it within Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": false, + "description": "Unique identifier for the specific sales order to be marked as void. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_sales_order_as_void'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkSalesOrderAsVoid", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "600123456789", + "type": "string", + "required": false + }, + "sales_order_id": { + "value": "SO-2026-000123", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"status\":\"void\",\"reason\":\"Customer requested cancellation\",\"void_date\":\"2026-02-19\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MarkVendorCreditVoid", + "qualifiedName": "ZohoBooksApi.MarkVendorCreditVoid", + "fullyQualifiedName": "ZohoBooksApi.MarkVendorCreditVoid@1.0.0", + "description": "Mark an existing vendor credit as void in Zoho Books.\n\nUse this tool to mark a specific vendor credit as void. Typically called when you need to invalidate a previously issued vendor credit in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor credit to be marked as void.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_vendor_credit_void'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MarkVendorCreditVoid", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "vendor_credit_identifier": { + "value": "VC-001234", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "MatchBankTransaction", + "qualifiedName": "ZohoBooksApi.MatchBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.MatchBankTransaction@1.0.0", + "description": "Match an uncategorized bank transaction with an existing one.\n\n Use this tool to match an uncategorized transaction with an existing transaction in Zoho Books, ensuring proper categorization and reconciliation.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": false, + "description": "Unique identifier of the bank transaction to be matched. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "account_id", + "type": "string", + "required": false, + "description": "The mandatory Account ID for listing transactions to match. This is required to specify the bank account in Zoho Books. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'match_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.MatchBankTransaction", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60012345678", + "type": "string", + "required": false + }, + "bank_transaction_id": { + "value": "BTX_000123456", + "type": "string", + "required": false + }, + "account_id": { + "value": "ACCT_987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"matched_transaction_id\":\"TXN_555666\",\"match_amount\":150.75,\"transaction_date\":\"2026-02-01\",\"notes\":\"Matched through reconciliation API\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ModifyInvoice", + "qualifiedName": "ZohoBooksApi.ModifyInvoice", + "fullyQualifiedName": "ZohoBooksApi.ModifyInvoice@1.0.0", + "description": "Update an existing invoice in Zoho Books.\n\n This tool updates the information of an existing retainer invoice in Zoho Books. Use it when you need to modify invoice details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization within Zoho Books to which the retainer invoice belongs. This is required to ensure the update is applied to the correct entity. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": false, + "description": "Unique identifier of the retainer invoice to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_retainer_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ModifyInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "9876543210", + "type": "string", + "required": false + }, + "retainer_invoice_id": { + "value": "RI12345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"retainer_invoice\":{\"customer_id\":\"1234567890\",\"date\":\"2026-02-01\",\"reference_number\":\"RI-2026-002\",\"line_items\":[{\"description\":\"Consulting services - February\",\"item_id\":\"987654321\",\"quantity\":10,\"rate\":150.0,\"tax_id\":\"1111111\"}],\"notes\":\"Updated retainer invoice after scope change\",\"custom_fields\":[{\"label\":\"Project Code\",\"value\":\"PRJ-2042\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ModifyInvoiceAddress", + "qualifiedName": "ZohoBooksApi.ModifyInvoiceAddress", + "fullyQualifiedName": "ZohoBooksApi.ModifyInvoiceAddress@1.0.0", + "description": "Update the billing address for a specific invoice.\n\n Use this tool to update the billing address for a particular invoice in Zoho Books. It modifies the address details for a specified invoice.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique string ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the invoice to update the billing address. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_invoice_billing_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ModifyInvoiceAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": false + }, + "invoice_identifier": { + "value": "INV-1001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"billing_address\":{\"attention\":\"John Doe\",\"address\":\"123 Elm St\",\"city\":\"Springfield\",\"state\":\"IL\",\"zip\":\"62704\",\"country\":\"USA\",\"phone\":\"+1-555-123-4567\",\"fax\":\"+1-555-765-4321\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ModifyRecurringExpense", + "qualifiedName": "ZohoBooksApi.ModifyRecurringExpense", + "fullyQualifiedName": "ZohoBooksApi.ModifyRecurringExpense@1.0.0", + "description": "Update a recurring expense in Zoho Books.\n\n Use this tool to modify details of an existing recurring expense in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Provide the ID of the organization for which the recurring expense needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the recurring expense to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_recurring_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ModifyRecurringExpense", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "recurring_expense_identifier": { + "value": "REX-87654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"recurring_expense\":{\"vendor_id\":\"123456789\",\"recurrence_name\":\"Monthly Office Supplies\",\"start_date\":\"2026-03-01\",\"end_date\":\"2026-12-31\",\"frequency\":\"monthly\",\"repeat_interval\":1,\"next_date\":\"2026-04-01\",\"currency_code\":\"USD\",\"exchange_rate\":1,\"line_items\":[{\"item_id\":\"987654321\",\"description\":\"Printer paper\",\"rate\":25.0,\"quantity\":2,\"account_id\":\"111222333\"}],\"notes\":\"Auto-charged monthly for supplies\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ModifyRetainerInvoiceTemplate", + "qualifiedName": "ZohoBooksApi.ModifyRetainerInvoiceTemplate", + "fullyQualifiedName": "ZohoBooksApi.ModifyRetainerInvoiceTemplate@1.0.0", + "description": "Update the PDF template for a retainer invoice.\n\nUse this tool to update the PDF template associated with a specific retainer invoice by providing the retainer invoice ID and the template ID. It should be called when you need to change the appearance or format of a retainer invoice.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The ID of the organization to update the retainer invoice template for. It should be a string representing the organization's unique identifier in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier for the retainer invoice to update the PDF template.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_template_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice template.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_retainer_invoice_template'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ModifyRetainerInvoiceTemplate", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "RI-2026-000123", + "type": "string", + "required": true + }, + "retainer_invoice_template_id": { + "value": "TEMPLATE-98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "OpenPurchaseOrder", + "qualifiedName": "ZohoBooksApi.OpenPurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.OpenPurchaseOrder@1.0.0", + "description": "Mark a draft purchase order as open.\n\nUse this tool to change the status of a draft purchase order to 'open' in Zoho Books, making it active and processable. Call this when you need to activate draft purchase orders.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books whose purchase order status needs to be changed.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the purchase order to be marked as open.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_purchase_order_open'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.OpenPurchaseOrder", + "parameters": { + "organization_id": { + "value": "847392847392", + "type": "string", + "required": true + }, + "purchase_order_identifier": { + "value": "PO-2026-00042", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "OpenSalesOrder", + "qualifiedName": "ZohoBooksApi.OpenSalesOrder", + "fullyQualifiedName": "ZohoBooksApi.OpenSalesOrder@1.0.0", + "description": "Mark a draft sales order as open in Zoho Books.\n\nUse this tool to change the status of a draft sales order to open in Zoho Books. This is useful when a sales order needs to be moved from draft status to active status, indicating it's ready for further processing.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization where the sales order is to be marked as open.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order to mark as open in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_sales_order_as_open'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.OpenSalesOrder", + "parameters": { + "organization_id": { + "value": "37740000000012345", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "37740000000123456", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "OpenVendorCreditStatus", + "qualifiedName": "ZohoBooksApi.OpenVendorCreditStatus", + "fullyQualifiedName": "ZohoBooksApi.OpenVendorCreditStatus@1.0.0", + "description": "Change a vendor credit status to open in Zoho Books.\n\nUse this tool to update the status of an existing vendor credit to 'open' in Zoho Books. This is useful when you need to reactivate a vendor credit for further processing or adjustments.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books whose vendor credit status needs to be marked as open.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the vendor credit to be marked as open.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_vendor_credit_open'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.OpenVendorCreditStatus", + "parameters": { + "organization_id": { + "value": "44567890123456", + "type": "string", + "required": true + }, + "vendor_credit_identifier": { + "value": "VC-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "PostProjectComment", + "qualifiedName": "ZohoBooksApi.PostProjectComment", + "fullyQualifiedName": "ZohoBooksApi.PostProjectComment@1.0.0", + "description": "Post a comment to a specified project.\n\n This tool posts a comment to a specific project in Zoho Books. Use it when you need to add a comment or note to a project for tracking or communication purposes.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique identifier of the organization for which the comment is being posted. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "project_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the project in Zoho Books. Required to specify the target project for adding a comment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'add_project_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.PostProjectComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "53000123456", + "type": "string", + "required": false + }, + "project_unique_identifier": { + "value": "proj_3fa85f64-5717-4562-b3fc-2c963f66afa6", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\": {\"content\": \"Completed initial design review. Feedback has been incorporated and we're ready for client review.\", \"is_private\": false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "PublishDraftJournal", + "qualifiedName": "ZohoBooksApi.PublishDraftJournal", + "fullyQualifiedName": "ZohoBooksApi.PublishDraftJournal@1.0.0", + "description": "Mark a draft journal as published in Zoho Books.\n\nUse this tool to change the status of a draft journal entry to published within Zoho Books. This can be helpful when a draft is ready for final publication.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books. Required to identify the organization where the journal resides.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the journal to be marked as published.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_journal_published'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.PublishDraftJournal", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "journal_identifier": { + "value": "2000000000000012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RefundCreditNote", + "qualifiedName": "ZohoBooksApi.RefundCreditNote", + "fullyQualifiedName": "ZohoBooksApi.RefundCreditNote@1.0.0", + "description": "Process a credit note refund in Zoho Books.\n\n Use this tool to issue a refund for a specified credit note in Zoho Books. It is triggered when there's a need to reimburse the amount associated with a credit note.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization in Zoho Books for which the credit note refund is being processed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": false, + "description": "Unique identifier of the credit note to refund. This is required to specify which credit note the refund applies to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_credit_note_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RefundCreditNote", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "credit_note_id": { + "value": "CN-2025-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"refund_date\":\"2025-02-15\",\"amount\":150.00,\"refund_account_id\":\"987654321\",\"reference_number\":\"REF-20250215-01\",\"notes\":\"Refund for overpayment\",\"mode_of_refund\":\"bank_transfer\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RefundExcessPayment", + "qualifiedName": "ZohoBooksApi.RefundExcessPayment", + "fullyQualifiedName": "ZohoBooksApi.RefundExcessPayment@1.0.0", + "description": "Refund the excess amount paid by a customer.\n\n Use this tool to refund any excess amount received from a customer payment. It is called when there is a need to process a refund for overpaid amounts in customer transactions.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization to process the refund under. Ensure this matches the ID in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_payment_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the customer's payment to be refunded. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'create_customer_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RefundExcessPayment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "customer_payment_identifier": { + "value": "pay_ABC123456", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"refund\":{\"amount\":100.00,\"date\":\"2026-02-19\",\"payment_method\":\"bank_transfer\",\"account_id\":\"9876543210\",\"notes\":\"Refund of overpayment\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RefundVendorCredit", + "qualifiedName": "ZohoBooksApi.RefundVendorCredit", + "fullyQualifiedName": "ZohoBooksApi.RefundVendorCredit@1.0.0", + "description": "Process a refund for vendor credit.\n\n Use this tool to initiate a refund for a specified vendor credit. Suitable when needing to refund amounts credited to a vendor.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization for which the vendor credit refund is being processed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the vendor credit that needs to be refunded. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'refund_vendor_credit'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RefundVendorCredit", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "vendor_credit_identifier": { + "value": "VC-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_credit_refund\":{\"refund_account_id\":\"1234567890123456789\",\"refund_mode\":\"bank_transfer\",\"amount\":150.00,\"date\":\"2026-02-15\",\"reference_number\":\"RC-2026-0001\",\"notes\":\"Refund for vendor credit applied in error\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RefundVendorOverpayment", + "qualifiedName": "ZohoBooksApi.RefundVendorOverpayment", + "fullyQualifiedName": "ZohoBooksApi.RefundVendorOverpayment@1.0.0", + "description": "Refund excess amount paid to a vendor.\n\n Use this tool to process a refund for any excess amount that has been paid to a vendor. This should be called when an overpayment needs to be returned to the vendor.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID representing the organization. Required to refund vendor overpayment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_payment_id", + "type": "string", + "required": false, + "description": "Unique identifier for the vendor payment to be refunded. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'refund_excess_vendor_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RefundVendorOverpayment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": false + }, + "vendor_payment_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"refund_date\":\"2026-02-18\",\"amount\":150.00,\"currency_code\":\"USD\",\"account_id\":\"401234567890\",\"payment_mode\":\"bank_transfer\",\"reference_number\":\"REF-20260218-001\",\"description\":\"Refund of vendor overpayment for Invoice INV-1001\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RejectPurchaseOrder", + "qualifiedName": "ZohoBooksApi.RejectPurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.RejectPurchaseOrder@1.0.0", + "description": "Reject a specific purchase order in Zoho Books.\n\nThis tool should be called when you need to reject a purchase order in the Zoho Books system. It confirms the rejection of the specified purchase order.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "A unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "The ID of the purchase order to be rejected in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'reject_purchase_orders'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RejectPurchaseOrder", + "parameters": { + "organization_identifier": { + "value": "600000000000123", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RemindCustomerInvoicePayment", + "qualifiedName": "ZohoBooksApi.RemindCustomerInvoicePayment", + "fullyQualifiedName": "ZohoBooksApi.RemindCustomerInvoicePayment@1.0.0", + "description": "Remind customers of unpaid invoices by email.\n\n Use this tool to notify customers about unpaid invoices through email. It works for invoices that are open or overdue.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. It specifies which organization's invoice reminders to manage. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the invoice to send a payment reminder for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "email_attachments", + "type": "string", + "required": false, + "description": "Comma-separated list of file URLs to attach to the reminder email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "include_customer_statement_pdf", + "type": "boolean", + "required": false, + "description": "Set to true to include a customer statement PDF with the email reminder. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'remind_customer_for_invoice_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RemindCustomerInvoicePayment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "invoice_identifier": { + "value": "1234567890", + "type": "string", + "required": false + }, + "email_attachments": { + "value": "https://example.com/terms.pdf,https://example.com/late_fee_policy.pdf", + "type": "string", + "required": false + }, + "include_customer_statement_pdf": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"subject\":\"Payment reminder for Invoice 1234567890\",\"message\":\"Hello,\\nThis is a friendly reminder that invoice #1234567890 is overdue. Please make payment within 7 days to avoid late fees.\\nRegards,\\nAcme Corp\",\"send_copy_to_merchant\":false}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RemoveCurrency", + "qualifiedName": "ZohoBooksApi.RemoveCurrency", + "fullyQualifiedName": "ZohoBooksApi.RemoveCurrency@1.0.0", + "description": "Remove a specific currency from the system.\n\nThis tool deletes a currency. It should be used when a currency that is no longer needed should be removed, as long as it is not associated with any transactions.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID representing the organization for which the currency deletion is requested.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the currency to be deleted.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_currency'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RemoveCurrency", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "currency_identifier": { + "value": "EUR", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RemoveInvoiceCredit", + "qualifiedName": "ZohoBooksApi.RemoveInvoiceCredit", + "fullyQualifiedName": "ZohoBooksApi.RemoveInvoiceCredit@1.0.0", + "description": "Remove a specific credit applied to an invoice.\n\nUse this tool to delete a particular credit that has been applied to an invoice when adjustments are needed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization from which the credit is being removed.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the invoice to remove a credit from.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note invoice to be removed from the invoice.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_invoice_applied_credit'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RemoveInvoiceCredit", + "parameters": { + "organization_id": { + "value": "6001234567890", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + }, + "credit_note_invoice_id": { + "value": "CN-2026-0002", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RemoveUserFromOrganization", + "qualifiedName": "ZohoBooksApi.RemoveUserFromOrganization", + "fullyQualifiedName": "ZohoBooksApi.RemoveUserFromOrganization@1.0.0", + "description": "Delete a user from the organization.\n\nThis tool removes a specified user from the organization in Zoho Books. It should be called when there is a need to delete a user's access or association with the organization.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization from which the user will be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "user_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the user to be deleted from the organization.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RemoveUserFromOrganization", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "user_unique_identifier": { + "value": "a1b2c3d4e5f6", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RemoveUserFromProject", + "qualifiedName": "ZohoBooksApi.RemoveUserFromProject", + "fullyQualifiedName": "ZohoBooksApi.RemoveUserFromProject@1.0.0", + "description": "Remove a user from a specific project in Zoho Books.\n\nThis tool is used to remove a user from a project within Zoho Books. Call this tool when you need to manage project participants by deleting a user's access to a particular project.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the project from which the user will be removed.", + "enum": null, + "inferrable": true + }, + { + "name": "user_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the user to be removed from the project.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_project_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RemoveUserFromProject", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "project_identifier": { + "value": "proj_98765", + "type": "string", + "required": true + }, + "user_identifier": { + "value": "user_54321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RemoveVendorBillCredit", + "qualifiedName": "ZohoBooksApi.RemoveVendorBillCredit", + "fullyQualifiedName": "ZohoBooksApi.RemoveVendorBillCredit@1.0.0", + "description": "Delete credits applied to a vendor bill.\n\nUse this tool to remove credits applied to a specific vendor bill using the vendor_credit_id and vendor_credit_bill_id.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the vendor credit bill is to be deleted.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor credit to be deleted. Required for bill credit removal.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor credit bill to delete the applied credits.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.DELETE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'delete_vendor_credit_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RemoveVendorBillCredit", + "parameters": { + "organization_id": { + "value": "1000123456", + "type": "string", + "required": true + }, + "vendor_credit_identifier": { + "value": "VC-2026-0001", + "type": "string", + "required": true + }, + "vendor_credit_bill_identifier": { + "value": "VCB-2026-AB12", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RestoreBankTransaction", + "qualifiedName": "ZohoBooksApi.RestoreBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.RestoreBankTransaction@1.0.0", + "description": "Restores an excluded bank transaction in your account.\n\nUse this tool to recover a previously excluded bank transaction in your Zoho Books account, identified by the transaction ID. It should be called when you need to reinstate transactions that were mistakenly removed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the Zoho Books organization to restore the transaction for.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": true, + "description": "The unique identifier for the specific bank transaction to be restored.", + "enum": null, + "inferrable": true + }, + { + "name": "account_id", + "type": "string", + "required": false, + "description": "Mandatory Account ID for which transactions are to be restored.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'restore_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RestoreBankTransaction", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "bank_transaction_id": { + "value": "btrxn_9876543210", + "type": "string", + "required": true + }, + "account_id": { + "value": "102345678901234", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ResumeRecurringBill", + "qualifiedName": "ZohoBooksApi.ResumeRecurringBill", + "fullyQualifiedName": "ZohoBooksApi.ResumeRecurringBill@1.0.0", + "description": "Resume a stopped recurring bill in Zoho Books.\n\nUse this tool to restart a suspended recurring bill in Zoho Books, ensuring payments continue as scheduled.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_bill_identifier", + "type": "string", + "required": true, + "description": "Provide the unique identifier of the recurring bill to resume it in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'resume_recurring_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ResumeRecurringBill", + "parameters": { + "organization_id": { + "value": "20001234567", + "type": "string", + "required": true + }, + "recurring_bill_identifier": { + "value": "RB-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ResumeRecurringExpense", + "qualifiedName": "ZohoBooksApi.ResumeRecurringExpense", + "fullyQualifiedName": "ZohoBooksApi.ResumeRecurringExpense@1.0.0", + "description": "Resumes a stopped recurring expense cycle.\n\nUse this tool to restart a recurring expense that has been previously paused in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_id", + "type": "string", + "required": true, + "description": "The unique identifier for the recurring expense to be resumed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'resume_recurring_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ResumeRecurringExpense", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "recurring_expense_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "ResumeRecurringInvoice", + "qualifiedName": "ZohoBooksApi.ResumeRecurringInvoice", + "fullyQualifiedName": "ZohoBooksApi.ResumeRecurringInvoice@1.0.0", + "description": "Resumes a stopped recurring invoice.\n\n Use this tool to resume a recurring invoice that has been paused.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization whose invoice needs to be resumed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_id", + "type": "string", + "required": false, + "description": "Unique identifier of the recurring invoice to be resumed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'resume_recurring_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.ResumeRecurringInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60000000001", + "type": "string", + "required": false + }, + "recurring_invoice_id": { + "value": "RINV-1001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"resume_date\":\"2026-03-01\",\"notes\":\"Resumed via API\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveBillAttachment", + "qualifiedName": "ZohoBooksApi.RetrieveBillAttachment", + "fullyQualifiedName": "ZohoBooksApi.RetrieveBillAttachment@1.0.0", + "description": "Retrieve the attachment from a specific bill.\n\nCall this tool to get the file attached to a bill using its bill ID. Useful for accessing invoices or related documents stored in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to specify which organization's bill attachment to retrieve.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "The unique identifier of the bill to retrieve its attachment.", + "enum": null, + "inferrable": true + }, + { + "name": "get_thumbnail", + "type": "boolean", + "required": false, + "description": "Set to true to get the thumbnail of the attachment instead of the full file.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_bill_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveBillAttachment", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "BILL-2026-0001", + "type": "string", + "required": true + }, + "get_thumbnail": { + "value": false, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveBillDetails", + "qualifiedName": "ZohoBooksApi.RetrieveBillDetails", + "fullyQualifiedName": "ZohoBooksApi.RetrieveBillDetails@1.0.0", + "description": "Retrieve the details of a specific bill.\n\nUse this tool to get comprehensive details about a specific bill by providing its ID. Useful for retrieving bill information such as amount, due date, or vendor details.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization for which the bill details are being retrieved.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the bill to retrieve its details. This should be provided as a string.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveBillDetails", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "BILL-2026-0042", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveContactDetails", + "qualifiedName": "ZohoBooksApi.RetrieveContactDetails", + "fullyQualifiedName": "ZohoBooksApi.RetrieveContactDetails@1.0.0", + "description": "Retrieve comprehensive details of a specific contact.\n\nThis tool should be called to access complete information about a contact, including basic details, addresses, payment terms, and financial data such as outstanding amounts and transaction history.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier of the organization for which the contact details are being retrieved.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_id", + "type": "string", + "required": true, + "description": "Unique identifier for the contact to retrieve detailed information.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_contact'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveContactDetails", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "contact_id": { + "value": "987654321098765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveContactList", + "qualifiedName": "ZohoBooksApi.RetrieveContactList", + "fullyQualifiedName": "ZohoBooksApi.RetrieveContactList@1.0.0", + "description": "Retrieve and filter a list of contacts from Zoho Books.\n\nUse this tool to obtain a detailed list of contacts with options for advanced filtering by name, company, status, and more. Ideal for managing contact information and accessing financial data like outstanding amounts and credit limits. Supports pagination for efficient data handling.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "Provide the ID of the organization to retrieve relevant contact data.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_contact_by_type", + "type": "string", + "required": false, + "description": "Filter contacts by type. Accepts 'customer' or 'vendor'.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_name_filter", + "type": "string", + "required": false, + "description": "Filter contacts by name. Use 'startswith' or 'contains' for match type. Max-length: 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_company_name", + "type": "string", + "required": false, + "description": "Search contacts by company name. Maximum length is 100 characters. Use variants like 'company_name_startswith' and 'company_name_contains' for different search methods.", + "enum": null, + "inferrable": true + }, + { + "name": "primary_contact_first_name", + "type": "string", + "required": false, + "description": "Search contacts by the first name of the primary contact person. Use 'first_name_startswith' or 'first_name_contains'. Max-length 100.", + "enum": null, + "inferrable": true + }, + { + "name": "search_by_last_name", + "type": "string", + "required": false, + "description": "Search contacts by last name of the primary contact person. Supports 'startswith' or 'contains' options. Max-length 100.", + "enum": null, + "inferrable": true + }, + { + "name": "address_search", + "type": "string", + "required": false, + "description": "Search contacts by address field. Use 'address_startswith' or 'address_contains'. Max-length 100.", + "enum": null, + "inferrable": true + }, + { + "name": "email_search_criteria", + "type": "string", + "required": false, + "description": "Search contacts by email of the primary contact person. Use 'startswith' or 'contains' in the string to specify the search variant. Max length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_phone_number", + "type": "string", + "required": false, + "description": "Search contacts by primary contact's phone number. Supports 'startswith' and 'contains' variants. Max length of 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_status_filter", + "type": "string", + "required": false, + "description": "Filter contacts by status. Options include All, Active, Inactive, Duplicate, PortalEnabled, PortalDisabled, OverDue, Unpaid, CreditLimitExceed, and Crm.", + "enum": null, + "inferrable": true + }, + { + "name": "search_contacts_text", + "type": "string", + "required": false, + "description": "Search contacts using contact name or notes. Maximum length is 100 characters.", + "enum": null, + "inferrable": true + }, + { + "name": "sort_by_column", + "type": "string", + "required": false, + "description": "Specify the column to sort contacts by. Allowed values: contact_name, first_name, last_name, email, outstanding_receivable_amount, created_time, and last_modified_time.", + "enum": null, + "inferrable": true + }, + { + "name": "crm_contact_id", + "type": "string", + "required": false, + "description": "CRM Contact ID to filter specific contact details.", + "enum": null, + "inferrable": true + }, + { + "name": "crm_account_id", + "type": "string", + "required": false, + "description": "Specify the CRM Account ID for the contact to retrieve specific contact details.", + "enum": null, + "inferrable": true + }, + { + "name": "crm_vendor_id", + "type": "string", + "required": false, + "description": "The CRM Vendor ID associated with the contact, used to filter results.", + "enum": null, + "inferrable": true + }, + { + "name": "page_number_to_fetch", + "type": "integer", + "required": false, + "description": "Specify the page number to be fetched. Defaults to 1 if not provided.", + "enum": null, + "inferrable": true + }, + { + "name": "records_per_page", + "type": "integer", + "required": false, + "description": "The number of contact records to fetch per page. Default is 200.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'list_contacts'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveContactList", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "filter_contact_by_type": { + "value": "customer", + "type": "string", + "required": false + }, + "contact_name_filter": { + "value": "startswith:Acme", + "type": "string", + "required": false + }, + "search_by_company_name": { + "value": "company_name_contains:TechCorp", + "type": "string", + "required": false + }, + "primary_contact_first_name": { + "value": "first_name_contains:Jane", + "type": "string", + "required": false + }, + "search_by_last_name": { + "value": "last_name_startswith:Doe", + "type": "string", + "required": false + }, + "address_search": { + "value": "address_contains:Main St", + "type": "string", + "required": false + }, + "email_search_criteria": { + "value": "contains:@example.com", + "type": "string", + "required": false + }, + "contact_phone_number": { + "value": "startswith:+1-202", + "type": "string", + "required": false + }, + "contact_status_filter": { + "value": "Active", + "type": "string", + "required": false + }, + "search_contacts_text": { + "value": "preferred vendor", + "type": "string", + "required": false + }, + "sort_by_column": { + "value": "outstanding_receivable_amount", + "type": "string", + "required": false + }, + "crm_contact_id": { + "value": "CRM12345", + "type": "string", + "required": false + }, + "crm_account_id": { + "value": "ACC67890", + "type": "string", + "required": false + }, + "crm_vendor_id": { + "value": "VEND98765", + "type": "string", + "required": false + }, + "page_number_to_fetch": { + "value": 2, + "type": "integer", + "required": false + }, + "records_per_page": { + "value": 100, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveCreditNoteEmailHistory", + "qualifiedName": "ZohoBooksApi.RetrieveCreditNoteEmailHistory", + "fullyQualifiedName": "ZohoBooksApi.RetrieveCreditNoteEmailHistory@1.0.0", + "description": "Retrieve the email history of a specific credit note.\n\nUse this tool to get detailed information about the email interactions associated with a specific credit note. Useful for tracking communication history.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which you want to retrieve the credit note email history.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to retrieve its email history.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_credit_note_email_history'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveCreditNoteEmailHistory", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "11990000000012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveEstimateDetails", + "qualifiedName": "ZohoBooksApi.RetrieveEstimateDetails", + "fullyQualifiedName": "ZohoBooksApi.RetrieveEstimateDetails@1.0.0", + "description": "Retrieve the details of a specific estimate.\n\nUse this tool to get information about a particular estimate by providing its ID. It returns the details associated with the specified estimate in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. Required to retrieve estimate details.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_id", + "type": "string", + "required": true, + "description": "Unique identifier of the specific estimate to retrieve details for.", + "enum": null, + "inferrable": true + }, + { + "name": "response_format", + "type": "string", + "required": false, + "description": "Specify the format for the estimate details: json, pdf, or html. Default is json.", + "enum": null, + "inferrable": true + }, + { + "name": "print_pdf", + "type": "boolean", + "required": false, + "description": "Set to true to print the exported PDF of the estimate.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_estimate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveEstimateDetails", + "parameters": { + "organization_id": { + "value": "a1b2c3d4e5f6g7h8", + "type": "string", + "required": true + }, + "estimate_id": { + "value": "EST-2026-0001", + "type": "string", + "required": true + }, + "response_format": { + "value": "pdf", + "type": "string", + "required": false + }, + "print_pdf": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveExpenseReceipt", + "qualifiedName": "ZohoBooksApi.RetrieveExpenseReceipt", + "fullyQualifiedName": "ZohoBooksApi.RetrieveExpenseReceipt@1.0.0", + "description": "Retrieve the receipt attached to an expense.\n\nUse this tool to obtain the receipt attached to a specific expense entry in Zoho Books. It is useful for reviewing or auditing expense details by accessing the actual receipt document.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to retrieve the expense receipt.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the expense to retrieve its receipt. Required for locating the specific expense in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "get_receipt_thumbnail", + "type": "boolean", + "required": false, + "description": "Set to true to get a thumbnail of the receipt; false returns the full receipt.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_expense_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveExpenseReceipt", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "expense_identifier": { + "value": "EXP-2026-0001", + "type": "string", + "required": true + }, + "get_receipt_thumbnail": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveInvoiceDocument", + "qualifiedName": "ZohoBooksApi.RetrieveInvoiceDocument", + "fullyQualifiedName": "ZohoBooksApi.RetrieveInvoiceDocument@1.0.0", + "description": "Retrieve a document attached to a specific invoice.\n\nUse this tool to access and download a document linked to an invoice by specifying the invoice and document IDs.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization to retrieve the document from.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_id", + "type": "string", + "required": true, + "description": "The unique identifier for the invoice to which the document is attached. Required to retrieve the document.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_document_id", + "type": "string", + "required": true, + "description": "Unique identifier for the specific document attached to the invoice. Required to retrieve the exact document.", + "enum": null, + "inferrable": true + }, + { + "name": "response_format", + "type": "string", + "required": false, + "description": "Specify the desired format for the response, such as json, pdf, or html.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_invoice_document_details'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveInvoiceDocument", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "invoice_id": { + "value": "INV-2026-0001", + "type": "string", + "required": true + }, + "invoice_document_id": { + "value": "DOC-5f4d3a2b", + "type": "string", + "required": true + }, + "response_format": { + "value": "pdf", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveItemDetails", + "qualifiedName": "ZohoBooksApi.RetrieveItemDetails", + "fullyQualifiedName": "ZohoBooksApi.RetrieveItemDetails@1.0.0", + "description": "Retrieve details of a specific item in Zoho Books.\n\nUse this tool to get detailed information about a specific item in Zoho Books by providing the item ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization whose item details are being retrieved.", + "enum": null, + "inferrable": true + }, + { + "name": "item_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the item to retrieve details from Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_item'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveItemDetails", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "item_unique_identifier": { + "value": "100000000000123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrievePurchaseOrderAttachment", + "qualifiedName": "ZohoBooksApi.RetrievePurchaseOrderAttachment", + "fullyQualifiedName": "ZohoBooksApi.RetrievePurchaseOrderAttachment@1.0.0", + "description": "Retrieve the file attached to a specific purchase order.\n\nUse this tool to obtain the file attachment from a specific purchase order by providing the purchase order ID.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID representing the organization. Required to specify which organization's purchase order to access.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "The unique identifier of the purchase order to retrieve the attachment for.", + "enum": null, + "inferrable": true + }, + { + "name": "get_thumbnail", + "type": "boolean", + "required": false, + "description": "Set to true to get the thumbnail of the attachment, or false to retrieve the full file.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_purchase_order_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrievePurchaseOrderAttachment", + "parameters": { + "organization_identifier": { + "value": "org_987654321", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO_2026_0001", + "type": "string", + "required": true + }, + "get_thumbnail": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrievePurchaseOrderDetails", + "qualifiedName": "ZohoBooksApi.RetrievePurchaseOrderDetails", + "fullyQualifiedName": "ZohoBooksApi.RetrievePurchaseOrderDetails@1.0.0", + "description": "Retrieve the details of a purchase order.\n\nUse this tool to get detailed information about a specific purchase order by providing the purchase order ID. Ideal for retrieving purchase order data for review or processing.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "Unique ID of the organization to retrieve purchase order details.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "Provide the unique identifier of the purchase order to retrieve its details.", + "enum": null, + "inferrable": true + }, + { + "name": "response_format", + "type": "string", + "required": false, + "description": "Specifies the format of the purchase order details. Options: json, pdf, html. Default is json.", + "enum": null, + "inferrable": true + }, + { + "name": "print_pdf", + "type": "boolean", + "required": false, + "description": "Set to True to print the exported PDF of the purchase order.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_purchase_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrievePurchaseOrderDetails", + "parameters": { + "organization_identifier": { + "value": "org_1234567890", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-2026-0001", + "type": "string", + "required": true + }, + "response_format": { + "value": "pdf", + "type": "string", + "required": false + }, + "print_pdf": { + "value": true, + "type": "boolean", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveRetainerInvoiceEmailContent", + "qualifiedName": "ZohoBooksApi.RetrieveRetainerInvoiceEmailContent", + "fullyQualifiedName": "ZohoBooksApi.RetrieveRetainerInvoiceEmailContent@1.0.0", + "description": "Retrieve the email content of a retainer invoice.\n\nThis tool fetches the email content of a specific retainer invoice using the provided invoice ID. It should be called when you need to view or send the email details of a retainer invoice.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization. Required to access retainer invoice emails.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice. Used to fetch the specific email content.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_retainer_invoice_email'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveRetainerInvoiceEmailContent", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "987654321012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveTaxGroupDetails", + "qualifiedName": "ZohoBooksApi.RetrieveTaxGroupDetails", + "fullyQualifiedName": "ZohoBooksApi.RetrieveTaxGroupDetails@1.0.0", + "description": "Retrieve details of a specific tax group.\n\nUse this to obtain information about a specific tax group by its ID in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization in Zoho Books to get the tax group details for.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_group_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the tax group in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_tax_group'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveTaxGroupDetails", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "tax_group_identifier": { + "value": "TG_8492B7C3", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "RetrieveUnusedRetainerPayments", + "qualifiedName": "ZohoBooksApi.RetrieveUnusedRetainerPayments", + "fullyQualifiedName": "ZohoBooksApi.RetrieveUnusedRetainerPayments@1.0.0", + "description": "Retrieve unused retainer payments for a contact.\n\nFetch details of unused retainer payments associated with a specific contact, providing insight into available credit balances.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Unique identifier for the organization to filter retainer payments.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_id", + "type": "string", + "required": true, + "description": "The unique identifier for the contact whose unused retainer payments are being retrieved. This is required to specify which contact's data you want to access.", + "enum": null, + "inferrable": true + }, + { + "name": "filter_by_currency_id", + "type": "string", + "required": false, + "description": "Currency ID to filter unused retainer payments by a specific currency.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.READ" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'get_unused_retainer_payments'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.RetrieveUnusedRetainerPayments", + "parameters": { + "organization_id": { + "value": "org_123456789", + "type": "string", + "required": true + }, + "contact_id": { + "value": "contact_987654321", + "type": "string", + "required": true + }, + "filter_by_currency_id": { + "value": "USD", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SellFixedAsset", + "qualifiedName": "ZohoBooksApi.SellFixedAsset", + "fullyQualifiedName": "ZohoBooksApi.SellFixedAsset@1.0.0", + "description": "Initiate the sale of a specified fixed asset.\n\n Use this tool to sell a specific fixed asset by providing its asset ID. It should be called when confirming or completing the sale process of a fixed asset in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the fixed asset to be sold. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'sell_fixed_asset'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SellFixedAsset", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "600123456", + "type": "string", + "required": false + }, + "fixed_asset_identifier": { + "value": "FA-2024-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"sale_date\":\"2024-06-15\",\"sale_price\":12500.00,\"buyer_name\":\"Acme Corporation\",\"bank_account_id\":\"9876543210\",\"notes\":\"Sale of forklift model X, condition: good\",\"taxable\":false,\"sale_account_id\":\"4001\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendEmailToContact", + "qualifiedName": "ZohoBooksApi.SendEmailToContact", + "fullyQualifiedName": "ZohoBooksApi.SendEmailToContact@1.0.0", + "description": "Send an email directly to a specified contact.\n\n Use this tool to send an email to a contact by specifying their contact ID. Ideal for communicating directly with contacts via email.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization to which the contact belongs. It is required for sending the email. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_id", + "type": "string", + "required": false, + "description": "Unique identifier for the contact to send the email to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_customer_statement_with_email", + "type": "boolean", + "required": false, + "description": "Indicate if a customer statement PDF should be sent with the email. Use 'true' to send, 'false' otherwise. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_contact'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendEmailToContact", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "60001234567", + "type": "string", + "required": false + }, + "contact_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "send_customer_statement_with_email": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"subject\":\"Invoice #INV-1001\",\"message\":\"Hello Alice,\\n\\nPlease find attached your invoice for March. If you have any questions, reply to this email.\\n\\nRegards,\\nAcme Corp Billing\",\"from_mail_id\":\"billing@acme-corp.com\",\"to_mail_ids\":[\"alice@example.com\"],\"cc_mail_ids\":[],\"bcc_mail_ids\":[]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendEstimateEmail", + "qualifiedName": "ZohoBooksApi.SendEstimateEmail", + "fullyQualifiedName": "ZohoBooksApi.SendEstimateEmail@1.0.0", + "description": "Send an email estimate to a customer.\n\n Use this tool to email an estimate to a customer. If no specific content is provided, the default email content will be used.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization. This ID is required to send an estimate email. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the estimate to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "email_attachments", + "type": "string", + "required": false, + "description": "Files to be attached to the email estimate. Provide file paths or URLs. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_estimate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendEstimateEmail", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "8001234567", + "type": "string", + "required": false + }, + "estimate_identifier": { + "value": "EST-2026-00123", + "type": "string", + "required": false + }, + "email_attachments": { + "value": "https://cdn.example.com/estimates/EST-2026-00123.pdf", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"to_mail_ids\":[\"client.contact@example.com\"],\"cc_mail_ids\":[\"sales@example.com\"],\"subject\":\"Estimate for Website Redesign - EST-2026-00123\",\"body\":\"Hello Jane Doe,\\n\\nPlease find attached the estimate for the Website Redesign project. If you have any questions or need adjustments, reply to this email.\\n\\nBest regards,\\nAcme Agency\",\"send_from_org_email_id\":false}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendEstimatesEmail", + "qualifiedName": "ZohoBooksApi.SendEstimatesEmail", + "fullyQualifiedName": "ZohoBooksApi.SendEstimatesEmail@1.0.0", + "description": "Send multiple estimates to customers via email.\n\nUse this tool to email up to 10 estimates to your customers efficiently. Ideal for managing and sharing multiple estimates at once.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_ids_to_email", + "type": "string", + "required": true, + "description": "Comma-separated string of up to 10 estimate IDs to send via email.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_multiple_estimates'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendEstimatesEmail", + "parameters": { + "organization_id": { + "value": "6543210000001234567", + "type": "string", + "required": true + }, + "estimate_ids_to_email": { + "value": "EST1001,EST1002,EST1003", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendInvitationEmail", + "qualifiedName": "ZohoBooksApi.SendInvitationEmail", + "fullyQualifiedName": "ZohoBooksApi.SendInvitationEmail@1.0.0", + "description": "Send an invitation email to a user in Zoho Books.\n\nUse this tool to send an invitation email to a specific user by their user ID in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier of the organization in Zoho Books required to send the invitation.", + "enum": null, + "inferrable": true + }, + { + "name": "user_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the user to whom the invitation email will be sent.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'invite_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendInvitationEmail", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "user_unique_identifier": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendInvoiceEmail", + "qualifiedName": "ZohoBooksApi.SendInvoiceEmail", + "fullyQualifiedName": "ZohoBooksApi.SendInvoiceEmail@1.0.0", + "description": "Email an invoice to a customer with optional content customization.\n\n This tool is used to email an invoice to a customer. It can be called when there's a need to send invoice details via email, optionally allowing custom content. If no custom content is provided, default mail content will be used.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization to which the invoice is linked. This ID is required to specify which organization's invoice is being emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": false, + "description": "Unique string identifier for the specific invoice to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_email_attachments", + "type": "string", + "required": false, + "description": "A comma-separated list of file paths to attach to the email. Provide file paths if additional files need to be included with the invoice email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_customer_statement", + "type": "boolean", + "required": false, + "description": "Set to 'True' to send the customer statement PDF with the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_invoice_attachment", + "type": "boolean", + "required": false, + "description": "Set to true to attach the invoice with the email; false to exclude it. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendInvoiceEmail", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "987654321", + "type": "string", + "required": false + }, + "invoice_identifier": { + "value": "INV-2026-1001", + "type": "string", + "required": false + }, + "invoice_email_attachments": { + "value": "/tmp/terms.pdf,/tmp/warranty.pdf", + "type": "string", + "required": false + }, + "send_customer_statement": { + "value": true, + "type": "boolean", + "required": false + }, + "send_invoice_attachment": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"email\":{\"to_mail_ids\":[\"jane.doe@example.com\"],\"cc_mail_ids\":[\"billing@example.com\"],\"bcc_mail_ids\":[],\"subject\":\"Invoice INV-2026-1001 from Acme Corp\",\"content\":\"Hello Jane,\\n\\nPlease find attached your invoice INV-2026-1001.\\n\\nBest regards,\\nAcme Corp Billing Team\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendInvoiceReminders", + "qualifiedName": "ZohoBooksApi.SendInvoiceReminders", + "fullyQualifiedName": "ZohoBooksApi.SendInvoiceReminders@1.0.0", + "description": "Send email reminders for unpaid invoices.\n\nUse this tool to remind customers about unpaid invoices by email. It sends reminder emails only for open or overdue invoices, with a maximum of 10 invoices at a time.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "Provide the ID of the organization for which the invoice reminders are to be sent.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_ids", + "type": "string", + "required": true, + "description": "List of invoice IDs to send reminders for. Only for open or overdue invoices, up to 10 at once.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_invoice_reminder'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendInvoiceReminders", + "parameters": { + "organization_identifier": { + "value": "60001234567", + "type": "string", + "required": true + }, + "invoice_ids": { + "value": "INV-1001,INV-1002,INV-1003", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendInvoicesEmail", + "qualifiedName": "ZohoBooksApi.SendInvoicesEmail", + "fullyQualifiedName": "ZohoBooksApi.SendInvoicesEmail@1.0.0", + "description": "Send up to 10 invoices by email to customers.\n\n This tool is used to email invoices to your customers, allowing you to send up to 10 invoices in a single request.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The organization ID for which invoices will be emailed. Required for sending emails. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "comma_separated_invoice_ids", + "type": "string", + "required": false, + "description": "Comma separated list of invoice IDs to be emailed. Maximum 10 IDs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_invoices'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendInvoicesEmail", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6001234567890123456", + "type": "string", + "required": false + }, + "comma_separated_invoice_ids": { + "value": "1122334455,6677889900", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"subject\":\"Invoice from Acme Corp\",\"send_from_org_email\":true,\"body\":\"Dear Customer,\\n\\nPlease find attached your invoice(s).\\n\\nRegards,\\nAcme Corp\",\"send_me_a_copy\":false}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendPurchaseOrderEmail", + "qualifiedName": "ZohoBooksApi.SendPurchaseOrderEmail", + "fullyQualifiedName": "ZohoBooksApi.SendPurchaseOrderEmail@1.0.0", + "description": "Send a purchase order email to the vendor.\n\n Use this tool to email a purchase order to the vendor. If no custom content is provided, the email will be sent with default content.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required to specify which organization the purchase order belongs to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": false, + "description": "Unique identifier of the purchase order to be emailed to the vendor. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "email_attachments", + "type": "string", + "required": false, + "description": "A comma-separated list of file paths or URLs to attach to the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "attachment_file_name", + "type": "string", + "required": false, + "description": "The name of the file to attach to the email for the purchase order. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_purchase_order_attachment", + "type": "boolean", + "required": false, + "description": "Set to true to include the purchase order as an attachment with the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_purchase_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendPurchaseOrderEmail", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "987654321", + "type": "string", + "required": false + }, + "purchase_order_id": { + "value": "PO-1001", + "type": "string", + "required": false + }, + "email_attachments": { + "value": "https://cdn.example.com/terms.pdf,https://cdn.example.com/specs.pdf", + "type": "string", + "required": false + }, + "attachment_file_name": { + "value": "PurchaseOrder_PO-1001.pdf", + "type": "string", + "required": false + }, + "send_purchase_order_attachment": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"send_mail\":true,\"subject\":\"Purchase Order PO-1001\",\"message\":\"Dear Vendor,\\n\\nPlease find attached purchase order PO-1001. If you have questions, reply to purchasing@acme.example.\",\"to_mail_ids\":[\"vendor@example.com\"],\"cc_mail_ids\":[\"purchasing@acme.example\"],\"bcc_mail_ids\":[],\"attach_pdf\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SendVendorPaymentEmail", + "qualifiedName": "ZohoBooksApi.SendVendorPaymentEmail", + "fullyQualifiedName": "ZohoBooksApi.SendVendorPaymentEmail@1.0.0", + "description": "Send a payment receipt email to a vendor.\n\n This tool sends a vendor payment receipt to a vendor via email. You can customize the email content, attach files, and control sender preferences. If no customizations are provided, the email will use default templates.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the vendor payment email is being sent. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_payment_id", + "type": "string", + "required": false, + "description": "Unique identifier for the vendor payment. Used to retrieve and send the corresponding payment receipt via email. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "email_attachments", + "type": "string", + "required": false, + "description": "List of file paths or URLs to attach to the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "attached_file_name", + "type": "string", + "required": false, + "description": "Specify the name of the file to be attached to the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "send_vendor_payment_attachment", + "type": "boolean", + "required": false, + "description": "Set to true to include the vendor payment attachment in the email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'email_vendor_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SendVendorPaymentEmail", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60000000001", + "type": "string", + "required": false + }, + "vendor_payment_id": { + "value": "VP-1001", + "type": "string", + "required": false + }, + "email_attachments": { + "value": "[\"https://storage.example.com/receipts/VP-1001.pdf\"]", + "type": "string", + "required": false + }, + "attached_file_name": { + "value": "Vendor_Payment_Receipt_VP-1001.pdf", + "type": "string", + "required": false + }, + "send_vendor_payment_attachment": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"to_mail_ids\":[\"vendor@example.com\"],\"from_mail_id\":\"payments@company.com\",\"cc_mail_ids\":[\"accounting@company.com\"],\"bcc_mail_ids\":[],\"subject\":\"Payment Receipt for VP-1001\",\"message\":\"Dear Vendor,\\n\\nPlease find attached the receipt for payment VP-1001. Thank you.\\n\\nBest regards,\\nFinance Team\",\"attachments\":[{\"file_name\":\"Vendor_Payment_Receipt_VP-1001.pdf\",\"file_url\":\"https://storage.example.com/receipts/VP-1001.pdf\"}],\"send_mail\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SetInvoiceAttachmentPreference", + "qualifiedName": "ZohoBooksApi.SetInvoiceAttachmentPreference", + "fullyQualifiedName": "ZohoBooksApi.SetInvoiceAttachmentPreference@1.0.0", + "description": "Set the email attachment preference for an invoice.\n\nThis tool updates whether an attached file should be sent when emailing a specific invoice in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the specific invoice to update attachment preference.", + "enum": null, + "inferrable": true + }, + { + "name": "send_attachment_with_email", + "type": "boolean", + "required": true, + "description": "Set to true to send the attachment with the invoice when emailed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_attachment_preference'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SetInvoiceAttachmentPreference", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-1001", + "type": "string", + "required": true + }, + "send_attachment_with_email": { + "value": true, + "type": "boolean", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SetPrimaryLocation", + "qualifiedName": "ZohoBooksApi.SetPrimaryLocation", + "fullyQualifiedName": "ZohoBooksApi.SetPrimaryLocation@1.0.0", + "description": "Marks a specified location as primary in Zoho Books.\n\nUse this tool to designate a specific location as the primary one in Zoho Books. This is useful for managing location preferences and ensuring the correct primary location is set.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization for which to set the primary location in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "location_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the location to be marked as primary.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_location_primary'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SetPrimaryLocation", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "location_identifier": { + "value": "LOC_001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SetSalesOrderAttachmentPreference", + "qualifiedName": "ZohoBooksApi.SetSalesOrderAttachmentPreference", + "fullyQualifiedName": "ZohoBooksApi.SetSalesOrderAttachmentPreference@1.0.0", + "description": "Sets attachment preference for sales order emails.\n\nUse this tool to set whether an attached file should be sent when emailing a sales order. Call this when you need to update the attachment settings on a specific sales order.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which you want to update the attachment preference.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order to update.", + "enum": null, + "inferrable": true + }, + { + "name": "allow_attachment_in_email", + "type": "boolean", + "required": true, + "description": "Indicate if the file can be sent in the email. Set to true to allow, false to prevent.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_attachment_preference1'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SetSalesOrderAttachmentPreference", + "parameters": { + "organization_id": { + "value": "678901234", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO123456789", + "type": "string", + "required": true + }, + "allow_attachment_in_email": { + "value": true, + "type": "boolean", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "StartTimeTracking", + "qualifiedName": "ZohoBooksApi.StartTimeTracking", + "fullyQualifiedName": "ZohoBooksApi.StartTimeTracking@1.0.0", + "description": "Initiate time tracking for a specific entry.\n\nUse this tool to start tracking time for a given time entry in Zoho Books. It should be called when you need to begin or resume tracking time on a project task.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "ID of the organization for which the time tracking is to be started.", + "enum": null, + "inferrable": true + }, + { + "name": "time_entry_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the specific time entry to be tracked.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'start_entry_timer'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.StartTimeTracking", + "parameters": { + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": true + }, + "time_entry_identifier": { + "value": "te_5f4d3a2b1c", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "Stop1099TrackingForVendor", + "qualifiedName": "ZohoBooksApi.Stop1099TrackingForVendor", + "fullyQualifiedName": "ZohoBooksApi.Stop1099TrackingForVendor@1.0.0", + "description": "Stop 1099 payment tracking for a vendor in the U.S.\n\nUse to disable 1099 reporting for vendor payments in the U.S. organization.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization where 1099 tracking will be stopped.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_contact_id", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor contact to stop 1099 tracking.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'untrack_contact_1099'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.Stop1099TrackingForVendor", + "parameters": { + "organization_id": { + "value": "60001234567", + "type": "string", + "required": true + }, + "vendor_contact_id": { + "value": "4000567890", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "StopRecurringBill", + "qualifiedName": "ZohoBooksApi.StopRecurringBill", + "fullyQualifiedName": "ZohoBooksApi.StopRecurringBill@1.0.0", + "description": "Stop an active recurring bill in Zoho Books.\n\nUse this tool to stop an active recurring bill in Zoho Books when you need to discontinue ongoing payments. It provides confirmation upon successful stoppage.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID representing the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the recurring bill to be stopped.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'stop_recurring_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.StopRecurringBill", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "recurring_bill_identifier": { + "value": "RB-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "StopRecurringExpense", + "qualifiedName": "ZohoBooksApi.StopRecurringExpense", + "fullyQualifiedName": "ZohoBooksApi.StopRecurringExpense@1.0.0", + "description": "Stop an active recurring expense in Zoho Books.\n\nThis tool is used to stop an active recurring expense in Zoho Books. It should be called when a user wants to terminate a recurring payment schedule associated with an expense.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the recurring expense will be stopped.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_expense_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the recurring expense to be stopped.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'stop_recurring_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.StopRecurringExpense", + "parameters": { + "organization_id": { + "value": "123456789", + "type": "string", + "required": true + }, + "recurring_expense_identifier": { + "value": "REX-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "StopRecurringInvoice", + "qualifiedName": "ZohoBooksApi.StopRecurringInvoice", + "fullyQualifiedName": "ZohoBooksApi.StopRecurringInvoice@1.0.0", + "description": "Stop an active recurring invoice in Zoho Books.\n\n Use this tool to stop an active recurring invoice by providing the recurring invoice ID. This tool is useful for managing billing cycles when you need to halt a recurring charge.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization for which the recurring invoice is to be stopped. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_id", + "type": "string", + "required": false, + "description": "The unique identifier for the recurring invoice to be stopped. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'stop_recurring_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.StopRecurringInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "recurring_invoice_id": { + "value": "RI-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"stop_reason\":\"Customer requested cancellation\",\"stop_date\":\"2026-02-18\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "StopTimeTracking", + "qualifiedName": "ZohoBooksApi.StopTimeTracking", + "fullyQualifiedName": "ZohoBooksApi.StopTimeTracking@1.0.0", + "description": "Stop the timer for a time entry.\n\nUse this tool to stop tracking time for a specific task or activity, such as when taking a break or ending a work session.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization where the time entry is being stopped. This ID is required to specify which organization's time tracking should be affected.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'stop_entry_timer'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.StopTimeTracking", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SubmitBillForApproval", + "qualifiedName": "ZohoBooksApi.SubmitBillForApproval", + "fullyQualifiedName": "ZohoBooksApi.SubmitBillForApproval@1.0.0", + "description": "Submit a bill for approval in Zoho Books.\n\nUse this tool to submit a specific bill for approval in Zoho Books by providing the bill ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization in Zoho Books for which the bill is being submitted.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the bill to be submitted for approval.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'submit_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SubmitBillForApproval", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "bill_identifier": { + "value": "BILL-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SubmitCreditNoteForApproval", + "qualifiedName": "ZohoBooksApi.SubmitCreditNoteForApproval", + "fullyQualifiedName": "ZohoBooksApi.SubmitCreditNoteForApproval@1.0.0", + "description": "Submit a credit note for approval in Zoho Books.\n\nCall this tool to submit a credit note for approval in Zoho Books using the credit note ID.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization for which the credit note is being submitted for approval.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to submit for approval in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'submit_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SubmitCreditNoteForApproval", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "123456789012345", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SubmitEstimateForApproval", + "qualifiedName": "ZohoBooksApi.SubmitEstimateForApproval", + "fullyQualifiedName": "ZohoBooksApi.SubmitEstimateForApproval@1.0.0", + "description": "Submit an estimate for approval.\n\nUse this tool to submit a specific estimate for approval by providing the estimate ID. It facilitates the approval workflow for estimates in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books that the estimate belongs to.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": true, + "description": "Unique identifier of the estimate to be submitted for approval.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'submit_estimate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SubmitEstimateForApproval", + "parameters": { + "organization_id": { + "value": "600123456789012345", + "type": "string", + "required": true + }, + "estimate_identifier": { + "value": "EST-2026-00042", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SubmitInvoiceForApproval", + "qualifiedName": "ZohoBooksApi.SubmitInvoiceForApproval", + "fullyQualifiedName": "ZohoBooksApi.SubmitInvoiceForApproval@1.0.0", + "description": "Submit an invoice for approval in Zoho Books.\n\nThis tool allows users to submit an invoice for approval using the Zoho Books API. It should be called when an invoice is ready to be reviewed.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_unique_id", + "type": "string", + "required": true, + "description": "The unique identifier for the invoice to be submitted for approval.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'submit_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SubmitInvoiceForApproval", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "invoice_unique_id": { + "value": "INV-2026-1001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SubmitPurchaseOrder", + "qualifiedName": "ZohoBooksApi.SubmitPurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.SubmitPurchaseOrder@1.0.0", + "description": "Submit a purchase order for approval.\n\nUse this tool to submit a specific purchase order for approval in the Zoho Books system.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization within Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the purchase order to be submitted for approval.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'submit_purchase_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SubmitPurchaseOrder", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-2026-00123", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SubmitRetainerInvoice", + "qualifiedName": "ZohoBooksApi.SubmitRetainerInvoice", + "fullyQualifiedName": "ZohoBooksApi.SubmitRetainerInvoice@1.0.0", + "description": "Submit a retainer invoice for approval in Zoho Books.\n\nUse this tool to submit a specific retainer invoice for approval in Zoho Books. Call this tool when you need to send a retainer invoice for review and approval.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization in Zoho Books to which the retainer invoice belongs.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier of the retainer invoice for submission.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'submit_retainer_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SubmitRetainerInvoice", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "retainer_invoice_unique_id": { + "value": "a1b2c3d4-5678-90ab-cdef-1234567890ab", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SubmitSalesOrderForApproval", + "qualifiedName": "ZohoBooksApi.SubmitSalesOrderForApproval", + "fullyQualifiedName": "ZohoBooksApi.SubmitSalesOrderForApproval@1.0.0", + "description": "Submit a sales order for approval in Zoho Books.\n\nUse this tool to submit a sales order for approval in the Zoho Books system by providing the sales order ID.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books where the sales order is submitted.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order to be submitted for approval.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'submit_sales_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SubmitSalesOrderForApproval", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "SubmitVendorCreditForApproval", + "qualifiedName": "ZohoBooksApi.SubmitVendorCreditForApproval", + "fullyQualifiedName": "ZohoBooksApi.SubmitVendorCreditForApproval@1.0.0", + "description": "Submit a vendor credit for approval.\n\nThis tool submits a specified vendor credit for approval based on its unique ID. Use it to move vendor credits from draft to approval status in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The ID of the organization where the vendor credit is submitted for approval.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier of the vendor credit to be submitted for approval.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'submit_vendor_credit'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.SubmitVendorCreditForApproval", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "vendor_credit_unique_id": { + "value": "VC-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "TrackContactFor1099Reporting", + "qualifiedName": "ZohoBooksApi.TrackContactFor1099Reporting", + "fullyQualifiedName": "ZohoBooksApi.TrackContactFor1099Reporting@1.0.0", + "description": "Track a contact for 1099 reporting in Zoho Books.\n\nUse this tool to track a contact for 1099 reporting, applicable only when the organization's country is the U.S.A. Ideal for ensuring contacts meet 1099 requirements in financial records.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the organization in Zoho Books required for 1099 reporting. This should be the ID specific to the organization tracked in the U.S.A.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_unique_id", + "type": "string", + "required": true, + "description": "Unique identifier of the contact for 1099 tracking.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'track_contact_1099'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.TrackContactFor1099Reporting", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "contact_unique_id": { + "value": "9876543210", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UncategorizeBankTransaction", + "qualifiedName": "ZohoBooksApi.UncategorizeBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.UncategorizeBankTransaction@1.0.0", + "description": "Revert a categorized bank transaction to uncategorized.\n\nUse this tool to uncategorize a previously categorized bank transaction. Call this when needing to correct or revert the categorization of a transaction in Zoho Books.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the transaction is to be uncategorized.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_id", + "type": "string", + "required": true, + "description": "Unique identifier of the bank transaction to uncategorize.", + "enum": null, + "inferrable": true + }, + { + "name": "account_id_for_transactions", + "type": "string", + "required": false, + "description": "The mandatory Account ID for which transactions are to be listed.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'uncategorize_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UncategorizeBankTransaction", + "parameters": { + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "bank_transaction_id": { + "value": "987654321098765", + "type": "string", + "required": true + }, + "account_id_for_transactions": { + "value": "456789012345678", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UnmatchBankTransaction", + "qualifiedName": "ZohoBooksApi.UnmatchBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.UnmatchBankTransaction@1.0.0", + "description": "Unmatch a previously matched bank transaction.\n\nUse this tool to unmatch a bank transaction that was previously categorized, reverting it to an uncategorized state.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the transaction unmatching is to be performed.", + "enum": null, + "inferrable": true + }, + { + "name": "transaction_id", + "type": "string", + "required": true, + "description": "The unique identifier of the bank transaction to be unmatched.", + "enum": null, + "inferrable": true + }, + { + "name": "account_id_for_transactions", + "type": "string", + "required": false, + "description": "The mandatory ID of the account for which transactions are to be unlisted. This is essential to specify the correct account involved in the transaction.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'unmatch_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UnmatchBankTransaction", + "parameters": { + "organization_id": { + "value": "6000000000000001", + "type": "string", + "required": true + }, + "transaction_id": { + "value": "154473000000012345", + "type": "string", + "required": true + }, + "account_id_for_transactions": { + "value": "421234000000678901", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateAccountInfo", + "qualifiedName": "ZohoBooksApi.UpdateAccountInfo", + "fullyQualifiedName": "ZohoBooksApi.UpdateAccountInfo@1.0.0", + "description": "Updates account information in Zoho Books.\n\n This tool updates the chart of account details for a specified account in Zoho Books. It should be called when account information needs modification, such as changing account names, codes, or related details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The ID of the organization for which the account will be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "account_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the account to update in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_chart_of_account'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateAccountInfo", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": false + }, + "account_identifier": { + "value": "400000000012345678", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"account\":{\"account_name\":\"Office Supplies\",\"account_code\":\"EXP-1001\",\"description\":\"Expenses for office supplies and consumables\",\"is_bank_account\":false,\"opening_balance\":0.00,\"taxable\":false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateBankAccountRule", + "qualifiedName": "ZohoBooksApi.UpdateBankAccountRule", + "fullyQualifiedName": "ZohoBooksApi.UpdateBankAccountRule@1.0.0", + "description": "Update or modify a bank account rule in Zoho Books.\n\n This tool updates an existing bank account rule in Zoho Books. It should be called when you need to make changes to a rule, either by adding new criteria or modifying existing ones. The tool provides confirmation once the rule update is successful.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization in Zoho Books for which the bank account rule needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_rule_id", + "type": "string", + "required": false, + "description": "Unique identifier for the bank account rule to update in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_bank_account_rule'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateBankAccountRule", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "bank_account_rule_id": { + "value": "987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"rule_name\":\"Auto Categorize Stripe Payments\",\"enabled\":true,\"conditions\":[{\"field\":\"description\",\"operator\":\"contains\",\"value\":\"Stripe\"},{\"field\":\"amount\",\"operator\":\"greater_than\",\"value\":\"0\"}],\"action\":{\"type\":\"categorize\",\"account_id\":\"54321\",\"tax_id\":\"0\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateBankAccountZohoBooks", + "qualifiedName": "ZohoBooksApi.UpdateBankAccountZohoBooks", + "fullyQualifiedName": "ZohoBooksApi.UpdateBankAccountZohoBooks@1.0.0", + "description": "Modify a bank account in Zoho Books.\n\n Use this tool to update details of an existing bank account in Zoho Books. It should be called when there's a need to modify account information such as account name or details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization to be modified. Required for identifying the specific organization's bank account. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_account_id", + "type": "string", + "required": false, + "description": "Unique identifier of the bank account to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_bank_account'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateBankAccountZohoBooks", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6000000000001", + "type": "string", + "required": false + }, + "bank_account_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"bank_account\":{\"account_name\":\"Operating Account - Updated\",\"bank_name\":\"First National Bank\",\"account_number\":\"9876543210\",\"ifsc_code\":\"FNB0001234\",\"iban\":\"GB29NWBK60161331926819\",\"currency_id\":\"USD\",\"is_primary\":false,\"notes\":\"Updated account name and routing details\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateBankTransaction", + "qualifiedName": "ZohoBooksApi.UpdateBankTransaction", + "fullyQualifiedName": "ZohoBooksApi.UpdateBankTransaction@1.0.0", + "description": "Update details of a specific bank transaction.\n\n This tool updates the specified bank transaction with the provided information. Call this tool to make changes to existing transaction details in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization in Zoho Books for which the bank transaction is being updated. This is required to specify the organization context for the transaction update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bank_transaction_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the specific bank transaction to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.banking.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_bank_transaction'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateBankTransaction", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "bank_transaction_identifier": { + "value": "BTX-00012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"date\":\"2026-02-19\",\"amount\":1500.00,\"description\":\"Updated payment for invoice INV-1001\",\"account_id\":\"ACCT-001234\",\"transaction_type\":\"payment\",\"reference_number\":\"REF-20260219-01\",\"cleared\":true,\"tags\":[\"office\",\"utilities\"],\"line_items\":[{\"account_id\":\"ACCT-001234\",\"amount\":1500.00,\"description\":\"Office supplies\"}],\"custom_fields\":[{\"label\":\"Project\",\"value\":\"Migration\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateBillByCustomField", + "qualifiedName": "ZohoBooksApi.UpdateBillByCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateBillByCustomField@1.0.0", + "description": "Update or create a bill using a custom field identifier.\n\n Use this tool to update an existing bill or create a new one by specifying a custom field's unique value. The tool retrieves the bill based on the custom field value provided. If the bill is not found and the X-Upsert option is enabled, a new bill will be created with the provided details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the bill is to be updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_identifier_key", + "type": "string", + "required": false, + "description": "Specify the API name of the custom field with unique values for identifying the bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_field_unique_value", + "type": "string", + "required": false, + "description": "Provide the unique value from the custom field to identify and update the specific bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "enable_upsert", + "type": "boolean", + "required": false, + "description": "Set to true to enable upsert functionality. Creates a new bill if no existing bill matches the custom field value. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_bill_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateBillByCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "3698754321", + "type": "string", + "required": false + }, + "unique_identifier_key": { + "value": "cf_bill_code", + "type": "string", + "required": false + }, + "custom_field_unique_value": { + "value": "BILL-2026-0001", + "type": "string", + "required": false + }, + "enable_upsert": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"123456789012345\",\"date\":\"2026-02-15\",\"due_date\":\"2026-03-17\",\"reference_number\":\"REF-445\",\"line_items\":[{\"item_id\":\"98765432109876\",\"description\":\"Office chairs\",\"quantity\":4,\"rate\":75.5,\"account_id\":\"1122334455\"}],\"custom_fields\":[{\"label\":\"cf_bill_code\",\"value\":\"BILL-2026-0001\"}],\"notes\":\"Purchase of office chairs\",\"currency_id\":\"USD\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateBillingAddress", + "qualifiedName": "ZohoBooksApi.UpdateBillingAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdateBillingAddress@1.0.0", + "description": "Updates the billing address for a specified bill.\n\n This tool is used to update the billing address associated with a specific bill. It should be called when there's a need to modify the billing address details of an existing bill.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the billing address is being updated. This identifier is necessary to access specific organizational data. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_unique_identifier", + "type": "string", + "required": false, + "description": "Provide the unique identifier for the bill to update its billing address. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_bill_billing_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateBillingAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "bill_unique_identifier": { + "value": "BILL-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"billing_address\":{\"attention\":\"Acme Corp Billing\",\"street\":\"123 Main St\",\"street2\":\"Suite 400\",\"city\":\"Springfield\",\"state\":\"IL\",\"zip\":\"62701\",\"country\":\"USA\",\"phone\":\"+1-217-555-0123\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateBillingAddressRetainerInvoice", + "qualifiedName": "ZohoBooksApi.UpdateBillingAddressRetainerInvoice", + "fullyQualifiedName": "ZohoBooksApi.UpdateBillingAddressRetainerInvoice@1.0.0", + "description": "Update billing address for a retainer invoice.\n\n This tool updates the billing address associated with a specific retainer invoice. It should be used when there's a need to change the billing address for a particular invoice without affecting other records.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required to specify which organization's invoice needs updating. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": false, + "description": "Unique identifier of the retainer invoice to update the billing address. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_retainer_invoice_billing_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateBillingAddressRetainerInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "retainer_invoice_id": { + "value": "RI-000123", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"billing_address\":{\"attention\":\"Jane Doe\",\"address\":\"123 Market St\",\"street2\":\"Suite 200\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94103\",\"country\":\"United States\",\"phone\":\"+1-415-555-0123\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateBillInZoho", + "qualifiedName": "ZohoBooksApi.UpdateBillInZoho", + "fullyQualifiedName": "ZohoBooksApi.UpdateBillInZoho@1.0.0", + "description": "Updates a bill by modifying details in Zoho Books.\n\n This tool is used to update a bill in Zoho Books. It allows you to modify details or remove line items by excluding them from the list. Call this tool when you need to make changes to an existing bill.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. Required for updating a bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_unique_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the bill to be updated in Zoho Books. Ensure this matches the bill you intend to modify. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "file_attachment", + "type": "string", + "required": false, + "description": "File to attach. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateBillInZoho", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "bill_unique_identifier": { + "value": "9876543210", + "type": "string", + "required": false + }, + "file_attachment": { + "value": "invoice-update.pdf", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"1122334455\",\"reference_number\":\"BILL-2026-045\",\"date\":\"2026-02-15\",\"due_date\":\"2026-03-17\",\"line_items\":[{\"item_id\":\"1001\",\"name\":\"Consulting Services\",\"description\":\"February consulting hours\",\"rate\":150.00,\"quantity\":10,\"discount\":0,\"tax_id\":\"2001\",\"account_id\":\"3001\"}],\"shipping_charge\":25.00,\"adjustment\":0.00,\"notes\":\"Updated bill to reflect corrected hours and added shipping charge.\",\"custom_fields\":[{\"label\":\"Project\",\"value\":\"Website Redesign\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateBusinessContact", + "qualifiedName": "ZohoBooksApi.UpdateBusinessContact", + "fullyQualifiedName": "ZohoBooksApi.UpdateBusinessContact@1.0.0", + "description": "Update detailed information for an existing business contact.\n\n Use this tool to modify comprehensive details of an existing contact, including addresses, contact persons, and payment terms. Useful for keeping contact information up-to-date with the latest business details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization to which the contact belongs. This is required for identifying the organization context for the update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_id", + "type": "string", + "required": false, + "description": "Unique identifier for the contact to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_contact'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateBusinessContact", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "contact_id": { + "value": "987654321098765", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"contact_name\":\"Acme Corporation\",\"company_name\":\"Acme Corporation\",\"contact_persons\":[{\"first_name\":\"Jane\",\"last_name\":\"Doe\",\"email\":\"jane.doe@acme.example\",\"phone\":\"+1-555-0102\",\"is_primary_contact\":true}],\"billing_address\":{\"attention\":\"Accounts Payable\",\"address\":\"123 Market St\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94103\",\"country\":\"USA\",\"fax\":\"+1-555-0103\"},\"shipping_address\":{\"attention\":\"Receiving\",\"address\":\"Warehouse 5, 200 Industrial Rd\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94107\",\"country\":\"USA\"},\"payment_terms\":\"Net 30\",\"currency_code\":\"USD\",\"website\":\"https://www.acme.example\",\"notes\":\"Updated contact details, primary contact is Jane Doe.\",\"custom_fields\":[{\"customfield_id\":\"cf_12345\",\"value\":\"Preferred\"}],\"gst_treatment\":\"Registered\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateContactAddress", + "qualifiedName": "ZohoBooksApi.UpdateContactAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdateContactAddress@1.0.0", + "description": "Edit the additional address of a contact.\n\n Use this tool to update the additional address associated with a contact in Zoho Books. It requires the contact ID and address ID to specify the contact and address to be updated.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. This is required to specify which organization's contact address needs updating. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the contact to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "address_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the address to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_contact_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateContactAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "contact_identifier": { + "value": "987654321", + "type": "string", + "required": false + }, + "address_identifier": { + "value": "555", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"address\": {\"address_name\": \"Office - Secondary\",\"attention\": \"Jane Smith\",\"is_default\": false,\"address\": \"456 Market St, Suite 200\",\"city\": \"San Francisco\",\"state\": \"CA\",\"zip\": \"94105\",\"country\": \"USA\",\"phone\": \"+1-415-555-0199\",\"fax\": \"+1-415-555-0100\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateContactByCustomField", + "qualifiedName": "ZohoBooksApi.UpdateContactByCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateContactByCustomField@1.0.0", + "description": "Update a contact using a unique custom field value.\n\n This tool updates or creates a contact in Zoho Books based on a unique custom field value. Use it when you need to modify a contact using a non-duplicate custom field value, or create a new contact if the unique value isn't found and upsert is enabled.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization in Zoho Books. This is required to specify which organization's records to update or create. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_field_api_name", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used to identify the contact. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "The unique value of the custom field used to identify the contact. Must be a non-duplicate value. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_contact_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new contact if the unique custom field value isn't found. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_contact_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateContactByCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "637481234", + "type": "string", + "required": false + }, + "custom_field_api_name": { + "value": "cf_unique_customer_id", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "CUST-2026-0001", + "type": "string", + "required": false + }, + "create_contact_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"contact\":{\"contact_name\":\"Alicia Bennett\",\"company_name\":\"Bennett Innovations\",\"email\":\"alicia.bennett@example.com\",\"phone\":\"+1-415-555-0123\",\"billing_address\":{\"address\":\"450 Market St\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94105\",\"country\":\"USA\"},\"shipping_address\":{\"address\":\"450 Market St\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94105\",\"country\":\"USA\"},\"custom_fields\":[{\"api_name\":\"cf_unique_customer_id\",\"value\":\"CUST-2026-0001\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateContactPerson", + "qualifiedName": "ZohoBooksApi.UpdateContactPerson", + "fullyQualifiedName": "ZohoBooksApi.UpdateContactPerson@1.0.0", + "description": "Update an existing contact person's details.\n\n Use this tool to update the details of an existing contact person in the system. This is useful when changes to contact information are needed.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID representing the organization whose contact person is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "contact_person_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the contact person to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.contacts.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_contact_person'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateContactPerson", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": false + }, + "contact_person_identifier": { + "value": "987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"contact_person\":{\"first_name\":\"Jane\",\"last_name\":\"Doe\",\"email\":\"jane.doe@example.com\",\"phone\":\"(555) 123-4567\",\"mobile\":\"(555) 987-6543\",\"designation\":\"Procurement Manager\",\"is_primary_contact\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCreditNoteBillingAddress", + "qualifiedName": "ZohoBooksApi.UpdateCreditNoteBillingAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdateCreditNoteBillingAddress@1.0.0", + "description": "Update the billing address for a specific credit note.\n\n This tool updates the billing address associated with an existing credit note in Zoho Books. It should be called when a change in billing information for a specific credit note is required.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. Required to specify which organization's data is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_identifier", + "type": "string", + "required": false, + "description": "A unique identifier for the credit note to update its billing address. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_credit_note_billing_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCreditNoteBillingAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "credit_note_identifier": { + "value": "CN-1001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"billing_address\":{\"name\":\"Acme Corporation\",\"attention\":\"Jane Doe\",\"street\":\"123 Market St, Suite 400\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94105\",\"country\":\"USA\",\"phone\":\"+1-415-555-0100\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCreditNoteDetails", + "qualifiedName": "ZohoBooksApi.UpdateCreditNoteDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateCreditNoteDetails@1.0.0", + "description": "Update details of an existing credit note.\n\n\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required to specify which organization's credit note to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the credit note to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to provide your own credit note number instead of using the auto-generated one. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_credit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCreditNoteDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "credit_note_unique_identifier": { + "value": "CN12345", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"creditnote\":{\"date\":\"2026-02-15\",\"creditnote_number\":\"CN-2026-045\",\"customer_id\":\"123456789012345\",\"reference_number\":\"REF-98765\",\"notes\":\"Updated credit note due to return\",\"line_items\":[{\"item_id\":\"987654321098765\",\"description\":\"Returned Widget A\",\"quantity\":2,\"rate\":50.00,\"discount\":0.0,\"tax_id\":\"111222333444\"}],\"adjustment\":-10.00}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCreditNoteShippingAddress", + "qualifiedName": "ZohoBooksApi.UpdateCreditNoteShippingAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdateCreditNoteShippingAddress@1.0.0", + "description": "Updates the shipping address of an existing credit note.\n\n Use this tool to update the shipping address for a specific credit note. Call this when you need to change the recipient's address on a credit note document.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "ID of the organization to which the credit note belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": false, + "description": "Unique identifier of the credit note to update the shipping address for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_credit_note_shipping_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCreditNoteShippingAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": false + }, + "credit_note_id": { + "value": "CN-00098765", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"shipping_address\":{\"attention\":\"Jane Doe\",\"address\":\"123 Oak Street\",\"street2\":\"Apt 4B\",\"city\":\"Springfield\",\"state\":\"IL\",\"zip\":\"62704\",\"country\":\"USA\",\"phone\":\"+1-555-123-4567\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCreditNoteTemplate", + "qualifiedName": "ZohoBooksApi.UpdateCreditNoteTemplate", + "fullyQualifiedName": "ZohoBooksApi.UpdateCreditNoteTemplate@1.0.0", + "description": "Updates the PDF template for a specified credit note.\n\nUse this tool to change the PDF template associated with a specific credit note by providing the credit note ID and the template ID.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the organization. Required to specify which organization's credit note template will be updated.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note to be updated.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_template_id", + "type": "string", + "required": true, + "description": "Unique identifier of the credit note template to be updated.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_credit_note_template'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCreditNoteTemplate", + "parameters": { + "organization_identifier": { + "value": "60012345678", + "type": "string", + "required": true + }, + "credit_note_id": { + "value": "CN-2026-00042", + "type": "string", + "required": true + }, + "credit_note_template_id": { + "value": "TEMPLATE_2026_CN_01", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCreditNoteWithCustomField", + "qualifiedName": "ZohoBooksApi.UpdateCreditNoteWithCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateCreditNoteWithCustomField@1.0.0", + "description": "Update or create a credit note using a custom field.\n\n Use this tool to modify an existing credit note or create a new one with unique values in custom fields. If the specified unique value doesn't match any existing credit note and upsert is enabled, a new credit note will be created given the necessary details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization to which the credit note belongs. This identifies the target organization for the update or creation operation. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_key", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used to identify the credit note. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_field_unique_value", + "type": "string", + "required": false, + "description": "The unique value for the custom field used to identify the credit note to update or create. Ensure this matches the specific custom field's unique value constraints. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_new_credit_note_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new credit note if the unique custom field value isn't found in existing credit notes. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_credit_note_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCreditNoteWithCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "unique_custom_field_key": { + "value": "custom_field_unique_id", + "type": "string", + "required": false + }, + "custom_field_unique_value": { + "value": "CN-2026-0001", + "type": "string", + "required": false + }, + "create_new_credit_note_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"creditnote\":{\"customer_id\":\"543210987654321\",\"date\":\"2026-02-19\",\"reference_number\":\"CN-2026-0001\",\"line_items\":[{\"item_id\":\"1122334455\",\"description\":\"Returned widgets\",\"rate\":49.99,\"quantity\":2,\"account_id\":\"99887766\"}],\"adjustment\":0,\"notes\":\"Created/updated via API using unique custom field\",\"custom_fields\":[{\"api_name\":\"custom_field_unique_id\",\"value\":\"CN-2026-0001\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCurrencyDetails", + "qualifiedName": "ZohoBooksApi.UpdateCurrencyDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateCurrencyDetails@1.0.0", + "description": "Update the details of a currency in Zoho Books.\n\n Use this tool to update information for a specific currency in Zoho Books by providing the currency ID.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization for which the currency details are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the currency to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_currency'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCurrencyDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "7091827364", + "type": "string", + "required": false + }, + "currency_unique_identifier": { + "value": "EUR", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"currency\":{\"currency_code\":\"EUR\",\"currency_symbol\":\"€\",\"exchange_rate\":0.92,\"is_active\":true,\"decimal_places\":2,\"display_name\":\"Euro\",\"format\":\"symbol_first\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCustomerDebitNote", + "qualifiedName": "ZohoBooksApi.UpdateCustomerDebitNote", + "fullyQualifiedName": "ZohoBooksApi.UpdateCustomerDebitNote@1.0.0", + "description": "Update an existing customer debit note.\n\n Use this tool to update details of an existing customer debit note in Zoho Books. Remove a line item by omitting it from the line_items list.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Organization ID for the request within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "debit_note_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the debit note to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to ignore automatic debit note number generation, requiring manual input of the debit note number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_customer_debit_note'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCustomerDebitNote", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "debit_note_unique_identifier": { + "value": "987654321", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"date\":\"2026-02-15\",\"customer_id\":\"54321\",\"debitnote_number\":\"DN-2026-001\",\"reference_number\":\"REF-2026-001\",\"notes\":\"Updated billing for returned items.\",\"line_items\":[{\"item_id\":\"1001\",\"name\":\"Widget A\",\"description\":\"Defective unit return charge\",\"quantity\":2,\"rate\":25.0,\"account_id\":\"4001\",\"tax_id\":\"TAX1\"},{\"item_id\":\"1002\",\"name\":\"Shipping\",\"description\":\"Restocking fee\",\"quantity\":1,\"rate\":10.0,\"account_id\":\"4002\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCustomerPaymentCustomFields", + "qualifiedName": "ZohoBooksApi.UpdateCustomerPaymentCustomFields", + "fullyQualifiedName": "ZohoBooksApi.UpdateCustomerPaymentCustomFields@1.0.0", + "description": "Update custom fields in existing customer payments.\n\n Use this tool to update the values of custom fields in an existing customer payment in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization to which the customer payment belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_payment_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the customer payment you wish to update custom fields for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_custom_fields_in_customer_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCustomerPaymentCustomFields", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "customer_payment_identifier": { + "value": "CPAY-9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"custom_fields\":[{\"label\":\"Membership Type\",\"value\":\"Gold\"},{\"label\":\"Referral Source\",\"value\":\"Web\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCustomerPaymentInfo", + "qualifiedName": "ZohoBooksApi.UpdateCustomerPaymentInfo", + "fullyQualifiedName": "ZohoBooksApi.UpdateCustomerPaymentInfo@1.0.0", + "description": "Update an existing payment information.\n\n Use this tool to update payment information for a customer when any corrections or modifications are needed.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the payment update is requested. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_unique_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the payment to be updated. Use this to specify which payment you want to modify. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_customer_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCustomerPaymentInfo", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "payment_unique_identifier": { + "value": "PAY-987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"payment\": {\"amount\": 150.00, \"date\": \"2024-10-05\", \"description\": \"Corrected payment amount\", \"reference_number\": \"REF12345\", \"payment_mode\": \"Cash\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCustomFieldsInBill", + "qualifiedName": "ZohoBooksApi.UpdateCustomFieldsInBill", + "fullyQualifiedName": "ZohoBooksApi.UpdateCustomFieldsInBill@1.0.0", + "description": "Update custom fields in existing bills.\n\n This tool is used to update the value of custom fields in existing bills. It should be called when you need to change or add information to the custom fields of a specific bill identified by its bill ID.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization for which the bill's custom fields are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "bill_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the bill to update its custom fields. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_custom_fields_in_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCustomFieldsInBill", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "bill_identifier": { + "value": "BILL-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"custom_fields\":[{\"label\":\"Approval Status\",\"value\":\"Approved\"},{\"label\":\"Delivery Date\",\"value\":\"2026-02-01\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCustomFieldsPurchaseOrder", + "qualifiedName": "ZohoBooksApi.UpdateCustomFieldsPurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.UpdateCustomFieldsPurchaseOrder@1.0.0", + "description": "Update custom field values in purchase orders.\n\n This tool updates the values of custom fields within existing purchase orders in Zoho Books. It should be called when there is a need to modify or update custom information in a specific purchase order.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization associated with the purchase order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": false, + "description": "A unique identifier for the purchase order to update custom fields. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_custom_fields_in_purchase_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCustomFieldsPurchaseOrder", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "purchase_order_id": { + "value": "PO-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"custom_fields\":[{\"customfield_id\":\"123456789012345\",\"value\":\"Urgent - expedited shipping\"},{\"customfield_id\":\"987654321098765\",\"value\":\"Internal Ref: INV-2026-47\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCustomModuleRecord", + "qualifiedName": "ZohoBooksApi.UpdateCustomModuleRecord", + "fullyQualifiedName": "ZohoBooksApi.UpdateCustomModuleRecord@1.0.0", + "description": "Update an existing custom module in Zoho Books.\n\n Use this tool to update an existing custom module record in Zoho Books by specifying the module name and module ID.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "module_name", + "type": "string", + "required": false, + "description": "The name of the custom module to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_module_id", + "type": "integer", + "required": false, + "description": "The ID of the custom module to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.custommodules.ALL" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_custom_module_record'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCustomModuleRecord", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "600123456789", + "type": "string", + "required": false + }, + "module_name": { + "value": "CustomProjects", + "type": "string", + "required": false + }, + "custom_module_id": { + "value": 987654321, + "type": "integer", + "required": false + }, + "request_body": { + "value": "{\"custom_module\": {\"Name\": \"Updated Project\",\"Status\": \"In Progress\",\"Owner\": {\"id\": \"789012345\"},\"Due_Date\": \"2026-03-01\",\"Budget\": 15000.00}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateCustomModuleRecords", + "qualifiedName": "ZohoBooksApi.UpdateCustomModuleRecords", + "fullyQualifiedName": "ZohoBooksApi.UpdateCustomModuleRecords@1.0.0", + "description": "Updates existing custom module records in bulk.\n\n Use this tool to update multiple records in a custom module efficiently. This is useful for making uniform changes across a set of records within a specified module.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization that owns the module records to be updated. This ID is required to specify which organization's records are being modified. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "module_name", + "type": "string", + "required": false, + "description": "Specify the name of the custom module to update records in bulk. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.custommodules.ALL" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'bulk_update_custom_module_records'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateCustomModuleRecords", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "9876543210", + "type": "string", + "required": false + }, + "module_name": { + "value": "CustomInventory", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"data\":[{\"id\":\"1001\",\"Custom_Field_Text\":\"Discontinued\",\"Custom_Field_Number\":0,\"notes\":\"Bulk update applied on 2026-02-19\"},{\"id\":\"1002\",\"Custom_Field_Text\":\"Active\",\"Custom_Field_Number\":10,\"notes\":\"Bulk update applied on 2026-02-19\"}],\"trigger\":[\"workflow\"]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateEstimate", + "qualifiedName": "ZohoBooksApi.UpdateEstimate", + "fullyQualifiedName": "ZohoBooksApi.UpdateEstimate@1.0.0", + "description": "Update an existing estimate in Zoho Books.\n\n Use this tool to modify an existing estimate in Zoho Books. When updating, you can remove a line item by excluding it from the line_items list.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization whose estimate needs updating. It should be a unique identifier in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_unique_id", + "type": "string", + "required": false, + "description": "Unique identifier for the estimate you want to update in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to ignore auto generation of estimate numbers and manually specify the estimate number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_estimate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateEstimate", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6854321000001234567", + "type": "string", + "required": false + }, + "estimate_unique_id": { + "value": "EST-UNQ-2026-0001", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"estimate\":{\"customer_id\":\"1234567890\",\"estimate_number\":\"EST-2026-002\",\"date\":\"2026-02-01\",\"expiry_date\":\"2026-03-01\",\"line_items\":[{\"item_id\":\"111111\",\"name\":\"Website Design\",\"description\":\"Landing page and responsive design\",\"rate\":1500.00,\"quantity\":1},{\"item_id\":\"222222\",\"name\":\"Monthly Maintenance\",\"description\":\"Support and updates\",\"rate\":200.00,\"quantity\":3,\"discount\":10}],\"notes\":\"Updated estimate after scope change.\",\"terms\":\"50% deposit required.\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateEstimateBillingAddress", + "qualifiedName": "ZohoBooksApi.UpdateEstimateBillingAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdateEstimateBillingAddress@1.0.0", + "description": "Updates the billing address for a specific estimate.\n\n Use this tool to update the billing address for a specific estimate in Zoho Books. Call this tool when there's a need to change the billing details associated with an individual estimate.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization in Zoho Books. Required to specify the organization whose estimate billing address is to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the estimate to update the billing address. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_estimate_billing_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateEstimateBillingAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "estimate_identifier": { + "value": "EST-00012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"billing_address\":{\"attention\":\"Jane Doe\",\"street\":\"456 Oak Avenue\",\"city\":\"Austin\",\"state\":\"TX\",\"zip\":\"73301\",\"country\":\"United States\",\"phone\":\"+1-512-555-0199\",\"fax\":\"\",\"email\":\"jane.doe@example.com\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateEstimateComment", + "qualifiedName": "ZohoBooksApi.UpdateEstimateComment", + "fullyQualifiedName": "ZohoBooksApi.UpdateEstimateComment@1.0.0", + "description": "Update an existing comment on an estimate.\n\n Use this tool to update a specific comment associated with an estimate in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The ID representing the organization. Required to update the comment in the specified organization's estimate. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the estimate to update the comment for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_unique_identifier", + "type": "string", + "required": false, + "description": "The unique identifier of the comment to be updated on an estimate. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_estimate_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateEstimateComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": false + }, + "estimate_identifier": { + "value": "EST-1001", + "type": "string", + "required": false + }, + "comment_unique_identifier": { + "value": "COM-7890", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"content\":\"Updated the delivery date in this estimate. Please review and confirm.\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateEstimateCustomFields", + "qualifiedName": "ZohoBooksApi.UpdateEstimateCustomFields", + "fullyQualifiedName": "ZohoBooksApi.UpdateEstimateCustomFields@1.0.0", + "description": "Update custom fields in a specific estimate.\n\n This tool updates the values of custom fields in an existing estimate. It should be called when you need to modify or add information to custom fields of a particular estimate.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization whose estimate custom fields are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the estimate to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_custom_fields_in_estimate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateEstimateCustomFields", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "estimate_identifier": { + "value": "EST-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"custom_fields\":[{\"label\":\"Project Code\",\"value\":\"PRJ-1234\"},{\"label\":\"Approval Status\",\"value\":\"Approved\"},{\"label\":\"Delivery Date\",\"value\":\"2026-03-01\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateEstimateShippingAddress", + "qualifiedName": "ZohoBooksApi.UpdateEstimateShippingAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdateEstimateShippingAddress@1.0.0", + "description": "Updates the shipping address for an existing estimate in Zoho Books.\n\n This tool is used to update the shipping address for a specific estimate in the Zoho Books system. It should be called when there's a need to modify the delivery details associated with an existing estimate.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization in Zoho Books whose estimate's shipping address is to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the estimate to update its shipping address. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_estimate_shipping_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateEstimateShippingAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "estimate_identifier": { + "value": "EST-1001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"shipping_address\":{\"attention\":\"John Doe\",\"address\":\"123 Market St\",\"street2\":\"Suite 400\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94105\",\"country\":\"United States\",\"phone\":\"+1-415-555-0132\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateEstimateTemplate", + "qualifiedName": "ZohoBooksApi.UpdateEstimateTemplate", + "fullyQualifiedName": "ZohoBooksApi.UpdateEstimateTemplate@1.0.0", + "description": "Update the PDF template for an estimate.\n\nUse this tool to update the PDF template associated with a specific estimate in Zoho Books by providing the estimate and template IDs.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the estimate template is being updated.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_identifier", + "type": "string", + "required": true, + "description": "Provide the unique identifier for the specific estimate you want to update.", + "enum": null, + "inferrable": true + }, + { + "name": "estimate_template_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the estimate template to update in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_estimate_template'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateEstimateTemplate", + "parameters": { + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": true + }, + "estimate_identifier": { + "value": "EST2026-001", + "type": "string", + "required": true + }, + "estimate_template_identifier": { + "value": "TMPL-98765", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateEstimateWithCustomField", + "qualifiedName": "ZohoBooksApi.UpdateEstimateWithCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateEstimateWithCustomField@1.0.0", + "description": "Update or create an estimate using a custom field value.\n\n This tool allows updating an existing estimate by providing a unique custom field value. If the value does not match any existing estimates and the X-Upsert header is true, a new estimate will be created if required details are provided. Use this tool to maintain estimates based on unique identifiers.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Provide the ID of the organization for which the estimate is being updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "The API name of the custom field used to uniquely identify and update an estimate. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "The unique value of the custom field used to identify and update the estimate. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_new_estimate_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new estimate if no existing record matches the custom field value. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.estimates.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_estimate_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateEstimateWithCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "cf_project_code", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "PRJ-ABC-001", + "type": "string", + "required": false + }, + "create_new_estimate_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"estimate\":{\"customer_id\":\"123456789\",\"reference_number\":\"EST-2026-1001\",\"date\":\"2026-02-19\",\"expiry_date\":\"2026-03-21\",\"line_items\":[{\"item_id\":\"987654321\",\"name\":\"Website Development\",\"rate\":1500.00,\"quantity\":1,\"discount\":0}],\"custom_fields\":[{\"label\":\"cf_project_code\",\"value\":\"PRJ-ABC-001\",\"type\":\"text\"}],\"notes\":\"Estimate created/updated via API\"},\"email\":true}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateExchangeRate", + "qualifiedName": "ZohoBooksApi.UpdateExchangeRate", + "fullyQualifiedName": "ZohoBooksApi.UpdateExchangeRate@1.0.0", + "description": "Update exchange rate details for a currency in Zoho Books.\n\n This tool updates the exchange rate for a specified currency in Zoho Books. It should be called when you need to modify the exchange rate details, usually for financial reports, accounting adjustments, or compliance with real-time rates.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization for which the exchange rate is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "currency_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the currency you want to update the exchange rate for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "exchange_rate_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the exchange rate to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_exchange_rate'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateExchangeRate", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "600123456789", + "type": "string", + "required": false + }, + "currency_unique_identifier": { + "value": "USD", + "type": "string", + "required": false + }, + "exchange_rate_identifier": { + "value": "ER-20260219-001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"exchange_rate\":{\"date\":\"2026-02-19\",\"rate\":1.12,\"is_active\":true,\"source\":\"manual\",\"notes\":\"Adjusted to end-of-day market rate\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateExistingExpense", + "qualifiedName": "ZohoBooksApi.UpdateExistingExpense", + "fullyQualifiedName": "ZohoBooksApi.UpdateExistingExpense@1.0.0", + "description": "Update an existing expense in Zoho Books.\n\n Use this tool to modify details of an existing expense in Zoho Books. It should be called when you need to change information such as amount, date, or description of a recorded expense.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization. Required to identify which organization's expense is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the expense to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "expense_receipt_file", + "type": "string", + "required": false, + "description": "File path of the expense receipt to attach. Allowed extensions are gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, and docx. Ensure the file is accessible and in an accepted format. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "delete_receipt", + "type": "boolean", + "required": false, + "description": "Set to true to remove the attached receipt from the expense. Use false to keep it. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_expense'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateExistingExpense", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "expense_identifier": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "expense_receipt_file": { + "value": "/tmp/receipt_123.jpg", + "type": "string", + "required": false + }, + "delete_receipt": { + "value": false, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"expense\":{\"date\":\"2026-02-10\",\"amount\":150.75,\"description\":\"Taxi from airport to office\",\"category_id\":\"1234567890\",\"vendor_id\":\"9876543210\",\"reference_number\":\"TAXI-20260210\",\"custom_fields\":[{\"customfield_id\":\"cf_001\",\"value\":\"Project X\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateExpenseWithCustomField", + "qualifiedName": "ZohoBooksApi.UpdateExpenseWithCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateExpenseWithCustomField@1.0.0", + "description": "Update or create an expense using custom field values.\n\n This tool updates an existing expense based on a unique custom field value. If the unique value doesn't match any existing expenses, and the X-Upsert header is true, a new expense will be created if all required details are provided.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization for which the expense update is intended. It is required to identify the target organization in the API. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_field_api_name", + "type": "string", + "required": false, + "description": "API name of the unique custom field used to identify the expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "The unique value for the custom field used to update or create an expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "allow_upsert_new_expense", + "type": "boolean", + "required": false, + "description": "Set to true to create a new expense if no matching unique custom field value is found. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_expense_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateExpenseWithCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "custom_field_api_name": { + "value": "unique_employee_id", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "EMP-2026-001", + "type": "string", + "required": false + }, + "allow_upsert_new_expense": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"date\":\"2026-02-19\",\"account_id\":\"401234567890\",\"vendor_id\":\"501234567890\",\"total\":150.75,\"currency_code\":\"USD\",\"description\":\"Client dinner\",\"custom_fields\":[{\"api_name\":\"unique_employee_id\",\"value\":\"EMP-2026-001\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateFixedAssetInfo", + "qualifiedName": "ZohoBooksApi.UpdateFixedAssetInfo", + "fullyQualifiedName": "ZohoBooksApi.UpdateFixedAssetInfo@1.0.0", + "description": "Update fixed asset details in Zoho Books.\n\n Use this tool to update the information of a specific fixed asset in Zoho Books by providing the necessary asset details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization whose fixed asset you wish to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the specific fixed asset to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_fixed_asset'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateFixedAssetInfo", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "fixed_asset_identifier": { + "value": "FA-2025-001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"asset_name\":\"Office Laptop - Dell XPS 13\",\"asset_tag\":\"LAP-2025-001\",\"purchase_date\":\"2024-11-15\",\"purchase_cost\":1499.99,\"salvage_value\":150.0,\"useful_life_months\":36,\"depreciation_method\":\"straight_line\",\"depreciation_rate\":33.33,\"location\":\"Head Office - IT Department\",\"department\":\"IT\",\"vendor_name\":\"Dell Inc.\",\"warranty_expiry\":\"2026-11-15\",\"notes\":\"Replaced battery in 2025 Q1\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateFixedAssetType", + "qualifiedName": "ZohoBooksApi.UpdateFixedAssetType", + "fullyQualifiedName": "ZohoBooksApi.UpdateFixedAssetType@1.0.0", + "description": "Update a fixed asset type with new information.\n\n Use this tool to update the details of a fixed asset type by providing the relevant asset type ID and new information. It should be called when modifying asset categories in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_type_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the fixed asset type to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_fixed_asset_type'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateFixedAssetType", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60012345678", + "type": "string", + "required": false + }, + "fixed_asset_type_identifier": { + "value": "FA-TYPE-202", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"name\":\"Office Equipment\",\"description\":\"Updated category for office equipment and peripherals\",\"depreciation_method\":\"STRAIGHT_LINE\",\"useful_life_years\":5,\"salvage_value\":150.00,\"capitalization_threshold\":100.00}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateInvoice", + "qualifiedName": "ZohoBooksApi.UpdateInvoice", + "fullyQualifiedName": "ZohoBooksApi.UpdateInvoice@1.0.0", + "description": "Update details of an existing invoice in Zoho Books.\n\n Use this tool to modify the details of an existing invoice. If you need to remove a line item, simply exclude it from the line_items list.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization to which the invoice belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_id", + "type": "string", + "required": false, + "description": "Unique identifier of the invoice to be updated. Ensure this ID corresponds to an existing invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_invoice_number_generation", + "type": "boolean", + "required": false, + "description": "Set to true to ignore automatic invoice number generation, requiring manual entry of the invoice number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "invoice_id": { + "value": "987654321098765", + "type": "string", + "required": false + }, + "ignore_auto_invoice_number_generation": { + "value": false, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"invoice\":{\"invoice_number\":\"INV-2026-1001\",\"customer_id\":\"123456789\",\"date\":\"2026-02-15\",\"due_date\":\"2026-03-17\",\"reference_number\":\"PO-7890\",\"notes\":\"Updated to include additional services\",\"line_items\":[{\"item_id\":\"987654321\",\"name\":\"Consulting\",\"description\":\"Monthly consulting services\",\"rate\":150.0,\"quantity\":10,\"discount\":0},{\"item_id\":\"987654322\",\"name\":\"Implementation\",\"description\":\"Implementation services\",\"rate\":500.0,\"quantity\":1,\"discount\":50.0}],\"send_customer_notification\":false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateInvoiceByCustomField", + "qualifiedName": "ZohoBooksApi.UpdateInvoiceByCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateInvoiceByCustomField@1.0.0", + "description": "Update or create an invoice using a custom field value.\n\n Call this tool to update an existing invoice or create a new one using a custom field's unique value. If the value is not found and X-Upsert is true, a new invoice will be created if all required details are provided.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. This is required to specify which organization's invoice should be updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used to locate the invoice to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_field_value", + "type": "string", + "required": false, + "description": "The unique value of the custom field used to find or create the invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_new_invoice_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new invoice if the unique custom field value is not found in existing invoices. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_invoice_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateInvoiceByCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6000000000001", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "cf_unique_order_id", + "type": "string", + "required": false + }, + "custom_field_value": { + "value": "CUST-12345", + "type": "string", + "required": false + }, + "create_new_invoice_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"100000000123456\",\"date\":\"2026-02-19\",\"due_date\":\"2026-03-21\",\"reference_number\":\"INV-2026-001\",\"line_items\":[{\"item_id\":\"100000000111222\",\"description\":\"Design services\",\"rate\":150.00,\"quantity\":10}],\"custom_fields\":[{\"index\":1,\"value\":\"CUST-12345\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateInvoiceComment", + "qualifiedName": "ZohoBooksApi.UpdateInvoiceComment", + "fullyQualifiedName": "ZohoBooksApi.UpdateInvoiceComment@1.0.0", + "description": "Update an existing comment on an invoice.\n\n Use this tool to update a specific comment on an invoice by providing the invoice and comment IDs.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "ID of the organization for which the invoice comment needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_unique_id", + "type": "string", + "required": false, + "description": "Unique identifier for the invoice to update its comment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_id", + "type": "string", + "required": false, + "description": "Unique identifier of the comment to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_invoice_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateInvoiceComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "6723456789", + "type": "string", + "required": false + }, + "invoice_unique_id": { + "value": "INV-2026-0001", + "type": "string", + "required": false + }, + "comment_id": { + "value": "cmt-987654", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"content\":\"Updated comment: please review the revised line items and confirm.\",\"is_visible_to_customer\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateInvoiceCustomFields", + "qualifiedName": "ZohoBooksApi.UpdateInvoiceCustomFields", + "fullyQualifiedName": "ZohoBooksApi.UpdateInvoiceCustomFields@1.0.0", + "description": "Update custom fields in an existing invoice.\n\n Use this tool to modify the value of custom fields in a specified invoice. It should be called when you need to change or update custom information for invoice records.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization to which the invoice belongs. This is required to identify the correct organization context for the invoice update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the invoice to update custom fields. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_custom_fields_in_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateInvoiceCustomFields", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"custom_fields\":[{\"index\":1,\"value\":\"PO-98765\"},{\"index\":2,\"value\":\"Sales Rep: Jane Doe\"},{\"index\":3,\"value\":\"Internal Note: Urgent\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateInvoiceShippingAddress", + "qualifiedName": "ZohoBooksApi.UpdateInvoiceShippingAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdateInvoiceShippingAddress@1.0.0", + "description": "Update the shipping address of a specific invoice.\n\n Use this tool to update the shipping address associated with a specific invoice in Zoho Books. It is used when there's a need to modify the shipping information for an invoice after it has been created.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization in Zoho Books. Required to specify which organization's invoice will be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the invoice to update the shipping address. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_invoice_shipping_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateInvoiceShippingAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "invoice_unique_identifier": { + "value": "INV-1001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"shipping_address\": {\"attention\": \"John Doe\",\"address\": \"123 Shipping Lane\",\"city\": \"Portland\",\"state\": \"OR\",\"zip\": \"97201\",\"country\": \"USA\",\"phone\": \"+1-555-555-0123\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateInvoiceTemplate", + "qualifiedName": "ZohoBooksApi.UpdateInvoiceTemplate", + "fullyQualifiedName": "ZohoBooksApi.UpdateInvoiceTemplate@1.0.0", + "description": "Update the PDF template for a specific invoice.\n\nUse this tool to update the PDF template associated with a particular invoice. This is useful when you need to change the template style or format of an invoice after it has been issued.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "Provide the ID of the organization for which the invoice template is being updated.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the invoice to update the PDF template.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_template_id", + "type": "string", + "required": true, + "description": "Unique identifier for the invoice template to be updated.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_invoice_template'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateInvoiceTemplate", + "parameters": { + "organization_id": { + "value": "10000012345", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + }, + "invoice_template_id": { + "value": "tmpl_987654321", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateItemCustomFields", + "qualifiedName": "ZohoBooksApi.UpdateItemCustomFields", + "fullyQualifiedName": "ZohoBooksApi.UpdateItemCustomFields@1.0.0", + "description": "Updates custom fields in an existing item.\n\n Use this tool to update the value of custom fields in existing items. Call it when you need to modify specific custom field information for an item record in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization associated with the item. This is required to specify which organization's item custom fields should be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "item_identifier", + "type": "string", + "required": false, + "description": "Provide the unique identifier for the item to update its custom fields. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_custom_fields_in_item'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateItemCustomFields", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "item_identifier": { + "value": "9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"custom_fields\":[{\"customfield_id\":\"1000000000001\",\"value\":\"Updated color: Blue\"},{\"customfield_id\":\"1000000000002\",\"value\":\"42\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateItemViaCustomField", + "qualifiedName": "ZohoBooksApi.UpdateItemViaCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateItemViaCustomField@1.0.0", + "description": "Update or create an item using a unique custom field.\n\n Use this tool to update an existing item or create a new one based on a unique custom field value in Zoho Books. If the custom field value matches, the item is updated; otherwise, a new item is created if allowed.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. This ID is used to specify which organization's data you are trying to access or modify. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used for identifying the item. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "The unique value of the custom field used to identify or create an item in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_item_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new item if no item matches the unique custom field value. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_item_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateItemViaCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890123456789", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "customitem_unique_code", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "SKU-00123", + "type": "string", + "required": false + }, + "create_item_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"name\":\"Widget A\",\"rate\":25.5,\"description\":\"Standard widget\",\"item_type\":\"goods\",\"sku\":\"SKU-00123\",\"tax_id\":\"987654321\",\"custom_fields\":{\"customitem_unique_code\":\"SKU-00123\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateJournalInZohoBooks", + "qualifiedName": "ZohoBooksApi.UpdateJournalInZohoBooks", + "fullyQualifiedName": "ZohoBooksApi.UpdateJournalInZohoBooks@1.0.0", + "description": "Updates a journal entry in Zoho Books with specified details.\n\n This tool updates an existing journal entry in Zoho Books using the provided details. It should be called when a user needs to modify a journal entry in their Zoho Books account.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. Required for identifying which organization's journal entry to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "journal_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the journal entry to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.accountants.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_journal'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateJournalInZohoBooks", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "journal_identifier": { + "value": "456789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"date\":\"2026-02-15\",\"reference_number\":\"JRN-2026-015\",\"notes\":\"Adjusted entries for February accruals\",\"journal_lines\":[{\"account_id\":\"1122334455\",\"debit\":1500.00,\"credit\":0.00,\"description\":\"Accrued expenses\"},{\"account_id\":\"9988776655\",\"debit\":0.00,\"credit\":1500.00,\"description\":\"Accrual clearing\"}],\"custom_fields\":[{\"label\":\"Department\",\"value\":\"Finance\"}] }", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateLocationInZohoBooks", + "qualifiedName": "ZohoBooksApi.UpdateLocationInZohoBooks", + "fullyQualifiedName": "ZohoBooksApi.UpdateLocationInZohoBooks@1.0.0", + "description": "Update location details in Zoho Books.\n\n Use this tool to update location details in Zoho Books by specifying the location ID.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization in Zoho Books. It is required to identify which organization's location is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "location_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the location to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_location'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateLocationInZohoBooks", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "location_identifier": { + "value": "987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"location\":{\"location_name\":\"Warehouse B\",\"attention\":\"John Doe\",\"address\":\"123 Main St\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94105\",\"country\":\"United States\",\"phone\":\"+1-415-555-1234\",\"mobile\":\"+1-415-555-5678\",\"email\":\"warehouse@example.com\",\"is_default\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateOpeningBalance", + "qualifiedName": "ZohoBooksApi.UpdateOpeningBalance", + "fullyQualifiedName": "ZohoBooksApi.UpdateOpeningBalance@1.0.0", + "description": "Update the existing opening balance information.\n\n This tool is used to update the existing opening balance information in Zoho Books. It should be called when there is a need to modify or correct the initial financial figures recorded in the system.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required for updating the opening balance information. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_opening_balance'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateOpeningBalance", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6000000000001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"opening_balance\":{\"account_id\":\"987654321\",\"amount\":2500.00,\"date\":\"2024-04-01\",\"currency\":\"USD\",\"notes\":\"Corrected opening balance after audit\",\"reference_number\":\"OB-2024-04\",\"exchange_rate\":1}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateOrganizationDetails", + "qualifiedName": "ZohoBooksApi.UpdateOrganizationDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateOrganizationDetails@1.0.0", + "description": "Update an organization's details in Zoho Books.\n\n This tool updates the details of an organization in Zoho Books. It should be called when you need to modify existing information about a specific organization.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique identifier of the organization to update in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique string identifier for the organization to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_organization'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateOrganizationDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "organization_identifier": { + "value": null, + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"company_name\":\"Acme Corporation\",\"display_name\":\"Acme Corp\",\"financial_year_start\":\"2024-04-01\",\"country\":\"US\",\"currency_id\":\"USD\",\"tax_registration_number\":\"TAX-987654\",\"email\":\"billing@acme.example.com\",\"phone\":\"+1-555-1234\",\"website\":\"https://www.acme.example.com\",\"address\":{\"street\":\"123 Market St\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94103\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdatePaymentByCustomField", + "qualifiedName": "ZohoBooksApi.UpdatePaymentByCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdatePaymentByCustomField@1.0.0", + "description": "Update or upsert a customer payment using a unique custom field.\n\n Use this tool to update an existing customer payment or create a new one if it doesn't exist, by specifying a unique value from a custom field. The unique custom field value helps identify the payment to update. If upsert is enabled, a new payment will be created when the unique value is not found.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization whose payment is being updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "API name of the unique custom field used to identify the payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "The unique value of the custom field used to identify or create a payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_new_payment_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new payment when no matching unique custom field value is found. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_customer_payment_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdatePaymentByCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "unique_payment_ref", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "UNQ-ABC-123", + "type": "string", + "required": false + }, + "create_new_payment_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"payment\":{\"customer_id\":\"100000001\",\"date\":\"2026-02-19\",\"amount\":150.00,\"payment_mode\":\"Online\",\"reference_number\":\"TXN-20260219-01\",\"invoices\":[{\"invoice_id\":\"500000123\",\"amount_applied\":150.00}],\"custom_fields\":[{\"label\":\"unique_payment_ref\",\"value\":\"UNQ-ABC-123\"}],\"notes\":\"Upserted via API\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdatePaymentRefund", + "qualifiedName": "ZohoBooksApi.UpdatePaymentRefund", + "fullyQualifiedName": "ZohoBooksApi.UpdatePaymentRefund@1.0.0", + "description": "Update details of a customer payment refund.\n\n This tool updates the details of a refunded transaction for a customer payment in Zoho Books. It should be called when you need to modify existing refund details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. Required to access the organization's data. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "customer_payment_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the customer payment to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "refund_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the refund transaction to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.customerpayments.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_customer_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdatePaymentRefund", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "487659321", + "type": "string", + "required": false + }, + "customer_payment_identifier": { + "value": "custpay_20260219_001", + "type": "string", + "required": false + }, + "refund_identifier": { + "value": "refund_20260210_01", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"refund_date\":\"2026-02-10\",\"amount\":150.00,\"currency\":\"USD\",\"reference_number\":\"RF12345\",\"notes\":\"Updated refund amount after verification\",\"payment_mode\":\"bank_transfer\",\"reference_id\":\"BT-9876\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateProjectDetails", + "qualifiedName": "ZohoBooksApi.UpdateProjectDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateProjectDetails@1.0.0", + "description": "Update details of a project in Zoho Books.\n\n This tool is called to update the details of a specific project within Zoho Books. It should be used when you need to modify project information such as its name, status, or any other attributes.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization within Zoho Books, required to identify the organization whose project is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "project_unique_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the project to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_project'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateProjectDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "project_unique_identifier": { + "value": "PRJ-2026-045", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"project\":{\"project_name\":\"Website Redesign - Phase 2\",\"status\":\"in_progress\",\"description\":\"Redesign of landing pages and UI improvements.\",\"start_date\":\"2026-03-01\",\"end_date\":\"2026-06-30\",\"billable\":true,\"currency_code\":\"USD\",\"budget\":15000,\"client_name\":\"Acme Corp\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateProjectTask", + "qualifiedName": "ZohoBooksApi.UpdateProjectTask", + "fullyQualifiedName": "ZohoBooksApi.UpdateProjectTask@1.0.0", + "description": "Update the details of a project task.\n\n Use this tool to update the details of a specific task within a project in Zoho Books. It should be called when you need to change task information such as its status, due date, or other attributes.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books to identify the context for the task update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the project in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "task_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the task to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_task'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateProjectTask", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6000000001", + "type": "string", + "required": false + }, + "project_identifier": { + "value": "9876543210", + "type": "string", + "required": false + }, + "task_identifier": { + "value": "5550001234", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"task\":{\"name\":\"Design review\",\"status\":\"completed\",\"due_date\":\"2026-03-01\",\"hourly_rate\":75.0,\"estimated_hours\":10,\"notes\":\"Updated after client feedback\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateProjectUserDetails", + "qualifiedName": "ZohoBooksApi.UpdateProjectUserDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateProjectUserDetails@1.0.0", + "description": "Update user details in a specific project.\n\n Use this tool to update details of a user within a specified project in Zoho Books. It confirms the changes made to the user's information.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required to update the user's project details. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "project_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the project in Zoho Books. Required to specify which project's user details are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "user_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the user to be updated within the project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_project_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateProjectUserDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "project_identifier": { + "value": "proj_abc123", + "type": "string", + "required": false + }, + "user_identifier": { + "value": "user_98765", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"project_user\": {\"role\": \"Developer\", \"hourly_rate\": 60.0, \"billable\": true, \"is_project_manager\": false, \"notify\": true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateProjectWithCustomField", + "qualifiedName": "ZohoBooksApi.UpdateProjectWithCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateProjectWithCustomField@1.0.0", + "description": "Update or create projects using a unique custom field.\n\n This tool updates an existing project or creates a new one if no match is found, using a unique custom field value in Zoho Books. Utilize it when you need to modify projects with specific identifiers.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "A string representing the organization's ID required to update or create a project using the custom field. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used to identify the project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "The unique value for the custom field used to identify or create a project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_new_project_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new project if no existing project matches the unique custom field value. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_projects_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateProjectWithCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "6000000000001", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "x_unique_project_id", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "ACME-WEB-2026", + "type": "string", + "required": false + }, + "create_new_project_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"project\":{\"name\":\"Website Redesign - ACME\",\"description\":\"Redesign of corporate website for ACME Corp.\",\"customer_id\":\"123456789012345\",\"start_date\":\"2026-03-01\",\"end_date\":\"2026-06-30\",\"billing_type\":\"project_rate\",\"bill_rate\":120.0,\"budget_hours\":400,\"project_owner_id\":\"987654321098765\",\"custom_fields\":[{\"api_name\":\"x_unique_project_id\",\"value\":\"ACME-WEB-2026\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdatePurchaseOrder", + "qualifiedName": "ZohoBooksApi.UpdatePurchaseOrder", + "fullyQualifiedName": "ZohoBooksApi.UpdatePurchaseOrder@1.0.0", + "description": "Update an existing purchase order in Zoho Books.\n\n Use this tool to update details of a specific purchase order in Zoho Books. It should be called when changes to a purchase order need to be made.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization for which the purchase order is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the specific purchase order to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "attachment_file_path", + "type": "string", + "required": false, + "description": "File path of the attachment with extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "If true, ignore automatic purchase order number generation and manually specify the order number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_purchase_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdatePurchaseOrder", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "987654321", + "type": "string", + "required": false + }, + "purchase_order_identifier": { + "value": "1234567890", + "type": "string", + "required": false + }, + "attachment_file_path": { + "value": "/tmp/attachments/po_123.pdf", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"purchaseorder\":{\"purchaseorder_number\":\"PO-2026-045\",\"vendor_id\":\"4567890123\",\"date\":\"2026-02-19\",\"due_date\":\"2026-03-05\",\"reference_number\":\"REF-2026-02\",\"status\":\"open\",\"shipping_charge\":50.0,\"adjustment\":-10.0,\"notes\":\"Updated items and shipping\",\"line_items\":[{\"item_id\":\"789012345\",\"name\":\"Steel Bolts\",\"description\":\"M8 x 30mm\",\"rate\":0.25,\"quantity\":200,\"discount\":\"5%\",\"tax_id\":\"111222333\"},{\"item_id\":\"890123456\",\"name\":\"Washers\",\"rate\":0.05,\"quantity\":400}],\"custom_fields\":[{\"label\":\"Project\",\"value\":\"New Factory\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdatePurchaseOrderBillingAddress", + "qualifiedName": "ZohoBooksApi.UpdatePurchaseOrderBillingAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdatePurchaseOrderBillingAddress@1.0.0", + "description": "Update the billing address for a specific purchase order.\n\n Use this tool to modify the billing address of a single purchase order in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization to update the billing address in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the specific purchase order to update the billing address. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_purchase_order_billing_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdatePurchaseOrderBillingAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "purchase_order_identifier": { + "value": "PO-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"billing_address\":{\"attention\":\"Accounts Payable\",\"address\":\"123 Supplier Lane\",\"city\":\"Austin\",\"state\":\"TX\",\"zip\":\"73301\",\"country\":\"USA\",\"phone\":\"512-555-0123\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdatePurchaseOrderByCustomField", + "qualifiedName": "ZohoBooksApi.UpdatePurchaseOrderByCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdatePurchaseOrderByCustomField@1.0.0", + "description": "Update or create a purchase order via custom field value.\n\n Use this tool to update an existing purchase order or create a new one if needed, based on a unique custom field value. It should be called when you need to modify a purchase order by using a custom field's unique identifier.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. This is required to specify which organization's purchase order needs to be updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used to update or identify the purchase order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "Unique value for the custom field to retrieve and update the purchase order. This should match the specific custom field value used to identify the order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_new_order_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new purchase order if no existing order matches the unique custom field value. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_purchase_order_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdatePurchaseOrderByCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "custom_field_po_uuid", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "PO-ABC-001", + "type": "string", + "required": false + }, + "create_new_order_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"purchase_order\":{\"vendor_id\":\"987654321\",\"reference_number\":\"PO-ABC-001\",\"date\":\"2026-02-18\",\"line_items\":[{\"item_id\":\"1111111\",\"name\":\"Widget A\",\"description\":\"High-quality widget\",\"rate\":25.0,\"quantity\":10,\"tax_id\":\"2222222\"}],\"billing_address\":{\"address\":\"123 Maple St\",\"city\":\"Metropolis\",\"state\":\"NY\",\"zip\":\"10001\",\"country\":\"USA\"},\"shipping_address\":{\"address\":\"123 Maple St\",\"city\":\"Metropolis\",\"state\":\"NY\",\"zip\":\"10001\",\"country\":\"USA\"},\"notes\":\"Priority delivery\",\"custom_fields\":[{\"label\":\"PO UUID\",\"value\":\"PO-ABC-001\",\"api_name\":\"custom_field_po_uuid\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdatePurchaseOrderComment", + "qualifiedName": "ZohoBooksApi.UpdatePurchaseOrderComment", + "fullyQualifiedName": "ZohoBooksApi.UpdatePurchaseOrderComment@1.0.0", + "description": "Update an existing comment on a purchase order.\n\n Use this tool to update a specific comment on a purchase order in Zoho Books. It should be called when you need to modify or correct information in a comment related to a purchase order.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID representing the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": false, + "description": "The unique identifier for the purchase order to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the comment to be updated in the purchase order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_purchase_order_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdatePurchaseOrderComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "purchase_order_id": { + "value": "PO-1001", + "type": "string", + "required": false + }, + "comment_identifier": { + "value": "CMT-2002", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\": {\"content\": \"Updated delivery date: please confirm arrival by May 15.\", \"is_private\": false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdatePurchaseOrderEmailAttachment", + "qualifiedName": "ZohoBooksApi.UpdatePurchaseOrderEmailAttachment", + "fullyQualifiedName": "ZohoBooksApi.UpdatePurchaseOrderEmailAttachment@1.0.0", + "description": "Update email attachment preference for a purchase order.\n\nThis tool updates the preference to include or exclude the attached file when emailing a specific purchase order. It should be called when you need to change whether the attachment is sent via email for a particular purchase order.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization for which the purchase order email attachment preference is being updated.", + "enum": null, + "inferrable": true + }, + { + "name": "purchase_order_id", + "type": "string", + "required": true, + "description": "Unique identifier of the purchase order to update the email attachment preference for.", + "enum": null, + "inferrable": true + }, + { + "name": "include_attachment_with_email", + "type": "boolean", + "required": true, + "description": "Boolean to determine if the attachment should be sent with the purchase order email. Set to true to include the attachment, or false to exclude it.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.purchaseorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_purchase_order_attachment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdatePurchaseOrderEmailAttachment", + "parameters": { + "organization_id": { + "value": "org_987654321", + "type": "string", + "required": true + }, + "purchase_order_id": { + "value": "PO-1024", + "type": "string", + "required": true + }, + "include_attachment_with_email": { + "value": true, + "type": "boolean", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateRecurringBill", + "qualifiedName": "ZohoBooksApi.UpdateRecurringBill", + "fullyQualifiedName": "ZohoBooksApi.UpdateRecurringBill@1.0.0", + "description": "Update details of a recurring bill in Zoho Books.\n\n Use this tool to update a recurring bill in Zoho Books. Modify its details including line items by removing them from the list if needed.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization in Zoho Books. This ID is required to specify the organization whose recurring bill is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_bill_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the recurring bill to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.bills.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_recurring_bill'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateRecurringBill", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "recurring_bill_identifier": { + "value": "RB-0012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"recurring_bill\":{\"vendor_id\":\"1000000000001\",\"reference_number\":\"RB-2026-001\",\"start_date\":\"2026-03-01\",\"end_date\":\"2027-03-01\",\"frequency\":\"monthly\",\"repeat_every\":1,\"billing_day\":1,\"notes\":\"Updated recurring bill: added support line item, removed one-time setup\",\"line_items\":[{\"line_item_id\":\"555555555\",\"item_id\":\"2000000000001\",\"description\":\"Monthly hosting\",\"rate\":75.00,\"quantity\":1},{\"item_id\":\"2000000000002\",\"description\":\"Monthly support\",\"rate\":150.00,\"quantity\":1}],\"shipping_charge\":10.00,\"adjustment\":-5.00,\"currency_id\":\"8400000000001\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateRecurringBillCustomField", + "qualifiedName": "ZohoBooksApi.UpdateRecurringBillCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateRecurringBillCustomField@1.0.0", + "description": "Update or create a recurring bill using a unique custom field.\n\n This tool updates a recurring bill by identifying it through a custom field with a unique value. If the unique value does not match any existing recurring bills and the X-Upsert header is true, a new bill will be created if the necessary details are provided.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization associated with the recurring bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_field_unique_identifier_key", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used to identify the recurring bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "Unique value of the custom field used to identify the recurring bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "allow_creation_if_missing", + "type": "boolean", + "required": false, + "description": "Set to true to create a new recurring bill if the unique custom field value is not found. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_recurring_bill_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateRecurringBillCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "custom_field_unique_identifier_key": { + "value": "cf_unique_id", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "RBILL-2026-001", + "type": "string", + "required": false + }, + "allow_creation_if_missing": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"987654321\",\"date\":\"2026-02-19\",\"reference_number\":\"REC-001\",\"line_items\":[{\"item_id\":\"1111\",\"name\":\"Consulting\",\"rate\":150.0,\"quantity\":10}],\"recurrence\":{\"repeat_every\":1,\"repeat_unit\":\"months\"},\"billing_cycle\":{\"start_date\":\"2026-03-01\",\"end_date\":null},\"customer_notes\":\"Monthly consulting retainer\",\"custom_fields\":[{\"label\":\"Unique ID\",\"value\":\"RBILL-2026-001\",\"api_name\":\"cf_unique_id\"}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateRecurringExpense", + "qualifiedName": "ZohoBooksApi.UpdateRecurringExpense", + "fullyQualifiedName": "ZohoBooksApi.UpdateRecurringExpense@1.0.0", + "description": "Update or create a recurring expense using a custom field.\n\n Use this tool to update a recurring expense in Zoho Books by specifying a unique custom field value. If the expense doesn't exist and upsert is enabled, a new expense can be created. This is useful for maintaining accurate financial records.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique identifier for the organization whose recurring expense is to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "Unique CustomField API Name to identify the recurring expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "Unique value of the CustomField used to identify the recurring expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_new_recurring_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new recurring expense if the unique custom field value is not found. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.expenses.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_recurring_expense_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateRecurringExpense", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "custom_subscription_id", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "RF-001", + "type": "string", + "required": false + }, + "create_new_recurring_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"recurring_expense\":{\"vendor_id\":\"987654321\",\"account_id\":\"1122334455\",\"reference_number\":\"REC-2026-001\",\"date\":\"2026-02-01\",\"frequency\":\"monthly\",\"repeat_every\":1,\"start_date\":\"2026-02-01\",\"end_by\":\"2026-12-31\",\"notes\":\"Monthly office supplies\",\"line_items\":[{\"name\":\"Office Supplies\",\"description\":\"Stationery and consumables\",\"rate\":150.00,\"quantity\":1,\"account_id\":\"445566\",\"tax_id\":\"778899\"}],\"custom_fields\":[{\"label\":\"Subscription ID\",\"value\":\"RF-001\",\"api_name\":\"custom_subscription_id\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateRecurringInvoice", + "qualifiedName": "ZohoBooksApi.UpdateRecurringInvoice", + "fullyQualifiedName": "ZohoBooksApi.UpdateRecurringInvoice@1.0.0", + "description": "Update details of a recurring invoice in Zoho Books.\n\n Use this tool to modify an existing recurring invoice in Zoho Books by specifying the invoice ID.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. Required for updating a recurring invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_id", + "type": "string", + "required": false, + "description": "Unique identifier of the recurring invoice to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_recurring_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateRecurringInvoice", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "987654321", + "type": "string", + "required": false + }, + "recurring_invoice_id": { + "value": "54321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"recurring_invoice\":{\"customer_id\":\"3001\",\"reference_number\":\"REC-2026-01\",\"description\":\"Monthly retainer for February 2026\",\"billing_cycle\":\"monthly\",\"frequency\":1,\"next_billing_date\":\"2026-03-01\",\"end_date\":\"2026-12-31\",\"line_items\":[{\"item_id\":\"1001\",\"name\":\"Consulting Services\",\"description\":\"Consulting - 20 hours\",\"rate\":150.0,\"quantity\":20,\"discount\":0}],\"notes\":\"Please remit payment within 15 days.\",\"terms\":\"Payment due within 15 days of invoice date.\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateRecurringInvoiceCustomField", + "qualifiedName": "ZohoBooksApi.UpdateRecurringInvoiceCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateRecurringInvoiceCustomField@1.0.0", + "description": "Update or create a recurring invoice using a custom field.\n\n This tool updates an existing recurring invoice or creates a new one using a custom field's unique value. Use when you need to update invoices based on unique custom identifiers. If the unique key isn't found and the upsert option is true, a new invoice is created.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. This ID is required to update or create a recurring invoice using the custom field. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "The unique API name of the custom field used to identify which recurring invoice to update or create. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "The unique value for the custom field used to identify and update the recurring invoice. This should be a unique string associated with a custom field configured to reject duplicates. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "enable_upsert", + "type": "boolean", + "required": false, + "description": "Set to true to create a new invoice if no existing invoice matches the unique identifier. Set to false to update only without creating a new invoice. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_recurring_invoice_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateRecurringInvoiceCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890abcdef", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "external_ref_id", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "SUBS-2026-0001", + "type": "string", + "required": false + }, + "enable_upsert": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"customer_id\":\"9876543210\",\"invoice_number\":\"REC-2026-0001\",\"start_date\":\"2026-03-01\",\"end_date\":\"2027-03-01\",\"frequency\":\"monthly\",\"recurrence_period\":1,\"notes\":\"Monthly subscription for premium plan\",\"line_items\":[{\"item_id\":\"555555\",\"name\":\"Premium Subscription\",\"description\":\"Premium SaaS subscription - monthly\",\"rate\":49.99,\"quantity\":1,\"discount\":0}],\"custom_fields\":[{\"customfield_id\":\"cf_001\",\"label\":\"External Reference\",\"value\":\"SUBS-2026-0001\"}],\"shipping_charge\":0,\"adjustment\":0,\"currency_code\":\"USD\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateRecurringInvoiceTemplate", + "qualifiedName": "ZohoBooksApi.UpdateRecurringInvoiceTemplate", + "fullyQualifiedName": "ZohoBooksApi.UpdateRecurringInvoiceTemplate@1.0.0", + "description": "Update the PDF template for a recurring invoice.\n\n This tool updates the PDF template associated with a specific recurring invoice in Zoho Books. It is used when you need to change the template for invoices that are generated on a recurring basis.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique identifier of the organization. This ID is used to specify which organization's recurring invoice template will be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "recurring_invoice_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the recurring invoice to update the PDF template for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_template_id", + "type": "string", + "required": false, + "description": "Unique identifier of the recurring invoice template to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_recurring_invoice_template'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateRecurringInvoiceTemplate", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789", + "type": "string", + "required": false + }, + "recurring_invoice_identifier": { + "value": "RINV-2026-0001", + "type": "string", + "required": false + }, + "invoice_template_id": { + "value": "1001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"pdf_template_id\":\"54321\",\"notes\":\"Switching to updated PDF layout\",\"modified_by\":\"admin@example.com\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateRefundTransaction", + "qualifiedName": "ZohoBooksApi.UpdateRefundTransaction", + "fullyQualifiedName": "ZohoBooksApi.UpdateRefundTransaction@1.0.0", + "description": "Update the refunded transaction details.\n\n Use this tool to update the details of a refunded transaction associated with a specific credit note. This is helpful when corrections or updates are needed for bookkeeping or record maintenance.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization. Required to identify which organization's records are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the credit note to update the refund transaction. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "credit_note_refund_id", + "type": "string", + "required": false, + "description": "Provide the unique identifier of the credit note refund to update its transaction details. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.creditnotes.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_credit_note_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateRefundTransaction", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "credit_note_identifier": { + "value": "CN-2026-1001", + "type": "string", + "required": false + }, + "credit_note_refund_id": { + "value": "RFND-98765", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"refund_transaction\":{\"refund_mode\":\"bank_transfer\",\"reference_number\":\"RF-2026-0001\",\"refund_date\":\"2026-02-10\",\"amount\":150.00,\"bank_charges\":2.50,\"notes\":\"Corrected refund amount after audit\",\"payment_account_id\":\"acc_7890\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateRetainerInvoiceComment", + "qualifiedName": "ZohoBooksApi.UpdateRetainerInvoiceComment", + "fullyQualifiedName": "ZohoBooksApi.UpdateRetainerInvoiceComment@1.0.0", + "description": "Update a comment on a retainer invoice.\n\n Use this tool to update an existing comment of a retainer invoice by specifying the invoice and comment IDs.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization to which the retainer invoice belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": false, + "description": "Unique identifier of the retainer invoice to update the comment for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_identifier", + "type": "string", + "required": false, + "description": "The unique identifier of the comment to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_retainer_invoice_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateRetainerInvoiceComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "retainer_invoice_id": { + "value": "987654321", + "type": "string", + "required": false + }, + "comment_identifier": { + "value": "cmt_54321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\": {\"content\": \"Updated the retainer amount and clarified payment schedule.\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateSalesOrderBillingAddress", + "qualifiedName": "ZohoBooksApi.UpdateSalesOrderBillingAddress", + "fullyQualifiedName": "ZohoBooksApi.UpdateSalesOrderBillingAddress@1.0.0", + "description": "Updates the billing address for a specific sales order.\n\n\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization associated with the sales order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the sales order to update the billing address for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_sales_order_billing_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateSalesOrderBillingAddress", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "sales_order_identifier": { + "value": "SO-1001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"billing_address\":{\"attention\":\"John Doe\",\"address\":\"123 Main St\",\"street2\":\"Suite 400\",\"city\":\"San Francisco\",\"state\":\"CA\",\"zip\":\"94105\",\"country\":\"United States\",\"phone\":\"+1-415-555-0123\",\"fax\":\"+1-415-555-0124\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateSalesOrderComment", + "qualifiedName": "ZohoBooksApi.UpdateSalesOrderComment", + "fullyQualifiedName": "ZohoBooksApi.UpdateSalesOrderComment@1.0.0", + "description": "Update an existing comment on a sales order.\n\n\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": false, + "description": "Unique identifier of the sales order to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "comment_id", + "type": "string", + "required": false, + "description": "Unique identifier of the comment associated with the sales order that needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_sales_order_comment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateSalesOrderComment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "60012345678", + "type": "string", + "required": false + }, + "sales_order_id": { + "value": "5000000123456789", + "type": "string", + "required": false + }, + "comment_id": { + "value": "3000000012345678", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"comment\":{\"comment\":\"Please ship by end of day.\",\"is_private\":false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateSalesOrderCustomFields", + "qualifiedName": "ZohoBooksApi.UpdateSalesOrderCustomFields", + "fullyQualifiedName": "ZohoBooksApi.UpdateSalesOrderCustomFields@1.0.0", + "description": "Update custom fields in existing sales orders efficiently.\n\n Call this tool to update the value of custom fields in existing sales orders when you need to modify order details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization associated with the sales order. This is required to identify which organization's sales order needs updating. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": false, + "description": "Unique identifier for the sales order to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_salesorder_customfields'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateSalesOrderCustomFields", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "643217890", + "type": "string", + "required": false + }, + "sales_order_id": { + "value": "SO-2026-00047", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"salesorder\":{\"custom_fields\":[{\"index\":1,\"value\":\"Priority: High\"},{\"index\":2,\"value\":\"InternalRef-1234\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateSalesOrderInZohoBooks", + "qualifiedName": "ZohoBooksApi.UpdateSalesOrderInZohoBooks", + "fullyQualifiedName": "ZohoBooksApi.UpdateSalesOrderInZohoBooks@1.0.0", + "description": "Update details of an existing sales order in Zoho Books.\n\n Use this tool to update the details of an existing sales order in Zoho Books. It also allows for the deletion of line items by omitting them from the update request.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization to which the sales order belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": false, + "description": "Unique identifier of the sales order to update in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "total_number_of_files", + "type": "integer", + "required": false, + "description": "Specify the total number of files to be attached to the sales order update. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "attach_document", + "type": "string", + "required": false, + "description": "A document to be attached to the sales order. Provide the file path or URL as a string. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "ignore_auto_number_generation", + "type": "boolean", + "required": false, + "description": "Set to TRUE to ignore auto-generation of the sales order number. This requires manually entering the number. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "allow_email_sending", + "type": "boolean", + "required": false, + "description": "Determine if the updated sales order can be sent via email. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_sales_order'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateSalesOrderInZohoBooks", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "800000000000000", + "type": "string", + "required": false + }, + "sales_order_id": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "total_number_of_files": { + "value": 2, + "type": "integer", + "required": false + }, + "attach_document": { + "value": "https://example.com/docs/salesorder-terms.pdf", + "type": "string", + "required": false + }, + "ignore_auto_number_generation": { + "value": true, + "type": "boolean", + "required": false + }, + "allow_email_sending": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"salesorder_number\":\"SO-2026-001\",\"customer_id\":\"987654321\",\"salesorder_date\":\"2026-02-01\",\"delivery_date\":\"2026-02-15\",\"reference_number\":\"REF-789\",\"status\":\"draft\",\"discount\":{\"type\":\"percentage\",\"value\":5},\"shipping_charge\":15.0,\"adjustment\":0,\"custom_fields\":[{\"label\":\"Priority\",\"value\":\"High\"}],\"line_items\":[{\"item_id\":\"111111111\",\"name\":\"Widget A\",\"rate\":50.0,\"quantity\":2},{\"item_id\":\"222222222\",\"name\":\"Widget B\",\"rate\":30.0,\"quantity\":1}],\"notes\":\"Updated per customer request\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateSalesOrderSubStatus", + "qualifiedName": "ZohoBooksApi.UpdateSalesOrderSubStatus", + "fullyQualifiedName": "ZohoBooksApi.UpdateSalesOrderSubStatus@1.0.0", + "description": "Update the sub status of a sales order in Zoho Books.\n\nThis tool updates the sub status of a specified sales order in Zoho Books, identified by the sales order ID and the new status code. It should be called when you need to change the status of an existing sales order.", + "parameters": [ + { + "name": "organization_identifier", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. This ID is required to specify which organization's sales order needs an update.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier for the specific sales order to update.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_status_code", + "type": "string", + "required": true, + "description": "The unique code representing the new status for a sales order. This is required to update the status in Zoho Books.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_sales_order_sub_status'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateSalesOrderSubStatus", + "parameters": { + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO-1000456", + "type": "string", + "required": true + }, + "sales_order_status_code": { + "value": "confirmed", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateSalesOrderTemplate", + "qualifiedName": "ZohoBooksApi.UpdateSalesOrderTemplate", + "fullyQualifiedName": "ZohoBooksApi.UpdateSalesOrderTemplate@1.0.0", + "description": "Update the PDF template for a sales order.\n\nThis tool updates the PDF template associated with a specific sales order. Use it when you need to change the template for an existing sales order.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique identifier for the organization associated with the sales order.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_id", + "type": "string", + "required": true, + "description": "Unique identifier for the sales order to be updated with a new PDF template.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_template_id", + "type": "string", + "required": true, + "description": "Unique identifier of the sales order template to update.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_sales_order_template'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateSalesOrderTemplate", + "parameters": { + "organization_id": { + "value": "60012345678", + "type": "string", + "required": true + }, + "sales_order_id": { + "value": "SO-1024", + "type": "string", + "required": true + }, + "sales_order_template_id": { + "value": "SOTPL-778899", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateSalesOrderWithCustomField", + "qualifiedName": "ZohoBooksApi.UpdateSalesOrderWithCustomField", + "fullyQualifiedName": "ZohoBooksApi.UpdateSalesOrderWithCustomField@1.0.0", + "description": "Update or create a sales order using a custom field.\n\n Use a custom field's unique value to update an existing sales order or create a new one if the order does not exist and the required details are provided. This tool is useful when managing sales orders using specific identifiers in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_api_name", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used to identify the sales order to update or create. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "unique_custom_field_value", + "type": "string", + "required": false, + "description": "The unique value of the custom field used to retrieve and update a specific sales order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "allow_creation_if_not_found", + "type": "boolean", + "required": false, + "description": "Set to true to create a new sales order if the unique custom field value is not found. Complete details are required for creation. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_sales_order_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateSalesOrderWithCustomField", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "unique_custom_field_api_name": { + "value": "cf_unique_code", + "type": "string", + "required": false + }, + "unique_custom_field_value": { + "value": "UNIQ-001", + "type": "string", + "required": false + }, + "allow_creation_if_not_found": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"salesorder\":{\"customer_id\":\"123456789\",\"date\":\"2026-02-18\",\"reference_number\":\"SO-1001\",\"line_items\":[{\"item_id\":\"987654321\",\"name\":\"Widget A\",\"rate\":50.0,\"quantity\":2}],\"custom_fields\":[{\"api_name\":\"cf_unique_code\",\"value\":\"UNIQ-001\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateSalesReceipt", + "qualifiedName": "ZohoBooksApi.UpdateSalesReceipt", + "fullyQualifiedName": "ZohoBooksApi.UpdateSalesReceipt@1.0.0", + "description": "Update an existing sales receipt in Zoho Books.\n\n This tool is used to update details of an existing sales receipt in Zoho Books. It should be called when modifications to sales receipt data are required, such as changing amounts, dates, or other relevant information.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization in Zoho Books. It is required to specify which organization's sales receipt needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_receipt_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the sales receipt to be updated. This is required to specify which receipt to modify. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_sales_receipt'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateSalesReceipt", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "sales_receipt_identifier": { + "value": "SR-000123", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"salesreceipt\":{\"customer_id\":\"9876543210\",\"date\":\"2026-02-15\",\"reference_number\":\"REF-2026-02-15-01\",\"line_items\":[{\"item_id\":\"1001\",\"name\":\"Consulting Services\",\"description\":\"Monthly consulting\",\"quantity\":10,\"rate\":150.0,\"discount\":0,\"tax_id\":\"2001\"},{\"item_id\":\"1002\",\"name\":\"Software License\",\"description\":\"Annual license\",\"quantity\":1,\"rate\":1200.0,\"discount\":10,\"tax_id\":\"2002\"}],\"shipping_charge\":25.0,\"adjustment\":-5.0,\"notes\":\"Updated per customer request\",\"custom_fields\":[{\"label\":\"Project\",\"value\":\"Alpha\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateShippingAddressSalesOrder", + "qualifiedName": "ZohoBooksApi.UpdateShippingAddressSalesOrder", + "fullyQualifiedName": "ZohoBooksApi.UpdateShippingAddressSalesOrder@1.0.0", + "description": "Update the shipping address for a specific sales order.\n\n This tool updates the shipping address for a specific sales order in Zoho Books. It should be called when there's a need to modify the delivery location of an existing order.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The ID of the organization in Zoho Books to update the shipping address for the sales order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "sales_order_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the sales order to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.salesorders.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_sales_order_shipping_address'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateShippingAddressSalesOrder", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "123456789012345", + "type": "string", + "required": false + }, + "sales_order_identifier": { + "value": "9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"shipping_address\":{\"attention\":\"John Doe\",\"address\":\"123 Maple Street, Apt 4B\",\"city\":\"Springfield\",\"state\":\"Illinois\",\"zip\":\"62704\",\"country\":\"USA\",\"phone\":\"+1-555-123-4567\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateTaxAuthorityDetails", + "qualifiedName": "ZohoBooksApi.UpdateTaxAuthorityDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateTaxAuthorityDetails@1.0.0", + "description": "Update details of a tax authority.\n\n Use this tool to update information for a specific tax authority. Ideal for modifications to existing records.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization for which the tax authority details need to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_authority_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the tax authority to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_tax_authority'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateTaxAuthorityDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "tax_authority_identifier": { + "value": "TA-98765", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"name\":\"State Sales Tax Authority\",\"description\":\"Updated authority for state sales tax\",\"is_active\":true,\"registration_number\":\"REG-2024-001\",\"jurisdiction\":{\"country\":\"US\",\"state\":\"CA\",\"city\":\"San Francisco\"},\"tax_type\":\"Sales\",\"rate\":7.25,\"effective_from\":\"2026-04-01\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateTaxDetails", + "qualifiedName": "ZohoBooksApi.UpdateTaxDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateTaxDetails@1.0.0", + "description": "Update the details of a specified tax.\n\n Use this tool to update the details of a simple or compound tax by providing the tax ID.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique identifier for the organization that owns the tax to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the tax to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_tax'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateTaxDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": false + }, + "tax_identifier": { + "value": "9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"tax\": {\"tax_name\": \"State Sales Tax\",\"tax_percentage\": 6.5,\"is_compound\": false,\"description\": \"Updated state sales tax rate as of 2026-04-01\"}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateTaxExemptionDetails", + "qualifiedName": "ZohoBooksApi.UpdateTaxExemptionDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateTaxExemptionDetails@1.0.0", + "description": "Update the details of a tax exemption.\n\n This tool updates the information of a specific tax exemption. It should be called when changes to tax exemption records are needed, such as modifying existing details.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier of the organization for which the tax exemption needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_exemption_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the tax exemption to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_tax_exemption'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateTaxExemptionDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "tax_exemption_identifier": { + "value": "TE-98765", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"tax_exemption\": {\"name\": \"Nonprofit Exemption\",\"exemption_number\": \"EXM-2026-001\",\"valid_from\": \"2023-01-01\",\"valid_till\": \"2026-12-31\",\"is_active\": true,\"remarks\": \"Updated exemption details for fiscal compliance\",\"address\": {\"street\": \"123 Charity Ave\",\"city\": \"Springfield\",\"state\": \"IL\",\"zip\": \"62701\",\"country\": \"USA\"}}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateTaxGroupDetails", + "qualifiedName": "ZohoBooksApi.UpdateTaxGroupDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateTaxGroupDetails@1.0.0", + "description": "Update details of a specific tax group in Zoho Books.\n\n This tool updates the details of a tax group in Zoho Books using the provided tax group ID. It should be called when changes are needed to the tax group's configuration.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "tax_group_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the tax group to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_tax_group'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateTaxGroupDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "800123456", + "type": "string", + "required": false + }, + "tax_group_identifier": { + "value": "tg_2026_0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"tax_group\":{\"name\":\"Standard Tax Group\",\"taxes\":[{\"tax_name\":\"VAT\",\"tax_percentage\":12.5},{\"tax_name\":\"Service Tax\",\"tax_percentage\":2.0}],\"is_active\":true}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateTimeEntry", + "qualifiedName": "ZohoBooksApi.UpdateTimeEntry", + "fullyQualifiedName": "ZohoBooksApi.UpdateTimeEntry@1.0.0", + "description": "Updates an existing logged time entry.\n\n Use this tool to modify details of a previously logged time entry in Zoho Books. Ideal when adjustments or updates need to be made to existing time logs.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "ID of the organization to which the time entry belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "time_entry_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the existing time entry to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.projects.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_time_entry'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateTimeEntry", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "time_entry_identifier": { + "value": "6789012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"time_entry\":{\"date\":\"2026-02-15\",\"start_time\":\"2026-02-15T09:00:00Z\",\"end_time\":\"2026-02-15T11:30:00Z\",\"hours\":2.5,\"billable\":true,\"description\":\"Updated planning session and client meeting\",\"project_id\":\"1234567890\",\"task_id\":\"0987654321\",\"user_id\":\"11223344\",\"is_billed\":false}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateUserDetails", + "qualifiedName": "ZohoBooksApi.UpdateUserDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateUserDetails@1.0.0", + "description": "Update user details in Zoho Books.\n\n Use this tool to update the information of an existing user in Zoho Books. Call it when changes to a user's profile are needed.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique ID of the organization whose user's details are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "user_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the user to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_user'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateUserDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "org_1234567890", + "type": "string", + "required": false + }, + "user_identifier": { + "value": "user_9876543210", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"user\": {\"first_name\": \"Jane\", \"last_name\": \"Doe\", \"email\": \"jane.doe@example.com\", \"role\": \"User\", \"is_active\": true, \"phone\": \"+1-415-555-0123\", \"time_zone\": \"America/Los_Angeles\", \"address\": {\"street\": \"123 Market St\", \"city\": \"San Francisco\", \"state\": \"CA\", \"zip\": \"94103\", \"country\": \"USA\"}}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateVendorCredit", + "qualifiedName": "ZohoBooksApi.UpdateVendorCredit", + "fullyQualifiedName": "ZohoBooksApi.UpdateVendorCredit@1.0.0", + "description": "Update an existing vendor credit in Zoho Books.\n\n Use this tool to update the details of a specific vendor credit in Zoho Books. Call this when modifications to vendor credits are needed.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_identifier", + "type": "string", + "required": false, + "description": "The unique identifier of the organization in Zoho Books. Required to update vendor credit. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_id", + "type": "string", + "required": false, + "description": "The unique identifier for the vendor credit to be updated. This string is required to locate the specific credit. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_vendor_credit'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateVendorCredit", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_identifier": { + "value": "1234567890", + "type": "string", + "required": false + }, + "vendor_credit_id": { + "value": "vc_987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"1234567890\",\"date\":\"2026-02-15\",\"reference_number\":\"VC-2026-0001\",\"line_items\":[{\"item_id\":\"987654321\",\"description\":\"Returned widgets\",\"rate\":25.5,\"quantity\":4,\"account_id\":\"112233\"}],\"notes\":\"Credit updated to reflect returned items\",\"exchange_rate\":1.0}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateVendorCreditRefund", + "qualifiedName": "ZohoBooksApi.UpdateVendorCreditRefund", + "fullyQualifiedName": "ZohoBooksApi.UpdateVendorCreditRefund@1.0.0", + "description": "Update a refunded vendor credit transaction.\n\n Use this tool to update details of a refunded vendor credit transaction by specifying the vendor credit ID and refund ID.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Unique identifier for the organization. This is needed to specify which organization the vendor credit refund update applies to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the vendor credit to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_credit_refund_identifier", + "type": "string", + "required": false, + "description": "Unique identifier for the vendor credit refund transaction that needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.debitnotes.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_vendor_credit_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateVendorCreditRefund", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "vendor_credit_identifier": { + "value": "VC-987654321", + "type": "string", + "required": false + }, + "vendor_credit_refund_identifier": { + "value": "VCR-0012345", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"refund_mode\":\"Bank Transfer\",\"refund_date\":\"2026-02-15\",\"amount\":1500.00,\"reference_number\":\"REF-2026-001\",\"account_id\":\"1234567890\",\"notes\":\"Refund for vendor credit adjustment\",\"payment_mode\":\"Bank\",\"exchange_rate\":1.0}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateVendorPayment", + "qualifiedName": "ZohoBooksApi.UpdateVendorPayment", + "fullyQualifiedName": "ZohoBooksApi.UpdateVendorPayment@1.0.0", + "description": "Update or modify an existing vendor payment.\n\n Use this tool to update an existing vendor payment, including modifying the amount applied to bills.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "Provide the specific ID of the organization for which the vendor payment is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_identifier", + "type": "string", + "required": false, + "description": "The unique identifier of the vendor payment to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_vendor_payment'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateVendorPayment", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "123456789", + "type": "string", + "required": false + }, + "payment_identifier": { + "value": "vp_987654321", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"vendor_id\":\"v_12345\",\"payment_number\":\"VP-2026-0001\",\"date\":\"2026-02-15\",\"amount\":1500.00,\"account_id\":\"acc_54321\",\"reference_number\":\"CHK-1024\",\"notes\":\"Updated payment to adjust applied amounts.\",\"bill_payments\":[{\"bill_id\":\"b_111\",\"amount_applied\":1000.00},{\"bill_id\":\"b_222\",\"amount_applied\":500.00}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateVendorPaymentRefund", + "qualifiedName": "ZohoBooksApi.UpdateVendorPaymentRefund", + "fullyQualifiedName": "ZohoBooksApi.UpdateVendorPaymentRefund@1.0.0", + "description": "Update the refunded transaction for a vendor payment.\n\n Call this tool to update details related to a vendor payment refund. It is used when modifications to an existing refund transaction are necessary.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization associated with the refund transaction. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "payment_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the payment. Required to specify which payment is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "vendor_payment_refund_id", + "type": "string", + "required": false, + "description": "Unique identifier of the vendor payment refund required for updating the transaction. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_vendor_payment_refund'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateVendorPaymentRefund", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "payment_identifier": { + "value": "PMT-2001", + "type": "string", + "required": false + }, + "vendor_payment_refund_id": { + "value": "VPR-3001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"refund_date\":\"2026-02-15\",\"amount\":150.00,\"payment_mode\":\"Cheque\",\"cheque_number\":\"CHK-789012\",\"refund_account_id\":\"1234567890\",\"reference_number\":\"REF-2026-0001\",\"notes\":\"Adjustment for returned items\",\"applied_to\":[{\"bill_id\":\"BILL-1001\",\"amount\":100.00},{\"bill_id\":\"BILL-1002\",\"amount\":50.00}]}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateVendorPaymentWithCustomId", + "qualifiedName": "ZohoBooksApi.UpdateVendorPaymentWithCustomId", + "fullyQualifiedName": "ZohoBooksApi.UpdateVendorPaymentWithCustomId@1.0.0", + "description": "Update or create a vendor payment using a unique custom field.\n\n This tool updates an existing vendor payment by using a unique custom field as an identifier. If the unique value is not found and the X-Upsert option is enabled, it will create a new vendor payment if sufficient details are provided.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_field_api_name", + "type": "string", + "required": false, + "description": "The API name of the unique custom field used to identify the vendor payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "custom_field_unique_value", + "type": "string", + "required": false, + "description": "The unique value of the custom field used to identify or create a vendor payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "create_new_record_if_not_exists", + "type": "boolean", + "required": false, + "description": "Set to true to create a new vendor payment if no existing record matches the unique custom field value. Only used when mode is 'execute'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.vendorpayments.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_vendor_payment_using_custom_field'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateVendorPaymentWithCustomId", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "ORG123456", + "type": "string", + "required": false + }, + "custom_field_api_name": { + "value": "cf_unique_payment_id", + "type": "string", + "required": false + }, + "custom_field_unique_value": { + "value": "UPAY-000123", + "type": "string", + "required": false + }, + "create_new_record_if_not_exists": { + "value": true, + "type": "boolean", + "required": false + }, + "request_body": { + "value": "{\"vendor_payment\":{\"vendor_id\":\"1234567890\",\"payment_mode\":\"Bank Transfer\",\"amount\":1500.00,\"date\":\"2026-02-19\",\"account_id\":\"987654321\",\"reference_number\":\"VP-2026-001\",\"notes\":\"Payment for January invoices\",\"custom_fields\":{\"cf_unique_payment_id\":\"UPAY-000123\"}}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "UpdateZohoItemDetails", + "qualifiedName": "ZohoBooksApi.UpdateZohoItemDetails", + "fullyQualifiedName": "ZohoBooksApi.UpdateZohoItemDetails@1.0.0", + "description": "Update the details of an item in Zoho Books.\n\n Use this tool to update item details in Zoho Books by providing the item ID and the new information to be updated.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The ID of the organization in Zoho Books for which the item details are to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "item_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the item to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.settings.UPDATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'update_item'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.UpdateZohoItemDetails", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "1234567890", + "type": "string", + "required": false + }, + "item_identifier": { + "value": "ITEM-2026-0001", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"item\": {\"name\": \"Premium Widget\",\"sku\": \"PW-001\",\"rate\": 49.99,\"description\": \"Updated premium widget with improved durability and packaging\",\"unit\": \"pcs\",\"is_taxable\": true,\"tax_id\": \"TX-101\",\"status\": \"active\",\"custom_fields\": [{\"label\": \"Manufacturer\",\"value\": \"Acme Co.\"}]}}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "VoidInvoiceStatus", + "qualifiedName": "ZohoBooksApi.VoidInvoiceStatus", + "fullyQualifiedName": "ZohoBooksApi.VoidInvoiceStatus@1.0.0", + "description": "Mark an invoice as void in Zoho Books.\n\nUse this tool to change the status of an invoice to void in Zoho Books. This process will unassociate any payments and credits, placing them under customer credits.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to specify which organization the invoice belongs to.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_unique_identifier", + "type": "string", + "required": true, + "description": "Unique identifier for the invoice to be marked as void.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_invoice_void'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.VoidInvoiceStatus", + "parameters": { + "organization_id": { + "value": "6001234567890", + "type": "string", + "required": true + }, + "invoice_unique_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "VoidRetainerInvoice", + "qualifiedName": "ZohoBooksApi.VoidRetainerInvoice", + "fullyQualifiedName": "ZohoBooksApi.VoidRetainerInvoice@1.0.0", + "description": "Mark a retainer invoice as void.\n\nThis tool marks a specified retainer invoice as void, disassociating any payments and credits and moving them under customer credits.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "ID of the organization required to identify which organization's invoice to void.", + "enum": null, + "inferrable": true + }, + { + "name": "retainer_invoice_id", + "type": "string", + "required": true, + "description": "Unique identifier for the retainer invoice to be marked as void.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'mark_retainer_invoice_void'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.VoidRetainerInvoice", + "parameters": { + "organization_id": { + "value": "1234567890", + "type": "string", + "required": true + }, + "retainer_invoice_id": { + "value": "RINV-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "WriteOffFixedAsset", + "qualifiedName": "ZohoBooksApi.WriteOffFixedAsset", + "fullyQualifiedName": "ZohoBooksApi.WriteOffFixedAsset@1.0.0", + "description": "Remove a fixed asset from the records.\n\n Use this tool to write off a fixed asset. It should be called when an asset needs to be removed from the records in Zoho Books.\n\n Note: Understanding the request schema is necessary to properly create\n the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters.\n\n Modes:\n - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't\n already have it. Do NOT call repeatedly if you already received\n the schema.\n - EXECUTE: Performs the operation with the provided request body\n JSON.\n Note: You must also provide the required path, query parameters when executing.\n\n If you need the schema, call with mode='get_request_schema' ONCE, then execute.\n ", + "parameters": [ + { + "name": "mode", + "type": "string", + "required": true, + "description": "Operation mode: 'get_request_schema' returns the OpenAPI spec for the request body, 'execute' performs the actual operation", + "enum": [ + "get_request_schema", + "execute" + ], + "inferrable": true + }, + { + "name": "organization_id", + "type": "string", + "required": false, + "description": "The unique identifier for the organization. Required to specify which organization's asset is to be written off. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "fixed_asset_identifier", + "type": "string", + "required": false, + "description": "Unique identifier of the fixed asset to be written off in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + "enum": null, + "inferrable": true + }, + { + "name": "request_body", + "type": "string", + "required": false, + "description": "Stringified JSON representing the request body. Required when mode is 'execute', ignored when mode is 'get_request_schema'", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.fixedasset.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'write_off_fixed_asset'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.WriteOffFixedAsset", + "parameters": { + "mode": { + "value": "execute", + "type": "string", + "required": true + }, + "organization_id": { + "value": "60001234567", + "type": "string", + "required": false + }, + "fixed_asset_identifier": { + "value": "FA-000123", + "type": "string", + "required": false + }, + "request_body": { + "value": "{\"write_off_date\":\"2025-01-15\",\"reason\":\"Asset damaged beyond repair\",\"amount\":1500.00,\"method\":\"scrap\",\"notes\":\"Disposed per company policy\"}", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } + }, + { + "name": "WriteOffInvoiceBalance", + "qualifiedName": "ZohoBooksApi.WriteOffInvoiceBalance", + "fullyQualifiedName": "ZohoBooksApi.WriteOffInvoiceBalance@1.0.0", + "description": "Write off the balance amount of an invoice in Zoho Books.\n\nUse this tool to write off the remaining balance of an invoice in Zoho Books when the amount is uncollectible.", + "parameters": [ + { + "name": "organization_id", + "type": "string", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "enum": null, + "inferrable": true + }, + { + "name": "invoice_identifier", + "type": "string", + "required": true, + "description": "The unique identifier for the invoice to be written off.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoho", + "providerType": "oauth2", + "scopes": [ + "ZohoBooks.invoices.CREATE" + ] + }, + "secrets": [ + "ZOHO_SERVER_URL" + ], + "secretsInfo": [ + { + "name": "ZOHO_SERVER_URL", + "type": "unknown" + } + ], + "output": { + "type": "json", + "description": "Response from the API endpoint 'write_off_invoice'." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "ZohoBooksApi.WriteOffInvoiceBalance", + "parameters": { + "organization_id": { + "value": "987654321", + "type": "string", + "required": true + }, + "invoice_identifier": { + "value": "INV-2026-0001", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoho", + "tabLabel": "Call the Tool with User Authorization" + } } ], - "customImports": [ - "import StarterToolInfo from \"@/app/_components/starter-tool-info\";" - ], + "documentationChunks": [], + "customImports": [], "subPages": [], - "generatedAt": "2026-01-26T17:48:05.819Z" -} + "generatedAt": "2026-02-19T22:22:02.887Z", + "summary": "Zoho Books API — Arcade toolkit enabling LLMs to call Zoho Books endpoints to automate accounting workflows: create/read/update/delete invoices, estimates, bills, contacts, payments, projects, taxes, bank reconciliation, templates and organization settings.\n\n**Capabilities**\n- Unified CRUD and workflow automation across core financial objects (invoices, bills, credits, payments, vendors/customers, projects).\n- Bulk and upsert patterns, batch exports/PDF generation, attachments and email/send workflows.\n- Banking reconciliation, transaction categorization, import/export and rule-based automation.\n- Template, tax and settings management plus custom modules and fine-grained approval flows.\n\n**OAuth**\nProvider: zoho\nScopes: Granular ZohoBooks.* scopes (CREATE, READ, UPDATE, DELETE and ALL) covering accountants, banking, bills, contacts, creditnotes, customerpayments, custommodules, expenses, fixedasset, invoices, projects, purchaseorders, salesorders, settings, vendorpayments, taxes and related operations.\n\n**Secrets**\n- ZOHO_SERVER_URL: base API endpoint (string/URL). Example: https://books.zoho.com (store as a secured environment secret)." +} \ No newline at end of file diff --git a/toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts b/toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts index a8e517eda..69c3fcdff 100644 --- a/toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts +++ b/toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts @@ -13,6 +13,8 @@ * npx tsx toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts * npx tsx toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts --dry-run * npx tsx toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts --verbose + * npx tsx toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts --remove-empty-sections + * npx tsx toolkit-docs-generator/scripts/sync-toolkit-sidebar.ts --remove-empty-sections=false */ import { @@ -23,27 +25,42 @@ import { rmSync, writeFileSync, } from "node:fs"; +import { createRequire } from "node:module"; import { dirname, join, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; +import { fileURLToPath, pathToFileURL } from "node:url"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // Import design system toolkits -let TOOLKITS: Array<{ +type DesignSystemToolkit = { id: string; label: string; category?: string; isHidden?: boolean; -}> = []; +}; + +let TOOLKITS: DesignSystemToolkit[] = []; +const require = createRequire(import.meta.url); try { - const designSystem = await import("@arcadeai/design-system"); + const designSystemEntry = require.resolve("@arcadeai/design-system"); + const designSystem = (await import( + pathToFileURL(designSystemEntry).href + )) as { + TOOLKITS?: DesignSystemToolkit[]; + }; TOOLKITS = designSystem.TOOLKITS || []; } catch { - console.warn( - "Warning: @arcadeai/design-system not found, using fallback category detection" - ); + if (!process.env.VITEST) { + console.warn( + "Warning: @arcadeai/design-system not found, using fallback category detection" + ); + } +} + +export function setToolkitsForTesting(toolkits: DesignSystemToolkit[]): void { + TOOLKITS = toolkits; } // Get project root (two levels up from toolkit-docs-generator/scripts) @@ -140,6 +157,36 @@ export type SyncResult = { errors: string[]; }; +type SyncOptions = { + dryRun?: boolean; + verbose?: boolean; + /** Preferred flag name (default: false) */ + removeEmptySections?: boolean; + /** Backward-compatible alias for removeEmptySections */ + prune?: boolean; +}; + +export const resolveRemoveEmptySections = (options: SyncOptions): boolean => + options.removeEmptySections ?? options.prune ?? false; + +export const parseBooleanCliFlag = ( + args: readonly string[], + flagName: string +): boolean | undefined => { + const valueArg = args.find((arg) => arg.startsWith(`${flagName}=`)); + if (valueArg) { + const rawValue = valueArg.slice(flagName.length + 1).toLowerCase(); + if (rawValue === "true") { + return true; + } + if (rawValue === "false") { + return false; + } + } + + return args.includes(flagName) ? true : undefined; +}; + /** * Get list of toolkit JSON files (excluding index.json) */ @@ -464,10 +511,9 @@ export default meta; * Sync toolkit sidebar with available JSON files */ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main orchestration function requires multiple steps -export function syncToolkitSidebar( - options: { dryRun?: boolean; verbose?: boolean; prune?: boolean } = {} -): SyncResult { +export function syncToolkitSidebar(options: SyncOptions = {}): SyncResult { const { dryRun = false, verbose = false } = options; + const removeEmptySections = resolveRemoveEmptySections(options); const result: SyncResult = { categoriesUpdated: [], @@ -548,20 +594,21 @@ export function syncToolkitSidebar( } } - // Remove category directories that no longer have any toolkits. - // This handles the case where toolkits move between categories (e.g. from - // "others" to "development") and the old category becomes empty. - // The --prune flag is accepted for backward compatibility but cleanup - // always runs to prevent stale sidebar entries and orphaned routes. - for (const existingDir of existingDirs) { - if (!activeCategories.includes(existingDir)) { - const categoryDir = join(CONFIG.integrationsDir, existingDir); - log(`Removing empty category: ${existingDir}`); - if (!dryRun) { - rmSync(categoryDir, { recursive: true }); + // Remove category directories only when explicitly enabled. + // This prevents automatic route removals during regular sync runs. + if (removeEmptySections) { + for (const existingDir of existingDirs) { + if (!activeCategories.includes(existingDir)) { + const categoryDir = join(CONFIG.integrationsDir, existingDir); + log(`Removing empty category: ${existingDir}`); + if (!dryRun) { + rmSync(categoryDir, { recursive: true }); + } + result.categoriesRemoved.push(existingDir); } - result.categoriesRemoved.push(existingDir); } + } else { + log("Skipping empty category removal (--remove-empty-sections=false)"); } // Update main _meta.tsx @@ -636,13 +683,16 @@ if (isMainModule) { const args = process.argv.slice(2); const dryRun = args.includes("--dry-run"); const verbose = args.includes("--verbose") || args.includes("-v"); - const prune = args.includes("--prune"); + const removeEmptySections = + parseBooleanCliFlag(args, "--remove-empty-sections") ?? + parseBooleanCliFlag(args, "--prune") ?? + false; if (dryRun) { console.log("Running in dry-run mode (no changes will be made)\n"); } - const result = syncToolkitSidebar({ dryRun, verbose, prune }); + const result = syncToolkitSidebar({ dryRun, verbose, removeEmptySections }); printResults(result); if (result.errors.length > 0) { diff --git a/toolkit-docs-generator/src/cli/index.ts b/toolkit-docs-generator/src/cli/index.ts index 19dfa7768..b2465d325 100644 --- a/toolkit-docs-generator/src/cli/index.ts +++ b/toolkit-docs-generator/src/cli/index.ts @@ -23,6 +23,7 @@ import { getChangedToolkitIds, hasChanges, } from "../diff/index.js"; +import { parsePreviousToolkitForDiff } from "../diff/previous-output.js"; import { createJsonGenerator, type VerificationProgress, @@ -49,6 +50,7 @@ import { createEngineToolkitDataSource, createMockToolkitDataSource, type IToolkitDataSource, + type ToolkitData, } from "../sources/toolkit-data-source.js"; import { normalizeId } from "../utils/fp.js"; import { @@ -72,7 +74,6 @@ type ApiSource = "list-tools" | "tool-metadata" | "mock"; import { type MergedToolkit, - MergedToolkitSchema, type ProviderVersion, ProviderVersionSchema, } from "../types/index.js"; @@ -181,6 +182,13 @@ const buildLogPaths = (logDir: string) => ({ failedToolsPath: join(logDir, "failed-tools.json"), }); +const getToolkitIdsWithoutMetadata = ( + toolkitsData: ReadonlyMap +): string[] => + Array.from(toolkitsData.entries()) + .filter(([, toolkitData]) => toolkitData.metadata === null) + .map(([toolkitId]) => toolkitId); + const createMetadataSource = async (options: { metadataFile: string; useMetadataFile: boolean; @@ -239,6 +247,35 @@ type OverviewInitOptions = { type MetadataSource = Awaited>; +const filterProvidersByMetadataPresence = async ( + providers: readonly ProviderVersion[], + metadataSource: MetadataSource +): Promise<{ included: ProviderVersion[]; excluded: string[] }> => { + const source = metadataSource as { + getToolkitMetadata?: ( + toolkitId: string + ) => Promise<{ id: string; label: string } | null>; + }; + + if (!source.getToolkitMetadata) { + return { included: [...providers], excluded: [] }; + } + + const included: ProviderVersion[] = []; + const excluded: string[] = []; + + for (const provider of providers) { + const metadata = await source.getToolkitMetadata(provider.provider); + if (metadata) { + included.push(provider); + } else { + excluded.push(provider.provider); + } + } + + return { included, excluded }; +}; + const getOverviewInitToolkits = (options: OverviewInitOptions): string[] => { if (!options.toolkits) { throw new Error('Missing required option "--toolkits".'); @@ -610,49 +647,169 @@ const createToolkitDataSourceForApi = ( const normalizeToolkitKey = (toolkitId: string): string => toolkitId.toLowerCase(); +interface PreviousToolkitLoadStats { + scannedFiles: number; + loadedFiles: number; + fallbackFiles: number; + missingFiles: number; + failedFiles: string[]; +} + +interface PreviousToolkitLoadResult { + toolkits: ReadonlyMap; + stats: PreviousToolkitLoadStats; +} + +const createPreviousToolkitLoadStats = (): PreviousToolkitLoadStats => ({ + scannedFiles: 0, + loadedFiles: 0, + fallbackFiles: 0, + missingFiles: 0, + failedFiles: [], +}); + +const getFileStem = (filePath: string): string => { + const fileName = filePath.split("/").pop() ?? "unknown.json"; + return fileName.replace(/\.json$/i, ""); +}; + +interface PreviousToolkitLoadOutcome { + toolkit: MergedToolkit | null; + missing: boolean; + usedFallback: boolean; + reason?: string; +} + const loadPreviousToolkit = async ( filePath: string -): Promise => { +): Promise => { try { const content = await readFile(filePath, "utf-8"); const parsed = JSON.parse(content) as unknown; - const result = MergedToolkitSchema.safeParse(parsed); - if (!result.success) { - return null; + const parsedToolkit = parsePreviousToolkitForDiff( + parsed, + getFileStem(filePath) + ); + return { + toolkit: parsedToolkit.toolkit, + missing: false, + usedFallback: parsedToolkit.usedFallback, + ...(parsedToolkit.reason ? { reason: parsedToolkit.reason } : {}), + }; + } catch (error) { + const errorWithCode = + error && typeof error === "object" && "code" in error + ? (error as { code?: string }) + : undefined; + if (errorWithCode?.code === "ENOENT") { + return { + toolkit: null, + missing: true, + usedFallback: false, + }; } - return result.data; - } catch { - return null; + + return { + toolkit: null, + missing: false, + usedFallback: false, + reason: error instanceof Error ? error.message : String(error), + }; + } +}; + +const formatPreviousToolkitLoadStats = ( + stats: PreviousToolkitLoadStats +): string => + [ + `${stats.scannedFiles} scanned`, + `${stats.loadedFiles} loaded`, + `${stats.fallbackFiles} fallback`, + `${stats.missingFiles} missing`, + `${stats.failedFiles.length} failed`, + ].join(", "); + +const addLoadedPreviousToolkit = ( + previousToolkits: Map, + stats: PreviousToolkitLoadStats, + loaded: PreviousToolkitLoadOutcome +): boolean => { + if (!loaded.toolkit) { + return false; } + previousToolkits.set(normalizeToolkitKey(loaded.toolkit.id), loaded.toolkit); + stats.loadedFiles += 1; + if (loaded.usedFallback) { + stats.fallbackFiles += 1; + } + return true; +}; + +const getPreviousToolkitFailureReason = ( + loaded: PreviousToolkitLoadOutcome +): string => loaded.reason ?? "unable to parse previous output"; + +const logFallbackToolkitLoad = ( + itemLabel: string, + loaded: PreviousToolkitLoadOutcome, + verbose: boolean +): void => { + if (!(verbose && loaded.usedFallback)) { + return; + } + console.log( + chalk.dim( + `Loaded ${itemLabel} with fallback parser (${loaded.reason ?? "schema mismatch"}).` + ) + ); }; const loadPreviousToolkitsForProviders = async ( dir: string, providers: ProviderVersion[], verbose: boolean -): Promise> => { +): Promise => { const previousToolkits = new Map(); + const stats = createPreviousToolkitLoadStats(); for (const provider of providers) { - const filePath = join(dir, `${provider.provider.toLowerCase()}.json`); - const toolkit = await loadPreviousToolkit(filePath); - if (toolkit) { - previousToolkits.set(normalizeToolkitKey(toolkit.id), toolkit); - } else if (verbose) { + stats.scannedFiles += 1; + const providerName = provider.provider; + const filePath = join(dir, `${providerName.toLowerCase()}.json`); + const loaded = await loadPreviousToolkit(filePath); + + if (addLoadedPreviousToolkit(previousToolkits, stats, loaded)) { + logFallbackToolkitLoad(providerName, loaded, verbose); + continue; + } + + if (loaded.missing) { + stats.missingFiles += 1; + if (verbose) { + console.log(chalk.dim(`No previous output found for ${providerName}.`)); + } + continue; + } + + stats.failedFiles.push( + `${providerName}: ${getPreviousToolkitFailureReason(loaded)}` + ); + if (verbose) { console.log( - chalk.dim(`No previous output found for ${provider.provider}.`) + chalk.dim(`Failed to parse previous output for ${providerName}.`) ); } } - return previousToolkits; + return { toolkits: previousToolkits, stats }; }; const loadPreviousToolkitsFromDir = async ( dir: string, verbose: boolean -): Promise> => { +): Promise => { const previousToolkits = new Map(); + const stats = createPreviousToolkitLoadStats(); try { const entries = await readdir(dir); @@ -661,11 +818,22 @@ const loadPreviousToolkitsFromDir = async ( ); for (const fileName of jsonFiles) { + stats.scannedFiles += 1; const filePath = join(dir, fileName); - const toolkit = await loadPreviousToolkit(filePath); - if (toolkit) { - previousToolkits.set(normalizeToolkitKey(toolkit.id), toolkit); + const loaded = await loadPreviousToolkit(filePath); + if (addLoadedPreviousToolkit(previousToolkits, stats, loaded)) { + logFallbackToolkitLoad(fileName, loaded, verbose); + continue; + } + + if (loaded.missing) { + stats.missingFiles += 1; + continue; } + + stats.failedFiles.push( + `${fileName}: ${getPreviousToolkitFailureReason(loaded)}` + ); } } catch (error) { if (verbose) { @@ -673,7 +841,7 @@ const loadPreviousToolkitsFromDir = async ( } } - return previousToolkits; + return { toolkits: previousToolkits, stats }; }; const processProviders = async ( @@ -857,6 +1025,11 @@ program "Only regenerate toolkits with changed tool definitions", false ) + .option( + "--require-complete", + "Require complete metadata. Only include toolkits with data in Engine and Design System.", + false + ) .option("--verbose", "Enable verbose logging", false) .action( async (options: { @@ -898,11 +1071,13 @@ program resume: boolean; incremental: boolean; skipUnchanged: boolean; + requireComplete: boolean; verbose: boolean; // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: legacy CLI flow }) => { const spinner = ora("Parsing input...").start(); const logPaths = buildLogPaths(resolve(options.logDir)); + const requireComplete = options.requireComplete; try { const runAll = options.all; @@ -983,6 +1158,36 @@ program providers = await resolveProviderIds(providers, metadataSource); } + if (requireComplete && providers && providers.length > 0) { + const { included, excluded } = + await filterProvidersByMetadataPresence(providers, metadataSource); + providers = included; + + if (excluded.length > 0) { + const label = excluded.length === 1 ? "provider" : "providers"; + console.log( + chalk.yellow( + `Skipping ${excluded.length} ${label} not found in metadata source: ${excluded.join(", ")}` + ) + ); + } + + if (providers.length === 0) { + spinner.succeed( + "No providers left after metadata filtering. Nothing to generate." + ); + await appendLogEntry(logPaths.runLogPath, { + title: "generate (metadata-filter no-op)", + details: [ + `output=${resolve(options.output)}`, + "mode=providers", + "reason=no providers matched metadata source", + ], + }); + process.exit(0); + } + } + // Create toolkit data source based on API source const apiSource = resolveApiSource(options); const toolkitDataSource = createToolkitDataSourceForApi( @@ -1032,7 +1237,7 @@ program ? undefined : (options.previousOutput ?? (options.overwriteOutput ? undefined : options.output)); - const previousToolkits = previousOutputDir + const previousToolkitLoad = previousOutputDir ? runAll ? await loadPreviousToolkitsFromDir( previousOutputDir, @@ -1044,6 +1249,28 @@ program options.verbose ) : undefined; + const previousToolkits = previousToolkitLoad?.toolkits; + if (previousToolkitLoad) { + if (options.verbose) { + console.log( + chalk.dim( + `Loaded previous output: ${formatPreviousToolkitLoadStats(previousToolkitLoad.stats)}` + ) + ); + } + if (previousToolkitLoad.stats.failedFiles.length > 0) { + console.log( + chalk.yellow( + `⚠ Skipped ${previousToolkitLoad.stats.failedFiles.length} previous toolkit file(s) during diffing.` + ) + ); + if (options.verbose) { + for (const failure of previousToolkitLoad.stats.failedFiles) { + console.log(chalk.dim(` - ${failure}`)); + } + } + } + } // Custom sections source const customSectionsSource = options.customSections @@ -1097,8 +1324,31 @@ program spinner.start("Detecting changes in tool definitions..."); // Fetch all current tools + const fetchStartedAt = Date.now(); const currentToolkitsData = await toolkitDataSource.fetchAllToolkitsData(); + const fetchDurationMs = Date.now() - fetchStartedAt; + if (options.verbose) { + console.log( + chalk.dim( + ` Fetched ${currentToolkitsData.size} toolkit(s) from ${apiSource} in ${fetchDurationMs}ms` + ) + ); + } + + const metadataExcludedToolkitIds = requireComplete + ? getToolkitIdsWithoutMetadata(currentToolkitsData) + : []; + const metadataExcludedToolkitIdSet = new Set( + metadataExcludedToolkitIds.map((id) => id.toLowerCase()) + ); + if (options.verbose && metadataExcludedToolkitIds.length > 0) { + console.log( + chalk.dim( + ` Excluding ${metadataExcludedToolkitIds.length} toolkit(s) without metadata before change detection` + ) + ); + } // Build map of toolkit ID -> tools for comparison const currentToolkitTools = new Map< @@ -1106,14 +1356,26 @@ program readonly import("../types/index.js").ToolDefinition[] >(); for (const [id, data] of currentToolkitsData) { + if (metadataExcludedToolkitIdSet.has(id.toLowerCase())) { + continue; + } currentToolkitTools.set(id, data.tools); } // Detect changes + const compareStartedAt = Date.now(); const detectedChanges = detectChanges( currentToolkitTools, previousToolkits ?? new Map() ); + const compareDurationMs = Date.now() - compareStartedAt; + if (options.verbose) { + console.log( + chalk.dim( + ` Compared ${currentToolkitTools.size} current toolkit(s) against ${previousToolkits?.size ?? 0} previous toolkit(s) in ${compareDurationMs}ms` + ) + ); + } if (!hasChanges(detectedChanges)) { spinner.succeed( @@ -1140,15 +1402,24 @@ program const changedIds = getChangedToolkitIds(detectedChanges); changedToolkitIds = new Set(changedIds.map((id) => id.toLowerCase())); changeResult = detectedChanges; + const changedPreview = + changedIds.length <= 20 + ? changedIds.join(", ") + : `${changedIds.slice(0, 20).join(", ")} ... +${changedIds.length - 20} more`; spinner.succeed( - `Detected ${changedIds.length} changed toolkit(s): ${changedIds.join(", ")}` + `Detected ${changedIds.length} changed toolkit(s): ${changedPreview}` ); if (options.verbose) { console.log( chalk.dim(` Summary: ${formatChangeSummary(detectedChanges)}`) ); + if (changedIds.length > 20) { + console.log( + chalk.dim(` Full changed list: ${changedIds.join(", ")}`) + ); + } } } @@ -1205,6 +1476,7 @@ program : {}), ...(runAll ? { onToolkitProgress } : {}), ...(skipToolkitIds.size > 0 ? { skipToolkitIds } : {}), + requireCompleteData: requireComplete, ...(onToolkitComplete ? { onToolkitComplete } : {}), ...(resolveProviderId ? { resolveProviderId } : {}), }); @@ -1214,8 +1486,33 @@ program if (runAll) { // First, get the toolkit count to set up progress tracking spinner.start("Fetching toolkit list..."); + const fetchToolkitListStartedAt = Date.now(); const toolkitList = await toolkitDataSource.fetchAllToolkitsData(); + const fetchToolkitListDurationMs = + Date.now() - fetchToolkitListStartedAt; const totalToolkits = toolkitList.size; + if (options.verbose) { + console.log( + chalk.dim( + ` Toolkit list fetched in ${fetchToolkitListDurationMs}ms (${totalToolkits} toolkit(s))` + ) + ); + } + + if (requireComplete) { + const metadataExcludedToolkitIds = + getToolkitIdsWithoutMetadata(toolkitList); + for (const toolkitId of metadataExcludedToolkitIds) { + skipToolkitIds.add(toolkitId.toLowerCase()); + } + if (options.verbose && metadataExcludedToolkitIds.length > 0) { + console.log( + chalk.dim( + ` Excluding ${metadataExcludedToolkitIds.length} toolkit(s) without metadata` + ) + ); + } + } // If --skip-unchanged, only process changed toolkits // Add unchanged toolkits to skipToolkitIds @@ -1231,17 +1528,26 @@ program const toProcess = totalToolkits - skipToolkitIds.size; if (toProcess === 0) { - spinner.succeed(`All ${totalToolkits} toolkit(s) already complete`); + spinner.succeed("No toolkits to process after applying filters"); allResults = []; } else { - const skipReason = changedToolkitIds - ? `(${skipToolkitIds.size} unchanged)` - : skipToolkitIds.size > 0 - ? `(${skipToolkitIds.size} skipped)` - : ""; + const skipReason = + skipToolkitIds.size > 0 ? `(${skipToolkitIds.size} skipped)` : ""; spinner.succeed( `Found ${totalToolkits} toolkit(s), ${toProcess} to process ${skipReason}`.trim() ); + if (options.verbose) { + console.log( + chalk.dim( + ` Starting merge with toolkitConcurrency=${options.toolkitConcurrency ?? 3}, llmConcurrency=${options.llmConcurrency ?? 5}` + ) + ); + console.log( + chalk.dim( + ` LLM steps: examples=${needsExamples}, summary=${needsSummary}, overview=${needsOverview}` + ) + ); + } // Set up progress tracker const progressTracker = createProgressTracker({ @@ -1288,6 +1594,7 @@ program : {}), onToolkitProgress, ...(skipToolkitIds.size > 0 ? { skipToolkitIds } : {}), + requireCompleteData: requireComplete, ...(onToolkitComplete ? { onToolkitComplete } : {}), ...(resolveProviderId ? { resolveProviderId } : {}), }); @@ -1389,9 +1696,11 @@ program }; spinner.text = `${phaseLabels[progress.phase]} ${progress.current}/${progress.total}: ${progress.fileName ?? ""}`; }; + const allowLegacyFallback = !options.overwriteOutput; const verification = await verifyOutputDir( resolve(options.output), - onVerifyProgress + onVerifyProgress, + { allowLegacyFallback } ); if (!verification.valid) { spinner.fail("Output verification failed."); @@ -1424,6 +1733,7 @@ program `apiSource=${apiSource}`, `mode=${runAll ? "all" : "providers"}`, `skipUnchanged=${options.skipUnchanged}`, + `requireComplete=${requireComplete}`, `filesWritten=${filesWritten.length}`, `warnings=${warningCount}`, `writeErrors=${writeErrors.length}`, @@ -1573,6 +1883,11 @@ program "Write each toolkit immediately after processing (default when --resume)", false ) + .option( + "--require-complete", + "Require complete metadata. Only include toolkits with data in Engine and Design System.", + false + ) .option("--verbose", "Enable verbose logging", false) .action( async (options: { @@ -1609,10 +1924,12 @@ program customSections?: string; resume: boolean; incremental: boolean; + requireComplete: boolean; verbose: boolean; // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: legacy CLI flow }) => { const spinner = ora("Initializing...").start(); + const requireComplete = options.requireComplete; try { const mockDataDir = options.mockDataDir ?? getDefaultMockDataDir(); @@ -1673,12 +1990,34 @@ program ? undefined : (options.previousOutput ?? (options.overwriteOutput ? undefined : options.output)); - const previousToolkits = previousOutputDir + const previousToolkitLoad = previousOutputDir ? await loadPreviousToolkitsFromDir( previousOutputDir, options.verbose ) : undefined; + const previousToolkits = previousToolkitLoad?.toolkits; + if (previousToolkitLoad) { + if (options.verbose) { + console.log( + chalk.dim( + `Loaded previous output: ${formatPreviousToolkitLoadStats(previousToolkitLoad.stats)}` + ) + ); + } + if (previousToolkitLoad.stats.failedFiles.length > 0) { + console.log( + chalk.yellow( + `⚠ Skipped ${previousToolkitLoad.stats.failedFiles.length} previous toolkit file(s) during diffing.` + ) + ); + if (options.verbose) { + for (const failure of previousToolkitLoad.stats.failedFiles) { + console.log(chalk.dim(` - ${failure}`)); + } + } + } + } const customSectionsSource = options.customSections ? createCustomSectionsFileSource(options.customSections) @@ -1752,16 +2091,54 @@ program // First, get the toolkit count to set up progress tracking spinner.start("Fetching toolkit list..."); + const fetchToolkitListStartedAt = Date.now(); const toolkitList = await toolkitDataSource.fetchAllToolkitsData(); + const fetchToolkitListDurationMs = + Date.now() - fetchToolkitListStartedAt; const totalToolkits = toolkitList.size; + if (options.verbose) { + console.log( + chalk.dim( + ` Toolkit list fetched in ${fetchToolkitListDurationMs}ms (${totalToolkits} toolkit(s))` + ) + ); + } + + if (requireComplete) { + const metadataExcludedToolkitIds = + getToolkitIdsWithoutMetadata(toolkitList); + for (const toolkitId of metadataExcludedToolkitIds) { + skipToolkitIds.add(toolkitId.toLowerCase()); + } + if (options.verbose && metadataExcludedToolkitIds.length > 0) { + console.log( + chalk.dim( + ` Excluding ${metadataExcludedToolkitIds.length} toolkit(s) without metadata` + ) + ); + } + } + const toProcess = totalToolkits - skipToolkitIds.size; if (toProcess === 0) { - spinner.succeed(`All ${totalToolkits} toolkit(s) already complete`); + spinner.succeed("No toolkits to process after applying filters"); } else { spinner.succeed( `Found ${totalToolkits} toolkit(s), ${toProcess} to process${skipToolkitIds.size > 0 ? ` (${skipToolkitIds.size} skipped)` : ""}` ); + if (options.verbose) { + console.log( + chalk.dim( + ` Starting merge with toolkitConcurrency=${options.toolkitConcurrency ?? 3}, llmConcurrency=${options.llmConcurrency ?? 5}` + ) + ); + console.log( + chalk.dim( + ` LLM steps: examples=${needsExamples}, summary=${needsSummary}, overview=${needsOverview}` + ) + ); + } // Set up progress tracker const progressTracker = createProgressTracker({ @@ -1808,6 +2185,7 @@ program : {}), onToolkitProgress, ...(skipToolkitIds.size > 0 ? { skipToolkitIds } : {}), + requireCompleteData: requireComplete, ...(onToolkitComplete ? { onToolkitComplete } : {}), ...(resolveProviderId ? { resolveProviderId } : {}), }); @@ -1879,9 +2257,11 @@ program }; spinner.text = `${phaseLabels[progress.phase]} ${progress.current}/${progress.total}: ${progress.fileName ?? ""}`; }; + const allowLegacyFallback = !options.overwriteOutput; const verification = await verifyOutputDir( resolve(options.output), - onVerifyProgress + onVerifyProgress, + { allowLegacyFallback } ); if (!verification.valid) { spinner.fail("Output verification failed."); @@ -2081,8 +2461,10 @@ program // Fetch current data from API spinner.text = "Fetching current tool definitions from API..."; + const fetchStartedAt = Date.now(); const currentToolkitsData = await toolkitDataSource.fetchAllToolkitsData(); + const fetchDurationMs = Date.now() - fetchStartedAt; // Build map of toolkit ID -> tools const currentToolkitTools = new Map< @@ -2095,25 +2477,68 @@ program // Load previous output spinner.text = "Loading previous output..."; - const previousToolkits = await loadPreviousToolkitsFromDir( + const loadPreviousStartedAt = Date.now(); + const previousToolkitLoad = await loadPreviousToolkitsFromDir( resolve(options.output), - false + options.verbose ); + const loadPreviousDurationMs = Date.now() - loadPreviousStartedAt; + const previousToolkits = previousToolkitLoad.toolkits; // Detect changes spinner.text = "Comparing tool definitions..."; + const compareStartedAt = Date.now(); const changeResult = detectChanges( currentToolkitTools, previousToolkits ); + const compareDurationMs = Date.now() - compareStartedAt; spinner.stop(); + if (options.verbose) { + console.log(chalk.dim("\nDiagnostics:")); + console.log( + chalk.dim( + ` Fetched ${currentToolkitTools.size} current toolkit(s) in ${fetchDurationMs}ms` + ) + ); + console.log( + chalk.dim( + ` Loaded previous output in ${loadPreviousDurationMs}ms (${formatPreviousToolkitLoadStats(previousToolkitLoad.stats)})` + ) + ); + console.log( + chalk.dim(` Compared signatures in ${compareDurationMs}ms`) + ); + if (previousToolkitLoad.stats.failedFiles.length > 0) { + console.log( + chalk.yellow( + ` ⚠ ${previousToolkitLoad.stats.failedFiles.length} previous file(s) could not be parsed and were excluded from diffing.` + ) + ); + for (const failure of previousToolkitLoad.stats.failedFiles) { + console.log(chalk.dim(` - ${failure}`)); + } + } + console.log(); + } else if (previousToolkitLoad.stats.failedFiles.length > 0) { + console.log( + chalk.yellow( + `⚠ Excluded ${previousToolkitLoad.stats.failedFiles.length} previous toolkit file(s) from diffing. Run with --verbose for details.` + ) + ); + } + await appendLogEntry(logPaths.runLogPath, { title: "check-changes", details: [ `output=${resolve(options.output)}`, `apiSource=${apiSource}`, + `fetchDurationMs=${fetchDurationMs}`, + `loadPreviousDurationMs=${loadPreviousDurationMs}`, + `compareDurationMs=${compareDurationMs}`, + `previousLoadStats=${formatPreviousToolkitLoadStats(previousToolkitLoad.stats)}`, ...buildChangeLogDetails(changeResult), ], }); @@ -2124,7 +2549,25 @@ program // Output results if (options.json) { - console.log(JSON.stringify(changeResult, null, 2)); + console.log( + JSON.stringify( + { + ...changeResult, + diagnostics: { + currentToolkitCount: currentToolkitTools.size, + previousToolkitCount: previousToolkits.size, + previousLoad: previousToolkitLoad.stats, + timingMs: { + fetch: fetchDurationMs, + loadPrevious: loadPreviousDurationMs, + compare: compareDurationMs, + }, + }, + }, + null, + 2 + ) + ); } else { console.log(chalk.bold("\n📋 Change Detection Results\n")); diff --git a/toolkit-docs-generator/src/diff/previous-output.ts b/toolkit-docs-generator/src/diff/previous-output.ts new file mode 100644 index 000000000..5f030c400 --- /dev/null +++ b/toolkit-docs-generator/src/diff/previous-output.ts @@ -0,0 +1,304 @@ +import { + type MergedToolkit, + MergedToolkitAuthSchema, + MergedToolkitMetadataSchema, + MergedToolkitSchema, + type ToolDefinition, + ToolDefinitionSchema, +} from "../types/index.js"; + +const DEFAULT_PREVIOUS_TOOLKIT_METADATA = { + category: "development" as const, + iconUrl: "", + isBYOC: false, + isPro: false, + type: "arcade" as const, + docsLink: "", + isComingSoon: false, + isHidden: false, +}; + +const toRecord = (value: unknown): Record | null => + typeof value === "object" && value !== null && !Array.isArray(value) + ? (value as Record) + : null; + +const toStringOrNull = (value: unknown): string | null => + typeof value === "string" ? value : null; + +const toStringArray = (value: unknown): string[] => + Array.isArray(value) + ? value.flatMap((item) => (typeof item === "string" ? [item] : [])) + : []; + +const deriveQualifiedName = ( + raw: Record, + fallbackToolkitId: string, + fallbackIndex: number +): string => { + const qualifiedName = raw.qualifiedName; + if (typeof qualifiedName === "string" && qualifiedName.length > 0) { + return qualifiedName; + } + + const fullyQualifiedName = raw.fullyQualifiedName; + if (typeof fullyQualifiedName === "string" && fullyQualifiedName.length > 0) { + return ( + fullyQualifiedName.split("@")[0] ?? + `${fallbackToolkitId}.Tool${fallbackIndex}` + ); + } + + const name = raw.name; + if (typeof name === "string" && name.length > 0) { + return `${fallbackToolkitId}.${name}`; + } + + return `${fallbackToolkitId}.Tool${fallbackIndex}`; +}; + +const deriveVersion = ( + raw: Record, + fallbackVersion: string +): string => { + const fullyQualifiedName = raw.fullyQualifiedName; + if ( + typeof fullyQualifiedName !== "string" || + fullyQualifiedName.length === 0 + ) { + return fallbackVersion; + } + const version = fullyQualifiedName.split("@")[1]; + return version && version.length > 0 ? version : fallbackVersion; +}; + +const normalizeParameter = ( + value: unknown +): ToolDefinition["parameters"][number] | null => { + const record = toRecord(value); + if (!record) return null; + + const name = record.name; + if (typeof name !== "string" || name.length === 0) { + return null; + } + + const enumValues = Array.isArray(record.enum) + ? toStringArray(record.enum) + : null; + + return { + name, + type: typeof record.type === "string" ? record.type : "string", + ...(typeof record.innerType === "string" + ? { innerType: record.innerType } + : {}), + required: Boolean(record.required), + description: toStringOrNull(record.description), + enum: enumValues, + inferrable: + typeof record.inferrable === "boolean" ? record.inferrable : true, + }; +}; + +const normalizeAuth = (value: unknown): ToolDefinition["auth"] => { + const record = toRecord(value); + if (!record) return null; + + const providerType = + typeof record.providerType === "string" + ? record.providerType + : typeof record.provider_type === "string" + ? record.provider_type + : null; + + if (!providerType) { + return null; + } + + const providerId = + typeof record.providerId === "string" + ? record.providerId + : typeof record.provider_id === "string" + ? record.provider_id + : null; + + return { + providerId, + providerType, + scopes: toStringArray(record.scopes), + }; +}; + +const normalizeOutput = (value: unknown): ToolDefinition["output"] => { + if (value == null) return null; + const record = toRecord(value); + if (!record) return null; + + const outputType = + typeof record.type === "string" + ? record.type + : (() => { + const valueSchema = toRecord(record.value_schema); + return valueSchema && typeof valueSchema.val_type === "string" + ? valueSchema.val_type + : "unknown"; + })(); + + return { + type: outputType, + description: toStringOrNull(record.description), + }; +}; + +const normalizeTool = ( + value: unknown, + toolkitId: string, + toolkitVersion: string, + fallbackIndex: number +): ToolDefinition | null => { + const record = toRecord(value); + if (!record) return null; + + const qualifiedName = deriveQualifiedName(record, toolkitId, fallbackIndex); + const toolName = + typeof record.name === "string" && record.name.length > 0 + ? record.name + : (qualifiedName.split(".").at(-1) ?? `Tool${fallbackIndex}`); + const toolVersion = deriveVersion(record, toolkitVersion); + + const candidate: ToolDefinition = { + name: toolName, + qualifiedName, + fullyQualifiedName: + typeof record.fullyQualifiedName === "string" && + record.fullyQualifiedName.length > 0 + ? record.fullyQualifiedName + : `${qualifiedName}@${toolVersion}`, + description: toStringOrNull(record.description), + toolkitDescription: toStringOrNull(record.toolkitDescription), + parameters: Array.isArray(record.parameters) + ? record.parameters.flatMap((parameter) => { + const normalized = normalizeParameter(parameter); + return normalized ? [normalized] : []; + }) + : [], + auth: normalizeAuth(record.auth), + secrets: toStringArray(record.secrets), + output: normalizeOutput(record.output), + }; + + const parsed = ToolDefinitionSchema.safeParse(candidate); + return parsed.success ? parsed.data : null; +}; + +const getVersionFromTool = ( + tool: ToolDefinition | undefined +): string | undefined => { + if (!tool) return; + const version = tool.fullyQualifiedName.split("@")[1]; + return version && version.length > 0 ? version : undefined; +}; + +const getNonEmptyString = (value: unknown): string | undefined => + typeof value === "string" && value.length > 0 ? value : undefined; + +const getFallbackReason = (error: { + issues: Array<{ path: Array; message: string }>; + message: string; +}): string => { + const firstIssue = error.issues[0]; + return firstIssue + ? `${firstIssue.path.join(".")}: ${firstIssue.message}` + : error.message; +}; + +const normalizeFallbackTools = ( + record: Record, + toolkitId: string, + declaredVersion: string +): ToolDefinition[] => { + const rawTools = Array.isArray(record.tools) ? record.tools : []; + return rawTools.flatMap((rawTool, index) => { + const normalized = normalizeTool( + rawTool, + toolkitId, + declaredVersion, + index + 1 + ); + return normalized ? [normalized] : []; + }); +}; + +const buildFallbackToolkit = ( + record: Record, + fallbackId: string +): MergedToolkit => { + const toolkitId = getNonEmptyString(record.id) ?? fallbackId; + const label = getNonEmptyString(record.label) ?? toolkitId; + const description = toStringOrNull(record.description); + const declaredVersion = getNonEmptyString(record.version) ?? "0.0.0"; + + const tools = normalizeFallbackTools(record, toolkitId, declaredVersion); + const version = getVersionFromTool(tools[0]) ?? declaredVersion; + + const metadataResult = MergedToolkitMetadataSchema.safeParse(record.metadata); + const authResult = MergedToolkitAuthSchema.safeParse(record.auth); + const summary = + typeof record.summary === "string" ? record.summary : undefined; + const generatedAt = + typeof record.generatedAt === "string" ? record.generatedAt : undefined; + + return { + id: toolkitId, + label, + version, + description, + ...(summary ? { summary } : {}), + metadata: metadataResult.success + ? metadataResult.data + : DEFAULT_PREVIOUS_TOOLKIT_METADATA, + auth: authResult.success ? authResult.data : null, + tools: tools.map((tool) => ({ + ...tool, + secretsInfo: [], + documentationChunks: [], + })), + documentationChunks: [], + customImports: [], + subPages: [], + ...(generatedAt ? { generatedAt } : {}), + }; +}; + +export type PreviousToolkitParseResult = { + toolkit: MergedToolkit | null; + usedFallback: boolean; + reason?: string; +}; + +export const parsePreviousToolkitForDiff = ( + payload: unknown, + fallbackId: string +): PreviousToolkitParseResult => { + const strictResult = MergedToolkitSchema.safeParse(payload); + if (strictResult.success) { + return { toolkit: strictResult.data, usedFallback: false }; + } + + const record = toRecord(payload); + if (!record) { + return { + toolkit: null, + usedFallback: true, + reason: "Previous output file is not a JSON object", + }; + } + + const fallbackReason = getFallbackReason(strictResult.error); + return { + toolkit: buildFallbackToolkit(record, fallbackId), + usedFallback: true, + reason: fallbackReason, + }; +}; diff --git a/toolkit-docs-generator/src/diff/toolkit-diff.ts b/toolkit-docs-generator/src/diff/toolkit-diff.ts index d0993d666..58050bf05 100644 --- a/toolkit-docs-generator/src/diff/toolkit-diff.ts +++ b/toolkit-docs-generator/src/diff/toolkit-diff.ts @@ -5,7 +5,11 @@ * Used to determine which toolkits need regeneration. */ -import { buildToolSignature, extractVersion } from "../merger/data-merger.js"; +import { + buildToolSignatureInput, + extractVersion, + stableStringify, +} from "../merger/data-merger.js"; import type { MergedToolkit, ToolDefinition } from "../types/index.js"; // ============================================================================ @@ -77,8 +81,80 @@ export interface ChangeSummary { * Build a signature for a ToolDefinition (from API) * This is different from MergedTool signatures as it uses the raw API format */ +const normalizeOutputTypeForDiff = (value: string): string => + value === "unknown" ? "string" : value; + +type ToolSignatureInput = { + name: string; + qualifiedName: string; + description: string | null; + parameters: Array<{ + name: string; + type: string; + innerType: string | null; + required: boolean; + description: string | null; + enum: string[] | null; + inferrable: boolean; + }>; + auth: { + providerId: string | null; + providerType: string; + scopes: string[]; + } | null; + secrets: string[]; + output: { + type: string; + description: string | null; + } | null; +}; + +const normalizeToolSignatureInputForDiff = ( + tool: ToolDefinition | MergedToolkit["tools"][number] +): Record => { + const signatureInput = buildToolSignatureInput(tool) as ToolSignatureInput; + const parameters = signatureInput.parameters.map((parameter) => ({ + ...parameter, + // Parameter descriptions are not stable across /v1/tools and /v1/tool_metadata. + description: null, + // tool_metadata may emit [] while list-tools uses null for "no enum values". + enum: parameter.enum && parameter.enum.length > 0 ? parameter.enum : null, + })); + const auth = signatureInput.auth + ? { + ...signatureInput.auth, + // OAuth provider IDs can differ by endpoint shape; scopes/type are stable. + providerId: + signatureInput.auth.providerType === "oauth2" + ? null + : signatureInput.auth.providerId, + } + : null; + const output = signatureInput.output + ? { + ...signatureInput.output, + type: normalizeOutputTypeForDiff(signatureInput.output.type), + // Output descriptions are not stable across endpoints. + description: null, + } + : null; + + return { + ...signatureInput, + // Tool descriptions are documentation metadata and vary by source. + description: null, + parameters, + auth, + output, + }; +}; + +const buildDiffToolSignature = ( + tool: ToolDefinition | MergedToolkit["tools"][number] +): string => stableStringify(normalizeToolSignatureInputForDiff(tool)); + export const buildToolDefinitionSignature = (tool: ToolDefinition): string => - buildToolSignature(tool); + buildDiffToolSignature(tool); /** * Build a map of tool signatures for quick lookup @@ -101,7 +177,7 @@ const buildMergedToolSignatureMap = ( ): ReadonlyMap => { const map = new Map(); for (const tool of toolkit.tools) { - map.set(tool.qualifiedName, buildToolSignature(tool)); + map.set(tool.qualifiedName, buildDiffToolSignature(tool)); } return map; }; diff --git a/toolkit-docs-generator/src/generator/json-generator.ts b/toolkit-docs-generator/src/generator/json-generator.ts index 7e9539cd5..f51865e74 100644 --- a/toolkit-docs-generator/src/generator/json-generator.ts +++ b/toolkit-docs-generator/src/generator/json-generator.ts @@ -5,6 +5,7 @@ */ import { mkdir, readFile, stat, writeFile } from "fs/promises"; import { dirname, join } from "path"; +import { parsePreviousToolkitForDiff } from "../diff/previous-output.js"; import type { MergedToolkit, ToolkitIndex, @@ -108,7 +109,9 @@ export class JsonGenerator { async getCompletedToolkitIds(): Promise> { const completedIds = new Set(); try { - const result = await readToolkitsFromDir(this.outputDir); + const result = await readToolkitsFromDir(this.outputDir, undefined, { + allowLegacyFallback: true, + }); for (const toolkit of result.toolkits) { completedIds.add(toolkit.id.toLowerCase()); } @@ -131,7 +134,8 @@ export class JsonGenerator { if (result.success) { return result.data; } - return null; + const fallback = parsePreviousToolkitForDiff(parsed, toolkitId); + return fallback.toolkit; } catch { return null; } @@ -210,7 +214,9 @@ export class JsonGenerator { private async getToolkitsFromOutputDir( errors: string[] ): Promise { - const readResult = await readToolkitsFromDir(this.outputDir); + const readResult = await readToolkitsFromDir(this.outputDir, undefined, { + allowLegacyFallback: true, + }); if (readResult.errors.length > 0) { errors.push(...readResult.errors); } diff --git a/toolkit-docs-generator/src/generator/output-verifier.ts b/toolkit-docs-generator/src/generator/output-verifier.ts index e6768070f..b28763c17 100644 --- a/toolkit-docs-generator/src/generator/output-verifier.ts +++ b/toolkit-docs-generator/src/generator/output-verifier.ts @@ -1,5 +1,6 @@ import { readdir, readFile } from "fs/promises"; import { basename, join } from "path"; +import { parsePreviousToolkitForDiff } from "../diff/previous-output.js"; import type { MergedToolkit, ToolkitIndex } from "../types/index.js"; import { MergedToolkitSchema, ToolkitIndexSchema } from "../types/index.js"; @@ -12,6 +13,7 @@ export interface OutputVerificationResult { export interface ToolkitReadResult { toolkits: MergedToolkit[]; errors: string[]; + warnings: string[]; } export interface VerificationProgress { @@ -25,6 +27,14 @@ export type VerificationProgressCallback = ( progress: VerificationProgress ) => void; +export interface ReadToolkitsOptions { + allowLegacyFallback?: boolean; +} + +export interface VerifyOutputOptions { + allowLegacyFallback?: boolean; +} + const isToolkitFile = (fileName: string): boolean => fileName.endsWith(".json") && fileName !== "index.json"; @@ -34,10 +44,12 @@ const normalizeToolkitKey = (toolkitId: string): string => type ReadToolkitFileResult = { toolkit: MergedToolkit | null; error?: string; + warning?: string; }; const readToolkitFile = async ( - filePath: string + filePath: string, + allowLegacyFallback: boolean ): Promise => { const fileName = basename(filePath); let content: string; @@ -63,22 +75,38 @@ const readToolkitFile = async ( } const result = MergedToolkitSchema.safeParse(parsed); - if (!result.success) { - return { - toolkit: null, - error: `Invalid toolkit schema in ${fileName}: ${result.error.message}`, - }; + if (result.success) { + return { toolkit: result.data }; } - return { toolkit: result.data }; + if (allowLegacyFallback) { + const fallback = parsePreviousToolkitForDiff( + parsed, + basename(fileName, ".json") + ); + if (fallback.toolkit) { + return { + toolkit: fallback.toolkit, + warning: `Loaded ${fileName} with fallback parser (${fallback.reason ?? "schema mismatch"}).`, + }; + } + } + + return { + toolkit: null, + error: `Invalid toolkit schema in ${fileName}: ${result.error.message}`, + }; }; export const readToolkitsFromDir = async ( dir: string, - onProgress?: VerificationProgressCallback + onProgress?: VerificationProgressCallback, + options: ReadToolkitsOptions = {} ): Promise => { const toolkits: MergedToolkit[] = []; const errors: string[] = []; + const warnings: string[] = []; + const allowLegacyFallback = options.allowLegacyFallback ?? false; let entries: string[] = []; try { @@ -87,6 +115,7 @@ export const readToolkitsFromDir = async ( return { toolkits: [], errors: [`Failed to read output directory: ${error}`], + warnings: [], }; } @@ -105,15 +134,18 @@ export const readToolkitsFromDir = async ( }); const filePath = join(dir, fileName); - const result = await readToolkitFile(filePath); + const result = await readToolkitFile(filePath, allowLegacyFallback); if (!result.toolkit) { errors.push(result.error ?? `Invalid toolkit JSON: ${fileName}`); continue; } + if (result.warning) { + warnings.push(result.warning); + } toolkits.push(result.toolkit); } - return { toolkits, errors }; + return { toolkits, errors, warnings }; }; const readIndexFile = async (dir: string): Promise => { @@ -271,16 +303,22 @@ const validateFileNames = async ( export const verifyOutputDir = async ( dir: string, - onProgress?: VerificationProgressCallback + onProgress?: VerificationProgressCallback, + options: VerifyOutputOptions = {} ): Promise => { const errors: string[] = []; const warnings: string[] = []; - - const { toolkits, errors: toolkitErrors } = await readToolkitsFromDir( - dir, - onProgress - ); + const allowLegacyFallback = options.allowLegacyFallback ?? false; + + const { + toolkits, + errors: toolkitErrors, + warnings: toolkitWarnings, + } = await readToolkitsFromDir(dir, onProgress, { + allowLegacyFallback, + }); errors.push(...toolkitErrors); + warnings.push(...toolkitWarnings); if (toolkits.length === 0) { errors.push("No toolkit JSON files found in output directory."); diff --git a/toolkit-docs-generator/src/merger/data-merger.ts b/toolkit-docs-generator/src/merger/data-merger.ts index e1cad0517..760247987 100644 --- a/toolkit-docs-generator/src/merger/data-merger.ts +++ b/toolkit-docs-generator/src/merger/data-merger.ts @@ -66,6 +66,8 @@ export interface DataMergerConfig { onToolkitComplete?: ((result: MergeResult) => Promise) | undefined; /** Set of toolkit IDs to skip (for resume support) */ skipToolkitIds?: ReadonlySet | undefined; + /** When true, only process toolkits with metadata and tools */ + requireCompleteData?: boolean; /** Fallback resolver: toolkit ID → OAuth provider ID (design system) */ resolveProviderId?: ((toolkitId: string) => string | null) | undefined; } @@ -287,10 +289,54 @@ export const extractVersion = (fullyQualifiedName: string): string => { * Create default metadata for toolkits not found in Design System */ const TOOLKIT_ID_NORMALIZER = /[^a-z0-9]/g; +const TOOLKIT_ID_ACRONYM_BOUNDARY = /([A-Z]+)([A-Z][a-z])/g; +const TOOLKIT_ID_WORD_BOUNDARY = /([a-z0-9])([A-Z])/g; +const TOOLKIT_DESCRIPTION_LABEL_PREFIX = "Arcade.dev LLM tools for "; const normalizeToolkitId = (toolkitId: string): string => toolkitId.toLowerCase().replace(TOOLKIT_ID_NORMALIZER, ""); +const humanizeToolkitId = (toolkitId: string): string => + toolkitId + .replace(TOOLKIT_ID_ACRONYM_BOUNDARY, "$1 $2") + .replace(TOOLKIT_ID_WORD_BOUNDARY, "$1 $2") + .replace(/\bApi\b/g, "API") + .trim(); + +const extractLabelFromDescription = ( + description: string | null +): string | null => { + if (!description) { + return null; + } + + const trimmed = description.trim(); + if (!trimmed.startsWith(TOOLKIT_DESCRIPTION_LABEL_PREFIX)) { + return null; + } + + const suffix = trimmed.slice(TOOLKIT_DESCRIPTION_LABEL_PREFIX.length).trim(); + if (suffix.length === 0) { + return null; + } + + const periodIndex = suffix.indexOf("."); + const candidate = ( + periodIndex >= 0 ? suffix.slice(0, periodIndex) : suffix + ).trim(); + + return candidate.length > 0 ? candidate : null; +}; + +const resolveToolkitLabel = (options: { + toolkitId: string; + metadata: ToolkitMetadata | null; + description: string | null; +}): string => + options.metadata?.label ?? + extractLabelFromDescription(options.description) ?? + humanizeToolkitId(options.toolkitId); + const isStarterToolkitId = (toolkitId: string): boolean => normalizeToolkitId(toolkitId).endsWith("api"); @@ -519,7 +565,11 @@ const buildMergedToolkit = (options: { return { id: options.toolkitId, - label: options.metadata?.label ?? options.toolkitId, + label: resolveToolkitLabel({ + toolkitId: options.toolkitId, + metadata: options.metadata, + description: options.description, + }), version: options.version, description: options.description, metadata: mergedMetadata, @@ -828,6 +878,7 @@ export class DataMerger { | ((result: MergeResult) => Promise) | undefined; private readonly skipToolkitIds: ReadonlySet; + private readonly requireCompleteData: boolean; private readonly resolveProviderId: | ((toolkitId: string) => string | null) | undefined; @@ -848,6 +899,7 @@ export class DataMerger { this.onToolkitProgress = config.onToolkitProgress; this.onToolkitComplete = config.onToolkitComplete; this.skipToolkitIds = config.skipToolkitIds ?? new Set(); + this.requireCompleteData = config.requireCompleteData ?? false; this.resolveProviderId = config.resolveProviderId; } @@ -1027,7 +1079,10 @@ export class DataMerger { // Filter out toolkits that should be skipped (for resume support) const filteredEntries = toolkitEntries.filter( - ([toolkitId]) => !this.skipToolkitIds.has(toolkitId.toLowerCase()) + ([toolkitId, toolkitData]) => + !this.skipToolkitIds.has(toolkitId.toLowerCase()) && + (!this.requireCompleteData || + (toolkitData.metadata !== null && toolkitData.tools.length > 0)) ); const results = await mapWithConcurrency( @@ -1061,8 +1116,11 @@ export class DataMerger { }> { const allToolkitsData = await this.toolkitDataSource.fetchAllToolkitsData(); const total = allToolkitsData.size; - const skipped = Array.from(allToolkitsData.keys()).filter((id) => - this.skipToolkitIds.has(id.toLowerCase()) + const skipped = Array.from(allToolkitsData.entries()).filter( + ([id, toolkitData]) => + this.skipToolkitIds.has(id.toLowerCase()) || + (this.requireCompleteData && + (toolkitData.metadata === null || toolkitData.tools.length === 0)) ).length; return { total, diff --git a/toolkit-docs-generator/src/sources/design-system-loader.ts b/toolkit-docs-generator/src/sources/design-system-loader.ts new file mode 100644 index 000000000..deb98fa23 --- /dev/null +++ b/toolkit-docs-generator/src/sources/design-system-loader.ts @@ -0,0 +1,17 @@ +import { createRequire } from "node:module"; +import { pathToFileURL } from "node:url"; + +const require = createRequire(import.meta.url); + +export type DesignSystemModule = Record; + +export async function loadDesignSystemModule(): Promise { + try { + const designSystemEntry = require.resolve("@arcadeai/design-system"); + return (await import( + pathToFileURL(designSystemEntry).href + )) as DesignSystemModule; + } catch { + return null; + } +} diff --git a/toolkit-docs-generator/src/sources/design-system-metadata.ts b/toolkit-docs-generator/src/sources/design-system-metadata.ts index 03b50582b..160a73f0e 100644 --- a/toolkit-docs-generator/src/sources/design-system-metadata.ts +++ b/toolkit-docs-generator/src/sources/design-system-metadata.ts @@ -9,6 +9,7 @@ import { z } from "zod"; import type { ToolkitMetadata } from "../types/index.js"; import { ToolkitMetadataSchema } from "../types/index.js"; +import { loadDesignSystemModule } from "./design-system-loader.js"; import type { IMetadataSource } from "./internal.js"; // ============================================================================ @@ -131,10 +132,9 @@ export function createDesignSystemMetadataSourceFromToolkits( } export async function createDesignSystemMetadataSource(): Promise { - // Use a dynamic import so the generator can still run in contexts where - // @arcadeai/design-system isn't installed. - const designSystem = await import("@arcadeai/design-system"); - const maybeToolkits = (designSystem as { TOOLKITS?: unknown }).TOOLKITS; + const designSystem = await loadDesignSystemModule(); + const maybeToolkits = (designSystem as { TOOLKITS?: unknown } | null) + ?.TOOLKITS; const toolkits = Array.isArray(maybeToolkits) ? maybeToolkits : []; const parsed: ToolkitMetadata[] = []; diff --git a/toolkit-docs-generator/src/sources/oauth-provider-resolver.ts b/toolkit-docs-generator/src/sources/oauth-provider-resolver.ts index 10f82ea95..679862985 100644 --- a/toolkit-docs-generator/src/sources/oauth-provider-resolver.ts +++ b/toolkit-docs-generator/src/sources/oauth-provider-resolver.ts @@ -1,3 +1,5 @@ +import { loadDesignSystemModule } from "./design-system-loader.js"; + /** * OAuth Provider ID Resolver * @@ -97,21 +99,17 @@ export function buildProviderIdResolver( * `@arcadeai/design-system` is not installed (returns null in that case). */ export async function createDesignSystemProviderIdResolver(): Promise { - try { - const designSystem = await import("@arcadeai/design-system"); - const catalogue = ( - designSystem as { - OAUTH_PROVIDER_CATALOGUE?: Record; - } - ).OAUTH_PROVIDER_CATALOGUE; - - if (!catalogue || typeof catalogue !== "object") { - return null; - } - - const knownIds = new Set(Object.keys(catalogue)); - return buildProviderIdResolver(knownIds); - } catch { + const designSystem = await loadDesignSystemModule(); + const catalogue = ( + designSystem as { + OAUTH_PROVIDER_CATALOGUE?: Record; + } | null + )?.OAUTH_PROVIDER_CATALOGUE; + + if (!catalogue || typeof catalogue !== "object") { return null; } + + const knownIds = new Set(Object.keys(catalogue)); + return buildProviderIdResolver(knownIds); } diff --git a/toolkit-docs-generator/src/sources/tool-metadata-schema.ts b/toolkit-docs-generator/src/sources/tool-metadata-schema.ts index 996b476a8..9fa794581 100644 --- a/toolkit-docs-generator/src/sources/tool-metadata-schema.ts +++ b/toolkit-docs-generator/src/sources/tool-metadata-schema.ts @@ -27,8 +27,8 @@ const ToolMetadataInputSchema = z.object({ const ToolMetadataOutputSchema = z .object({ - description: z.string().nullable(), - value_schema: ToolMetadataValueSchema.nullable(), + description: z.string().nullable().optional(), + value_schema: ToolMetadataValueSchema.nullable().optional(), }) .nullable() .optional(); @@ -115,6 +115,9 @@ export type ToolMetadataSummary = { }>; }; +const normalizeEnum = (values: string[] | null | undefined): string[] | null => + values && values.length > 0 ? values : null; + const transformParameter = ( apiParam: z.infer ): ToolParameter => ({ @@ -123,7 +126,7 @@ const transformParameter = ( innerType: apiParam.value_schema.inner_val_type ?? undefined, required: apiParam.required, description: apiParam.description, - enum: apiParam.value_schema.enum ?? null, + enum: normalizeEnum(apiParam.value_schema.enum), inferrable: apiParam.inferrable, }); @@ -144,6 +147,7 @@ export const transformToolMetadataItem = ( ): ToolDefinition => { // authorization is now an array; pick the first entry (most tools have 0 or 1) const authEntry = apiTool.requirements?.authorization?.[0] ?? null; + const providerType = authEntry?.provider_type ?? null; return { name: apiTool.name, @@ -152,17 +156,19 @@ export const transformToolMetadataItem = ( description: apiTool.description, toolkitDescription: apiTool.toolkit.description, parameters: apiTool.input.parameters.map(transformParameter), - auth: authEntry - ? { - providerId: authEntry.provider_id ?? null, - providerType: authEntry.provider_type ?? "unknown", - scopes: authEntry.scopes ?? [], - } - : null, + auth: + authEntry && providerType + ? { + providerId: authEntry.provider_id ?? null, + providerType, + scopes: authEntry.scopes ?? [], + } + : null, secrets: normalizeSecrets(apiTool.requirements?.secrets), output: apiTool.output ? { - type: apiTool.output.value_schema?.val_type ?? "unknown", + // Keep parity with /v1/tools normalization for source-agnostic diffs. + type: apiTool.output.value_schema?.val_type ?? "string", description: apiTool.output.description ?? null, } : null, diff --git a/toolkit-docs-generator/src/sources/toolkit-data-source.ts b/toolkit-docs-generator/src/sources/toolkit-data-source.ts index 4fb0d98d9..a2e887e83 100644 --- a/toolkit-docs-generator/src/sources/toolkit-data-source.ts +++ b/toolkit-docs-generator/src/sources/toolkit-data-source.ts @@ -167,13 +167,17 @@ export class CombinedToolkitDataSource implements IToolkitDataSource { metadataMap.set(metadata.id, metadata); } - // Combine into ToolkitData map + // Combine into ToolkitData map. + // Use getToolkitMetadata for toolkits without a direct match so that + // fallback logic (e.g. "WeaviateApi" → "Weaviate") is applied consistently, + // matching the behaviour of fetchToolkitData. const result = new Map(); for (const [toolkitId, tools] of toolkitGroups) { - result.set(toolkitId, { - tools, - metadata: metadataMap.get(toolkitId) ?? null, - }); + const directMetadata = metadataMap.get(toolkitId) ?? null; + const metadata = + directMetadata ?? + (await this.metadataSource.getToolkitMetadata(toolkitId)); + result.set(toolkitId, { tools, metadata }); } return result; diff --git a/toolkit-docs-generator/tests/app-lib/toolkit-static-params.test.ts b/toolkit-docs-generator/tests/app-lib/toolkit-static-params.test.ts index d083ea2c9..8c5c59f2c 100644 --- a/toolkit-docs-generator/tests/app-lib/toolkit-static-params.test.ts +++ b/toolkit-docs-generator/tests/app-lib/toolkit-static-params.test.ts @@ -78,7 +78,7 @@ describe("toolkit static params", () => { }); }); - it("prefers the design system category when available", async () => { + it("uses catalog category as fallback when JSON file is absent", async () => { await withTempDir(async (dir) => { await writeIndex(dir, [{ id: "Github", category: "development" }]); @@ -86,6 +86,25 @@ describe("toolkit static params", () => { { id: "Github", category: "social" }, ]; + // No JSON file written — catalog is the only source for category + const routes = await listToolkitRoutes({ dataDir: dir, toolkitsCatalog }); + expect(routes).toEqual([{ toolkitId: "github", category: "social" }]); + }); + }); + + it("prefers JSON category over catalog when JSON file is present", async () => { + await withTempDir(async (dir) => { + await writeIndex(dir, [{ id: "Github", category: "development" }]); + // JSON says "social"; catalog says "development" — JSON wins + await writeToolkitData(dir, { + id: "Github", + metadata: { category: "social" }, + }); + + const toolkitsCatalog: ToolkitCatalogEntry[] = [ + { id: "Github", category: "development" }, + ]; + const routes = await listToolkitRoutes({ dataDir: dir, toolkitsCatalog }); expect(routes).toEqual([{ toolkitId: "github", category: "social" }]); @@ -97,6 +116,35 @@ describe("toolkit static params", () => { }); }); + it("reads correct category from JSON for *Api toolkit with stale index", async () => { + await withTempDir(async (dir) => { + // Simulates WeaviateApi: index.json says "development" (stale), JSON says "databases" + await writeIndex(dir, [{ id: "WeaviateApi", category: "development" }]); + await writeToolkitData(dir, { + id: "WeaviateApi", + metadata: { + category: "databases", + docsLink: + "https://docs.arcade.dev/en/resources/integrations/databases/weaviate-api", + }, + }); + + const routes = await listToolkitRoutes({ + dataDir: dir, + toolkitsCatalog: [], + }); + expect(routes).toEqual([ + { toolkitId: "weaviate-api", category: "databases" }, + ]); + + const params = await getToolkitStaticParamsForCategory("databases", { + dataDir: dir, + toolkitsCatalog: [], + }); + expect(params).toEqual([{ toolkitId: "weaviate-api" }]); + }); + }); + it("uses docsLink slugs when available", async () => { await withTempDir(async (dir) => { await writeIndex(dir, [ diff --git a/toolkit-docs-generator/tests/diff/previous-output.test.ts b/toolkit-docs-generator/tests/diff/previous-output.test.ts new file mode 100644 index 000000000..402659fcf --- /dev/null +++ b/toolkit-docs-generator/tests/diff/previous-output.test.ts @@ -0,0 +1,183 @@ +import { describe, expect, it } from "vitest"; + +import { parsePreviousToolkitForDiff } from "../../src/diff/previous-output.js"; +import type { MergedToolkit } from "../../src/types/index.js"; + +const createValidToolkit = (): MergedToolkit => ({ + id: "Github", + label: "GitHub", + version: "1.0.0", + description: "GitHub toolkit", + metadata: { + category: "development", + iconUrl: "https://example.com/github.svg", + isBYOC: false, + isPro: false, + type: "arcade", + docsLink: "https://docs.example.com/github", + isComingSoon: false, + isHidden: false, + }, + auth: null, + tools: [ + { + name: "CreateIssue", + qualifiedName: "Github.CreateIssue", + fullyQualifiedName: "Github.CreateIssue@1.0.0", + description: null, + toolkitDescription: null, + parameters: [ + { + name: "title", + type: "string", + required: true, + description: "Issue title", + enum: null, + inferrable: true, + }, + ], + auth: null, + secrets: [], + output: { + type: "json", + description: null, + }, + secretsInfo: [], + documentationChunks: [], + }, + ], + documentationChunks: [], + customImports: [], + subPages: [], + generatedAt: "2026-01-01T00:00:00.000Z", +}); + +describe("parsePreviousToolkitForDiff", () => { + it("uses strict parsing when previous output already matches schema", () => { + const result = parsePreviousToolkitForDiff(createValidToolkit(), "github"); + + expect(result.usedFallback).toBe(false); + expect(result.toolkit?.id).toBe("Github"); + expect(result.toolkit?.tools).toHaveLength(1); + }); + + it("falls back for legacy page fields and preserves tool signature fields", () => { + const result = parsePreviousToolkitForDiff( + { + id: "Jira", + label: "Jira", + version: "2.4.0", + description: "Jira toolkit", + metadata: { + category: "development", + iconUrl: "https://example.com/jira.svg", + isBYOC: false, + isPro: false, + type: "arcade", + docsLink: "https://docs.example.com/jira", + isComingSoon: false, + isHidden: false, + }, + auth: null, + tools: [ + { + name: "CreateIssue", + qualifiedName: "Jira.CreateIssue", + fullyQualifiedName: "Jira.CreateIssue@2.4.0", + description: null, + parameters: [ + { + name: "title", + type: "string", + required: true, + description: "Issue title", + enum: null, + }, + ], + auth: { + provider_type: "oauth2", + provider_id: null, + scopes: ["write:jira-work"], + }, + secrets: [], + output: { + value_schema: { + val_type: "json", + }, + }, + }, + ], + documentationChunks: [ + { + heading: "How to use Jira", + }, + ], + customImports: [{ component: "JiraOverview" }], + subPages: [{ slug: "advanced" }], + }, + "jira" + ); + + expect(result.usedFallback).toBe(true); + expect(result.toolkit?.id).toBe("Jira"); + expect(result.toolkit?.tools).toHaveLength(1); + expect(result.toolkit?.tools[0]?.output).toEqual({ + type: "json", + description: null, + }); + expect(result.toolkit?.tools[0]?.parameters[0]?.inferrable).toBe(true); + expect(result.toolkit?.tools[0]?.auth).toEqual({ + providerId: null, + providerType: "oauth2", + scopes: ["write:jira-work"], + }); + }); + + it("derives missing qualified names from toolkit and tool names", () => { + const result = parsePreviousToolkitForDiff( + { + id: "Notion", + label: "Notion", + version: "3.0.0", + description: null, + metadata: { + category: "productivity", + iconUrl: "https://example.com/notion.svg", + isBYOC: false, + isPro: false, + type: "arcade", + docsLink: "https://docs.example.com/notion", + isComingSoon: false, + isHidden: false, + }, + auth: null, + tools: [ + { + name: "CreatePage", + description: null, + parameters: [], + auth: null, + secrets: [], + output: null, + }, + ], + }, + "notion" + ); + + expect(result.usedFallback).toBe(true); + expect(result.toolkit?.tools).toHaveLength(1); + expect(result.toolkit?.tools[0]?.qualifiedName).toBe("Notion.CreatePage"); + expect(result.toolkit?.tools[0]?.fullyQualifiedName).toBe( + "Notion.CreatePage@3.0.0" + ); + }); + + it("returns null for non-object payloads", () => { + const result = parsePreviousToolkitForDiff("invalid-payload", "github"); + + expect(result.usedFallback).toBe(true); + expect(result.toolkit).toBeNull(); + expect(result.reason).toContain("not a JSON object"); + }); +}); diff --git a/toolkit-docs-generator/tests/diff/toolkit-diff.test.ts b/toolkit-docs-generator/tests/diff/toolkit-diff.test.ts index 3845d4ec6..2f9c6b580 100644 --- a/toolkit-docs-generator/tests/diff/toolkit-diff.test.ts +++ b/toolkit-docs-generator/tests/diff/toolkit-diff.test.ts @@ -173,7 +173,10 @@ describe("compareTools", () => { createToolDefinition({ name: "Tool1", qualifiedName: "TestKit.Tool1", - description: "Updated description", + output: { + type: "array", + description: "Result", + }, }), ]; const previousToolkit = createMergedToolkit({ @@ -181,7 +184,10 @@ describe("compareTools", () => { createMergedTool({ name: "Tool1", qualifiedName: "TestKit.Tool1", - description: "Original description", + output: { + type: "object", + description: "Result", + }, }), ], }); @@ -196,6 +202,57 @@ describe("compareTools", () => { }); }); + it("ignores description-only differences", () => { + const currentTools = [ + createToolDefinition({ + name: "Tool1", + qualifiedName: "TestKit.Tool1", + description: "Updated description text", + parameters: [ + { + name: "param1", + type: "string", + required: true, + description: "Updated parameter description", + enum: null, + inferrable: true, + }, + ], + output: { + type: "object", + description: "Updated output description", + }, + }), + ]; + const previousToolkit = createMergedToolkit({ + tools: [ + createMergedTool({ + name: "Tool1", + qualifiedName: "TestKit.Tool1", + description: "Original description text", + parameters: [ + { + name: "param1", + type: "string", + required: true, + description: "Original parameter description", + enum: null, + inferrable: true, + }, + ], + output: { + type: "object", + description: "Original output description", + }, + }), + ], + }); + + const changes = compareTools(currentTools, previousToolkit); + + expect(changes).toHaveLength(0); + }); + it("should detect parameter changes as modifications", () => { const currentTools = [ createToolDefinition({ @@ -278,6 +335,107 @@ describe("compareTools", () => { expect(changes[0]?.changeType).toBe("modified"); }); + it("ignores oauth provider ID differences across sources", () => { + const currentTools = [ + createToolDefinition({ + name: "Tool1", + qualifiedName: "TestKit.Tool1", + auth: { + providerId: null, + providerType: "oauth2", + scopes: ["repo"], + }, + }), + ]; + const previousToolkit = createMergedToolkit({ + tools: [ + createMergedTool({ + name: "Tool1", + qualifiedName: "TestKit.Tool1", + auth: { + providerId: "github", + providerType: "oauth2", + scopes: ["repo"], + }, + }), + ], + }); + + const changes = compareTools(currentTools, previousToolkit); + + expect(changes).toHaveLength(0); + }); + + it("treats unknown output type as string for diff parity", () => { + const currentTools = [ + createToolDefinition({ + name: "Tool1", + qualifiedName: "TestKit.Tool1", + output: { + type: "unknown", + description: "Result", + }, + }), + ]; + const previousToolkit = createMergedToolkit({ + tools: [ + createMergedTool({ + name: "Tool1", + qualifiedName: "TestKit.Tool1", + output: { + type: "string", + description: "Result", + }, + }), + ], + }); + + const changes = compareTools(currentTools, previousToolkit); + + expect(changes).toHaveLength(0); + }); + + it("treats empty enum arrays as null for diff parity", () => { + const currentTools = [ + createToolDefinition({ + name: "Tool1", + qualifiedName: "TestKit.Tool1", + parameters: [ + { + name: "mode", + type: "string", + required: true, + description: "Mode", + enum: [], + inferrable: true, + }, + ], + }), + ]; + const previousToolkit = createMergedToolkit({ + tools: [ + createMergedTool({ + name: "Tool1", + qualifiedName: "TestKit.Tool1", + parameters: [ + { + name: "mode", + type: "string", + required: true, + description: "Mode", + enum: null, + inferrable: true, + }, + ], + }), + ], + }); + + const changes = compareTools(currentTools, previousToolkit); + + expect(changes).toHaveLength(0); + }); + it("should handle tools with no previous toolkit", () => { const currentTools = [ createToolDefinition({ name: "Tool1", qualifiedName: "TestKit.Tool1" }), @@ -323,7 +481,14 @@ describe("compareToolkit", () => { }); it("should return modified when tools changed", () => { - const currentTools = [createToolDefinition({ description: "Updated" })]; + const currentTools = [ + createToolDefinition({ + output: { + type: "array", + description: "Result", + }, + }), + ]; const previousToolkit = createMergedToolkit(); const change = compareToolkit("TestKit", currentTools, previousToolkit); @@ -394,7 +559,14 @@ describe("detectChanges", () => { const currentToolkitTools = new Map([ [ "TestKit", - [createToolDefinition({ description: "Updated description" })], + [ + createToolDefinition({ + output: { + type: "array", + description: "Result", + }, + }), + ], ], ]); const previousToolkits = new Map([["TestKit", createMergedToolkit()]]); @@ -455,7 +627,10 @@ describe("detectChanges", () => { createMergedTool({ name: "CreateIssue", qualifiedName: "Github.CreateIssue", - description: "Old description", + output: { + type: "array", + description: "Result", + }, }), createMergedTool({ name: "RemovedTool", @@ -536,7 +711,17 @@ describe("hasChanges", () => { it("should return true when there are modified toolkits", () => { const result = detectChanges( new Map([ - ["TestKit", [createToolDefinition({ description: "Changed" })]], + [ + "TestKit", + [ + createToolDefinition({ + output: { + type: "array", + description: "Result", + }, + }), + ], + ], ]), new Map([["TestKit", createMergedToolkit()]]) ); @@ -567,7 +752,10 @@ describe("getChangedToolkitIds", () => { [ createToolDefinition({ qualifiedName: "Changed.Tool", - description: "New", + output: { + type: "array", + description: "Result", + }, }), ], ], @@ -612,7 +800,10 @@ describe("formatChangeSummary", () => { [ createToolDefinition({ qualifiedName: "Modified.Tool", - description: "New desc", + output: { + type: "array", + description: "Result", + }, }), ], ], diff --git a/toolkit-docs-generator/tests/generator/output-verifier.test.ts b/toolkit-docs-generator/tests/generator/output-verifier.test.ts index c3c198fc6..3cdc95139 100644 --- a/toolkit-docs-generator/tests/generator/output-verifier.test.ts +++ b/toolkit-docs-generator/tests/generator/output-verifier.test.ts @@ -235,4 +235,110 @@ describe("verifyOutputDir", () => { ).toBe(true); }); }); + + it("can verify legacy toolkit files when legacy fallback is enabled", async () => { + await withTempDir(async (dir) => { + const [githubToolkit] = await Promise.all([ + loadFixture("github-toolkit.json"), + ]); + const generator = createJsonGenerator({ + outputDir: dir, + prettyPrint: false, + generateIndex: true, + }); + + await generator.generateAll([githubToolkit]); + + const toolkitPath = join(dir, "github.json"); + const legacyToolkit = JSON.parse( + await readFile(toolkitPath, "utf-8") + ) as Record; + const chunks = legacyToolkit.documentationChunks as Record< + string, + unknown + >[]; + if (Array.isArray(chunks) && chunks[0]) { + chunks[0].type = "legacy_note"; + chunks[0].location = "overview"; + } + legacyToolkit.subPages = [{ slug: "advanced" }]; + await writeFile( + toolkitPath, + JSON.stringify(legacyToolkit, null, 2), + "utf-8" + ); + + const strictResult = await verifyOutputDir(dir); + expect(strictResult.valid).toBe(false); + expect( + strictResult.errors.some((error) => + error.includes("Invalid toolkit schema in github.json") + ) + ).toBe(true); + + const fallbackResult = await verifyOutputDir(dir, undefined, { + allowLegacyFallback: true, + }); + expect(fallbackResult.valid).toBe(true); + expect(fallbackResult.errors).toHaveLength(0); + expect( + fallbackResult.warnings.some((warning) => + warning.includes("Loaded github.json with fallback parser") + ) + ).toBe(true); + }); + }); + + it("builds index from output when legacy files exist", async () => { + await withTempDir(async (dir) => { + const [githubToolkit, slackToolkit] = await Promise.all([ + loadFixture("github-toolkit.json"), + loadFixture("slack-toolkit.json"), + ]); + const baselineGenerator = createJsonGenerator({ + outputDir: dir, + prettyPrint: false, + generateIndex: true, + }); + await baselineGenerator.generateAll([githubToolkit, slackToolkit]); + + const toolkitPath = join(dir, "github.json"); + const legacyToolkit = JSON.parse( + await readFile(toolkitPath, "utf-8") + ) as Record; + const chunks = legacyToolkit.documentationChunks as Record< + string, + unknown + >[]; + if (Array.isArray(chunks) && chunks[0]) { + chunks[0].type = "legacy_note"; + chunks[0].location = "overview"; + } + legacyToolkit.subPages = [{ slug: "advanced" }]; + await writeFile( + toolkitPath, + JSON.stringify(legacyToolkit, null, 2), + "utf-8" + ); + + const generator = createJsonGenerator({ + outputDir: dir, + prettyPrint: false, + generateIndex: true, + indexSource: "output", + }); + const result = await generator.generateAll([slackToolkit]); + + expect(result.errors).toHaveLength(0); + + const index = JSON.parse( + await readFile(join(dir, "index.json"), "utf-8") + ) as { + toolkits: Array<{ id: string }>; + }; + const ids = new Set(index.toolkits.map((entry) => entry.id)); + expect(ids.has("Github")).toBe(true); + expect(ids.has("Slack")).toBe(true); + }); + }); }); diff --git a/toolkit-docs-generator/tests/merger/data-merger.test.ts b/toolkit-docs-generator/tests/merger/data-merger.test.ts index cf71a3358..661745689 100644 --- a/toolkit-docs-generator/tests/merger/data-merger.test.ts +++ b/toolkit-docs-generator/tests/merger/data-merger.test.ts @@ -25,7 +25,11 @@ import { InMemoryMetadataSource, InMemoryToolDataSource, } from "../../src/sources/in-memory.js"; -import { createCombinedToolkitDataSource } from "../../src/sources/toolkit-data-source.js"; +import { + createCombinedToolkitDataSource, + type IToolkitDataSource, + type ToolkitData, +} from "../../src/sources/toolkit-data-source.js"; import type { CustomSections, ToolDefinition, @@ -443,6 +447,46 @@ describe("mergeToolkit", () => { ); }); + it("infers a readable label from toolkit description without metadata", async () => { + const tools = [ + createTool({ + qualifiedName: "MicrosoftOnedrive.ListFolderItems", + fullyQualifiedName: "MicrosoftOnedrive.ListFolderItems@1.0.0", + toolkitDescription: "Arcade.dev LLM tools for Microsoft OneDrive", + }), + ]; + + const result = await mergeToolkit( + "MicrosoftOnedrive", + tools, + null, + null, + undefined + ); + + expect(result.toolkit.label).toBe("Microsoft OneDrive"); + }); + + it("humanizes toolkit ID when metadata and description label are unavailable", async () => { + const tools = [ + createTool({ + qualifiedName: "MyCustomApi.Run", + fullyQualifiedName: "MyCustomApi.Run@1.0.0", + toolkitDescription: "", + }), + ]; + + const result = await mergeToolkit( + "MyCustomApi", + tools, + null, + null, + undefined + ); + + expect(result.toolkit.label).toBe("My Custom API"); + }); + it("marks *Api toolkits as arcade_starter", async () => { const tools = [ createTool({ @@ -1209,6 +1253,65 @@ describe("DataMerger", () => { expect(slackResult?.toolkit.tools).toHaveLength(1); }); + it("skips toolkits missing metadata or tools when requireCompleteData is true", async () => { + const completeToolkitData: ToolkitData = { + tools: [githubTool1], + metadata: githubMetadata, + }; + const missingMetadataToolkitData: ToolkitData = { + tools: [ + createTool({ + name: "Lookup", + qualifiedName: "Unknown.Lookup", + fullyQualifiedName: "Unknown.Lookup@1.0.0", + }), + ], + metadata: null, + }; + const missingToolsToolkitData: ToolkitData = { + tools: [], + metadata: slackMetadata, + }; + + const toolkitDataSource: IToolkitDataSource = { + fetchToolkitData: async (toolkitId: string) => { + if (toolkitId === "Github") { + return completeToolkitData; + } + if (toolkitId === "Unknown") { + return missingMetadataToolkitData; + } + if (toolkitId === "Slack") { + return missingToolsToolkitData; + } + return { tools: [], metadata: null }; + }, + fetchAllToolkitsData: async () => + new Map([ + ["Github", completeToolkitData], + ["Unknown", missingMetadataToolkitData], + ["Slack", missingToolsToolkitData], + ]), + isAvailable: async () => true, + }; + + const merger = new DataMerger({ + toolkitDataSource, + customSectionsSource: new EmptyCustomSectionsSource(), + toolExampleGenerator: createStubGenerator(), + requireCompleteData: true, + }); + + const count = await merger.getToolkitCount(); + const results = await merger.mergeAllToolkits(); + + expect(count.total).toBe(3); + expect(count.toProcess).toBe(1); + expect(count.skipped).toBe(2); + expect(results).toHaveLength(1); + expect(results[0]?.toolkit.id).toBe("Github"); + }); + it("should return empty array when no tools", async () => { const toolkitDataSource = createCombinedToolkitDataSource({ toolSource: new InMemoryToolDataSource([]), diff --git a/toolkit-docs-generator/tests/scenarios/skip-unchanged.test.ts b/toolkit-docs-generator/tests/scenarios/skip-unchanged.test.ts index 28f967663..cac674a5d 100644 --- a/toolkit-docs-generator/tests/scenarios/skip-unchanged.test.ts +++ b/toolkit-docs-generator/tests/scenarios/skip-unchanged.test.ts @@ -93,7 +93,10 @@ describe("Scenario: Skip unchanged toolkits", () => { createTool({ name: "Tool1", qualifiedName: "Github.Tool1", - description: "Updated", + output: { + type: "array", + description: null, + }, }), ], ], diff --git a/toolkit-docs-generator/tests/scripts/sync-toolkit-sidebar.test.ts b/toolkit-docs-generator/tests/scripts/sync-toolkit-sidebar.test.ts index 8c6b466f6..42e4ac7ea 100644 --- a/toolkit-docs-generator/tests/scripts/sync-toolkit-sidebar.test.ts +++ b/toolkit-docs-generator/tests/scripts/sync-toolkit-sidebar.test.ts @@ -7,7 +7,7 @@ import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { join } from "node:path"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { buildToolkitInfoList, generateCategoryMeta, @@ -17,30 +17,30 @@ import { getToolkitLabel, getToolkitLabelFromJson, groupByCategory, + parseBooleanCliFlag, + resolveRemoveEmptySections, + setToolkitsForTesting, syncToolkitSidebar, type ToolkitInfo, } from "../../scripts/sync-toolkit-sidebar"; -// Mock the design system -vi.mock("@arcadeai/design-system", () => ({ - TOOLKITS: [ - { id: "Gmail", label: "Gmail", category: "productivity" }, - { id: "Slack", label: "Slack", category: "social" }, - { id: "Github", label: "GitHub", category: "development" }, - { id: "Stripe", label: "Stripe", category: "payments" }, - { id: "Zendesk", label: "Zendesk", category: "customer-support" }, - { id: "GoogleSearch", label: "Google Search", category: "search" }, - { id: "Hubspot", label: "HubSpot", category: "sales" }, - { id: "Spotify", label: "Spotify", category: "entertainment" }, - { id: "Postgres", label: "Postgres", category: "databases" }, - { - id: "HiddenToolkit", - label: "Hidden", - category: "productivity", - isHidden: true, - }, - ], -})); +setToolkitsForTesting([ + { id: "Gmail", label: "Gmail", category: "productivity" }, + { id: "Slack", label: "Slack", category: "social" }, + { id: "Github", label: "GitHub", category: "development" }, + { id: "Stripe", label: "Stripe", category: "payments" }, + { id: "Zendesk", label: "Zendesk", category: "customer-support" }, + { id: "GoogleSearch", label: "Google Search", category: "search" }, + { id: "Hubspot", label: "HubSpot", category: "sales" }, + { id: "Spotify", label: "Spotify", category: "entertainment" }, + { id: "Postgres", label: "Postgres", category: "databases" }, + { + id: "HiddenToolkit", + label: "Hidden", + category: "productivity", + isHidden: true, + }, +]); // Test directory setup const TEST_DIR = join(process.cwd(), ".test-sync-sidebar"); @@ -349,6 +349,60 @@ describe("groupByCategory", () => { }); }); +// ============================================================================ +// Unit Tests: remove empty section flags +// ============================================================================ + +describe("remove empty section flags", () => { + it("defaults to false when no flag is provided", () => { + expect(resolveRemoveEmptySections({})).toBe(false); + }); + + it("supports the explicit removeEmptySections option", () => { + expect(resolveRemoveEmptySections({ removeEmptySections: true })).toBe( + true + ); + expect(resolveRemoveEmptySections({ removeEmptySections: false })).toBe( + false + ); + }); + + it("supports prune as a backward-compatible alias", () => { + expect(resolveRemoveEmptySections({ prune: true })).toBe(true); + expect(resolveRemoveEmptySections({ prune: false })).toBe(false); + }); + + it("prefers removeEmptySections over prune when both are set", () => { + expect( + resolveRemoveEmptySections({ removeEmptySections: false, prune: true }) + ).toBe(false); + expect( + resolveRemoveEmptySections({ removeEmptySections: true, prune: false }) + ).toBe(true); + }); + + it("parses boolean CLI flags in value and shorthand formats", () => { + expect( + parseBooleanCliFlag( + ["--remove-empty-sections=true"], + "--remove-empty-sections" + ) + ).toBe(true); + expect( + parseBooleanCliFlag( + ["--remove-empty-sections=false"], + "--remove-empty-sections" + ) + ).toBe(false); + expect( + parseBooleanCliFlag( + ["--remove-empty-sections"], + "--remove-empty-sections" + ) + ).toBe(true); + }); +}); + // ============================================================================ // Unit Tests: generateCategoryMeta // ============================================================================ diff --git a/toolkit-docs-generator/tests/sources/engine-api.test.ts b/toolkit-docs-generator/tests/sources/engine-api.test.ts index 3936eef5f..8575c2c89 100644 --- a/toolkit-docs-generator/tests/sources/engine-api.test.ts +++ b/toolkit-docs-generator/tests/sources/engine-api.test.ts @@ -198,10 +198,90 @@ describe("EngineApiSource", () => { expect(tools).toHaveLength(2); expect(tools[0]?.toolkitDescription).toBe("GitHub toolkit"); expect(tools[0]?.secrets).toEqual(["GITHUB_API_KEY"]); - expect(tools[1]?.output?.type).toBe("unknown"); + expect(tools[1]?.output?.type).toBe("string"); expect(tools[1]?.auth?.providerId).toBeNull(); }); + it("handles tool metadata output objects with missing fields", async () => { + const items: ToolMetadataItem[] = [ + { + fully_qualified_name: "Github.CreateIssue@1.0.0", + qualified_name: "Github.CreateIssue", + name: "CreateIssue", + description: "Create issue", + toolkit: { + name: "Github", + version: "1.0.0", + description: "GitHub toolkit", + }, + input: { parameters: [] }, + output: {} as ToolMetadataItem["output"], + requirements: { + authorization: null, + secrets: [], + }, + }, + ]; + const source = new EngineApiSource({ + baseUrl: "https://api.arcade.dev", + apiKey: "test", + fetchFn: createFetchStub(items), + }); + + const tools = await source.fetchAllTools(); + + expect(tools).toHaveLength(1); + expect(tools[0]?.output).toEqual({ + type: "string", + description: null, + }); + }); + + it("normalizes empty enum arrays to null", async () => { + const items: ToolMetadataItem[] = [ + { + fully_qualified_name: "Github.CreateIssue@1.0.0", + qualified_name: "Github.CreateIssue", + name: "CreateIssue", + description: "Create issue", + toolkit: { + name: "Github", + version: "1.0.0", + description: "GitHub toolkit", + }, + input: { + parameters: [ + { + name: "mode", + required: true, + description: "Execution mode", + value_schema: { + val_type: "string", + inner_val_type: null, + enum: [], + }, + inferrable: true, + }, + ], + }, + output: null, + requirements: { + authorization: null, + secrets: [], + }, + }, + ]; + const source = new EngineApiSource({ + baseUrl: "https://api.arcade.dev", + apiKey: "test", + fetchFn: createFetchStub(items), + }); + + const tools = await source.fetchAllTools(); + + expect(tools[0]?.parameters[0]?.enum).toBeNull(); + }); + it("filters tools by toolkit and provider", async () => { const items = createItems(); const source = new EngineApiSource({ diff --git a/toolkit-docs-generator/tests/sources/toolkit-data-source.test.ts b/toolkit-docs-generator/tests/sources/toolkit-data-source.test.ts index 6c9b3630f..989464219 100644 --- a/toolkit-docs-generator/tests/sources/toolkit-data-source.test.ts +++ b/toolkit-docs-generator/tests/sources/toolkit-data-source.test.ts @@ -5,6 +5,7 @@ * abstraction returns tools + metadata together. */ import { describe, expect, it } from "vitest"; +import { createDesignSystemMetadataSourceFromToolkits } from "../../src/sources/design-system-metadata.js"; import { InMemoryMetadataSource, InMemoryToolDataSource, @@ -125,6 +126,40 @@ describe("CombinedToolkitDataSource", () => { expect(result.get("Slack")?.metadata?.label).toBe("Slack"); }); + it("fetchAllToolkitsData resolves metadata for *Api toolkits whose design system id omits the Api suffix", async () => { + // Simulates WeaviateApi (Engine API name) vs Weaviate (design system id). + // getAllToolkitsMetadata returns { id: "Weaviate" }, but the toolkit group key + // is "WeaviateApi" — the direct map lookup misses and must fall through to + // getToolkitMetadata which has the "api" suffix fallback. + const toolSource = new InMemoryToolDataSource([ + createTool({ + qualifiedName: "WeaviateApi.ActivateUser", + fullyQualifiedName: "WeaviateApi.ActivateUser@2.0.0", + }), + ]); + + const metadataSource = createDesignSystemMetadataSourceFromToolkits([ + createMetadata({ + id: "Weaviate", + label: "Weaviate", + category: "databases", + iconUrl: "https://design-system.arcade.dev/icons/weaviate.svg", + }), + ]); + + const dataSource = createCombinedToolkitDataSource({ + toolSource, + metadataSource, + }); + + const result = await dataSource.fetchAllToolkitsData(); + const weaviate = result.get("WeaviateApi"); + + expect(weaviate).toBeDefined(); + expect(weaviate?.metadata?.category).toBe("databases"); + expect(weaviate?.metadata?.label).toBe("Weaviate API"); + }); + it("should fall back to providerId metadata for *Api toolkits", async () => { const toolSource = new InMemoryToolDataSource([ createTool({ diff --git a/toolkit-docs-generator/tests/workflows/generate-toolkit-docs.test.ts b/toolkit-docs-generator/tests/workflows/generate-toolkit-docs.test.ts index 9f95afad7..5ba776a36 100644 --- a/toolkit-docs-generator/tests/workflows/generate-toolkit-docs.test.ts +++ b/toolkit-docs-generator/tests/workflows/generate-toolkit-docs.test.ts @@ -15,11 +15,24 @@ test("porter workflow includes required triggers", () => { expect(workflowContents).toContain("repository_dispatch"); expect(workflowContents).toContain("porter_deploy_succeeded"); expect(workflowContents).toContain("workflow_dispatch"); + expect(workflowContents).toContain("schedule:"); + expect(workflowContents).toContain('cron: "0 11 * * *"'); }); test("porter workflow generates docs and opens a PR", () => { - expect(workflowContents).toContain("pnpm start generate"); + expect(workflowContents).toContain("pnpm dlx tsx src/cli/index.ts generate"); expect(workflowContents).toContain("--skip-unchanged"); + expect(workflowContents).toContain("--require-complete"); + expect(workflowContents).toContain("--verbose"); + expect(workflowContents).toContain("--api-source tool-metadata"); + expect(workflowContents).toContain("--tool-metadata-url"); + expect(workflowContents).toContain("--tool-metadata-key"); + expect(workflowContents).toContain("--llm-provider openai"); + expect(workflowContents).toContain("--llm-model"); + expect(workflowContents).toContain("--llm-api-key"); + expect(workflowContents).toContain("--remove-empty-sections=false"); expect(workflowContents).toContain("peter-evans/create-pull-request"); + expect(workflowContents).toContain("HUSKY: 0"); + expect(workflowContents).toContain("[AUTO] Adding MCP Servers docs update"); expect(workflowContents).toContain("pull-requests: write"); }); diff --git a/toolkit-docs-generator/vitest.config.ts b/toolkit-docs-generator/vitest.config.ts index 06efcd802..f7e5aeeda 100644 --- a/toolkit-docs-generator/vitest.config.ts +++ b/toolkit-docs-generator/vitest.config.ts @@ -1,17 +1,6 @@ -import { createRequire } from "node:module"; import { defineConfig } from "vitest/config"; -const require = createRequire(import.meta.url); -const designSystemEntry = require.resolve("@arcadeai/design-system"); - export default defineConfig({ - resolve: { - alias: { - // Use the Node-resolved entry to avoid broken "development" export paths - // in some published design-system versions during Vitest transform. - "@arcadeai/design-system": designSystemEntry, - }, - }, test: { // Enable globals like describe, it, expect without imports globals: true, diff --git a/vitest.config.ts b/vitest.config.ts index ce69e8ffe..8fb6f2dcf 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,16 +1,3 @@ -import { createRequire } from "node:module"; import { defineConfig } from "vitest/config"; -const require = createRequire(import.meta.url); -const designSystemEntry = require.resolve("@arcadeai/design-system"); - -export default defineConfig({ - resolve: { - alias: { - // Force Vitest to use the Node-resolved entrypoint instead of the - // package "development" condition, which some published versions point - // to non-shipped source files. - "@arcadeai/design-system": designSystemEntry, - }, - }, -}); +export default defineConfig({});