Skip to content
Elaichi Elaichi

E Signature

Penneo

Connect Penneo once and hand every teammate a governed MCP endpoint with 22 tools ready to call from Claude, ChatGPT, Cursor, or any MCP client, inside the same permissions they already have, with every call checked and logged.

Penneo

Automations & dashboards

From answering questions to doing the work

A person no longer has to ask. A trigger starts the work, inside the same permissions and the same audit log as everything else. Automations and live dashboards ship on the Black plan.

Automations

Put Penneo work on a schedule.

A trigger starts a sequence of steps: call a Penneo tool, transform the result, branch, wait, and ask a person when it matters.

Penneo digest

Run 418 · started 2 minutes ago · on behalf of Emma Laurent

  1. Schedule

    Every weekday at 08:00

    0.2s
  2. Fetch forms

    Penneo

    1.4s
  3. Group by owner

    Transform

    0.1s
  4. Draft the digest

    Agent step

    Ran with 4 tools, returned a structured summary

    6.2s
  5. Approve the digest

    Needs approval

    Assigned to Michael Brennan

    Approve
  6. Post the digest

    Penneo

    Queued

Collections and dashboards

Report on Penneo without asking.

Collections hold your own data, written by an automation and read by a dashboard that refreshes on a schedule.

Penneo health

Refreshed 4 minutes ago · every 15 minutes · from the forms collection

Live

Forms

1,284 ↓ 12%

Oauths

96 ↓ 8%

Needs attention

3 ↑ 2

Updated this week

412 ↑ 9%

Forms created

Last 14 days

By workspace

Share of activity

Engineering 34%

Product 27%

Support 21%

Sales 18%

AI tools

Penneo tools for your AI agents

22 tools are ready to call through Elaichi's MCP endpoint the moment you connect Penneo, governed by the same roles, restrictions, and audit log as everything else in Elaichi.

create_a_penneo_oauth

Exchange credentials for a Penneo access token using the authorization code, refresh token, or API keys grant. Returns: grant_type. Required: grant_type, client_id, client_secret.

delete_a_penneo_oauth_by_id

Revoke a Penneo refresh token, rendering it permanently invalid. Returns an empty 200 response on success regardless of whether the token existed or was already invalid. Required: token.

list_all_penneo_oauth

Initiate the Penneo OAuth 2.0 authorization flow by redirecting the user's browser to Penneo's authorization endpoint. Returns a 302 redirect to the registered redirect_uri with an authorization code appended as a query parameter. Required: response_type, redirect_uri, client_id, code_challenge.

list_all_penneo_version

Get Penneo API version information for the running app. Returns: language, additionalSignersConfig.

list_all_penneo_casefile_answers

List all submission answers for a penneo casefile. Returns answer records whose fields are specific to the casefile's form question schema defined in penneo; the response shape is form-schema-specific and cannot be enumerated from the API reference — consult the upstream penneo Collect docs for the field-level breakdown. Required: casefile_id.

list_all_penneo_casefile_files

List files attached to a penneo casefile by casefile id. Returns a list of file metadata objects; the available source documents the response as file metadata without enumerating individual fields beyond the universal identifiers id, created_at, and updated_at. Required: casefile_id.

list_all_penneo_forms

List penneo forms with optional status filtering and sorting. Returns: id, language, additionalSignersConfig, createdAt, updatedAt.

get_single_penneo_form_by_id

Get a single penneo form by id, including its sections and signer configuration. Returns: id, language, additionalSignersConfig, createdAt, updatedAt. Required: id.

create_a_penneo_form

Create a new penneo form with sections and input fields. Returns: id, language, additionalSignersConfig, createdAt, updatedAt. Required: language, sections.

update_a_penneo_form_by_id

Update an existing penneo form by id. If the form is in DRAFT status, updates the existing draft; if ACTIVE, creates a new DRAFT version. Returns: id, language, additionalSignersConfig, createdAt, updatedAt. Required: id, language, sections.

delete_a_penneo_form_by_id

Archive a penneo form by id, setting its status to ARCHIVED. Returns an empty 200 response on success. Required: id.

update_a_penneo_form_version_by_id

Update a specific version of a Penneo form with sections and input fields. If the version is DRAFT, updates the existing draft; if ACTIVE, creates a new DRAFT version. Returns the updated form object including language and additionalSignersConfig. Required: external_id, version, language, sections.

create_a_penneo_form_request

Create a prefilled form request in Penneo for a specified form, with pre-populated field values. Returns a 200 success response when the form request is created. Required: form_id, answers.

list_all_penneo_form_request_answers

List all submitted answers for a specific Penneo form request. Returns the submission data object; the field structure is form-specific and depends on the form's field definitions in Penneo. Required: form_id, id.

list_all_penneo_form_submissions

List Penneo form submissions for a specific form. Returns: id, created_at, grant_type. Required: form_id. Supports filtering by completedAfter and completedBefore ISO-8601 UTC datetimes.

list_all_penneo_form_submission_answers

List all answers for a Penneo form submission. Returns: id, grant_type. Required: form_id, id.

create_a_penneo_casefile

Create a new Penneo case file with documents and signers via a multipart/form-data POST. PDF file uploads are supported as part of the request body. Processing is asynchronous; the returned job reference can be used to poll progress via the Penneo Queue Status Check endpoint. Returns: jobs, status, message. Required: data, files.

create_a_penneo_job_status

Check the status of an asynchronous Penneo case file creation job by polling with its UUID and payload hash. Returns: uuid, result, payload, retries, createdAt, jobStatus, updatedAt, maxRetries, payloadHash, errorMessage. Required: uuid, payloadHash.

create_a_penneo_form_version_archive

Archive a specific version of a penneo form, allowing management of existing form versions without affecting the currently published version. Returns an empty 200 response on success. Required: external_id, version.

create_a_penneo_form_version_publish

Publish a specific version of a Penneo form, making it the active published version. Returns a 200 response on success. Required: external_id, version.

create_a_penneo_form_version_restore

Restore a penneo form to a specific previous version. Returns a 200 response on success. Required: external_id, version.

create_a_penneo_form_publish

Publish a Penneo form by its external ID to make it available for end-users. Returns: id, language, additionalSignersConfig, createdAt, updatedAt, grant_type. Required: external_id.

How it works

From Penneo account to governed MCP endpoint

Connect

Link a Penneo account through Elaichi's hosted connect flow. Credentials are vaulted, so nobody, including the AI, ever sees them.

Compose

The connection becomes a toolbox instantly. Curate which Penneo tools are exposed, rename them, or freeze arguments.

Authorize

Point Claude, ChatGPT, Cursor, or any MCP client at the one Elaichi endpoint and sign in with OAuth, governed by roles, restrictions, and audit logs.

Put your agents to work in the tools you already use

Start a 14-day Gold trial. Connect a product, curate a toolbox, and paste a governed MCP endpoint into Claude, ChatGPT, or Cursor in minutes.