8.3k★by mrlynn
netpad – OpenClaw Skill
netpad is an OpenClaw Skills integration for coding workflows. Manage NetPad forms, submissions, users, and RBAC. Use when: (1) Creating forms with custom fields, (2) Submitting data to forms, (3) Querying form submissions, (4) Managing users/groups/roles (RBAC), (5) Installing NetPad apps from marketplace. Requires NETPAD_API_KEY for API, or `netpad login` for CLI.
Skill Snapshot
| name | netpad |
| description | Manage NetPad forms, submissions, users, and RBAC. Use when: (1) Creating forms with custom fields, (2) Submitting data to forms, (3) Querying form submissions, (4) Managing users/groups/roles (RBAC), (5) Installing NetPad apps from marketplace. Requires NETPAD_API_KEY for API, or `netpad login` for CLI. OpenClaw Skills integration. |
| owner | mrlynn |
| repository | mrlynn/netpad |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @mrlynn/netpad |
| last updated | Feb 7, 2026 |
Maintainer

name: netpad
description: "Manage NetPad forms, submissions, users, and RBAC. Use when: (1) Creating forms with custom fields, (2) Submitting data to forms, (3) Querying form submissions, (4) Managing users/groups/roles (RBAC), (5) Installing NetPad apps from marketplace. Requires NETPAD_API_KEY for API, or netpad login for CLI."
metadata: {"clawdbot":{"emoji":"📋","requires":{"bins":["curl","jq","netpad"]},"install":[{"id":"cli","kind":"node","package":"@netpad/cli","bins":["netpad"],"label":"Install NetPad CLI (npm)"}],"author":{"name":"Michael Lynn","github":"mrlynn","website":"https://mlynn.org","linkedin":"https://linkedin.com/in/mlynn"}}}
NetPad
Manage forms, submissions, users, and RBAC via CLI and REST API.
Two Tools
| Tool | Install | Purpose |
|---|---|---|
netpad CLI | npm i -g @netpad/cli | RBAC, marketplace, packages |
| REST API | curl + API key | Forms, submissions, data |
Authentication
export NETPAD_API_KEY="np_live_xxx" # Production
export NETPAD_API_KEY="np_test_xxx" # Test (can submit to drafts)
All requests use Bearer token:
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/..."
Quick Reference
| Task | Endpoint | Method |
|---|---|---|
| List projects | /projects | GET |
| List forms | /forms | GET |
| Create form | /forms | POST |
| Get form | /forms/{formId} | GET |
| Update/publish form | /forms/{formId} | PATCH |
| Delete form | /forms/{formId} | DELETE |
| List submissions | /forms/{formId}/submissions | GET |
| Create submission | /forms/{formId}/submissions | POST |
| Get submission | /forms/{formId}/submissions/{id} | GET |
| Delete submission | /forms/{formId}/submissions/{id} | DELETE |
Projects
Forms belong to projects. Get project ID before creating forms.
# List projects
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/projects" | jq '.data[] | {projectId, name}'
Forms
List Forms
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms?status=published&pageSize=50"
Create Form
curl -X POST -H "Authorization: Bearer $NETPAD_API_KEY" \
-H "Content-Type: application/json" \
"https://www.netpad.io/api/v1/forms" \
-d '{
"name": "Contact Form",
"description": "Simple contact form",
"projectId": "proj_xxx",
"fields": [
{"path": "name", "label": "Name", "type": "text", "required": true},
{"path": "email", "label": "Email", "type": "email", "required": true},
{"path": "phone", "label": "Phone", "type": "phone"},
{"path": "message", "label": "Message", "type": "textarea"}
]
}'
Get Form Details
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms/{formId}"
Publish Form
curl -X PATCH -H "Authorization: Bearer $NETPAD_API_KEY" \
-H "Content-Type: application/json" \
"https://www.netpad.io/api/v1/forms/{formId}" \
-d '{"status": "published"}'
Update Form Fields
curl -X PATCH -H "Authorization: Bearer $NETPAD_API_KEY" \
-H "Content-Type: application/json" \
"https://www.netpad.io/api/v1/forms/{formId}" \
-d '{
"fields": [
{"path": "name", "label": "Full Name", "type": "text", "required": true},
{"path": "email", "label": "Email Address", "type": "email", "required": true},
{"path": "company", "label": "Company", "type": "text"},
{"path": "role", "label": "Role", "type": "select", "options": [
{"value": "dev", "label": "Developer"},
{"value": "pm", "label": "Product Manager"},
{"value": "exec", "label": "Executive"}
]}
]
}'
Delete Form
curl -X DELETE -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms/{formId}"
Submissions
Submit Data
curl -X POST -H "Authorization: Bearer $NETPAD_API_KEY" \
-H "Content-Type: application/json" \
"https://www.netpad.io/api/v1/forms/{formId}/submissions" \
-d '{
"data": {
"name": "John Doe",
"email": "john@example.com",
"message": "Hello from the API!"
}
}'
List Submissions
# Recent submissions
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms/{formId}/submissions?pageSize=50"
# With date filter
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms/{formId}/submissions?startDate=2026-01-01T00:00:00Z"
# Sorted ascending
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms/{formId}/submissions?sortOrder=asc"
Get Single Submission
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms/{formId}/submissions/{submissionId}"
Delete Submission
curl -X DELETE -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms/{formId}/submissions/{submissionId}"
Field Types
| Type | Description | Validation |
|---|---|---|
text | Single line text | minLength, maxLength, pattern |
email | Email address | Built-in validation |
phone | Phone number | Built-in validation |
number | Numeric input | min, max |
date | Date picker | - |
select | Dropdown | options: [{value, label}] |
checkbox | Boolean | - |
textarea | Multi-line text | minLength, maxLength |
file | File upload | - |
Field Schema
{
"path": "fieldName",
"label": "Display Label",
"type": "text",
"required": true,
"placeholder": "Hint text",
"helpText": "Additional guidance",
"options": [{"value": "a", "label": "Option A"}],
"validation": {
"minLength": 1,
"maxLength": 500,
"pattern": "^[A-Z].*",
"min": 0,
"max": 100
}
}
Common Patterns
Create and Publish Form
# 1. Create draft
RESULT=$(curl -s -X POST -H "Authorization: Bearer $NETPAD_API_KEY" \
-H "Content-Type: application/json" \
"https://www.netpad.io/api/v1/forms" \
-d '{"name":"Survey","projectId":"proj_xxx","fields":[...]}')
FORM_ID=$(echo $RESULT | jq -r '.data.id')
# 2. Publish
curl -X PATCH -H "Authorization: Bearer $NETPAD_API_KEY" \
-H "Content-Type: application/json" \
"https://www.netpad.io/api/v1/forms/$FORM_ID" \
-d '{"status":"published"}'
Export All Submissions
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms/{formId}/submissions?pageSize=1000" \
| jq '.data[].data'
Bulk Submit
for row in $(cat data.json | jq -c '.[]'); do
curl -s -X POST -H "Authorization: Bearer $NETPAD_API_KEY" \
-H "Content-Type: application/json" \
"https://www.netpad.io/api/v1/forms/{formId}/submissions" \
-d "{\"data\":$row}"
done
Search Forms
curl -H "Authorization: Bearer $NETPAD_API_KEY" \
"https://www.netpad.io/api/v1/forms?search=contact&status=published"
Helper Script
Use scripts/netpad.sh for common operations:
# Make executable
chmod +x scripts/netpad.sh
# Usage
./scripts/netpad.sh projects list
./scripts/netpad.sh forms list published
./scripts/netpad.sh forms create "Contact Form" proj_xxx
./scripts/netpad.sh forms publish frm_xxx
./scripts/netpad.sh submissions list frm_xxx
./scripts/netpad.sh submissions create frm_xxx '{"name":"John","email":"john@example.com"}'
./scripts/netpad.sh submissions export frm_xxx > data.jsonl
./scripts/netpad.sh submissions count frm_xxx
Rate Limits
| Limit | Value |
|---|---|
| Requests/hour | 1,000 |
| Requests/day | 10,000 |
Headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Response Format
Success
{
"success": true,
"data": { ... },
"pagination": {"total": 100, "page": 1, "pageSize": 20, "hasMore": true},
"requestId": "uuid"
}
Error
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Description",
"details": {}
},
"requestId": "uuid"
}
Environment Variables
# Required for REST API
export NETPAD_API_KEY="np_live_xxx"
# Optional (for local/staging)
export NETPAD_BASE_URL="https://staging.netpad.io/api/v1"
NetPad CLI (@netpad/cli)
Install: npm i -g @netpad/cli
Authentication
netpad login # Opens browser
netpad whoami # Check auth status
netpad logout # Clear credentials
Marketplace & Packages
# Search for apps
netpad search "helpdesk"
# Install an app
netpad install @netpad/helpdesk-app
# List installed
netpad list
# Create new app scaffold
netpad create-app my-app
# Submit to marketplace
netpad submit ./my-app
RBAC - Users
# List org members
netpad users list -o org_xxx
# Add user
netpad users add user@example.com -o org_xxx --role member
# Change role
netpad users update user@example.com -o org_xxx --role admin
# Remove user
netpad users remove user@example.com -o org_xxx
RBAC - Groups
# List groups
netpad groups list -o org_xxx
# Create group
netpad groups create "Engineering" -o org_xxx
# Add user to group
netpad groups add-member grp_xxx user@example.com -o org_xxx
# Delete group
netpad groups delete grp_xxx -o org_xxx
RBAC - Roles
# List roles (builtin + custom)
netpad roles list -o org_xxx
# Create custom role
netpad roles create "Reviewer" -o org_xxx --base viewer --description "Can review submissions"
# View role details
netpad roles get role_xxx -o org_xxx
# Delete custom role
netpad roles delete role_xxx -o org_xxx
RBAC - Assignments
# Assign role to user
netpad assign user user@example.com role_xxx -o org_xxx
# Assign role to group
netpad assign group grp_xxx role_xxx -o org_xxx
# Remove assignment
netpad unassign user user@example.com role_xxx -o org_xxx
RBAC - Permissions
# List all permissions
netpad permissions list -o org_xxx
# Check user's effective permissions
netpad permissions check user@example.com -o org_xxx
References
references/api-endpoints.md— Complete REST API endpoint docsreferences/cli-commands.md— Full CLI command reference
Author
Michael Lynn — Principal Staff Developer Advocate at MongoDB
- 🌐 Website: mlynn.org
- 🐙 GitHub: @mrlynn
- 💼 LinkedIn: linkedin.com/in/mlynn
No README available.
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
```bash
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install netpad?
Run openclaw add @mrlynn/netpad in your terminal. This installs netpad into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/mrlynn/netpad. Review commits and README documentation before installing.
