Pipe17 Openclaw Skill

v0.1.0

Automation skill for Pipe17 Openclaw Skill.

0· 758·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for j-shao1/pipe17-openclaw-skill.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Pipe17 Openclaw Skill" (j-shao1/pipe17-openclaw-skill) from ClawHub.
Skill page: https://clawhub.ai/j-shao1/pipe17-openclaw-skill
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Canonical install target

openclaw skills install j-shao1/pipe17-openclaw-skill

ClawHub CLI

Package manager switcher

npx clawhub@latest install pipe17-openclaw-skill
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
The SKILL.md describes a Pipe17 API integration (search/read orders, shipments, fulfillments, inventory). The runtime instructions and required credential (PIPE17_API_KEY) are exactly what such a skill needs. No unrelated services, binaries, or credentials are requested.
Instruction Scope
Instructions are limited to calling the Pipe17 REST API (curl examples) and advise exporting PIPE17_API_KEY. They do not instruct reading local files, other env vars, or sending data to third-party endpoints beyond api-v3.pipe17.com.
Install Mechanism
No install spec and no code files — the skill is instruction-only, so nothing is written to disk by an installer. This is the lowest-risk install model.
Credentials
The SKILL.md requires a single PIPE17_API_KEY which is proportionate to the stated purpose. However, registry metadata included with the submission indicated 'Required env vars: none' while the SKILL.md declares PIPE17_API_KEY as required — this metadata mismatch should be resolved before trusting the package.
Persistence & Privilege
The skill is not forced-always (always: false) and uses default autonomous-invocation behavior. That is normal for a helper skill. It does not request elevated persistence or access to other skills' configs.
Assessment
The skill appears to be a straightforward Pipe17 API helper and only needs a Pipe17 API key. Before installing: 1) Prefer to provide a least-privilege Pipe17 API key (do not reuse org-wide admin keys). 2) Verify the skill's origin/source (no homepage or source repo listed) — ideally obtain the SKILL.md from a known maintainer. 3) Confirm the registry metadata is updated to list PIPE17_API_KEY as required. 4) Monitor API activity for unexpected requests after enabling the skill. If you cannot verify the source, treat it as untrusted and avoid supplying high-privilege credentials.

Like a lobster shell, security has layers — review code before you run it.

latestvk979ws2fdpjgyc6yjmxadfp3dn80ta40
758downloads
0stars
1versions
Updated 1mo ago
v0.1.0
MIT-0

name: pipe17 description: Pipe17 Unified API for searching and reading orders, shipping requests (shipments), fulfillments, and inventory. homepage: https://apidoc.pipe17.com/#/ metadata: { "openclaw": { "emoji": "🧩", "requires": { "env": ["PIPE17_API_KEY"] }, "primaryEnv": "PIPE17_API_KEY" } }

pipe17

Use the Pipe17 Unified API to search and read core commerce/operations objects.

This skill focuses on:

  • Search + read Orders
  • Search + read Shipping Requests (a.k.a. Shipments)
  • Search + read Fulfillments
  • Search Inventory by SKU (and optionally location)

Setup

  1. Create / obtain a Pipe17 API key for the target organization/integration.
  2. Export it:
export PIPE17_API_KEY="..."

Keep the API key secret. Use least-privilege keys whenever possible.

API Basics

Base URL (default):

https://api-v3.pipe17.com/api/v3

All requests should include:

  • X-Pipe17-Key: ${PIPE17_API_KEY}
  • Accept: application/json

Example:

P17_BASE="https://api-v3.pipe17.com/api/v3"

curl "${P17_BASE}/orders" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Search & Filtering

Pipe17 commonly supports server-side filtering via query parameters, often including:

  • filters=... (repeatable)
  • limit=...
  • page=...

A common filter encoding pattern looks like:

filters={type}~{field}~{operator}~{value}

Examples of typical patterns:

  • filters=string~status~equals~readyForFulfillment
  • filters=string~status~equalsAnyOf~new,onHold,readyForFulfillment
  • filters=date~extOrderCreatedAt~isGreaterThanOrEqualTo~2024-12-31T00:00:00.000Z

If your tenant uses a different filter grammar, follow the contract in the API doc.

Orders

Search orders

List orders with optional query parameters.

ParameterTypeDescription
countinteger (int32)Number of results to return
skipinteger (int32)Number of results to skip (for pagination)
extOrderIdarray[string]Filter by external order ID(s)
sincestring (date-time)Filter orders since this UTC ISO timestamp
statusarray[string]Filter by status(es)

Allowed status values: draft, new, onHold, toBeValidated, reviewRequired, readyForFulfillment, sentToFulfillment, partialFulfillment, fulfilled, inTransit, partialReceived, received, canceled, returned, refunded, archived, closed

P17_BASE="https://api-v3.pipe17.com/api/v3"

# Example: most recent orders (paging)
curl "${P17_BASE}/orders?count=25&skip=0" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by status
curl "${P17_BASE}/orders?count=25&status=new&status=onHold&status=readyForFulfillment" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by date
curl "${P17_BASE}/orders?count=25&since=2024-12-31T00:00:00.000Z" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by external order ID
curl "${P17_BASE}/orders?extOrderId=EXT-12345" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Read order by id

The search endpoint returns an orderId for each order. Use it to fetch full order details.

