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.
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
-
✓
Schedule
Every weekday at 08:00
0.2s -
✓
Fetch forms
Penneo
1.4s -
✓
Group by owner
Transform
0.1s -
✓
Draft the digest
Agent step
Ran with 4 tools, returned a structured summary
6.2s -
Approve the digest
Needs approval
Assigned to Michael Brennan
Approve Deny -
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
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.
No tools match your search.
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.