Kamy
Was dieses MCP kann
Renders, converts, edits and extracts PDFs, manages document templates and schedules, supports e-signature workflows and provides artifact attestation.
Tools
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['question'], 'properties': {'question': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'The question to ask Kamy about â\x80\x94 how to render a template, why a render failed, what plan to pick, etc.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifact_type'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 64}, 'maxItems': 20, 'description': 'Up to 20 free-form labels.'}, 'run_id': {'type': 'string', 'maxLength': 200, 'description': 'Your identifier for the agent run this artifact belongs to. Pass the same run_id across attestations and agent-action records to build one provenance chain readable via get_provenance_chain.'}, 'feature': {'type': 'string', 'maxLength': 120, 'description': 'Product area or pipeline name, for grouping attestations.'}, 'metadata': {'type': 'object', 'description': 'Arbitrary JSON stored alongside the attestation (model, source URL, reviewer, ...).', 'additionalProperties': {}}, 'content_text': {'type': 'string', 'minLength': 1, 'description': 'UTF-8 text artifact. Convenience input: this MCP server base64-encodes it locally and sends it as content_base64 â\x80\x94 no other transformation is applied. Supply exactly one of content_sha256, content_base64, or content_text.'}, 'artifact_type': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': "What kind of output this is, e.g. 'pdf', 'report', 'code_patch', 'dataset', 'email', 'llm_output'. Free-form label used for filtering later."}, 'parent_sha256': {'$ref': '#/properties/content_sha256', 'description': 'content_sha256 of the preceding record in the chain, when this artifact was derived from an earlier one.'}, 'content_base64': {'type': 'string', 'minLength': 1, 'description': 'Base64-encoded artifact bytes. Use for binary output (PDF, image, archive). Supply exactly one of content_sha256, content_base64, or content_text.'}, 'content_sha256': {'type': 'string', 'pattern': '^[0-9a-f]{64}$', 'description': "SHA-256 of the artifact bytes, when you'd rather not send the content itself. Supply exactly one of content_sha256, content_base64, or content_text."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['renderId', 'signers'], 'properties': {'message': {'type': 'string', 'maxLength': 2000, 'description': 'Shared invite message. `{{signerName}}` is substituted per recipient.'}, 'signers': {'type': 'array', 'items': {'type': 'object', 'required': ['signerEmail', 'signerName'], 'properties': {'ccEmails': {'type': 'array', 'items': {'type': 'string', 'format': 'email', 'maxLength': 200}, 'maxItems': 10, 'description': "Up to 10 observers CC'd on this signer's invite. Not signers themselves."}, 'signerName': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Recipient full name. They must type it verbatim to confirm intent.'}, 'signerEmail': {'type': 'string', 'format': 'email', 'maxLength': 200, 'description': 'Recipient email. Must be unique in the batch.'}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1, 'description': '1â\x80\x93100 signers. Duplicate emails are rejected up front with 422.'}, 'position': {'type': 'object', 'properties': {'h': {'type': 'number', 'maximum': 400, 'minimum': 20}, 'w': {'type': 'number', 'maximum': 800, 'minimum': 40}, 'x': {'type': 'number', 'maximum': 2000, 'minimum': 0}, 'y': {'type': 'number', 'maximum': 2000, 'minimum': 0}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1}}, 'description': 'One signature rectangle in PDF points (origin bottom-left) shared by every signer.', 'additionalProperties': False}, 'renderId': {'type': 'string', 'format': 'uuid', 'description': 'Render UUID every signer receives. One render, one storage object, many requests.'}, 'expiresIn': {'type': 'integer', 'maximum': 2592000, 'minimum': 3600, 'description': 'Sign-link lifetime in seconds. Min 1 hour, max 30 days. Defaults to 7 days.'}, 'reminderCadenceHours': {'type': 'integer', 'maximum': 168, 'minimum': 24, 'description': 'Auto-reminder cadence in hours, shared across the batch. Up to 3 reminders.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['filename', 'fileBase64'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Label for the resulting render row. Defaults to the source filename.'}, 'filename': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Source filename including its extension â\x80\x94 the route detects the input type from it. Must end in .docx, .xlsx or .csv.'}, 'fileBase64': {'type': 'string', 'minLength': 1, 'description': 'Base64-encoded bytes of the source file.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['recipients'], 'properties': {'pdfUrl': {'type': 'string', 'format': 'uri', 'description': 'Publicly fetchable PDF URL. Kamy downloads it and stores it as a render first. Supply exactly one of renderId or pdfUrl.'}, 'message': {'type': 'string', 'maxLength': 500, 'description': 'Message included in every invitation email.'}, 'preview': {'type': 'boolean', 'description': 'When true, creates the envelope and returns every sign URL WITHOUT emailing anyone and without consuming signature quota. Use it to check placement and routing before the real send.'}, 'routing': {'enum': ['parallel', 'sequential'], 'type': 'string', 'default': 'parallel', 'description': "'parallel' (default) emails everyone at once and each signs independently. 'sequential' emails only the lowest-order recipient; the rest are created with status 'waiting' and activated one at a time as the preceding signer completes."}, 'ccEmails': {'type': 'array', 'items': {'type': 'string', 'format': 'email'}, 'maxItems': 10, 'description': "Up to 10 observers CC'd on the invitations. Not signers."}, 'position': {'type': 'object', 'properties': {'h': {'type': 'number', 'maximum': 400, 'minimum': 20}, 'w': {'type': 'number', 'maximum': 800, 'minimum': 40}, 'x': {'type': 'number', 'maximum': 2000, 'minimum': 0}, 'y': {'type': 'number', 'maximum': 2000, 'minimum': 0}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1}}, 'description': 'Default signature placement in PDF points, origin bottom-left.', 'additionalProperties': False}, 'renderId': {'type': 'string', 'format': 'uuid', 'description': 'UUID of a completed render owned by this account. Supply exactly one of renderId or pdfUrl.'}, 'expiresIn': {'type': 'integer', 'maximum': 2592000, 'minimum': 3600, 'description': 'Sign-link lifetime in seconds. Min 1 hour, max 30 days.'}, 'recipients': {'type': 'array', 'items': {'type': 'object', 'required': ['email', 'name'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Signer's full name. They must type it verbatim to confirm intent."}, 'email': {'type': 'string', 'format': 'email'}, 'order': {'type': 'integer', 'minimum': 1, 'description': 'Signing position. Drives who goes first under sequential routing; ignored for ordering purposes under parallel routing. Defaults to array order.'}, 'message': {'type': 'string', 'maxLength': 500, 'description': 'Per-recipient note in the invitation email, overriding the envelope-level message.'}}, 'additionalProperties': False}, 'maxItems': 10, 'minItems': 2, 'description': '2â\x80\x9310 signers. The route rejects a single recipient â\x80\x94 use create_signature_request for one signer.'}, 'placedFields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type', 'page', 'x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number', 'maximum': 800, 'minimum': 8, 'description': 'Height in PDF points.'}, 'w': {'type': 'number', 'maximum': 800, 'minimum': 8, 'description': 'Width in PDF points.'}, 'x': {'type': 'number', 'maximum': 2000, 'minimum': 0, 'description': 'Bottom-left x in PDF points.'}, 'y': {'type': 'number', 'maximum': 2000, 'minimum': 0, 'description': 'Bottom-left y in PDF points.'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Unique field name within the envelope.'}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': '1-indexed page number.'}, 'type': {'enum': ['text', 'textarea', 'checkbox', 'date', 'initials', 'radio', 'dropdown'], 'type': 'string'}, 'anchor': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Text anchor â\x80\x94 the server locates this string in the PDF and uses its position.'}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 50, 'minItems': 1, 'description': 'Valid choices for radio / dropdown.'}, 'required': {'type': 'boolean'}, 'signerLabel': {'type': 'string', 'maxLength': 200, 'description': 'Which signer this field belongs to.'}, 'defaultValue': {'type': 'string', 'maxLength': 2000}, 'sourcePageWidth': {'type': 'number', 'maximum': 7200, 'minimum': 72, 'description': 'Page width the coordinates were measured against, for rescaling.'}, 'sourcePageHeight': {'type': 'number', 'maximum': 7200, 'minimum': 72, 'description': 'Page height the coordinates were measured against, for rescaling.'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Up to 100 sender-placed form fields for signers to complete.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'template', 'schedule', 'channel'], 'properties': {'data': {'type': 'object', 'description': 'Template data, used verbatim on every firing. Defaults to {}.', 'additionalProperties': {}}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Human label for this schedule, shown in the dashboard.'}, 'channel': {'enum': ['email', 'whatsapp', 'download'], 'type': 'string', 'description': "Where each rendered document goes. 'download' just stores it (find it later with list_renders); 'email' and 'whatsapp' require recipients."}, 'enabled': {'type': 'boolean', 'description': 'Defaults to true. Create it disabled to set it up now and start it later.'}, 'options': {'type': 'object', 'description': "Render options passed straight through to the render, in the nested /v1/render shape, e.g. { format: 'letter', margin: { top: '20mm' } }.", 'additionalProperties': {}}, 'schedule': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "Standard 5-field cron expression, e.g. '0 9 * * 1' for 09:00 every Monday. Rejected with a validation error if it fires more often than the plan's minimum interval."}, 'template': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Template slug or UUID rendered on every firing. Same values render_pdf accepts.'}, 'timezone': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': "IANA timezone the cron expression is evaluated in, e.g. 'Asia/Dubai'. Defaults to UTC."}, 'recipients': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'description': 'Email addresses or phone numbers, matching the channel. Required and non-empty for email and whatsapp; ignored for download.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['renderId', 'signerEmail', 'signerName'], 'properties': {'message': {'type': 'string', 'maxLength': 500, 'description': 'Optional message rendered in the email invitation body.'}, 'ccEmails': {'type': 'array', 'items': {'type': 'string', 'format': 'email'}, 'maxItems': 10, 'description': "Up to 10 observer addresses CC'd on the invite and the completion notice. Not signers themselves."}, 'position': {'type': 'object', 'properties': {'h': {'type': 'number', 'maximum': 400, 'minimum': 20}, 'w': {'type': 'number', 'maximum': 800, 'minimum': 40}, 'x': {'type': 'number', 'maximum': 2000, 'minimum': 0}, 'y': {'type': 'number', 'maximum': 2000, 'minimum': 0}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1}}, 'description': 'Optional sender-chosen signature placement in PDF points (72 dpi, origin bottom-left). Defaults to bottom-right of the last page sized 220Ã\x9764 pt; when omitted, the signer can drag the placeholder on the sign page.', 'additionalProperties': False}, 'renderId': {'type': 'string', 'format': 'uuid', 'description': "Render UUID returned by render_pdf or any /v1/render call. The render's PDF is the document the signer will receive."}, 'expiresIn': {'type': 'integer', 'maximum': 2592000, 'minimum': 3600, 'description': 'How long (seconds) the sign link stays valid. Defaults to 30 days. Min 1 hour, max 30 days.'}, 'authMethod': {'enum': ['link', 'sms_otp', 'email_otp'], 'type': 'string', 'description': 'Identity-verification mode. `link` (default) â\x80\x94 possession of the secret URL is the only check. `email_otp` â\x80\x94 sign page renders a 6-digit OTP gate; code emailed to `signerEmail`. `sms_otp` â\x80\x94 same gate, code texted to `signerPhone` (which must then be supplied). Recommend `email_otp` for higher-value transactions.'}, 'signerName': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Recipient full name. Must be typed verbatim by the signer to confirm intent.'}, 'signerEmail': {'type': 'string', 'format': 'email', 'description': 'Recipient email address.'}, 'signerPhone': {'type': 'string', 'pattern': '^\\+[1-9]\\d{6,14}$', 'description': 'E.164 phone number. Required when `authMethod` is `sms_otp`; ignored otherwise. Example: `+14155551234`.'}, 'placedFields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type', 'page', 'x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number', 'maximum': 800, 'minimum': 8, 'description': 'Height in PDF points.'}, 'w': {'type': 'number', 'maximum': 800, 'minimum': 8, 'description': 'Width in PDF points.'}, 'x': {'type': 'number', 'maximum': 2000, 'minimum': 0, 'description': 'Bottom-left x in PDF points â\x80\x94 an offset from the anchor when `anchor` is set.'}, 'y': {'type': 'number', 'maximum': 2000, 'minimum': 0, 'description': 'Bottom-left y in PDF points â\x80\x94 an offset from the anchor when `anchor` is set.'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Unique field name within the request.'}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': '1-indexed page number.'}, 'type': {'enum': ['text', 'textarea', 'checkbox', 'date', 'initials', 'radio', 'dropdown'], 'type': 'string', 'description': 'Widget the signer sees. `radio` and `dropdown` also need `options`. Every type here is accepted by both create_signature_request and preview_field_placement.'}, 'anchor': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "Text to position this field against. The server searches only the page named in `page` (case-insensitive, first match wins) and uses that text's bottom-left corner as the origin, adding x/y as offsets. If the text is not on that page the field silently falls back to the raw x/y â\x80\x94 call preview_field_placement first to find out, where the miss comes back as an ANCHOR_NOT_FOUND issue."}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 50, 'minItems': 1, 'description': 'Valid choices for radio / dropdown. Ignored for other types.'}, 'required': {'type': 'boolean'}, 'signerLabel': {'type': 'string', 'maxLength': 200, 'description': 'Which signer this field belongs to.'}, 'defaultValue': {'type': 'string', 'maxLength': 2000}, 'sourcePageWidth': {'type': 'number', 'maximum': 7200, 'minimum': 72, 'description': 'Page width the coordinates were measured against. Supply with sourcePageHeight.'}, 'sourcePageHeight': {'type': 'number', 'maximum': 7200, 'minimum': 72, 'description': 'Page height the coordinates were measured against. Supply with sourcePageWidth.'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': "Up to 100 sender-defined fillable fields stamped onto the PDF at sign time. Use for flat PDFs that don't ship AcroForm widgets. Names must be unique."}, 'requireStamp': {'type': 'boolean', 'description': 'Require the signer to upload a company stamp / seal alongside their personal signature (UAE, KSA, JP, KR, IN, CN B2B workflows). Server refuses to seal without one.'}, 'signOnEveryPage': {'type': 'boolean', 'description': "When true, the server stamps the signer's signature on every page of the source PDF instead of only the configured position. Common B2B contract pattern."}, 'signatureTemplateId': {'type': 'string', 'format': 'uuid', 'description': "Apply a signature template's defaults (placedFields, position, message, expiresIn, ccEmails). Request-level fields override the template."}, 'reminderCadenceHours': {'type': 'integer', 'maximum': 168, 'minimum': 24, 'description': 'When set (24â\x80\x93168), the auto-reminder cron resends the invite every N hours while the request stays pending, up to 3 reminders. Omit for no auto-reminders.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'slug', 'html'], 'properties': {'css': {'type': 'string', 'maxLength': 1000000, 'description': 'Stylesheet applied at render time. Max 1 MB.'}, 'html': {'type': 'string', 'maxLength': 5000000, 'minLength': 1, 'description': 'Handlebars/HTML body of the document. Max 5 MB.'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Human-readable template name.'}, 'slug': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 80, 'minLength': 1, 'description': 'Stable identifier the render tools take as `template`. Unique per account, and it may not collide with a built-in system slug (invoice, receipt, quote, â\x80¦) â\x80\x94 both cases are rejected with 422.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'description': 'Up to 10 free-form labels.'}, 'schema': {'type': 'object', 'description': 'JSON Schema describing the data payload the template expects. Defaults to {}.', 'additionalProperties': {}}, 'isPublic': {'type': 'boolean', 'description': 'When true, other accounts can list and render it. Defaults to false.'}, 'description': {'type': 'string', 'maxLength': 500, 'description': 'What this template is for.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2000, 'description': 'HTTPS endpoint Kamy POSTs each event to. Private, loopback, link-local and cloud-metadata hosts are rejected at registration time, so localhost and 10.x/192.168.x addresses will not work.'}, 'events': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'description': 'Event names to receive. Defaults to ["render.completed", "render.failed"]. Known events: render.completed, render.failed, signature.signed, signature.voided, signature.expired, signature.envelope_completed, signature.envelope_voided, test.ping.'}, 'enabled': {'type': 'boolean', 'description': 'Defaults to true. Register it disabled to wire it up before switching it on.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['schedule_id'], 'properties': {'schedule_id': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Schedule id (UUID) from create_schedule or list_schedules.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['operations'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Label for the resulting render row.'}, 'pdfUrl': {'type': 'string', 'format': 'uri', 'description': 'Publicly fetchable URL of a PDF Kamy has never seen. Kamy downloads it, applies the operations and stores only the edited result â\x80\x94 the source does not become a separate render, and the call costs one render either way. Supply exactly one of renderId or pdfUrl.'}, 'renderId': {'type': 'string', 'format': 'uuid', 'description': 'UUID of an existing render owned by this account. Supply exactly one of renderId or pdfUrl.'}, 'operations': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['op', 'field', 'value'], 'properties': {'op': {'type': 'string', 'const': 'fill_field'}, 'field': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'AcroForm field name.'}, 'value': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'boolean'}], 'description': 'Text value, or a boolean for checkbox widgets.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'page', 'x', 'y', 'text'], 'properties': {'x': {'type': 'number', 'maximum': 10000, 'minimum': 0, 'description': 'X in PDF points from the left edge.'}, 'y': {'type': 'number', 'maximum': 10000, 'minimum': 0, 'description': 'Y in PDF points from the BOTTOM edge.'}, 'op': {'type': 'string', 'const': 'stamp_text'}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': '1-based page number.'}, 'text': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'color': {'type': 'string', 'pattern': '^#[0-9a-fA-F]{6}$', 'description': "6-digit hex colour, e.g. '#101014'."}, 'fontSize': {'type': 'number', 'maximum': 300, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'page', 'x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number', 'maximum': 10000, 'minimum': 1, 'description': 'Rectangle height in points.'}, 'w': {'type': 'number', 'maximum': 10000, 'minimum': 1, 'description': 'Rectangle width in points.'}, 'x': {'type': 'number', 'maximum': 10000, 'minimum': 0, 'description': 'X in PDF points from the left edge.'}, 'y': {'type': 'number', 'maximum': 10000, 'minimum': 0, 'description': 'Y in PDF points from the BOTTOM edge.'}, 'op': {'type': 'string', 'const': 'cover'}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': '1-based page number.'}, 'color': {'$ref': '#/properties/operations/items/anyOf/1/properties/color', 'description': 'Fill colour of the box. Defaults to black.'}}, 'additionalProperties': False}]}, 'maxItems': 200, 'minItems': 1, 'description': "1â\x80\x93200 operations applied in the order given. 'fill_field' writes into an AcroForm widget; 'stamp_text' draws text at an absolute position; 'cover' paints an opaque rectangle over the region â\x80\x94 it hides content visually but does NOT delete the underlying bytes, and the response carries a COVER_VISUAL_ONLY warning for every cover op. Anyone can still copy the text out from under the box. It is NOT redaction: never use it to hide secrets or personal data in a document you are about to hand out, and do not describe the result as redacted. There is no redaction operation â\x80\x94 'op: redact' is rejected with REDACTION_NOT_SUPPORTED. To remove sensitive data, regenerate the document without it."}, 'flattenFields': {'type': 'boolean', 'default': True, 'description': 'Bake AcroForm values into the page content stream after the fill_field ops so they can no longer be edited. Leave true before e-signing. Pass false only when something downstream still needs the live form.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template'], 'properties': {'template': {'enum': ['invoice', 'receipt', 'contract', 'id_document', 'generic_form'], 'type': 'string', 'description': 'Predefined template id. invoice/receipt for AP and POS docs, contract for legal agreements, id_document for passports/IDs, generic_form for anything else.'}, 'source_url': {'type': 'string', 'format': 'uri', 'description': 'Public URL to a PDF (preferred). One of source_url or source_base64 is required.'}, 'source_base64': {'type': 'string', 'description': "Base64-encoded PDF bytes. Use when the source isn't publicly fetchable."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['render_id'], 'properties': {'type': {'enum': ['text', 'fields'], 'type': 'string', 'description': "'text' (default) returns { pages: [{ page, text }], fullText, pageCount }. 'fields' returns the AcroForm fields as { name, type, value }."}, 'render_id': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Render id (UUID) as returned by render_pdf, render_async/get_job, or list_renders.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['envelopeId'], 'properties': {'envelopeId': {'type': 'string', 'format': 'uuid', 'description': 'Envelope ID returned by create_envelope.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The jobId render_async returned.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The run_id you passed to attest_artifact / record_agent_action.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['render_id'], 'properties': {'render_id': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Render id (UUID) as returned by render_pdf, render_async/get_job, or list_renders.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['render_id'], 'properties': {'dpi': {'type': 'integer', 'maximum': 300, 'minimum': 72, 'description': 'Raster resolution. Defaults to 150 (screen quality); 300 for print-quality thumbnails. Clamped to 72-300 server-side.'}, 'render_id': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Render id (UUID) as returned by render_pdf, render_async/get_job, or list_renders.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['signatureRequestId'], 'properties': {'signatureRequestId': {'type': 'string', 'format': 'uuid', 'description': 'ID of the signature_request to fetch the Certificate of Completion for. Must be in a terminal state (signed / declined / delegated / voided / expired); pending requests return 409.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['signatureRequestId'], 'properties': {'signatureRequestId': {'type': 'string', 'format': 'uuid', 'description': 'ID returned by create_signature_request, bulk_signature_requests, or a list call.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['signatureTemplateId'], 'properties': {'signatureTemplateId': {'type': 'string', 'format': 'uuid', 'description': 'ID from list_signature_templates.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'template': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Template slug (e.g. 'invoice') to also emit a ready-to-paste route handler that renders it. Requires `framework`. Call list_templates first if you do not know the slug."}, 'framework': {'enum': ['nextjs', 'remix', 'sveltekit', 'astro', 'express', 'fastify', 'hono', 'fastapi', 'flask'], 'type': 'string', 'description': 'Stack being integrated. Omit to get only the API-key steps; supply it to also get the install command, the environment variable, and the client-setup snippet.'}, 'packageManager': {'enum': ['npm', 'pnpm', 'yarn', 'bun'], 'type': 'string', 'description': 'Package manager for the install command. Default npm. Ignored for Python stacks.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "Template slug â\x80\x94 e.g. 'invoice', 'receipt', 'uae-tax-invoice'."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['templateId', 'version'], 'properties': {'version': {'type': 'integer', 'description': 'Version number from list_template_versions.', 'exclusiveMinimum': 0}, 'templateId': {'type': 'string', 'minLength': 1, 'description': 'Template UUID or slug â\x80\x94 every /v1/templates route resolves either.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['uploadId'], 'properties': {'uploadId': {'type': 'string', 'format': 'uuid', 'description': 'Upload UUID returned by upload_file. The bare UUID, not the kamy://asset/... ref.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'minimum': 1, 'description': '1-based page number. Defaults to 1 (the most recent renders).'}, 'page_size': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Rows per page, 1-100. Defaults to 20.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Rows to return, 1-100. Defaults to 50.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Rows to skip. Defaults to 0.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Default 50.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Default 0.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1â\x80\x93100. Default 50.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Rows to skip. Default 0.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['templateId'], 'properties': {'templateId': {'type': 'string', 'minLength': 1, 'description': 'Template UUID or slug â\x80\x94 every /v1/templates route resolves either.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['renderIds'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Label for the merged render, e.g. 'Q3 statement bundle'."}, 'renderIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid'}, 'maxItems': 20, 'minItems': 2, 'description': "2â\x80\x9320 render UUIDs owned by this account, in the page order you want. Any id that isn't yours, or whose render didn't complete, fails the whole call."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['renderId'], 'properties': {'reason': {'type': 'string', 'maxLength': 200, 'description': "Optional /Sig dictionary Reason â\x80\x94 surfaced in Acrobat's signature panel. ASCII-coerced server-side."}, 'location': {'type': 'string', 'maxLength': 120, 'description': 'Optional /Sig dictionary Location.'}, 'renderId': {'type': 'string', 'format': 'uuid', 'description': 'Render UUID returned by render_pdf or any /v1/render call. The PDF will be sealed with a Kamy-issued X.509 leaf certificate.'}, 'signerName': {'type': 'string', 'maxLength': 120, 'description': "Override the signer display name. Defaults to the account's full_name."}, 'signerEmail': {'type': 'string', 'format': 'email', 'description': "Override the signer email. Defaults to the account's email."}, 'withTimestamp': {'type': 'boolean', 'description': 'When false, skip the RFC 3161 timestamp call (PAdES-B-B instead of B-T). Default: true.'}, 'withRevocationInfo': {'type': 'boolean', 'description': 'When false, skip embedding the Kamy CA CRL into the PKCS#7 SignedData (PAdES-B-T instead of B-LT). Online verifiers can still fetch the CRL via the Distribution Point on the leaf cert. Default: true.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['renderId', 'placedFields'], 'properties': {'renderId': {'type': 'string', 'format': 'uuid', 'description': 'Render UUID whose real page sizes the fields are checked against.'}, 'placedFields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type', 'page', 'x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number', 'maximum': 800, 'minimum': 8, 'description': 'Height in PDF points.'}, 'w': {'type': 'number', 'maximum': 800, 'minimum': 8, 'description': 'Width in PDF points.'}, 'x': {'type': 'number', 'maximum': 2000, 'minimum': 0, 'description': 'Bottom-left x in PDF points â\x80\x94 an offset from the anchor when `anchor` is set.'}, 'y': {'type': 'number', 'maximum': 2000, 'minimum': 0, 'description': 'Bottom-left y in PDF points â\x80\x94 an offset from the anchor when `anchor` is set.'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Unique field name within the request.'}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': '1-indexed page number.'}, 'type': {'enum': ['text', 'textarea', 'checkbox', 'date', 'initials', 'radio', 'dropdown'], 'type': 'string', 'description': 'Widget the signer sees. `radio` and `dropdown` also need `options`. Every type here is accepted by both create_signature_request and preview_field_placement.'}, 'anchor': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "Text to position this field against. The server searches only the page named in `page` (case-insensitive, first match wins) and uses that text's bottom-left corner as the origin, adding x/y as offsets. If the text is not on that page the field silently falls back to the raw x/y â\x80\x94 call preview_field_placement first to find out, where the miss comes back as an ANCHOR_NOT_FOUND issue."}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 50, 'minItems': 1, 'description': 'Valid choices for radio / dropdown. Ignored for other types.'}, 'required': {'type': 'boolean'}, 'signerLabel': {'type': 'string', 'maxLength': 200, 'description': 'Which signer this field belongs to.'}, 'defaultValue': {'type': 'string', 'maxLength': 2000}, 'sourcePageWidth': {'type': 'number', 'maximum': 7200, 'minimum': 72, 'description': 'Page width the coordinates were measured against. Supply with sourcePageHeight.'}, 'sourcePageHeight': {'type': 'number', 'maximum': 7200, 'minimum': 72, 'description': 'Page height the coordinates were measured against. Supply with sourcePageWidth.'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Up to 100 fields to validate. Exactly the shape create_signature_request takes â\x80\x94 same seven types, same `anchor` and `options` support â\x80\x94 so a layout that previews clean is a layout that sends.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['templateId'], 'properties': {'version': {'type': 'integer', 'description': 'Omit to snapshot the current draft into a new version and publish that. Supply an existing version number to republish a known-good earlier snapshot, leaving the draft untouched.', 'exclusiveMinimum': 0}, 'templateId': {'type': 'string', 'minLength': 1, 'description': 'Template UUID or slug â\x80\x94 every /v1/templates route resolves either.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['server', 'tool'], 'properties': {'tool': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Name of the tool that was invoked.'}, 'run_id': {'type': 'string', 'maxLength': 200, 'description': 'Your identifier for this agent run. Reuse it across records to build one chain.'}, 'server': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "Identifier of the MCP server (or tool provider) the call went to, e.g. 'kamy'."}, 'status': {'enum': ['ok', 'error', 'flagged'], 'type': 'string', 'description': 'Outcome of the call. Defaults to ok.'}, 'tool_call': {'description': 'The request you sent â\x80\x94 typically the arguments object, verbatim.'}, 'latency_ms': {'type': 'integer', 'minimum': 0, 'description': 'Wall-clock duration of the call.'}, 'tool_result': {'description': 'The result you received back, verbatim.'}, 'parent_sha256': {'type': 'string', 'pattern': '^[0-9a-f]{64}$', 'description': 'content_sha256 of the previous record in this run, to link the chain explicitly.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'envelopeId': {'type': 'string', 'format': 'uuid', 'description': 'Nudge every currently-pending recipient of this envelope. Supply exactly one of signatureRequestId or envelopeId.'}, 'signatureRequestId': {'type': 'string', 'format': 'uuid', 'description': 'Nudge this one signer. Supply exactly one of signatureRequestId or envelopeId.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template', 'data'], 'properties': {'data': {'type': 'object', 'description': 'Data used to populate the template.', 'additionalProperties': {}}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Your own label for this document. Echoed back on the job result and stored on the render, so list_renders can be grepped by it later.'}, 'pdf_a': {'enum': ['1b', '2b', '3b'], 'type': 'string', 'description': 'Convert the output to a PDF/A archival conformance level.'}, 'format': {'enum': ['a4', 'letter'], 'type': 'string', 'description': 'Paper size. Defaults to a4.'}, 'margin': {'type': 'object', 'properties': {'top': {'type': 'string', 'maxLength': 20}, 'left': {'type': 'string', 'maxLength': 20}, 'right': {'type': 'string', 'maxLength': 20}, 'bottom': {'type': 'string', 'maxLength': 20}}, 'description': "CSS lengths, e.g. { top: '20mm', bottom: '20mm' }.", 'additionalProperties': False}, 'metadata': {'type': 'object', 'properties': {'title': {'type': 'string', 'maxLength': 500}, 'author': {'type': 'string', 'maxLength': 200}, 'creator': {'type': 'string', 'maxLength': 200}, 'subject': {'type': 'string', 'maxLength': 500}, 'keywords': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100}, 'maxItems': 50}}, 'description': "PDF document properties written into the file's metadata dictionary.", 'additionalProperties': False}, 'template': {'type': 'string', 'minLength': 1, 'description': "Template slug (e.g. 'invoice') or template UUID. Same values render_pdf accepts."}, 'watermark': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'angle': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'opacity': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'fontSize': {'type': 'number', 'maximum': 400, 'minimum': 4}}, 'description': 'Draws your own diagonal watermark over every page. Unrelated to the free-plan Kamy watermark, which is applied regardless â\x80\x94 see get_account.watermarkPolicy.', 'additionalProperties': False}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Public https URL to render. Private, loopback and link-local hosts are rejected. Supply exactly one of template, html, or url.'}, 'data': {'type': 'object', 'description': 'Data for the template or HTML. Ignored when rendering a url.', 'additionalProperties': {}}, 'html': {'type': 'string', 'maxLength': 5000000, 'minLength': 1, 'description': 'Raw HTML to render. Handlebars expressions in it are populated from `data`. Supply exactly one of template, html, or url.'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Your own label for this one document, stored on the render and shown by list_renders.'}, 'format': {'enum': ['a4', 'a3', 'letter', 'legal'], 'type': 'string', 'description': 'Paper size. Defaults to a4.'}, 'margin': {'type': 'object', 'properties': {'top': {'type': 'string', 'maxLength': 20}, 'left': {'type': 'string', 'maxLength': 20}, 'right': {'type': 'string', 'maxLength': 20}, 'bottom': {'type': 'string', 'maxLength': 20}}, 'description': "CSS lengths, e.g. { top: '20mm' }.", 'additionalProperties': False}, 'template': {'type': 'string', 'minLength': 1, 'description': 'Template slug or UUID. Supply exactly one of template, html, or url for each item.'}, 'direction': {'enum': ['auto', 'ltr', 'rtl'], 'type': 'string', 'description': "Text direction. 'auto' detects RTL scripts. Per item, so one batch can mix both."}, 'orientation': {'enum': ['portrait', 'landscape'], 'type': 'string', 'description': 'Defaults to portrait.'}, 'page_numbers': {'type': 'boolean', 'description': 'Print page numbers in the footer.'}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1, 'description': '1-100 documents to render, in order. Results come back in this same order.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template'], 'properties': {'data': {'type': 'object', 'default': {}, 'description': 'Template data, identical in shape to the render_pdf payload for the same slug â\x80\x94 call get_template_schema first to get the exact fields.', 'additionalProperties': {}}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Label stored on the render row so the document is identifiable in the dashboard.'}, 'template': {'enum': ['invoice', 'receipt', 'quote', 'contract', 'agreement'], 'type': 'string', 'description': 'Which built-in document to build. These five are the only slugs with a Word implementation; custom templates and other system templates are PDF-only (use render_pdf).'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'data': {'type': 'object', 'default': {}, 'description': "Values substituted into the template's Handlebars expressions.", 'additionalProperties': {}}, 'html': {'type': 'string', 'maxLength': 5000000, 'minLength': 1, 'description': 'Raw Handlebars/HTML source to compile instead of a stored template. Supply exactly one of template or html.'}, 'template': {'type': 'string', 'minLength': 1, 'description': 'Template slug or UUID â\x80\x94 a Kamy system template or one of your own. Supply exactly one of template or html.'}, 'direction': {'enum': ['auto', 'ltr', 'rtl'], 'type': 'string', 'description': "Force the document's lang/dir attributes for RTL/bidi mail clients. 'auto' (default) leaves the template's own <html lang> untouched."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template', 'data'], 'properties': {'data': {'type': 'object', 'description': 'Data to populate the template', 'additionalProperties': {}}, 'format': {'enum': ['a4', 'letter'], 'type': 'string', 'default': 'a4'}, 'template': {'type': 'string', 'description': "Template slug (e.g., 'invoice') or template UUID"}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slides'], 'properties': {'theme': {'type': 'object', 'properties': {'fontFace': {'type': 'string', 'maxLength': 60, 'description': 'Font family name. Defaults to Calibri.'}, 'accentHex': {'type': 'string', 'pattern': '^#[0-9a-fA-F]{6}$', 'description': 'Accent colour for the title bar, table header fill and column headings.'}}, 'additionalProperties': False}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Deck title â\x80\x94 used as document metadata and as the returned filename stem.'}, 'format': {'enum': ['WIDE', 'STANDARD'], 'type': 'string', 'default': 'WIDE', 'description': 'WIDE = 16:9 (default), STANDARD = 4:3.'}, 'slides': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['layout', 'title'], 'properties': {'title': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'layout': {'type': 'string', 'const': 'title'}, 'subtitle': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, {'type': 'object', 'required': ['layout', 'title', 'bullets'], 'properties': {'title': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'layout': {'type': 'string', 'const': 'bullets'}, 'bullets': {'type': 'array', 'items': {'type': 'string', 'maxLength': 400, 'minLength': 1}, 'maxItems': 20, 'minItems': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['layout', 'title', 'left', 'right'], 'properties': {'left': {'type': 'object', 'required': ['bullets'], 'properties': {'title': {'type': 'string', 'maxLength': 80}, 'bullets': {'type': 'array', 'items': {'type': 'string', 'maxLength': 400}, 'maxItems': 12}}, 'additionalProperties': False}, 'right': {'$ref': '#/properties/slides/items/anyOf/2/properties/left'}, 'title': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'layout': {'type': 'string', 'const': 'two-column'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['layout', 'title', 'headers', 'rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120}, 'minItems': 1}, 'maxItems': 20, 'description': 'Body rows, each an array of cell strings aligned to `headers`.'}, 'title': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'layout': {'type': 'string', 'const': 'table'}, 'headers': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'maxItems': 8, 'minItems': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['layout', 'quote'], 'properties': {'quote': {'type': 'string', 'maxLength': 400, 'minLength': 1}, 'layout': {'type': 'string', 'const': 'quote'}, 'attribution': {'type': 'string', 'maxLength': 120}}, 'additionalProperties': False}]}, 'maxItems': 60, 'minItems': 1, 'description': "Ordered slides. Each carries a `layout` discriminator: 'title', 'bullets', 'two-column', 'table' or 'quote'. There is no free-form layout â\x80\x94 content that doesn't fit one of the five should be reshaped into bullets or a table."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sheets'], 'properties': {'title': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Workbook title â\x80\x94 document metadata and the returned filename stem.'}, 'sheets': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'columns', 'rows'], 'properties': {'name': {'type': 'string', 'maxLength': 31, 'minLength': 1, 'description': 'Sheet tab name. Excel caps this at 31 characters.'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}, 'maxItems': 50000, 'description': 'Data rows as objects keyed by the column `key`s.'}, 'freeze': {'type': 'boolean', 'default': True, 'description': 'Freeze the header row and first column. Default true.'}, 'columns': {'type': 'array', 'items': {'type': 'object', 'required': ['header', 'key'], 'properties': {'key': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Property name read off each row object â\x80\x94 `row[key]` fills this column.'}, 'width': {'type': 'number', 'maximum': 120, 'minimum': 2, 'description': 'Column width in characters.'}, 'header': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Header label rendered in row 1.'}, 'numFmt': {'type': 'string', 'maxLength': 40, 'description': "Excel number-format string applied to every cell in the column, e.g. '#,##0.00' for money, '0.00%' for percent, 'yyyy-mm-dd' for dates."}}, 'additionalProperties': False}, 'maxItems': 64, 'minItems': 1}, 'totalRow': {'type': 'object', 'description': "Optional bold, top-bordered footer row keyed by column key. A bare aggregator keyword ('SUM', 'AVG', 'COUNT', 'MIN', 'MAX') is expanded into a real formula over that column's data range; a string starting with '=' is passed to Excel verbatim; anything else lands as a literal, which is how you write a label like { name: 'Total' }.", 'additionalProperties': {'type': ['string', 'number', 'boolean', 'null']}}}, 'additionalProperties': False}, 'maxItems': 20, 'minItems': 1, 'description': 'One or more sheets, in tab order.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['templateId', 'version'], 'properties': {'version': {'type': 'integer', 'description': 'The known-good version to make live again. Get it from list_template_versions.', 'exclusiveMinimum': 0}, 'templateId': {'type': 'string', 'minLength': 1, 'description': 'Template UUID or slug â\x80\x94 every /v1/templates route resolves either.'}, 'restoreDraft': {'type': 'boolean', 'description': "When true, also overwrite the working draft (html/css/schema) with that version's content. The current draft is auto-snapshotted into a new version first, unless it is already byte-identical. Defaults to false, which leaves in-flight edits alone."}, 'expectedPublishedVersion': {'type': 'integer', 'minimum': 0, 'description': 'Optimistic fence: the published_version you believe is live (0 if never published). The call is rejected with 409 VERSION_CONFLICT if someone moved the pointer in the meantime. Pass it whenever you read the state in an earlier step.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'tools': {'type': 'array', 'items': {'type': 'object', 'required': ['description'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'description': 'Tool name, echoed back in findings.'}, 'description': {'type': 'string', 'maxLength': 20000, 'description': "The tool's description text."}}, 'additionalProperties': True}, 'maxItems': 200, 'description': 'Several tools at once â\x80\x94 e.g. the entries of a `tools/list` result. Supply description, tools, or both.'}, 'description': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'A single tool description to scan. Supply description, tools, or both.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['renderId', 'ranges'], 'properties': {'ranges': {'type': 'array', 'items': {'type': 'object', 'required': ['from'], 'properties': {'to': {'type': 'integer', 'minimum': 1, 'description': '1-based last page, inclusive. Omit to run to the end of the document.'}, 'from': {'type': 'integer', 'minimum': 1, 'description': '1-based first page, inclusive.'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Label for this output render.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': '1â\x80\x9350 page ranges; each produces one output render, returned in this order. A range that starts past the last page fails the whole call.'}, 'renderId': {'type': 'string', 'format': 'uuid', 'description': 'UUID of the completed render to split. Must belong to this account.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhook_id'], 'properties': {'webhook_id': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Webhook endpoint id (UUID) from create_webhook or list_webhooks.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['provider', 'model'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 64}, 'maxItems': 20, 'description': 'Up to 20 free-form labels. trace_search can filter on any one of them.'}, 'model': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "Model identifier exactly as the provider reports it, e.g. 'claude-sonnet-4-6'."}, 'output': {'description': "The model's response, verbatim. Any JSON value."}, 'prompt': {'description': 'The prompt / request you sent, verbatim. Any JSON value (string, array, object).'}, 'status': {'enum': ['ok', 'flagged', 'error'], 'type': 'string', 'description': "Outcome. 'flagged' marks a call you want a human to review later. Defaults to 'ok'."}, 'feature': {'type': 'string', 'maxLength': 120, 'description': "Product area the call belongs to, e.g. 'support_reply'. Filterable in trace_search."}, 'provider': {'enum': ['anthropic', 'openai', 'custom'], 'type': 'string', 'description': "Which model vendor served the call. Use 'custom' for anything self-hosted."}, 'latency_ms': {'type': 'integer', 'minimum': 0, 'description': 'Wall-clock duration of the call.'}, 'input_tokens': {'type': 'integer', 'minimum': 0, 'description': 'Prompt tokens billed.'}, 'output_tokens': {'type': 'integer', 'minimum': 0, 'description': 'Completion tokens billed.'}, 'status_detail': {'type': 'string', 'maxLength': 500, 'description': 'Why the call was flagged or failed. Free text.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['records'], 'properties': {'records': {'type': 'array', 'items': {'type': 'object', 'required': ['provider', 'model'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 64}, 'maxItems': 20, 'description': 'Up to 20 free-form labels. trace_search can filter on any one of them.'}, 'model': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "Model identifier exactly as the provider reports it, e.g. 'claude-sonnet-4-6'."}, 'output': {'description': "The model's response, verbatim. Any JSON value."}, 'prompt': {'description': 'The prompt / request you sent, verbatim. Any JSON value (string, array, object).'}, 'status': {'enum': ['ok', 'flagged', 'error'], 'type': 'string', 'description': "Outcome. 'flagged' marks a call you want a human to review later. Defaults to 'ok'."}, 'feature': {'type': 'string', 'maxLength': 120, 'description': "Product area the call belongs to, e.g. 'support_reply'. Filterable in trace_search."}, 'provider': {'enum': ['anthropic', 'openai', 'custom'], 'type': 'string', 'description': "Which model vendor served the call. Use 'custom' for anything self-hosted."}, 'latency_ms': {'type': 'integer', 'minimum': 0, 'description': 'Wall-clock duration of the call.'}, 'input_tokens': {'type': 'integer', 'minimum': 0, 'description': 'Prompt tokens billed.'}, 'output_tokens': {'type': 'integer', 'minimum': 0, 'description': 'Completion tokens billed.'}, 'status_detail': {'type': 'string', 'maxLength': 500, 'description': 'Why the call was flagged or failed. Free text.'}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1, 'description': '1â\x80\x93100 records, each exactly the shape trace_record takes.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'tag': {'type': 'string', 'maxLength': 64, 'description': 'Return records whose tags array contains this tag.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100. Default 25.'}, 'since': {'type': 'string', 'description': 'ISO-8601 timestamp, inclusive lower bound.'}, 'until': {'type': 'string', 'description': 'ISO-8601 timestamp, exclusive upper bound.'}, 'cursor': {'type': 'string', 'description': 'Pass the `next_cursor` from the previous response to fetch the next page.'}, 'status': {'enum': ['ok', 'flagged', 'error'], 'type': 'string', 'description': 'Exact-match filter on outcome.'}, 'feature': {'type': 'string', 'maxLength': 120, 'description': 'Exact-match filter on the feature label.'}, 'provider': {'enum': ['anthropic', 'openai', 'custom'], 'type': 'string', 'description': 'Exact-match filter on provider.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template'], 'properties': {'css': {'type': 'string', 'maxLength': 1000000, 'description': 'Replaces the draft CSS entirely.'}, 'html': {'type': 'string', 'maxLength': 5000000, 'minLength': 1, 'description': 'Replaces the draft HTML entirely.'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10}, 'schema': {'type': 'object', 'description': 'Replaces the draft JSON Schema entirely.', 'additionalProperties': {}}, 'isPublic': {'type': 'boolean'}, 'template': {'type': 'string', 'minLength': 1, 'description': 'Template UUID or slug. This route accepts either.'}, 'description': {'type': 'string', 'maxLength': 500}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['filename', 'contentType'], 'properties': {'filename': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': "Name to store the asset under. Characters outside [A-Za-z0-9._-] are replaced with '_'."}, 'sizeBytes': {'type': 'integer', 'maximum': 104857600, 'description': 'Declared size in bytes. Computed automatically when contentBase64 is supplied. Max 100 MB.', 'exclusiveMinimum': 0}, 'contentType': {'enum': ['image/png', 'image/jpeg', 'image/webp', 'image/gif', 'image/svg+xml', 'application/pdf', 'font/woff', 'font/woff2', 'font/ttf', 'font/otf', 'application/octet-stream'], 'type': 'string', 'description': 'MIME type. The API rejects anything outside this list.'}, 'contentBase64': {'type': 'string', 'minLength': 1, 'description': 'Base64 bytes to upload. When supplied, this server PUTs them to the pre-signed URL and the asset is immediately usable. Omit for files too large to pass through a tool call â\x80\x94 you then get uploadUrl back and PUT the bytes yourself within 15 minutes.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template', 'data'], 'properties': {'data': {'type': 'object', 'description': 'The data payload to validate against the template schema.', 'additionalProperties': {}}, 'template': {'type': 'string', 'description': "Template slug (e.g. 'invoice') or template UUID."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hash'], 'properties': {'hash': {'type': 'string', 'pattern': '^[0-9a-f]{64}$', 'description': "SHA-256 of the artifact you want to check, as hex. Hash the bytes you actually hold â\x80\x94 if they were modified after attestation, the digest won't match any record and `verified` comes back false."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'manifest': {'description': "A tool manifest you already hold â\x80\x94 the `tools/list` result, or an object with a `tools` array. Use this when the server isn't reachable from Kamy (local stdio server, private network). Supply either server_url or manifest."}, 'server_url': {'type': 'string', 'format': 'uri', 'description': 'URL of the MCP server to fingerprint. Kamy fetches its tool manifest server-side. Supply either server_url or manifest.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pdfBase64'], 'properties': {'pdfBase64': {'type': 'string', 'minLength': 1, 'description': 'Base64-encoded PDF bytes. The MCP Worker hashes the file in-memory and does not store or forward it.'}}, 'additionalProperties': False}
Letzte Tool-Änderungen
Ähnliche MCP-Server
Spdx License
Browses SPDX open-source license metadata, approved-license lists, and complete license texts.
Licenses
Looks up SPDX open-source license metadata and retrieves complete license texts.
Clearlydefined
Finds software package coordinates and provides license, attribution, provenance, harvesting, and completeness information for ex…
SPDX license expression tokens, value discarded
Tokenizes and checks SPDX license expressions.
SPDX license id shape
Checks the shape of SPDX license identifiers.
AgentAegis
Performs cybersecurity assessments including vulnerability scans, code and dependency audits, secret detection, threat intelligen…
aribot-mcp
Performs threat modeling, code security, API and cloud security scans, compliance analysis, and governed remediation.
deusproof-mcp
Registers and verifies creation records, authorship claims, timestamps, hashes, certificates, and agent identity records on publi…