Source profileQuality 96/100

wyre-technology/msp-claude-plugins/msp-claude-plugins/sherweb/sherweb/skills/api-patterns/SKILL.md

Sherweb API Patterns

Sherweb Partner API fundamentals: OAuth 2.0 client-credentials auth, token caching, subscription-key header, scopes and base URLs, endpoint and MCP tool catalog, page-based pagination, Accept-Language localization, rate limits, and error codes.

Source repository stars
39
Declared platforms
0
Static risk flags
1
Last source update
2026-08-06
Source checked
2026-08-06

Decision brief

What it does—and where it fits

Sherweb Partner API fundamentals: OAuth 2. 0 client-credentials auth, token caching, subscription-key header, scopes and base URLs, endpoint and MCP tool catalog, page-based pagination, Accept-Language localization, rate limits, and error codes.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/wyre-technology/msp-claude-plugins --skill "msp-claude-plugins/sherweb/sherweb/skills/api-patterns"
    Safe inspection promptEditorial

    Inspect the Agent Skill "Sherweb API Patterns" from https://github.com/wyre-technology/msp-claude-plugins/blob/c1011303bfd2a65abc9b260884d9858d1a482a6f/msp-claude-plugins/sherweb/sherweb/skills/api-patterns/SKILL.md at commit c1011303bfd2a65abc9b260884d9858d1a482a6f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Anti-triggers

      Pax8's request model — the other CSP marketplace here authenticates

      Pax8's request model — the other CSP marketplace here authenticatesSherweb tools missing from the client entirely, or a 401 before anyA tool that seems not to exist — this server uses progressive
    2. 02

      Authentication

      Sherweb uses the OAuth 2.0 client credentials grant for machine-to-machine authentication. No user interaction is required.

      Tokens expire after 1 hour (3600 seconds)Cache the token and reuse it until near expiryRequest a new token 5 minutes before expiry to avoid gaps
    3. 03

      OAuth 2.0 Client Credentials Flow

      Sherweb uses the OAuth 2.0 client credentials grant for machine-to-machine authentication. No user interaction is required.

      Tokens expire after 1 hour (3600 seconds)Cache the token and reuse it until near expiryRequest a new token 5 minutes before expiry to avoid gaps
    4. 04

      Subscription Key

      In addition to the Bearer token, every API request must include the API management subscription key:

      In addition to the Bearer token, every API request must include the API management subscription key:This key is obtained from the Sherweb Partner Portal (cumulus.sherweb.com) under Security APIs.
    5. 05

      Required Headers

      Every API request must include:

      Every API request must include:

    Permission review

    Static risk signals and limitations

    Network access

    medium · line 35

    The documentation includes network, browsing, or remote request actions.

    POST https://api.sherweb.com/auth/oidc/connect/token

    Network access

    medium · line 66

    The documentation includes network, browsing, or remote request actions.

    In addition to the Bearer token, every API request must include the API management subscription key:

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score96/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars39SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    wyre-technology/msp-claude-plugins
    Skill path
    msp-claude-plugins/sherweb/sherweb/skills/api-patterns/SKILL.md
    Commit
    c1011303bfd2a65abc9b260884d9858d1a482a6f
    License
    Apache-2.0
    Collected
    2026-08-06
    Default branch
    main
    View the original SKILL.md

    Sherweb API Patterns & MCP Tools

    Overview

    The Sherweb Partner API provides programmatic access to distributor-level operations including customer management, subscription lifecycle, and billing data. The API uses OAuth 2.0 client credentials flow for authentication, requires a subscription key header for API management, and exposes two main scopes: distributor and service-provider. This skill covers authentication, endpoints, MCP tool usage, error handling, and best practices.

    Anti-triggers

    • Pax8's request model — the other CSP marketplace here authenticates with a single hosted-MCP token, names tools with hyphens, and paginates from page 0, against Sherweb's OAuth client-credentials plus subscription-key header, underscored tool names, and 1-based paging. Use pax8-api-patterns. Copying a paging pattern between the two silently changes which records you get.
    • Sherweb tools missing from the client entirely, or a 401 before any call succeeds — that is a gateway-connection problem; use shared-skills-wyre-gateway-troubleshooting.
    • A tool that seems not to exist — this server uses progressive disclosure, so domain tools are only visible after sherweb_navigate or sherweb_list_categories. Check discovery before concluding a capability is missing. Two capabilities really are absent, and no amount of discovery will surface them: billing-period enumeration and invoice retrieval. See the billing tool table below.

    Authentication

    OAuth 2.0 Client Credentials Flow

    Sherweb uses the OAuth 2.0 client credentials grant for machine-to-machine authentication. No user interaction is required.

    Token Endpoint:

    POST https://api.sherweb.com/auth/oidc/connect/token
    

    Request Parameters:

    ParameterValue
    grant_typeclient_credentials
    client_idYour Sherweb Client ID
    client_secretYour Sherweb Client Secret
    scopedistributor or service-provider (see Scopes section)

    Token Response:

    {
      "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6...",
      "expires_in": 3600,
      "token_type": "Bearer"
    }
    

    Key details:

    • Tokens expire after 1 hour (3600 seconds)
    • Cache the token and reuse it until near expiry
    • Request a new token 5 minutes before expiry to avoid gaps
    • The token is sent as a Bearer token in the Authorization header

    Subscription Key

    In addition to the Bearer token, every API request must include the API management subscription key:

    HeaderValueDescription
    Ocp-Apim-Subscription-KeyYour subscription keyAPI management gateway key

    This key is obtained from the Sherweb Partner Portal (cumulus.sherweb.com) under Security > APIs.

    Required Headers

    Every API request must include:

    HeaderValue
    AuthorizationBearer <access_token>
    Ocp-Apim-Subscription-Key<subscription_key>
    Content-Typeapplication/json
    Acceptapplication/json

    Environment Variables

    export SHERWEB_CLIENT_ID="your-client-id"
    export SHERWEB_CLIENT_SECRET="your-client-secret"
    export SHERWEB_SUBSCRIPTION_KEY="your-subscription-key"
    export SHERWEB_MCP_URL="https://your-sherweb-mcp-url"
    

    Obtaining Credentials

    1. Log into the Sherweb Partner Portal at cumulus.sherweb.com
    2. Navigate to Security > APIs
    3. Create a new API application or manage existing credentials
    4. Note your Client ID, Client Secret, and Subscription Key
    5. Store these securely -- the Client Secret is shown only once

    Scopes

    Sherweb supports two API scopes that control the level of access:

    ScopeDescriptionBase URL
    distributorFull distributor-level access to all service providers and their customershttps://api.sherweb.com/distributor/v1
    service-providerScoped to a single service provider (MSP) and their customershttps://api.sherweb.com/service-provider/v1

    Scope Selection

    • Most MSPs use service-provider scope - This gives access to your own customers and subscriptions
    • Distributor scope is for organizations that manage multiple service providers (e.g., master agents, holding companies)
    • The scope is specified when requesting the OAuth token, not per-request

    API Endpoints

    Base URLs

    ScopeBase URL
    Distributorhttps://api.sherweb.com/distributor/v1
    Service Providerhttps://api.sherweb.com/service-provider/v1

    Key Endpoints

    EndpointMethodDescription
    /customersGETList customers
    /customers/{customerId}GETGet customer details
    /customers/{customerId}/accounts-receivableGETCustomer AR data
    /customers/{customerId}/subscriptionsGETList a customer's subscriptions
    /customers/{customerId}/subscriptions/{subscriptionId}GETGet subscription details
    /customers/{customerId}/subscriptions/{subscriptionId}/change-quantityPOSTChange subscription quantity
    /catalog/productsGETList catalog products
    /payable-chargesGETGet payable charges for a date range (distributor scope)
    /payable-charges/{chargeId}GETGet one charge's breakdown (distributor scope)

    There is no billing-period endpoint and no invoice endpoint behind this connector. See the billing tool table below.

    MCP Tool Reference

    Customer Tools

    ToolDescriptionParameters
    sherweb_customers_listList and search customerssearch, page, pageSize
    sherweb_customers_getGet a single customercustomerId (required)
    sherweb_customers_accounts_receivableGet customer AR datacustomerId (required)

    Subscription Tools

    Every subscription tool is scoped by customer — customerId is required on all three, because the underlying routes are nested under /customers/{id}.

    ToolDescriptionParameters
    sherweb_subscriptions_listList a customer's subscriptionscustomerId (required), page, pageSize
    sherweb_subscriptions_getGet a single subscriptioncustomerId (required), subscriptionId (required)
    sherweb_subscriptions_change_quantitySet seat count (absolute, not a delta)customerId (required), subscriptionId (required), quantity (required)

    Catalog Tools

    ToolDescriptionParameters
    sherweb_catalog_list_productsBrowse the Sherweb product catalogsearch, page, pageSize

    Billing Tools

    ToolDescriptionParameters
    sherweb_billing_payable_chargesGet charges for an explicit date rangebillingCycleType (OneTime|Monthly|Yearly), periodFrom, periodTo, page, pageSize
    sherweb_billing_charge_detailsGet charge breakdownchargeId (required)

    Billing capabilities this connector does not have. There is no tool that enumerates billing periods, and no tool that lists or fetches invoices. sherweb_billing_payable_charges takes the window you give it as periodFrom/periodTo; you cannot ask which periods exist. For invoices, the closest surfaces are sherweb_billing_charge_details (line items of one charge) and sherweb_customers_accounts_receivable (a customer's outstanding balance) — neither is an invoice, and neither should be presented as one. See sherweb-billing for the full statement.

    Discovery and Dispatch Tools

    ToolDescriptionParameters
    sherweb_statusShow credentials status and available domains
    sherweb_navigateDiscover tools by domaindomain (required)
    sherweb_list_categoriesList tool categories with counts
    sherweb_list_category_toolsList a category's tools with full schemascategory (required)
    sherweb_routerSuggest tools for a plain-language intentintent (required)
    sherweb_execute_toolDispatch any Sherweb tool by nametoolName (required)

    Pagination

    Page-Based Pagination

    All list endpoints use 1-based page pagination:

    ParameterDescriptionDefaultMax
    pagePage number (1-based)1-
    pageSizeResults per page25100

    Pagination Response Metadata:

    FieldDescription
    pageCurrent page number
    pageSizeNumber of results per page
    totalCountTotal number of records
    totalPagesTotal number of pages

    To iterate: call with page=1 and pageSize=100, read totalPages, then increment page until page >= totalPages, collecting each response.

    Accept-Language Support

    The Sherweb API supports localized responses via the Accept-Language header:

    HeaderValuesDescription
    Accept-Languageen, frResponse language (English or French)

    This is particularly useful since Sherweb is a Canadian company with bilingual support. Product names, descriptions, and error messages can be returned in either language.

    Token Caching

    Caching strategy:

    1. Request a token on first API call
    2. Store the token and its expiry time (current_time + expires_in)
    3. Reuse the cached token for all subsequent requests
    4. When the token is within 5 minutes of expiry, request a new one
    5. Never request a new token for every API call -- this wastes quota and adds latency

    Rate Limits

    Rate Limit Details

    MetricLimit
    Requests per secondVaries by endpoint
    Requests per minuteVaries by subscription tier

    When rate limited, the API returns a 429 Too Many Requests response with:

    HeaderDescription
    Retry-AfterSeconds to wait before retrying

    Rate limit strategy:

    1. Implement exponential backoff on 429 responses
    2. Respect the Retry-After header when present
    3. Batch related operations to reduce total API calls
    4. Use maximum pageSize=100 to minimize pagination requests

    Error Handling

    HTTP Status Codes

    CodeDescriptionAction
    200SuccessProcess response
    400Bad RequestCheck request parameters
    401UnauthorizedToken expired or invalid; re-authenticate
    403ForbiddenInsufficient scope or permissions
    404Not FoundResource does not exist
    409ConflictConflicting operation (e.g., pending change)
    429Too Many RequestsRate limited; wait and retry
    500Internal Server ErrorSherweb server issue; retry with backoff
    503Service UnavailableTemporary outage; retry later

    Common Error Responses

    Authentication Error (401):

    {
      "error": "invalid_token",
      "error_description": "The access token has expired"
    }
    

    Validation Error (400):

    {
      "errors": [
        {
          "field": "quantity",
          "message": "Quantity must be greater than 0"
        }
      ]
    }
    

    Rate Limit (429):

    {
      "statusCode": 429,
      "message": "Rate limit exceeded. Retry after 30 seconds."
    }
    

    Troubleshooting

    1. 401 Unauthorized - Token expired. Request a new token from the token endpoint
    2. 403 Forbidden - Wrong scope. Verify you requested the correct scope (distributor vs service-provider)
    3. Missing subscription key - Ensure Ocp-Apim-Subscription-Key header is set
    4. Token request fails - Verify Client ID and Client Secret are correct
    5. 404 Not Found - Verify the resource ID exists and you have access to it
    6. Test connectivity - Call GET /customers?pageSize=1 to verify authentication works

    Best Practices

    1. Filter server-side - Use query parameters to narrow results rather than fetching everything
    2. Set Accept-Language - Include Accept-Language: en (or fr) for consistent response language

    Related Skills

    Alternatives

    Compare before choosing

    Computed 1007

    narrative-io/narrative-skills-marketplace

    design-analysis

    Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "

    Computed 9599

    ffroliva/gflow-cli

    pr-council-review

    Multi-dimensional LLM council review of an open PR (default) or a local feature branch (§ 8 branch mode, invoked via `/gflow:branch-review`). Five baseline dimensions (correctness, quality, security, tests, memory-hygiene) plus adaptive dimensions per surface (transports / data / CLI / docs / auth / BDD / scripts / release-gate). Each agent invokes specialized skills (security-review, code-review, verify) for its dimension. Reads files via `git show <sha>:<path>` to avoid stale-working-tree fals

    Computed 9438,525

    wshobson/agents

    brand-landingpage

    Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens —

    Computed 941,212

    first-fluke/oh-my-agent

    oma-docs

    Verify documentation references against the current codebase, propose updates for diff-affected docs, detect i18n translation drift, and lint translated docs for CJK style issues. Use to check if docs still match reality (broken file paths, CLI commands, config keys, env vars, scripts), to surface docs that may need updating after code changes, or to find stale or style-broken translations.