Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Install and configure Flexport API authentication with API keys or OAuth credentials. Use when setting up a new Flexport logistics integration, configuring bearer tokens, or initializing the Flexport REST API client for shipment and supply chain operations. Trigger: "install flexport", "setup flexport", "flexport auth", "flexport API key".
.claude/skills/jeremylongshore-flexport-install-auth/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 52% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 214% | 0% |
Prefer a distinct endpoint-scoped OAuth client for each workload. Treat broad API keys as an explicit exception, and budget token acquisition because client-credential tokens last 24 hours while token requests are limited to 10 per day.
Use OAuth client credentials for new integrations so endpoint resources can be selected. Accept an API key only after documenting why its broad access is necessary.
Separate production, non-production, and independent workloads. Flexport does not let operators add endpoints to an existing credential, so create a replacement when scope must expand.
POST to /oauth/token with client_id, client_secret, audience https://api.flexport.com, and grant type client_credentials. Never expose the secret in a browser, shell history, or receipt.
Store the JWT and expiry in a concurrency-safe cache. Refresh before expiry with jitter and a single-flight lock; do not spend the 10-request daily token budget per business request.
Run one approved read against every required endpoint and one negative test against an endpoint outside the credential resource set.
Create and validate a replacement, switch one workload, observe it, then revoke the old credential. Record only credential aliases, timestamps, and outcome.
REST calls authenticate with a cached OAuth 2.0 client-credentials Bearer token using audience https://api.flexport.com, or an explicitly accepted broad API key. Use distinct credentials per workload and never log credentials or tokens. MCP calls use the authenticated connection to https://mcp.flexport.com/mcp and remain subject to each tool's documented account permissions.
Use Read and Grep for discovery and evidence. Use Write or Edit only for the approved artifact, code, configuration, test, or receipt described by this workflow; do not make an unapproved Flexport-side change.
Return a machine-reviewable receipt in this shape; adapt the operation values, but never place credentials or provider payloads in it:
yamlsurface: rest-v3 operation: shipment-read decision: approved outcome: verified evidence: release_sha: recorded-out-of-band provider_reference: redacted rollback_owner: logistics-platform
A shipment reader gets its own OAuth client for shipment endpoints. All workers share one encrypted cached token, while a separate invoice importer receives a different client rather than reusing the shipment credential.
| Failure | Response | | --- | --- | | Token request rejected | Check audience, grant type, client identity, and secret source; do not loop. | | Daily token budget threatened | Stop per-request acquisition and repair shared caching/single-flight behavior. | | Required endpoint missing | Create a new scoped credential; do not silently substitute a broad key. | | Secret disclosed | Revoke or rotate immediately and scrub derived logs or artifacts. |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 26,755 | 22,692 | -15% | 1 | 1 | 0% | 5,536 | 5,250 | -5% | 0 | 0 | — |
case-02 | fail→pass | 21,426 | 15,905 | -26% | 1 | 1 | 0% | 3,394 | 3,566 | +5% | 0 | 0 | — |
case-03 | fail→pass | 18,492 | 16,129 | -13% | 1 | 1 | 0% | 2,552 | 3,469 | +36% | 0 | 0 | — |
case-04 | fail→pass | 14,431 | 11,089 | -23% | 1 | 1 | 0% | 1,611 | 2,442 | +52% | 0 | 0 | — |
case-05 | fail→pass | 8,757 | 10,449 | +19% | 1 | 1 | 0% | 747 | 2,348 | +214% | 0 | 0 | — |
case-06 | pass→pass | 8,625 | 8,993 | +4% | 1 | 1 | 0% | 1,691 | 2,071 | +22% | 0 | 0 | — |
case-07 | pass→pass | 19,957 | 9,619 | -52% | 1 | 1 | 0% | 2,755 | 3,178 | +15% | 0 | 0 | — |
case-08 | pass→pass | 13,455 | 16,661 | +24% | 1 | 1 | 0% | 2,230 | 3,438 | +54% | 0 | 0 | — |
case-09 | pass→pass | 9,652 | 11,086 | +15% | 1 | 1 | 0% | 1,610 | 2,386 | +48% | 0 | 0 | — |
case-10 | fail→pass | 15,590 | 10,170 | -35% | 1 | 1 | 0% | 1,748 | 2,354 | +35% | 0 | 0 | — |
case-11 | fail→pass | 16,949 | 3,768 | -78% | 1 | 1 | 0% | 1,026 | 1,993 | +94% | 0 | 0 | — |
case-12 | pass→pass | 16,982 | 15,824 | -7% | 1 | 1 | 0% | 2,031 | 3,210 | +58% | 0 | 0 | — |
case-13 | pass→pass | 7,321 | 6,894 | -6% | 1 | 1 | 0% | 394 | 1,566 | +297% | 0 | 0 | — |
case-14 | fail→fail | 11,363 | 12,459 | +10% | 1 | 1 | 0% | 2,457 | 2,907 | +18% | 0 | 0 | — |
case-15 | fail→pass | 6,824 | 9,555 | +40% | 1 | 1 | 0% | 1,395 | 2,169 | +55% | 0 | 0 | — |
case-16 | fail→pass | 7,820 | 2,467 | -68% | 1 | 1 | 0% | 1,369 | 1,678 | +23% | 0 | 0 | — |
case-17 | pass→pass | 8,923 | 2,627 | -71% | 1 | 1 | 0% | 1,507 | 1,728 | +15% | 0 | 0 | — |
case-18 | pass→pass | 15,908 | 6,906 | -57% | 1 | 1 | 0% | 1,904 | 2,645 | +39% | 0 | 0 | — |
case-19 | pass→pass | 10,506 | 12,601 | +20% | 1 | 1 | 0% | 1,941 | 2,697 | +39% | 0 | 0 | — |
case-20 | fail→pass | 12,897 | 3,052 | -76% | 1 | 1 | 0% | 1,532 | 1,854 | +21% | 0 | 0 | — |
case-21 | pass→pass | 13,618 | 18,262 | +34% | 1 | 1 | 0% | 2,667 | 4,234 | +59% | 0 | 0 | — |
case-22 | pass→pass | 14,859 | 19,234 | +29% | 1 | 1 | 0% | 3,191 | 4,438 | +39% | 0 | 0 | — |
case-23 | pass→pass | 13,341 | 18,913 | +42% | 1 | 1 | 0% | 2,873 | 4,389 | +53% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +43 percentage points is the difference between those two pass rates over the 23 comparable cases.
The publisher has shipped newer versions since this run, so these numbers describe v1, not the version currently listed.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.