P17_BASE="https://api-v3.pipe17.com/api/v3"
ORDER_ID="{orderId}"

curl "${P17_BASE}/orders/${ORDER_ID}" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Shipping Requests

Search shipping requests

List shipping requests with optional query parameters.

ParameterTypeDescription
countinteger (int32)Number of results to return
skipinteger (int32)Number of results to skip (for pagination)
extOrderIdarray[string]Filter by external order ID(s)
orderIdarray[string]Filter by Pipe17 order ID(s)
locationIdarray[string]Filter by location ID(s)
sincestring (date-time)Filter shipping requests since this UTC ISO timestamp
statusarray[string]Filter by status(es)

Allowed status values: new, pendingInventory, pendingShippingLabel, reviewRequired, readyForFulfillment, sentToFulfillment, fulfilled, partialFulfillment, canceled, canceledRestock, failed, onHold

P17_BASE="https://api-v3.pipe17.com/api/v3"

# Example: list shipping requests
curl "${P17_BASE}/shipping_requests?count=25&skip=0" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by status
curl "${P17_BASE}/shipping_requests?count=25&status=readyForFulfillment" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by order ID
curl "${P17_BASE}/shipping_requests?count=25&orderId=ORD-12345" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by location
curl "${P17_BASE}/shipping_requests?count=25&locationId=LOC-001" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Read shipping request by id

P17_BASE="https://api-v3.pipe17.com/api/v3"
SHIPPING_REQUEST_ID="{shippingRequestId}"

curl "${P17_BASE}/shipping_requests/${SHIPPING_REQUEST_ID}" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Fulfillments

Fulfillments represent completed shipment execution with tracking and shipped line items. They are typically treated as immutable once created.

Search fulfillments

List fulfillments with optional query parameters.

ParameterTypeDescription
countinteger (int32)Number of results to return
skipinteger (int32)Number of results to skip (for pagination)
extOrderIdarray[string]Filter by external order ID(s)
orderIdarray[string]Filter by Pipe17 order ID(s)
shipmentIdarray[string]Filter by shipment ID(s)
locationIdarray[string]Filter by location ID(s)
sincestring (date-time)Filter fulfillments since this UTC ISO timestamp
P17_BASE="https://api-v3.pipe17.com/api/v3"

# Example: list fulfillments
curl "${P17_BASE}/fulfillments?count=25&skip=0" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by order ID
curl "${P17_BASE}/fulfillments?count=25&orderId=ORD-12345" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by shipment ID
curl "${P17_BASE}/fulfillments?count=25&shipmentId=SHIP-001" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by date
curl "${P17_BASE}/fulfillments?count=25&since=2024-12-31T00:00:00.000Z" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Read fulfillment by id

P17_BASE="https://api-v3.pipe17.com/api/v3"
FULFILLMENT_ID="{fulfillmentId}"

curl "${P17_BASE}/fulfillments/${FULFILLMENT_ID}" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Inventory

Inventory is stored per SKU (and often per location) and may include multiple quantity types (e.g., onHand, available, committed, etc.).

Search inventory

List inventory with optional query parameters.

ParameterTypeDescription
countinteger (int32)Number of results to return
skipinteger (int32)Number of results to skip (for pagination)
skuarray[string]Filter by SKU(s). Mutually exclusive with sku_gt/sku_lt
locationIdarray[string]Filter by location ID(s)
sincestring (date-time)Filter inventory created after this UTC ISO timestamp
availableintegerFilter where available equals this value. Mutually exclusive with available_gt/available_lt
available_gtintegerFilter where available is greater than this value
available_ltintegerFilter where available is less than this value
onHandintegerFilter where onHand equals this value. Mutually exclusive with onHand_gt/onHand_lt
onHand_gtintegerFilter where onHand is greater than this value
onHand_ltintegerFilter where onHand is less than this value
totalsbooleanReturn inventory totals across all locations (not allowed with ledger flag)
ledgerbooleanReturn inventory ledger information (not allowed with totals flag)

Default behavior: Always send totals=true unless the user specifically requests ledger detail. totals and ledger are mutually exclusive.

P17_BASE="https://api-v3.pipe17.com/api/v3"

# Example: list inventory by SKU (always use totals=true by default)
curl "${P17_BASE}/inventory?count=100&sku=MY-SKU-001&totals=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: SKU + location
curl "${P17_BASE}/inventory?count=100&sku=MY-SKU-001&locationId=LOC-001&totals=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: find items with zero available
curl "${P17_BASE}/inventory?count=100&available=0&totals=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: find items with available > 10
curl "${P17_BASE}/inventory?count=100&available_gt=10&totals=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: get ledger detail (only when specifically requested)
curl "${P17_BASE}/inventory?count=100&sku=MY-SKU-001&ledger=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Read inventory record by inventoryId

P17_BASE="https://api-v3.pipe17.com/api/v3"
INVENTORY_ID="{inventoryId}"

curl "${P17_BASE}/inventory/${INVENTORY_ID}" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Notes

  • Prefer list/search endpoints with pagination (count, skip) for support workflows.
  • Favor narrow filters (status/date/sku) to avoid pulling large result sets.
  • If you hit rate limits, implement backoff and retry according to response headers.

References

Comments

Loading comments...