Install
openclaw skills install @upkuajing/customs-company-port-listQuery paginated port trade data for a company — retrieve port-level trade statistics with counts, amounts, and percentages for logistics analysis. Trigger: customs port list, paginated port query, company trade port details, import-export port analysis, trade logistics drill-down
openclaw skills install @upkuajing/customs-company-port-listQuery paginated port trade data for a company from customs data using the UpKuaJing Open Platform API.
This skill provides access to paginated port trade data from UpKuaJing's customs database. Given a company ID and company type, it returns a list of ports with trade statistics including trade count, amount, quantity, weight, and percentage.
python --versionpip install -r requirements.txtScript directory: scripts/*.py
Run example: python scripts/*.py
Important: Always use direct script invocation like python scripts/customs_company_port_list.py. Do NOT use shell compound commands like cd scripts && python customs_company_port_list.py
customs_company_port_list.py)This skill requires an API key. The API key is stored in the ~/.upkuajing/.env file:
cat ~/.upkuajing/.env
Example file content:
UPKUAJING_API_KEY=your_api_key_here
First check if the ~/.upkuajing/.env file has UPKUAJING_API_KEY;
If UPKUAJING_API_KEY is not set, prompt the user to choose:
auth.py --new_key), the new key will be automatically saved to ~/.upkuajing/.env
Wait for user selection;When API response indicates insufficient balance, explain and guide user to top up:
auth.py --new_rec_order)Use this script to get account information for UPKUAJING_API_KEY: auth.py --account_info
When an API call fails or returns abnormal data (server error, timeout, malformed response, etc.), explain the anomaly to the user in natural language and ask whether to report it to the platform for troubleshooting. Only run the report after user confirmation:
python scripts/error_report.py --params '{"requestPath":"/agent/customs/company/port/list","requestId":"f47ac10b58cc4372a5670e02b2c3d479","context":"Company port list query failed with a server error"}'
All API calls incur fees, different interfaces have different billing methods.
Latest pricing: Users can visit Detailed Price Description
Or use: python scripts/auth.py --price_info (returns complete pricing for all interfaces)
Billed by number of calls, each call returns a page of port list for one company:
Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.
| User Intent | Use API |
|---|---|
| "List trade ports for company 100001 as a supplier" | Company Port List Query |
| "Show port-level trade breakdown for company 100001" | Company Port List Query |
User request: "List trade ports for company 100001 as a supplier"
python scripts/customs_company_port_list.py --params '{"companyId":100001,"companyType":1}'
Query the next page:
python scripts/customs_company_port_list.py --params '{"companyId":100001,"companyType":1,"cursor":"eyJsYXN0X2lkIjogMTAwMX0="}'
Query with filters:
python scripts/customs_company_port_list.py --params '{"companyId":100001,"companyType":1,"dateStart":1700000000000,"dateEnd":1735689599999,"countryCodes":["KR"]}'
UPKUAJING_API_KEY in ~/.upkuajing/.env filepython scripts/error_report.py (see Report Skill Call Errors)Check API documentation:
Pagination:
cursor parameter from the response to fetch the next pagecursor is returned in the response, there are no more pagesData interpretation:
percentTrade is the percentage of trade (as a decimal, e.g., 45.67 means 45.67%)port is the port name (e.g., "BUSAN")Cross-skill usage:
companyType determines the company's role (1=supplier, 2=buyer)cursor for pagination — it's a base64-encoded stringpython scripts/auth.py --price_info to get accurate pricing informationOther UpKuaJing skills you might find useful: