Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add lunw/shopline-ai-toolkit-dsh --skill shopline-oauthgit clone --depth 1 https://github.com/lunw/shopline-ai-toolkit-dshWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/lunw/shopline-ai-toolkit-dsh/shopline-oauth)<a href="https://agentmods.dev/skills/lunw/shopline-ai-toolkit-dsh/shopline-oauth"><img src="https://agentmods.dev/badge/skills/lunw/shopline-ai-toolkit-dsh/shopline-oauth/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/lunw/shopline-ai-toolkit-dsh/shopline-oauth"><img src="https://agentmods.dev/badge/skills/lunw/shopline-ai-toolkit-dsh/shopline-oauth.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00057 | $0.01189 |
| Opus 5 | $0.00028 | $0.00594 |
| Sonnet 5 | $0.00011 | $0.00238 |
| Haiku 4.5 | $0.00006 | $0.00119 |
Grade A, and why
shopline-oauth scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 105 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SHOPLINE App Authorization & Request Signing
Two separate things are often confused: (1) OAuth for obtaining store access tokens (public/custom apps), and (2) HMAC-SHA256 request signing required on OAuth HTTP calls and webhook callbacks. Private apps skip OAuth entirely — the token is copied from the SHOPLINE Admin.
OAuth 2.0 authorization code flow (public & custom apps)
Step 1 — install request. When a merchant installs the app, SHOPLINE GETs your App URL with query params handle (store handle), timestamp (ms), sign (signature), plus lang if embedded. Verify the signature first (see below).
Step 2 — authorize. Redirect the merchant (or give them the URL):
GET https://{handle}.myshopline.com/admin/oauth-web/#/oauth/authorize?appKey={appKey}&responseType=code&scope={scope}&redirectUri={redirectUri}
scope: comma-separated permission points, e.g.read_products,read_ordersredirectUri: must exactly match a callback URL configured in the Partner Portal (URL-encoded)
Step 3 — callback. SHOPLINE redirects to your redirect URI:
GET https://{redirectUri}?appkey={appkey}&code={code}&customField={customField}&handle={handle}×tamp={timestamp}&sign={sign}
The code is an OAuth authorization code, valid 10 minutes. Verify sign before using it.
Step 4 — exchange code for token:
POST https://{handle}.myshopline.com/admin/oauth/token/create
Content-type: application/json
appkey: {appkey}
timestamp: {timestamp}
sign: {sign}
{"code":{code}}
Response: {"code":200,"i18nCode":"SUCCESS","data":{"accessToken":"...","expireTime":"...","scope":"..."}}. The access token is valid 10 hours.
Step 5 — refresh before expiry:
POST https://{handle}.myshopline.com/admin/oauth/token/refresh
Content-type: application/json
appkey: {appkey}
timestamp: {timestamp}
sign: {sign}
(no body). After refresh, the old token stays valid for 5 minutes, then dies.
Request signing (HMAC-SHA256)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 105 lines · 57 tokens per session scan A 539b4e8d11a9
shopline-oauth is a skill published in the GitHub repository lunw/shopline-ai-toolkit-dsh (5 stars, last pushed 16d ago), licensed MIT. It adds 57 tokens to every session and 1,189 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
pipefy-api-fallback
Use this skill when an MCP tool fails AND the introspection skill could not resolve the problem. This is the last-resort fallback (Tier 3): call the Pipefy GraphQL API directly using curl or httpx, authenticating with the Service Account (OAuth2) or a Personal Access Token (PAT) available as env var. Follow the 3-tier…
pipefy-introspection
Use this skill when you need to discover GraphQL type shapes, mutation signatures, enum values, or execute arbitrary GraphQL as a fallback. This is the first fallback tier (Tier 2) when dedicated MCP tools fail or don't exist for an operation. 7 MCP tools.
yao-process
Yao process execution expert. ALWAYS invoke this skill when the user needs to call a Yao process, query data models, run scripts, or check process permissions. Do not call processes without checking this skill first.
daytona-cloud-server
Daytona cloud server, Den sandbox, desktop plus cloud e2e, marketplace server, worker proxy, cloud auth, org policies, connect Electron to Den. Use for server-side setup in validated flows.
stripe-billing-subscriptions
Analyze Stripe customers, subscriptions, prices, invoices, payment status, and lifecycle transitions with explicit environment and object scope.
kotlin-ktor-patterns
Ktor server patterns including routing DSL, plugins, authentication, Koin DI, kotlinx.serialization, WebSockets, and testApplication testing. Use when building a Ktor server — routing, plugins, auth, DI, serialization, or tests.