{
  "schemaVersion": "1.0",
  "item": {
    "slug": "netpad",
    "name": "NetPad - Build forms, workflows and manage MongoDB data",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/mrlynn/netpad",
    "canonicalUrl": "https://clawhub.ai/mrlynn/netpad",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/netpad",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=netpad",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/netpad.sh",
      "references/cli-commands.md",
      "references/api-endpoints.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/netpad"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/netpad",
    "agentPageUrl": "https://openagent3.xyz/skills/netpad/agent",
    "manifestUrl": "https://openagent3.xyz/skills/netpad/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/netpad/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "NetPad",
        "body": "Manage forms, submissions, users, and RBAC via CLI and REST API."
      },
      {
        "title": "Two Tools",
        "body": "ToolInstallPurposenetpad CLInpm i -g @netpad/cliRBAC, marketplace, packagesREST APIcurl + API keyForms, submissions, data"
      },
      {
        "title": "Authentication",
        "body": "export NETPAD_API_KEY=\"np_live_xxx\"  # Production\nexport NETPAD_API_KEY=\"np_test_xxx\"  # Test (can submit to drafts)\n\nAll requests use Bearer token:\n\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/...\""
      },
      {
        "title": "Quick Reference",
        "body": "TaskEndpointMethodList projects/projectsGETList forms/formsGETCreate form/formsPOSTGet form/forms/{formId}GETUpdate/publish form/forms/{formId}PATCHDelete form/forms/{formId}DELETEList submissions/forms/{formId}/submissionsGETCreate submission/forms/{formId}/submissionsPOSTGet submission/forms/{formId}/submissions/{id}GETDelete submission/forms/{formId}/submissions/{id}DELETE"
      },
      {
        "title": "Projects",
        "body": "Forms belong to projects. Get project ID before creating forms.\n\n# List projects\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/projects\" | jq '.data[] | {projectId, name}'"
      },
      {
        "title": "List Forms",
        "body": "curl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms?status=published&pageSize=50\""
      },
      {
        "title": "Create Form",
        "body": "curl -X POST -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms\" \\\n  -d '{\n    \"name\": \"Contact Form\",\n    \"description\": \"Simple contact form\",\n    \"projectId\": \"proj_xxx\",\n    \"fields\": [\n      {\"path\": \"name\", \"label\": \"Name\", \"type\": \"text\", \"required\": true},\n      {\"path\": \"email\", \"label\": \"Email\", \"type\": \"email\", \"required\": true},\n      {\"path\": \"phone\", \"label\": \"Phone\", \"type\": \"phone\"},\n      {\"path\": \"message\", \"label\": \"Message\", \"type\": \"textarea\"}\n    ]\n  }'"
      },
      {
        "title": "Get Form Details",
        "body": "curl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}\""
      },
      {
        "title": "Publish Form",
        "body": "curl -X PATCH -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}\" \\\n  -d '{\"status\": \"published\"}'"
      },
      {
        "title": "Update Form Fields",
        "body": "curl -X PATCH -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}\" \\\n  -d '{\n    \"fields\": [\n      {\"path\": \"name\", \"label\": \"Full Name\", \"type\": \"text\", \"required\": true},\n      {\"path\": \"email\", \"label\": \"Email Address\", \"type\": \"email\", \"required\": true},\n      {\"path\": \"company\", \"label\": \"Company\", \"type\": \"text\"},\n      {\"path\": \"role\", \"label\": \"Role\", \"type\": \"select\", \"options\": [\n        {\"value\": \"dev\", \"label\": \"Developer\"},\n        {\"value\": \"pm\", \"label\": \"Product Manager\"},\n        {\"value\": \"exec\", \"label\": \"Executive\"}\n      ]}\n    ]\n  }'"
      },
      {
        "title": "Delete Form",
        "body": "curl -X DELETE -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}\""
      },
      {
        "title": "Submit Data",
        "body": "curl -X POST -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions\" \\\n  -d '{\n    \"data\": {\n      \"name\": \"John Doe\",\n      \"email\": \"john@example.com\",\n      \"message\": \"Hello from the API!\"\n    }\n  }'"
      },
      {
        "title": "List Submissions",
        "body": "# Recent submissions\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions?pageSize=50\"\n\n# With date filter\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions?startDate=2026-01-01T00:00:00Z\"\n\n# Sorted ascending\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions?sortOrder=asc\""
      },
      {
        "title": "Get Single Submission",
        "body": "curl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions/{submissionId}\""
      },
      {
        "title": "Delete Submission",
        "body": "curl -X DELETE -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions/{submissionId}\""
      },
      {
        "title": "Field Types",
        "body": "TypeDescriptionValidationtextSingle line textminLength, maxLength, patternemailEmail addressBuilt-in validationphonePhone numberBuilt-in validationnumberNumeric inputmin, maxdateDate picker-selectDropdownoptions: [{value, label}]checkboxBoolean-textareaMulti-line textminLength, maxLengthfileFile upload-"
      },
      {
        "title": "Field Schema",
        "body": "{\n  \"path\": \"fieldName\",\n  \"label\": \"Display Label\",\n  \"type\": \"text\",\n  \"required\": true,\n  \"placeholder\": \"Hint text\",\n  \"helpText\": \"Additional guidance\",\n  \"options\": [{\"value\": \"a\", \"label\": \"Option A\"}],\n  \"validation\": {\n    \"minLength\": 1,\n    \"maxLength\": 500,\n    \"pattern\": \"^[A-Z].*\",\n    \"min\": 0,\n    \"max\": 100\n  }\n}"
      },
      {
        "title": "Create and Publish Form",
        "body": "# 1. Create draft\nRESULT=$(curl -s -X POST -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms\" \\\n  -d '{\"name\":\"Survey\",\"projectId\":\"proj_xxx\",\"fields\":[...]}')\nFORM_ID=$(echo $RESULT | jq -r '.data.id')\n\n# 2. Publish\ncurl -X PATCH -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms/$FORM_ID\" \\\n  -d '{\"status\":\"published\"}'"
      },
      {
        "title": "Export All Submissions",
        "body": "curl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions?pageSize=1000\" \\\n  | jq '.data[].data'"
      },
      {
        "title": "Bulk Submit",
        "body": "for row in $(cat data.json | jq -c '.[]'); do\n  curl -s -X POST -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n    -H \"Content-Type: application/json\" \\\n    \"https://www.netpad.io/api/v1/forms/{formId}/submissions\" \\\n    -d \"{\\\"data\\\":$row}\"\ndone"
      },
      {
        "title": "Search Forms",
        "body": "curl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms?search=contact&status=published\""
      },
      {
        "title": "Helper Script",
        "body": "Use scripts/netpad.sh for common operations:\n\n# Make executable\nchmod +x scripts/netpad.sh\n\n# Usage\n./scripts/netpad.sh projects list\n./scripts/netpad.sh forms list published\n./scripts/netpad.sh forms create \"Contact Form\" proj_xxx\n./scripts/netpad.sh forms publish frm_xxx\n./scripts/netpad.sh submissions list frm_xxx\n./scripts/netpad.sh submissions create frm_xxx '{\"name\":\"John\",\"email\":\"john@example.com\"}'\n./scripts/netpad.sh submissions export frm_xxx > data.jsonl\n./scripts/netpad.sh submissions count frm_xxx"
      },
      {
        "title": "Rate Limits",
        "body": "LimitValueRequests/hour1,000Requests/day10,000\n\nHeaders: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset"
      },
      {
        "title": "Success",
        "body": "{\n  \"success\": true,\n  \"data\": { ... },\n  \"pagination\": {\"total\": 100, \"page\": 1, \"pageSize\": 20, \"hasMore\": true},\n  \"requestId\": \"uuid\"\n}"
      },
      {
        "title": "Error",
        "body": "{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"VALIDATION_ERROR\",\n    \"message\": \"Description\",\n    \"details\": {}\n  },\n  \"requestId\": \"uuid\"\n}"
      },
      {
        "title": "Environment Variables",
        "body": "# Required for REST API\nexport NETPAD_API_KEY=\"np_live_xxx\"\n\n# Optional (for local/staging)\nexport NETPAD_BASE_URL=\"https://staging.netpad.io/api/v1\""
      },
      {
        "title": "NetPad CLI (@netpad/cli)",
        "body": "Install: npm i -g @netpad/cli"
      },
      {
        "title": "Authentication",
        "body": "netpad login              # Opens browser\nnetpad whoami             # Check auth status\nnetpad logout             # Clear credentials"
      },
      {
        "title": "Marketplace & Packages",
        "body": "# Search for apps\nnetpad search \"helpdesk\"\n\n# Install an app\nnetpad install @netpad/helpdesk-app\n\n# List installed\nnetpad list\n\n# Create new app scaffold\nnetpad create-app my-app\n\n# Submit to marketplace\nnetpad submit ./my-app"
      },
      {
        "title": "RBAC - Users",
        "body": "# List org members\nnetpad users list -o org_xxx\n\n# Add user\nnetpad users add user@example.com -o org_xxx --role member\n\n# Change role\nnetpad users update user@example.com -o org_xxx --role admin\n\n# Remove user\nnetpad users remove user@example.com -o org_xxx"
      },
      {
        "title": "RBAC - Groups",
        "body": "# List groups\nnetpad groups list -o org_xxx\n\n# Create group\nnetpad groups create \"Engineering\" -o org_xxx\n\n# Add user to group\nnetpad groups add-member grp_xxx user@example.com -o org_xxx\n\n# Delete group\nnetpad groups delete grp_xxx -o org_xxx"
      },
      {
        "title": "RBAC - Roles",
        "body": "# List roles (builtin + custom)\nnetpad roles list -o org_xxx\n\n# Create custom role\nnetpad roles create \"Reviewer\" -o org_xxx --base viewer --description \"Can review submissions\"\n\n# View role details\nnetpad roles get role_xxx -o org_xxx\n\n# Delete custom role\nnetpad roles delete role_xxx -o org_xxx"
      },
      {
        "title": "RBAC - Assignments",
        "body": "# Assign role to user\nnetpad assign user user@example.com role_xxx -o org_xxx\n\n# Assign role to group\nnetpad assign group grp_xxx role_xxx -o org_xxx\n\n# Remove assignment\nnetpad unassign user user@example.com role_xxx -o org_xxx"
      },
      {
        "title": "RBAC - Permissions",
        "body": "# List all permissions\nnetpad permissions list -o org_xxx\n\n# Check user's effective permissions\nnetpad permissions check user@example.com -o org_xxx"
      },
      {
        "title": "References",
        "body": "references/api-endpoints.md — Complete REST API endpoint docs\nreferences/cli-commands.md — Full CLI command reference"
      },
      {
        "title": "Author",
        "body": "Michael Lynn — Principal Staff Developer Advocate at MongoDB\n\n🌐 Website: mlynn.org\n🐙 GitHub: @mrlynn\n💼 LinkedIn: linkedin.com/in/mlynn"
      }
    ],
    "body": "NetPad\n\nManage forms, submissions, users, and RBAC via CLI and REST API.\n\nTwo Tools\nTool\tInstall\tPurpose\nnetpad CLI\tnpm i -g @netpad/cli\tRBAC, marketplace, packages\nREST API\tcurl + API key\tForms, submissions, data\nAuthentication\nexport NETPAD_API_KEY=\"np_live_xxx\"  # Production\nexport NETPAD_API_KEY=\"np_test_xxx\"  # Test (can submit to drafts)\n\n\nAll requests use Bearer token:\n\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/...\"\n\nQuick Reference\nTask\tEndpoint\tMethod\nList projects\t/projects\tGET\nList forms\t/forms\tGET\nCreate form\t/forms\tPOST\nGet form\t/forms/{formId}\tGET\nUpdate/publish form\t/forms/{formId}\tPATCH\nDelete form\t/forms/{formId}\tDELETE\nList submissions\t/forms/{formId}/submissions\tGET\nCreate submission\t/forms/{formId}/submissions\tPOST\nGet submission\t/forms/{formId}/submissions/{id}\tGET\nDelete submission\t/forms/{formId}/submissions/{id}\tDELETE\nProjects\n\nForms belong to projects. Get project ID before creating forms.\n\n# List projects\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/projects\" | jq '.data[] | {projectId, name}'\n\nForms\nList Forms\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms?status=published&pageSize=50\"\n\nCreate Form\ncurl -X POST -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms\" \\\n  -d '{\n    \"name\": \"Contact Form\",\n    \"description\": \"Simple contact form\",\n    \"projectId\": \"proj_xxx\",\n    \"fields\": [\n      {\"path\": \"name\", \"label\": \"Name\", \"type\": \"text\", \"required\": true},\n      {\"path\": \"email\", \"label\": \"Email\", \"type\": \"email\", \"required\": true},\n      {\"path\": \"phone\", \"label\": \"Phone\", \"type\": \"phone\"},\n      {\"path\": \"message\", \"label\": \"Message\", \"type\": \"textarea\"}\n    ]\n  }'\n\nGet Form Details\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}\"\n\nPublish Form\ncurl -X PATCH -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}\" \\\n  -d '{\"status\": \"published\"}'\n\nUpdate Form Fields\ncurl -X PATCH -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}\" \\\n  -d '{\n    \"fields\": [\n      {\"path\": \"name\", \"label\": \"Full Name\", \"type\": \"text\", \"required\": true},\n      {\"path\": \"email\", \"label\": \"Email Address\", \"type\": \"email\", \"required\": true},\n      {\"path\": \"company\", \"label\": \"Company\", \"type\": \"text\"},\n      {\"path\": \"role\", \"label\": \"Role\", \"type\": \"select\", \"options\": [\n        {\"value\": \"dev\", \"label\": \"Developer\"},\n        {\"value\": \"pm\", \"label\": \"Product Manager\"},\n        {\"value\": \"exec\", \"label\": \"Executive\"}\n      ]}\n    ]\n  }'\n\nDelete Form\ncurl -X DELETE -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}\"\n\nSubmissions\nSubmit Data\ncurl -X POST -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions\" \\\n  -d '{\n    \"data\": {\n      \"name\": \"John Doe\",\n      \"email\": \"john@example.com\",\n      \"message\": \"Hello from the API!\"\n    }\n  }'\n\nList Submissions\n# Recent submissions\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions?pageSize=50\"\n\n# With date filter\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions?startDate=2026-01-01T00:00:00Z\"\n\n# Sorted ascending\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions?sortOrder=asc\"\n\nGet Single Submission\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions/{submissionId}\"\n\nDelete Submission\ncurl -X DELETE -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions/{submissionId}\"\n\nField Types\nType\tDescription\tValidation\ntext\tSingle line text\tminLength, maxLength, pattern\nemail\tEmail address\tBuilt-in validation\nphone\tPhone number\tBuilt-in validation\nnumber\tNumeric input\tmin, max\ndate\tDate picker\t-\nselect\tDropdown\toptions: [{value, label}]\ncheckbox\tBoolean\t-\ntextarea\tMulti-line text\tminLength, maxLength\nfile\tFile upload\t-\nField Schema\n{\n  \"path\": \"fieldName\",\n  \"label\": \"Display Label\",\n  \"type\": \"text\",\n  \"required\": true,\n  \"placeholder\": \"Hint text\",\n  \"helpText\": \"Additional guidance\",\n  \"options\": [{\"value\": \"a\", \"label\": \"Option A\"}],\n  \"validation\": {\n    \"minLength\": 1,\n    \"maxLength\": 500,\n    \"pattern\": \"^[A-Z].*\",\n    \"min\": 0,\n    \"max\": 100\n  }\n}\n\nCommon Patterns\nCreate and Publish Form\n# 1. Create draft\nRESULT=$(curl -s -X POST -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms\" \\\n  -d '{\"name\":\"Survey\",\"projectId\":\"proj_xxx\",\"fields\":[...]}')\nFORM_ID=$(echo $RESULT | jq -r '.data.id')\n\n# 2. Publish\ncurl -X PATCH -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://www.netpad.io/api/v1/forms/$FORM_ID\" \\\n  -d '{\"status\":\"published\"}'\n\nExport All Submissions\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms/{formId}/submissions?pageSize=1000\" \\\n  | jq '.data[].data'\n\nBulk Submit\nfor row in $(cat data.json | jq -c '.[]'); do\n  curl -s -X POST -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n    -H \"Content-Type: application/json\" \\\n    \"https://www.netpad.io/api/v1/forms/{formId}/submissions\" \\\n    -d \"{\\\"data\\\":$row}\"\ndone\n\nSearch Forms\ncurl -H \"Authorization: Bearer $NETPAD_API_KEY\" \\\n  \"https://www.netpad.io/api/v1/forms?search=contact&status=published\"\n\nHelper Script\n\nUse scripts/netpad.sh for common operations:\n\n# Make executable\nchmod +x scripts/netpad.sh\n\n# Usage\n./scripts/netpad.sh projects list\n./scripts/netpad.sh forms list published\n./scripts/netpad.sh forms create \"Contact Form\" proj_xxx\n./scripts/netpad.sh forms publish frm_xxx\n./scripts/netpad.sh submissions list frm_xxx\n./scripts/netpad.sh submissions create frm_xxx '{\"name\":\"John\",\"email\":\"john@example.com\"}'\n./scripts/netpad.sh submissions export frm_xxx > data.jsonl\n./scripts/netpad.sh submissions count frm_xxx\n\nRate Limits\nLimit\tValue\nRequests/hour\t1,000\nRequests/day\t10,000\n\nHeaders: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset\n\nResponse Format\nSuccess\n{\n  \"success\": true,\n  \"data\": { ... },\n  \"pagination\": {\"total\": 100, \"page\": 1, \"pageSize\": 20, \"hasMore\": true},\n  \"requestId\": \"uuid\"\n}\n\nError\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"VALIDATION_ERROR\",\n    \"message\": \"Description\",\n    \"details\": {}\n  },\n  \"requestId\": \"uuid\"\n}\n\nEnvironment Variables\n# Required for REST API\nexport NETPAD_API_KEY=\"np_live_xxx\"\n\n# Optional (for local/staging)\nexport NETPAD_BASE_URL=\"https://staging.netpad.io/api/v1\"\n\nNetPad CLI (@netpad/cli)\n\nInstall: npm i -g @netpad/cli\n\nAuthentication\nnetpad login              # Opens browser\nnetpad whoami             # Check auth status\nnetpad logout             # Clear credentials\n\nMarketplace & Packages\n# Search for apps\nnetpad search \"helpdesk\"\n\n# Install an app\nnetpad install @netpad/helpdesk-app\n\n# List installed\nnetpad list\n\n# Create new app scaffold\nnetpad create-app my-app\n\n# Submit to marketplace\nnetpad submit ./my-app\n\nRBAC - Users\n# List org members\nnetpad users list -o org_xxx\n\n# Add user\nnetpad users add user@example.com -o org_xxx --role member\n\n# Change role\nnetpad users update user@example.com -o org_xxx --role admin\n\n# Remove user\nnetpad users remove user@example.com -o org_xxx\n\nRBAC - Groups\n# List groups\nnetpad groups list -o org_xxx\n\n# Create group\nnetpad groups create \"Engineering\" -o org_xxx\n\n# Add user to group\nnetpad groups add-member grp_xxx user@example.com -o org_xxx\n\n# Delete group\nnetpad groups delete grp_xxx -o org_xxx\n\nRBAC - Roles\n# List roles (builtin + custom)\nnetpad roles list -o org_xxx\n\n# Create custom role\nnetpad roles create \"Reviewer\" -o org_xxx --base viewer --description \"Can review submissions\"\n\n# View role details\nnetpad roles get role_xxx -o org_xxx\n\n# Delete custom role\nnetpad roles delete role_xxx -o org_xxx\n\nRBAC - Assignments\n# Assign role to user\nnetpad assign user user@example.com role_xxx -o org_xxx\n\n# Assign role to group\nnetpad assign group grp_xxx role_xxx -o org_xxx\n\n# Remove assignment\nnetpad unassign user user@example.com role_xxx -o org_xxx\n\nRBAC - Permissions\n# List all permissions\nnetpad permissions list -o org_xxx\n\n# Check user's effective permissions\nnetpad permissions check user@example.com -o org_xxx\n\nReferences\nreferences/api-endpoints.md — Complete REST API endpoint docs\nreferences/cli-commands.md — Full CLI command reference\nAuthor\n\nMichael Lynn — Principal Staff Developer Advocate at MongoDB\n\n🌐 Website: mlynn.org\n🐙 GitHub: @mrlynn\n💼 LinkedIn: linkedin.com/in/mlynn"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mrlynn/netpad",
    "publisherUrl": "https://clawhub.ai/mrlynn/netpad",
    "owner": "mrlynn",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/netpad",
    "downloadUrl": "https://openagent3.xyz/downloads/netpad",
    "agentUrl": "https://openagent3.xyz/skills/netpad/agent",
    "manifestUrl": "https://openagent3.xyz/skills/netpad/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/netpad/agent.md"
  }
}