{"responseCode":200,"message":"success","content":{"server":{"id":"mcp-sign-v1"},"tools":[{"name":"create_sign_document","title":"Create a signable document","description":"Create a signable document that can be sent to one or more signers for e-signature. Use this tool when the user wants to collect signatures, build a signing workflow, or prepare a document for signing. The document content is generated from a text prompt; an optional uploaded PDF, image, or DOCX can be passed as reference context (it is analyzed, not used as the final file).","summary":"Create a signable document that can be sent to one or more signers for e-signature. Use this tool when the user wants to collect signatures, build a signing workflow, or prepare a document for signing. The document content is generated from a text prompt; an optional uploaded PDF, image, or DOCX can be passed as reference context (it is analyzed, not used as the final file).","inputSchema":{"type":"object","properties":{"prompt":{"type":"string","description":"Primary input: a description of the signable document to generate (e.g. \"an NDA for a contractor with a 2-year term\"). The document content is generated from this."},"document_file":{"type":"object","description":"Optional reference document (PDF, image, or DOCX) used only as context to generate the document. It is analyzed for content, not used as the final file. Only pass a file the user has uploaded in the conversation.","properties":{"file_id":{"type":"string","description":"Identifier of the uploaded reference file."},"download_url":{"type":"string","description":"Direct download URL for the reference file."},"mime_type":{"type":"string","description":"MIME type of the reference file."},"file_name":{"type":"string","description":"Original file name of the reference file."}},"required":["file_id","download_url"],"additionalProperties":true},"document_title":{"type":"string","description":"Optional title for the document. Defaults to a title derived from the generated content."}},"required":["prompt"],"additionalProperties":true},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"status":{"type":"string","description":"Creation status. 'processing' means the document is being generated in the background and progress streams to the client."},"related_asset":{"type":["object","null"],"properties":{"asset_id":{"type":"string","description":"The ID of the created sign document"},"asset_title":{"type":"string"},"asset_type":{"type":"string"},"asset_created_at":{"type":"string","description":"Creation datetime in ISO8601"},"asset_updated_at":{"type":"string","description":"Last updated datetime in ISO8601"},"asset_url":{"type":"string","description":"The URL to edit and configure the signable document"},"action":{"type":"string"},"revision_id":{"type":"string","description":"The document revision this creation produces"}}}},"additionalProperties":true}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"hasUI":true,"preventRetry":true},{"name":"edit_sign_document","title":"Edit a sign document","description":"Edit an existing sign document. Can update the document title, regenerate the document content from a new prompt, or modify document settings.","summary":"Edit an existing sign document. Can update the document title, regenerate the document content from a new prompt, or modify document settings.","inputSchema":{"type":"object","properties":{"document_id":{"type":"string","description":"The document ID of the sign document to edit."},"prompt":{"type":"string","description":"New prompt to regenerate the document content. Describes the changes to make (e.g. \"add a confidentiality clause\", \"change the term to 3 years\")."}},"required":["document_id","prompt"],"additionalProperties":true},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"status":{"type":"string","description":"Edit status. 'processing' means the edit is being applied in the background and progress streams to the client."},"related_asset":{"type":["object","null"],"properties":{"asset_id":{"type":"string","description":"The ID of the sign document"},"asset_title":{"type":"string"},"asset_type":{"type":"string"},"asset_created_at":{"type":"string","description":"Creation datetime in ISO8601"},"asset_updated_at":{"type":"string","description":"Last updated datetime in ISO8601"},"asset_url":{"type":"string","description":"The URL to edit and configure the signable document"},"action":{"type":"string"},"document_id":{"type":"string","description":"The document ID of the sign document"},"revision_id":{"type":"string","description":"The document revision this edit produces"}}}},"additionalProperties":true}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"hasUI":true,"preventRetry":true},{"name":"get_signers","title":"Get signers of a sign document","description":"Retrieve the signers of a sign document or sign form \u2014 participants that have signature\/date\/text fields assigned to them \u2014 including their participant IDs, names, emails, roles, signing order, and signing status. When given a form ID, this returns signers across all of the form's documents (the editable draft plus every sent document), each annotated with its document ID and status. Participant roles with no assigned fields are excluded. Use this to see who has been sent a document and to get participant IDs before updating signers.","summary":"Retrieve the signers of a sign document or sign form \u2014 participants that have signature\/date\/text fields assigned to them \u2014 including their participant IDs, names, emails, roles, signing order, and signing status. When given a form ID, this returns signers across all of the form's documents (the editable draft plus every sent document), each annotated with its document ID and status. Participant roles with no assigned fields are excluded. Use this to see who has been sent a document and to get participant IDs before updating signers.","inputSchema":{"type":"object","properties":{"document_id":{"type":"string","description":"The ID of the sign document to get signers for. A sign form ID (as seen in the \/sign\/{id} builder URL) is also accepted, in which case signers from all of the form's documents (draft + sent) are returned."}},"required":["document_id"],"additionalProperties":true},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"signers":{"type":"array","description":"List of signers. When a form ID was given, this spans all of the form's documents.","items":{"type":"object","properties":{"participant_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"signing_order":{"type":"integer","description":"Signing position; 1 signs first."},"status":{"type":"string","description":"Signer status: CREATED, SENT, VIEWED, SIGNED, DECLINED."},"document_id":{"type":"string","description":"The sign document this signer belongs to."},"document_status":{"type":"string","description":"Status of that document: DRAFT, IN_PROGRESS, COMPLETED, CANCELED, etc."}}}}},"additionalProperties":true}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"hasUI":false,"preventRetry":false},{"name":"get_signing_links","title":"Get my signing links","description":"Get the signing links for a sent Jotform Sign document that is waiting for the current account's signature. Use when the user wants to sign a document sent to their account email. Returns one link per role the user can sign now, in signing order; with signing order enabled, later roles appear only once it is their turn. Share every link: each role is signed separately in the browser. Signing does not happen in chat. Does not sign or change the document.","summary":"Get the signing links for a sent Jotform Sign document that is waiting for the current account's signature. Use when the user wants to sign a document sent to their account email. Returns one link per role the user can sign now, in signing order; with signing order enabled, later roles appear only once it is their turn. Share every link: each role is signed separately in the browser. Signing does not happen in chat. Does not sign or change the document.","inputSchema":{"type":"object","properties":{"document_id":{"type":"string","description":"The ID of the sent sign document to get signing links for. Draft documents and form IDs are not accepted."}},"required":["document_id"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"document_id":{"type":"string"},"document_title":{"type":"string"},"signing_link":{"type":"string","description":"Link for the first role in signing_links."},"signing_links":{"type":"array","description":"One link per role the account can sign now, in signing order. Share every link.","items":{"type":"object","properties":{"role":{"type":"string"},"url":{"type":"string"}}}}},"additionalProperties":true}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"hasUI":false,"preventRetry":false},{"name":"get_signing_status","title":"Get signing status","description":"Report the current status of a sign document including the overall document status and per-signer status (sent, viewed, signed, declined) with key timestamps. Accepts a sign document ID or a sign form ID (as seen in the \/sign\/{id} builder URL); A sent document ID reports that copy only. A form ID or draft document ID aggregates all non-deleted sent copies, or reports the draft if no copies have been sent. Performs a single status lookup.","summary":"Report the current status of a sign document including the overall document status and per-signer status (sent, viewed, signed, declined) with key timestamps. Accepts a sign document ID or a sign form ID (as seen in the \/sign\/{id} builder URL); A sent document ID reports that copy only. A form ID or draft document ID aggregates all non-deleted sent copies, or reports the draft if no copies have been sent. Performs a single status lookup.","inputSchema":{"type":"object","properties":{"document_id":{"type":"string","description":"A sent document ID to check that copy only, or a sign form ID (as seen in the \/sign\/{id} builder URL) or draft document ID to aggregate all non-deleted sent copies. If no copies have been sent, the draft is reported."}},"required":["document_id"]},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"form_id":{"type":"string","description":"The sign form ID the reported document belongs to."},"status":{"type":"string","description":"Overall status for the reported copies: DRAFT when none have been sent; COMPLETED when all are completed; DECLINED when any signer declined or all copies are canceled; SENT otherwise."},"created_at":{"type":"string"},"sent_at":{"type":["string","null"],"description":"When the document was first sent for signature."},"completed_at":{"type":["string","null"],"description":"When every copy was completed (null while any copy is pending)."},"total_copies":{"type":"integer","description":"Number of independent copies sent for signature."},"in_progress_count":{"type":"integer","description":"Copies still awaiting signatures."},"completed_count":{"type":"integer","description":"Copies fully signed\/completed."},"canceled_count":{"type":"integer","description":"Copies that were canceled."},"signers":{"type":"array","description":"Per-signer status across every sent copy (or the draft roles when nothing has been sent).","items":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"status":{"type":"string","description":"PENDING, SENT, VIEWED, SIGNED, DECLINED."},"signed_at":{"type":["string","null"]},"viewed_at":{"type":["string","null"]},"signing_order":{"type":"integer","description":"Signing position; 1 signs first."},"document_id":{"type":"string","description":"The copy this signer belongs to."},"document_status":{"type":"string","description":"Status of that copy (DRAFT, IN_PROGRESS, COMPLETED, CANCELED)."}}}}},"additionalProperties":true}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"hasUI":false,"preventRetry":false},{"name":"get_teams","title":"Get Teams","description":"Retrieves team information for the user in Enterprise environments. Returns team details including members when returnBasicTeamInfo is false.","summary":"Retrieves team information for the user in Enterprise environments. Returns team details including members when returnBasicTeamInfo is false.","inputSchema":{"type":"object","properties":{"returnBasicTeamInfo":{"type":"boolean","description":"If true, returns only team IDs and names without member details. If false (default), returns full team information including team members, their roles, and member count. Set to false when the user wants to see who is in a team.","default":false}},"required":["returnBasicTeamInfo"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"teams":{"type":"array","description":"List of teams.","items":{"type":"object","properties":{"teamID":{"type":"string","description":"Unique team identifier."},"teamName":{"type":"string","description":"Display name of the team."}}}}},"additionalProperties":true}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"hasUI":false,"preventRetry":false},{"name":"list_submissions","title":"List signing submissions","description":"List signatures and signing submissions for sign documents.\nUse this tool when the user wants to view who has signed, check signatures, or see signing activity.\nYou can list submissions for a specific sign document by passing its form_id, or across all sign documents when form_ids is empty.\nDo NOT use this tool to list the user's sign documents themselves \u2014 use the sign document listing\/search tool for that.","summary":"List signatures and signing submissions for sign documents.\nUse this tool when the user wants to view who has signed, check signatures, or see signing activity.\nYou can list submissions for a specific sign document by passing its form_id, or across all sign documents when form_ids is empty.\nDo NOT use this tool to list the user's sign documents themselves \u2014 use the sign document listing\/search tool for that.","inputSchema":{"type":"object","properties":{"form_ids":{"type":"array","items":{"type":"string"},"description":"An array of numeric form IDs whose submissions to list or filter. Only pass an empty array when the user has NOT specified any form name and wants to list across their most recent forms.","default":[]},"user_query":{"type":"string","description":"A natural-language description of what the user wants to list or filter. Used as the filtering criteria when is_filtered_by_rules is true.","default":""},"filter":{"type":"object","properties":{"date_filter":{"type":"array","items":{"type":"string","format":"date"},"description":"The date range to filter by in YYYY-MM-DD format. The first item is the start date and the second item is the end date. Return empty array if no date filter is needed.","default":[]},"is_filtered_by_rules":{"type":"boolean","description":"Set to true when the user's query contains content-based filtering criteria beyond dates. When true, an AI model filters submissions by matching answers against the user_query. Set to false for date-only or unfiltered listings.","default":false}},"default":{"date_filter":[],"is_filtered_by_rules":false}},"limit":{"type":"number","description":"Maximum number of submissions to return (default: 50).","default":1000}},"required":["form_ids","user_query","filter","limit"]},"outputSchema":{"type":"object","properties":{"message":{"type":"string","description":"A brief status message about the listing results."}},"required":["message"]},"outputMode":"structured","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"hasUI":true,"preventRetry":true},{"name":"search","title":"Search User Products","description":"Search and list the user's Jotform products of these types only: sign document.\nUse this tool to find products by name or criteria, to list products of one or more types, or to get a product ID for another tool. It does not search submissions.\nproduct_type: array of types to include; [\"ALL\"] covers every available type (sign).\nfilter.title_filter: array of plain strings matched against product titles (OR logic, no regex). Matching is per whole word and case-insensitive, with no partial or plural matching: \"invoice\" does not match the title \"Invoices 2024\", so pass every spelling you want covered as its own array element, e.g. [\"invoice\", \"invoices\", \"billing\"]. A multi-word element needs most of its words present in the title, so prefer separate single-word elements to widen a search. Empty array lists all products of the requested types.\nfilter.date_filter: [start, end] creation-date range in YYYY-MM-DD format, or empty array for no date filter.\nfilter.status_filter: null lists active products. favorited_only lists owned favorited products; archived_only lists owned archived products; trashed_only lists owned trashed products.\nfilter.is_filtered_by_rules: LAST RESORT (extra AI call) \u2014 only when no title keyword can express the criteria, such as the language a title is written in or an abstract topic with no obvious keyword. When the request contains a plausible title word, ALWAYS prefer filter.title_filter, listing several keyword variants (synonyms, singular and plural, translations) in one call rather than setting this true. If both are sent, the keywords are applied first and the AI pass runs only when they match nothing, so it cannot refine keyword matches further. Never present unfiltered results for criteria the filters could not express.\nEnterprise server admins: active-status searches cover ALL assets on the server (with owner and team info, server-wide totals and workflow error counts); owned-state filters stay scoped to the admin's own products.\norder_by: default \"last_activity\"; only use another option when the user asks for a specific sorting.\nExamples: (1) product_type=[\"ALL\"], filter.title_filter=[\"invoice\", \"invoices\"] to find products whose title contains either word; (2) product_type=[\"sign\"] to list products of one type; (3) filter.status_filter=\"trashed_only\" to list trashed products.","summary":"Search and list the user's Jotform products of these types only: sign document.\nUse this tool to find products by name or criteria, to list products of one or more types, or to get a product ID for another tool. It does not search submissions.\nproduct_type: array of types to include; [\"ALL\"] covers every available type (sign).\nfilter.title_filter: array of plain strings matched against product titles (OR logic, no regex). Matching is per whole word and case-insensitive, with no partial or plural matching: \"invoice\" does not match the title \"Invoices 2024\", so pass every spelling you want covered as its own array element, e.g. [\"invoice\", \"invoices\", \"billing\"]. A multi-word element needs most of its words present in the title, so prefer separate single-word elements to widen a search. Empty array lists all products of the requested types.\nfilter.date_filter: [start, end] creation-date range in YYYY-MM-DD format, or empty array for no date filter.\nfilter.status_filter: null lists active products. favorited_only lists owned favorited products; archived_only lists owned archived products; trashed_only lists owned trashed products.\nfilter.is_filtered_by_rules: LAST RESORT (extra AI call) \u2014 only when no title keyword can express the criteria, such as the language a title is written in or an abstract topic with no obvious keyword. When the request contains a plausible title word, ALWAYS prefer filter.title_filter, listing several keyword variants (synonyms, singular and plural, translations) in one call rather than setting this true. If both are sent, the keywords are applied first and the AI pass runs only when they match nothing, so it cannot refine keyword matches further. Never present unfiltered results for criteria the filters could not express.\nEnterprise server admins: active-status searches cover ALL assets on the server (with owner and team info, server-wide totals and workflow error counts); owned-state filters stay scoped to the admin's own products.\norder_by: default \"last_activity\"; only use another option when the user asks for a specific sorting.\nExamples: (1) product_type=[\"ALL\"], filter.title_filter=[\"invoice\", \"invoices\"] to find products whose title contains either word; (2) product_type=[\"sign\"] to list products of one type; (3) filter.status_filter=\"trashed_only\" to list trashed products.","inputSchema":{"type":"object","properties":{"user_query":{"type":"string","description":"A natural-language instruction describing what the user wants to find and list from their products. Used as the filtering criteria when filter.is_filtered_by_rules is true.","default":""},"product_type":{"type":"array","items":{"type":"string","enum":["ALL","sign"]},"description":"Product types to include. Use [\"ALL\"] for every available type: sign.","default":["ALL"]},"filter":{"type":"object","properties":{"title_filter":{"type":"array","items":{"type":"string"},"description":"Array of plain strings for product title matching (OR logic). Regex is not supported. Whole-word, case-insensitive matching only \u2014 \"invoice\" does not match the title \"Invoices 2024\" \u2014 so pass each spelling as its own element, e.g. [\"invoice\", \"invoices\"]. Empty array lists all products.","default":[]},"date_filter":{"type":"array","items":{"type":"string","format":"date"},"description":"Creation-date range in YYYY-MM-DD format: [start, end]. Empty array disables the date filter.","default":[]},"status_filter":{"type":["string","null"],"enum":["favorited_only","archived_only","trashed_only",null],"description":"Product state filter. null (default) lists active products.","default":null},"is_filtered_by_rules":{"type":"boolean","description":"LAST RESORT \u2014 costs an extra AI call. Set to true ONLY when no title keyword can express the criteria, such as constraints on the language a title is written in, or an abstract topic with no obvious keyword. If any word from the user's request could plausibly appear in matching titles, use filter.title_filter instead and keep this false, listing several variants (synonyms, singular and plural, translations) in one call. When sent together with title_filter, the keywords run first and this AI pass only takes over if they match nothing.","default":false}},"required":["title_filter","date_filter","status_filter","is_filtered_by_rules"],"additionalProperties":false,"default":{"title_filter":[],"date_filter":[],"status_filter":null,"is_filtered_by_rules":false}},"order_by":{"type":"string","enum":["last_activity","most_recent_created","least_recent_created","submissions_count","last_submission"],"description":"Sort order for the results. Default \"last_activity\"; only use another option when a specific sorting is requested.","default":"last_activity"},"limit":{"type":"number","description":"Maximum number of products returned. Defaults to 20 and is capped at 50.","default":20}},"required":["user_query","product_type","filter","order_by","limit"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"results":{"type":"array","description":"Matching products. Each item includes id, title, url and type (form, portal, ai-agent, workflow, sign, sheet).","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"type":{"type":"string"}},"required":["id","title","type"]}},"total_count":{"type":"number","description":"Total number of matches before the limit was applied."},"counts":{"type":"array","description":"Per-type match counts as {type, count, scope} items. Present only when output=count_only."},"server_counts":{"type":"array","description":"Server-wide totals per type as {type, count} items. Enterprise server admins only."},"workflow_error_count":{"type":"number","description":"Server-wide count of workflows with errors. Enterprise server admins only."},"teams":{"type":"array","description":"Team workspace results grouped by team. Only present for enterprise users with teams enabled.","items":{"type":"object","properties":{"teamId":{"type":"string"},"teamName":{"type":"string"},"forms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"type":{"type":"string"}},"required":["id","title","type"]}}},"required":["teamId","teamName","forms"]}}},"additionalProperties":true,"required":["results"]}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"hasUI":true,"preventRetry":false},{"name":"send_for_signature","title":"Send document for signature","description":"Send a sign document to signers via email. A sign document has a fixed set of signer roles (signature slots). Each send dispatches one independent copy of the document to one person per role \u2014 a \"set\". The number of signer roles only controls how many people are on a single copy; it is NOT a limit on how many people can ever receive the document. You can call this tool as many times as needed to send additional independent copies to different people: a one-signer document can be sent to any number of individuals (one copy each), and a multi-signer document can be sent to different sets of people (one copy per set). To send a copy to a different person or set of people, first point the signer role(s) at them with the updateSigner tool (set each role's name and email), then call this tool \u2014 there is no separate \"add signer\" step, and having only one signer role does not prevent sending to more people. Supports signing order and auto-reminders. This action emails real people \u2014 confirm with the user before calling.","summary":"Send a sign document to signers via email. A sign document has a fixed set of signer roles (signature slots). Each send dispatches one independent copy of the document to one person per role \u2014 a \"set\". The number of signer roles only controls how many people are on a single copy; it is NOT a limit on how many people can ever receive the document. You can call this tool as many times as needed to send additional independent copies to different people: a one-signer document can be sent to any number of individuals (one copy each), and a multi-signer document can be sent to different sets of people (one copy per set). To send a copy to a different person or set of people, first point the signer role(s) at them with the updateSigner tool (set each role's name and email), then call this tool \u2014 there is no separate \"add signer\" step, and having only one signer role does not prevent sending to more people. Supports signing order and auto-reminders. This action emails real people \u2014 confirm with the user before calling.","inputSchema":{"type":"object","properties":{"document_id":{"type":"string","description":"The ID of the sign document to send. A sign form ID (as seen in the \/sign\/{id} builder URL) is also accepted and resolved to the form's draft document."},"message":{"type":"string","description":"Optional custom message to include in the signing invitation email."},"subject":{"type":"string","description":"Optional custom email subject line."},"enable_signing_order":{"type":"boolean","default":false,"description":"When true, signers receive the document in their assigned order. Defaults to false (all at once)."},"auto_remind":{"type":"boolean","default":false,"description":"Enable automatic reminders for pending signers. Defaults to false."}},"required":["document_id"],"additionalProperties":true},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"sent_to":{"type":"array","description":"List of signers the document was sent to.","items":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"signing_order":{"type":"integer"}}}}},"additionalProperties":true}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"hasUI":false,"preventRetry":true},{"name":"update_signer","title":"Update a signer on a sign document","description":"Update an existing signer role on a sign document with a person's name, email, and optional signing order. Use this to fill in signer details (e.g. after assignFieldsToSigners created the signer roles), or to re-target a signer role to a different person before (re-)sending: update the role's name and email here, then call sendForSignature again to send a new independent copy to that person. A document keeps the same signer roles across sends, so repeating updateSigner + sendForSignature lets you send copies to any number of different people even when there is only one signer role. Get valid participant IDs from getSigners. Call this tool once per signer role that needs updating.","summary":"Update an existing signer role on a sign document with a person's name, email, and optional signing order. Use this to fill in signer details (e.g. after assignFieldsToSigners created the signer roles), or to re-target a signer role to a different person before (re-)sending: update the role's name and email here, then call sendForSignature again to send a new independent copy to that person. A document keeps the same signer roles across sends, so repeating updateSigner + sendForSignature lets you send copies to any number of different people even when there is only one signer role. Get valid participant IDs from getSigners. Call this tool once per signer role that needs updating.","inputSchema":{"type":"object","properties":{"document_id":{"type":"string","description":"The ID of the sign document. A sign form ID (as seen in the \/sign\/{id} builder URL) is also accepted and resolved to the form's draft document."},"participant_id":{"type":"string","description":"The participant ID of the signer to update (from getSigners)."},"name":{"type":"string","description":"Full name of the signer."},"email":{"type":"string","description":"Email address of the signer."},"signing_order":{"type":"integer","description":"Optional signing position (1 signs first). Moves this signer to that position and shifts the others; positions are always unique. Used when sent with signing order enabled."}},"required":["document_id","participant_id","name","email"],"additionalProperties":true},"outputSchema":{"type":"object","properties":{"is_success":{"type":"boolean","description":"Whether the tool execution succeeded."},"message":{"type":"string","description":"Human-readable result description."},"error":{"type":"string","description":"Error description (present only on failure)."},"data":{"type":"object","properties":{"document_id":{"type":"string"},"participant_id":{"type":"string","description":"The participant ID of the updated signer."},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"}},"additionalProperties":true}},"required":["is_success","message","error","data"]},"outputMode":"structured","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"hasUI":false,"preventRetry":false}]},"duration":"29.22ms","info":null}