{"name":"Altixia Sign","description":"Electronic signature. Sends documents for signature, follows the signers through to completion and returns the sealed PDFs with their audit trail (PAdES B-LTA, qualified eIDAS timestamps). Signing itself is a human act done in the signing flow: no agent can apply a signature.","supportedInterfaces":[{"url":"https://sign.altixia.com/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"provider":{"organization":"Altixia LLC","url":"https://altixia.com"},"version":"1.0.0","documentationUrl":"https://sign.altixia.com/auth.md","capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false},"securitySchemes":{"signApiToken":{"httpAuthSecurityScheme":{"scheme":"Bearer","bearerFormat":"api_…","description":"An Altixia Sign API token, created by the account holder in their team settings (https://sign.altixia.com/settings/tokens) and scoped to that team. Relayed as is on every call, never stored. Not an Altixia ID token. See https://sign.altixia.com/auth.md."}}},"securityRequirements":[{"schemes":{"signApiToken":{"list":[]}}}],"defaultInputModes":["application/json","application/pdf"],"defaultOutputModes":["application/json","text/plain"],"skills":[{"id":"send_for_signature","name":"Send a document for signature","description":"Creates an envelope and sends it to its signers, who sign in the Altixia Sign web flow. Send one `data` Part {\"skill\": \"send_for_signature\", \"title\", \"recipients\": [{email, name, role?, signingOrder?, fields?: [{type?, document?, page, positionX, positionY, width, height}]}], \"sendEmail\"?, \"meta\"?: {subject, message, language, timezone, dateFormat, redirectUrl, signingOrder}} and name each PDF with a `url` Part (preferred: the service fetches it, so the bytes never pass through your context) or, as a last resort, a base64 `raw` Part. Or use a template instead of PDFs: \"templateId\" plus recipients, mapped onto the template's slots in signing order. Positions are percentages of the page; every SIGNER needs a SIGNATURE field. Replaying the same messageId returns the envelope already created instead of a second one. Answers with a task in TASK_STATE_WORKING (the task id is the envelope id) and one signing link per recipient.","tags":["e-signature","documents","send","pdf"],"examples":["Send this contract to Marie and Paul for signature","Have the client sign the engagement letter at https://example.com/letter.pdf","Create a signature request from template 42 for marie@example.com"],"inputModes":["application/json","application/pdf"],"outputModes":["application/json","text/plain"]},{"id":"get_signing_status","name":"Follow a signature request","description":"Reports where an envelope of your team stands: who signed, who has not yet, and who refused, with the reason. Send a `data` Part {\"skill\": \"get_signing_status\", \"envelopeId\"} — or set message.taskId to the envelope id — or call GetTask with the envelope id. A refusal is reported as TASK_STATE_REJECTED, distinct from a signature not yet given (TASK_STATE_WORKING).","tags":["e-signature","status","tracking"],"examples":["Has everyone signed the contract yet?","Who still has to sign envelope_abc123?"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"get_signed_document","name":"Retrieve the signed document","description":"Once every signer has signed and the document is sealed, returns links to the sealed PDFs and to the audit trail — never the bytes. Fetch them with an HTTP client and the same Authorization header; they are not public. Before sealing, answers with the current state instead. Send a `data` Part {\"skill\": \"get_signed_document\", \"envelopeId\"} or set message.taskId.","tags":["e-signature","download","audit-trail","pdf"],"examples":["Get me the signed contract and its audit trail","Download the sealed documents of envelope_abc123"],"inputModes":["application/json"],"outputModes":["application/json","application/pdf","text/plain"]}]}