Paperform MCP by usefulapi

Read Paperform forms, submissions, products and coupons, Papersign documents, and manage coupons.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
98%
Qualität der Benennung
74%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (7)

  • LOWTool 'paperform_list_partial_submissions' name length outside 3-30 rangein paperform_list_partial_submissions
  • LOWTool 'paperform_get_partial_submission' name length outside 3-30 rangein paperform_get_partial_submission
  • LOWTool 'paperform_list_papersign_documents' name length outside 3-30 rangein paperform_list_papersign_documents
  • LOWTool 'paperform_get_papersign_document' name length outside 3-30 rangein paperform_get_papersign_document
  • LOWTool 'paperform_get_signed_document_url' name length outside 3-30 rangein paperform_get_signed_document_url
  • LOWTool 'paperform_list_papersign_folders' name length outside 3-30 rangein paperform_list_papersign_folders
  • LOWTool 'paperform_list_papersign_spaces' name length outside 3-30 rangein paperform_list_papersign_spaces

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~5,767Tokens (Tool-Definitionen)
~1.9 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (4.51% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "paperform": {
      "url": "https://paperform.usefulapi.io/mcp"
    }
  }
}

Remote-Endpunkte

https://paperform.usefulapi.io/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (23)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢paperform_list_forms(search, search_fields, limit, skip, after_id, ...)

List the forms in the Paperform account (id, slug, custom_slug, title, url, live, tags, submission_count, space_id, dates), newest first. Search by title, or also by slug/custom_slug with search_fields. Start here to find the slug or id the other tools need. Paperform: GET /forms.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Text to match (partial, case-insensitive) — the form title unless search_fields says otherwise.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "search_fields": {
      "description": "Which fields `search` matches: any of title, slug, custom_slug (default title only).",
      "minItems": 1,
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "title",
          "slug",
          "custom_slug"
        ]
      }
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_form(form)

Fetch one form by slug, custom slug or id: title, description, url, live flag, tags, submission_count, space and dates. Paperform: GET /forms/{slug_or_id}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_form_fields(form, search)

List a form's questions (key, title, type, required, custom_key, description, options). The field keys are the keys of a submission's `data` object, so read this to interpret answers. Paperform: GET /forms/{slug_or_id}/fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "search": {
      "description": "Only fields whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_submissions(form, limit, skip, after_id, before_id, ...)

List one page of a form's completed submissions, newest first: answers (`data`, keyed by field key — see paperform_list_form_fields), device and UTM info, payment `charge`, generated PDFs and created_at. Page with skip/next_skip or after_id/last_id; filter by date. Paperform: GET /forms/{slug_or_id}/submissions.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_submission(submission_id)

Fetch one submission by id, with every answer, device info, payment charge and PDFs. Paperform: GET /submissions/{id}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "submission_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The submission id (from paperform_list_submissions)."
    }
  },
  "required": [
    "submission_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_partial_submissions(form, limit, skip, after_id, before_id, ...)

List one page of a form's partial submissions (someone started the form), newest first: answers so far, last_answered field, dates. Partials that were later completed stay in the list with submitted_at set; only those with submitted_at null are abandoned. Useful for drop-off analysis and follow-ups. Paperform: GET /forms/{slug_or_id}/partial-submissions.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_partial_submission(partial_submission_id)

Fetch one partial submission by id, with the answers given so far. It may have been completed since (submitted_at set); submitted_at null means abandoned. Paperform: GET /partial-submissions/{id}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "partial_submission_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The partial submission id (from paperform_list_partial_submissions)."
    }
  },
  "required": [
    "partial_submission_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_products(form, search)

List the products sold on a form (SKU, name, price, quantity in stock, sold, minimum/maximum, discountable, images). Paperform: GET /forms/{slug_or_id}/products.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "search": {
      "description": "Only products whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_product(form, sku)

Fetch one product on a form by SKU: price, quantity in stock, sold count, limits. Paperform: GET /forms/{slug_or_id}/products/{sku}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "sku": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The product SKU (from paperform_list_products)."
    }
  },
  "required": [
    "form",
    "sku"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_coupons(form)

List a form's coupon codes (code, enabled, target, discountAmount or discountPercentage, expiresAt). Paperform: GET /forms/{slug_or_id}/coupons.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_coupon(form, code)

Fetch one coupon on a form by code. Paperform: GET /forms/{slug_or_id}/coupons/{code}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The coupon code, e.g. DISCOUNT1."
    }
  },
  "required": [
    "form",
    "code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_webhooks(form, limit, skip, after_id, before_id, ...)

List the webhooks on a form (id, target_url, triggers: submission / partial_submission, dates). Needs the Business API. Paperform: GET /forms/{slug_or_id}/webhooks.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_spaces(search, limit, skip, after_id, before_id, ...)

List the account's spaces (folders that group forms): id, name, dates. Needs the Business API. Paperform: GET /spaces.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Only spaces whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_space_forms(space_id)

List the forms in one space. Needs the Business API. Paperform: GET /spaces/{id}/forms.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The space id (from paperform_list_spaces, or a form's space_id)."
    }
  },
  "required": [
    "space_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_papersign_documents(search, status, folder_id, space_id, paperform_submission_id, ...)

List Papersign e-signature documents (id, name, status, folder, space, signers, variables, source form/submission, sent/completed dates), filtered by name, status, folder, space or the Paperform submission that created them. Needs the Papersign API. Paperform: GET /papersign/documents.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Only documents whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "status": {
      "description": "Only documents in these statuses.",
      "minItems": 1,
      "maxItems": 7,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "draft",
          "inProgress",
          "archived",
          "canceled",
          "expired",
          "rejected",
          "completed"
        ]
      }
    },
    "folder_id": {
      "description": "Only documents in this folder or its subfolders (from paperform_list_papersign_folders).",
      "type": "string",
      "pattern": "^[1-9]\\d{0,18}$"
    },
    "space_id": {
      "description": "Only documents anywhere in this space (from paperform_list_papersign_spaces).",
      "type": "string",
      "pattern": "^[1-9]\\d{0,18}$"
    },
    "paperform_submission_id": {
      "description": "Only documents created from this Paperform submission id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_papersign_document(document_id)

Fetch one Papersign document by id: status, signers and their progress, variables, folder, space and dates. Needs the Papersign API. Paperform: GET /papersign/documents/{id}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "document_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The Papersign document id (from paperform_list_papersign_documents)."
    }
  },
  "required": [
    "document_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_signed_document_url(document_id)

Get a download link for a completed (fully signed) Papersign document as a PDF. A fresh link is made on each call and is valid for one week (expires_at_utc). Needs the Papersign API. Paperform: GET /papersign/documents/{id}/completed-document-url.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "document_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The id of a completed Papersign document."
    }
  },
  "required": [
    "document_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_papersign_folders(space_id, folder_id, search)

List Papersign folders (id, name, parent_id, space_id), optionally inside one space or folder. Needs the Papersign API. Paperform: GET /papersign/folders.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "description": "Only folders in this space.",
      "type": "string",
      "pattern": "^[1-9]\\d{0,18}$"
    },
    "folder_id": {
      "description": "Only folders below this folder.",
      "type": "string",
      "pattern": "^[1-9]\\d{0,18}$"
    },
    "search": {
      "description": "Only folders whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_papersign_spaces(search)

List Papersign spaces (id, name, root_folder_id). Needs the Papersign API. Paperform: GET /papersign/spaces.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Only spaces whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴paperform_create_coupon(form, code, enabled, target, discountAmount, ...)

WRITE: create a coupon code on a form, with a fixed discountAmount or a discountPercentage (not both), an optional target (price or subscription) and expiry. Respondents can use it at checkout as soon as it is enabled. Undo: paperform_update_coupon with enabled=false. Paperform: POST /forms/{slug_or_id}/coupons.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "code": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,64}$",
      "description": "The new coupon code, e.g. SPRING20."
    },
    "enabled": {
      "description": "Whether respondents can use the coupon.",
      "type": "boolean"
    },
    "target": {
      "description": "What the discount applies to: the one-off price or a subscription.",
      "type": "string",
      "enum": [
        "price",
        "subscription"
      ]
    },
    "discountAmount": {
      "description": "A fixed discount, in the form's currency (e.g. 10 = 10.00).",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "discountPercentage": {
      "description": "A percentage discount, 0-100.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "expiresAt": {
      "description": "When the coupon expires (ISO 8601 with a timezone), or null for no expiry.",
      "anyOf": [
        {
          "type": "string",
          "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z (sent to Paperform in UTC)."
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "form",
    "code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴paperform_update_coupon(form, code, enabled, target, discountAmount, ...)

WRITE: change a coupon on a form — enable or disable it, change its discount (amount or percentage), target or expiry (null = never expires). Only the fields you pass are sent. Paperform: PUT /forms/{slug_or_id}/coupons/{code}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The coupon code, e.g. DISCOUNT1."
    },
    "enabled": {
      "description": "Whether respondents can use the coupon.",
      "type": "boolean"
    },
    "target": {
      "description": "What the discount applies to: the one-off price or a subscription.",
      "type": "string",
      "enum": [
        "price",
        "subscription"
      ]
    },
    "discountAmount": {
      "description": "A fixed discount, in the form's currency (e.g. 10 = 10.00).",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "discountPercentage": {
      "description": "A percentage discount, 0-100.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "expiresAt": {
      "description": "When the coupon expires (ISO 8601 with a timezone), or null for no expiry.",
      "anyOf": [
        {
          "type": "string",
          "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z (sent to Paperform in UTC)."
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "form",
    "code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴paperform_set_product_quantity(form, sku, quantity)

WRITE: set how many units of a form product are available (its stock quantity), e.g. after restocking. Replaces the current value; read it first with paperform_get_product. Not atomic: it overwrites rather than adjusts, so a sale between your read and this write is lost. Paperform: PUT /forms/{slug_or_id}/products/{sku}/quantity.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "sku": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The product SKU (from paperform_list_products)."
    },
    "quantity": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "The new stock quantity (0 or more)."
    }
  },
  "required": [
    "form",
    "sku",
    "quantity"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴paperform_set_product_sold(form, sku, sold)

WRITE: set the number of units of a form product recorded as sold (e.g. to correct it after a refund or an offline sale). Replaces the current value; read it first with paperform_get_product. Not atomic: it overwrites rather than adjusts, so a sale between your read and this write is lost. Paperform: PUT /forms/{slug_or_id}/products/{sku}/sold.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "sku": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The product SKU (from paperform_list_products)."
    },
    "sold": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "The new sold count (0 or more)."
    }
  },
  "required": [
    "form",
    "sku",
    "sold"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet23 Tools