Fourthwall MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FOURTHWALL_ACCOUNTS | No | A private JSON array of unique name plus one username/password, access_token or credentials_file source. Named profiles never inherit globals. | |
| FOURTHWALL_PASSWORD | No | Password for the private shop credential pair. Choose exactly one private source: FOURTHWALL_USERNAME and FOURTHWALL_PASSWORD, an existing FOURTHWALL_ACCESS_TOKEN, or FOURTHWALL_CREDENTIALS_FILE. | |
| FOURTHWALL_USERNAME | No | Username for the private shop credential pair. Choose exactly one private source: FOURTHWALL_USERNAME and FOURTHWALL_PASSWORD, an existing FOURTHWALL_ACCESS_TOKEN, or FOURTHWALL_CREDENTIALS_FILE. | |
| FOURTHWALL_READ_ONLY | No | Set to 1 to expose only the 49 read operations and directly refuse the 37 hidden effects, even if confirm is supplied. | |
| FOURTHWALL_ACCESS_TOKEN | No | An existing OAuth access token. Choose exactly one private source: FOURTHWALL_USERNAME and FOURTHWALL_PASSWORD, an existing FOURTHWALL_ACCESS_TOKEN, or FOURTHWALL_CREDENTIALS_FILE. | |
| FOURTHWALL_DEFAULT_ACCOUNT | No | Selects an exact default account label from FOURTHWALL_ACCOUNTS. | |
| FOURTHWALL_CREDENTIALS_FILE | No | Absolute path to a private credential file: a JSON object containing either username/password or access_token. Must be an absolute regular non-symlink file, at most 64 KiB, outside repositories. On POSIX the process user must own it and permissions must be owner-only, normally 0600; restrict Windows ACLs separately. Choose exactly one private source: FOURTHWALL_USERNAME and FOURTHWALL_PASSWORD, an existing FOURTHWALL_ACCESS_TOKEN, or FOURTHWALL_CREDENTIALS_FILE. | |
| FOURTHWALL_ALLOW_DESTRUCTIVE | No | Set to 0 to refuse effects even when confirmed. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_webhookC | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Get a webhook |
| update_webhookC | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Update a webhook |
| delete_webhookB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Delete a webhook |
| start_streamingB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Sets streaming status to started for specified services |
| end_streamingB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Sets streaming status to ended for specified services |
| get_public_tokenB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns an existing public token for the shop, or creates a new one if none exists |
| get_promotionB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns a promotion by id |
| update_promotionB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Updates an existing promotion's configuration. Only provided fields are updated; omitted fields remain unchanged. Status changes (activate/deactivate) are part of the same update call. |
| update_product_stateA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Transitions the product between |
| toggle_product_availabilityB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Updates a product (offer) availability |
| mark_download_completeA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Marks digital download as downloaded. If no downloads exist for a digital order and defaultFileUrl is provided in the request body, creates a download with that URL and marks it as downloaded. |
| finish_giveawayB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Finish giveaway and select winners |
| create_giveaway_checkoutC | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Creates a new giveaway or updates existing one |
| disable_giveaway_checkoutC | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. disables a giveaway config |
| finish_giveaway_drawB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Finish draw and select winners |
| get_gifting_configA | Returns the calling shop's saved gifting rules. Returns a default-shaped config when none is persisted yet. |
| update_gifting_configA | Writes the four creator-controlled gifting rule fields. Validation (duration 20-180s, valid shipping/products) and the one-platform-per-shop mutex are enforced server-side. Upserts: a first-ever PUT materializes the config row. |
| update_collectionB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Updates collection name, description, and/or product list |
| get_collection_productsA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns paginated products in a collection with optional status filtering. The maximum page size is 100 - larger values are capped at 100. |
| update_collection_productsB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Sets the full list of product IDs in the collection |
| update_collection_availabilityB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Toggle collection availability (available/unavailable) |
| list_webhooksB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Get webhooks |
| create_webhookC | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Create a webhook |
| list_promotionsA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns all promotions. The maximum page size is 100 - larger values are capped at 100. |
| create_promotionC | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Creates a promotion |
| list_productsA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns all products with pagination. The maximum page size is 100 - larger values are capped at 100. |
| create_productA | Rate limit: 5 requests / minute per shop. See Rate limiting. Creates a product from a design or a digital product. |
| attach_product_imagesA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Attaches images to a product. Images should be uploaded first via the media upload endpoint. |
| remove_product_imagesB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Removes specified images from a product by their URLs. |
| confirm_digital_file_uploadA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. After uploading a file to the presigned URL, call this endpoint to link the file to the product. The file must exist in storage before calling this endpoint. |
| remove_digital_fileB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Removes a digital file from the product by its file URL. |
| request_digital_file_upload_urlA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns a presigned URL to upload a digital file to. After receiving the response, PUT the file bytes directly to the uploadUrl, then call the confirm endpoint to link the file to the product. |
| request_media_upload_urlA | Rate limit: 20 requests / minute per shop. See Rate limiting. Returns a pre-signed upload URL for uploading a new image. After receiving the response, PUT the image bytes directly to the uploadUrl. |
| list_media_imagesA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Retrieves all images from the shop's media library |
| save_media_imageB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Persists an uploaded image in the media library after the client has PUT it to the signed URL |
| create_giveawayC | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Creates a new giveaway |
| create_giveaway_linksB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Creates a new package with specified number of giveaway links |
| create_gifting_checkoutB | Creates a paid checkout for gifting a product to live chat |
| create_fulfillmentB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Creates a fulfillment with a shipment tracker for provided order items. When trackers change their state, order.status will change to IN_PRODUCTION, PARTIALLY_IN_PRODUCTION, PARTIALLY_SHIPPED, SHIPPED depending on the shipping tracker info. Order updated webhooks will be triggered. |
| validate_dnsA | Rate limit: 20 requests / minute per shop. See Rate limiting. Triggers a live DNS validation by checking all configured records against actual DNS servers and updates their verification status |
| list_collectionsA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns all collections with pagination. The maximum page size is 100 - larger values are capped at 100. |
| create_collectionB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Creates a new collection with name, description, and optional product list |
| list_webhook_eventsA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Get webhook events with pagination and optional filtering by one or more webhook types (repeat or comma-separate the |
| get_webhook_eventA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Get a single webhook event by ID |
| get_thank_youB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Get Thank You details |
| list_contributionsB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns paginated list of orders, donations, and other contributions that can be thanked. The maximum page size is 100 - larger values are capped at 100. |
| get_streaming_statusB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns streaming status for all services |
| get_shopB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns the current shop |
| get_shop_contactA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns the current shop contact info |
| get_sample_balanceA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns the current sample credit balance for the shop |
| list_reportsA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns the list of available report IDs with metadata including name, columns, and supported precisions |
| get_reportA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Fetches a specific analytics report for a date range |
| get_productB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns product by id |
| archive_productA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Soft-archives the product — sets it to |
| get_product_inventoryB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns product (offer) inventory by id |
| list_product_templatesA | List available product templates. Returns 25 results. To paginate, use the /page/{N} variant of this endpoint (1-indexed). Use the total field in the response to calculate total pages. Pagination is path-based for HTTP cacheability. |
| get_product_templateA | Get detailed information about a specific product template. This endpoint is public and does not require authentication. Returns full product details including variants, customizable areas, size guide, and images. |
| search_product_templatesA | Search product templates by name, brand, description, sizes, categories, colors, or production method. Returns 25 results. To paginate, use the /search/{query}/page/{N} variant of this endpoint (1-indexed). Use the total field in the response to calculate total pages. Pagination is path-based for HTTP cacheability. |
| search_product_templates_pagedB | Search product templates with pagination. This endpoint is public and does not require authentication. |
| search_product_templates_groupedA | Search product templates and group results by product family (libraryId). Products sharing the same physical item but with different production methods (e.g. DTG, Embroidery, DTFX) are collapsed into a single result with a variants list. Returns 25 grouped results. To paginate, use the /search-grouped/{query}/page/{N} variant (1-indexed). Pagination is path-based for HTTP cacheability. |
| search_product_templates_grouped_pagedB | Search product templates grouped by product family with pagination. This endpoint is public and does not require authentication. |
| list_product_templates_pagedA | List available product templates with pagination. This endpoint is public and does not require authentication. |
| list_product_templates_by_categoryA | Browse product templates filtered by category. Category matches by prefix (e.g., 'Apparel' matches 'Apparel/T-Shirts'). Returns 25 results. To paginate, use the /category/{category}/page/{N} variant of this endpoint (1-indexed). Use the total field in the response to calculate total pages. Pagination is path-based for HTTP cacheability. |
| list_product_templates_by_category_pagedA | Browse product templates by category with pagination. This endpoint is public and does not require authentication. |
| get_pro_subscriptionA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns the current Fourthwall Pro platform subscription status, plan, and usage against plan limits |
| list_ordersB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns all orders with pagination. The maximum page size is 100 - larger values are capped at 100. |
| get_orderB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns order by id |
| get_order_by_friendly_idB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns order by friendly id |
| list_membership_tiersA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Lists all tiers for the current shop |
| list_membersA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Lists all members for the current shop. The maximum page size is 100 - larger values are capped at 100. |
| get_memberA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Gets a member by id |
| list_mailing_listA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns all mailing list entries. The maximum page size is 100 - larger values are capped at 100. |
| list_giveaway_packagesA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns all packages with giveaway links |
| get_giveaway_packageB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns all giveaway links for packageId |
| get_giveaway_drawB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Get draw details |
| get_gift_purchaseB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns gift purchase details by id |
| list_donationsB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns all donations with pagination. The maximum page size is 100 - larger values are capped at 100. |
| get_donationB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns donation by id |
| get_dns_statusA | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns the cached DNS configuration and record status for the shop's custom domain |
| get_collectionB | Rate limit: 100 requests / 10 seconds per shop. See Rate limiting. Returns a collection by its ID or slug |
| list_accountsC | Local labels/default/auth source availability only. No credential values, paths, provider identity or network. |
| get_operation_schemaC | Local reviewed native method/path/query/body/scopes/rate limit and pinned schema provenance. No provider access or authority proof. |
| preview_shop_batchB | Validate every exact request and hash order/profile label/schema locally. No native request, credential loading, ownership check or provider preview. |
| submit_shop_batchA | Confirmed ordered effects; all validated/hash checked before first request. Stop on first failure with known and unattempted receipts; no retry, rollback or implicit continuation. |
| export_resourcesB | Confirmed native page/size/results export into a new exclusive0600 file with page/item/5MiB budgets and explicit page/offset continuation. No links followed, binary downloads or atomic-backup guarantee. |
| upload_fileC | Explicitly confirmed Google Storage PUT using a selected private upload receipt and a bounded local regular file. Exact size/Content-Type and x-goog-content-length-range are preserved. No Fourthwall credentials or redirects, no automatic registration/publishing. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 86 tools
Multiple tools have unclear boundaries: nine product-template tools (list/search/paged/grouped/by-category variants) overlap heavily, finish_giveaway vs finish_giveaway_draw are nearly identical, and update_collection overlaps with update_collection_products. Descriptions help somewhat but do not resolve which variant to pick in common cases.
All tool names follow a consistent snake_case verb_noun pattern (e.g., list_products, get_order, create_webhook, update_promotion, archive_product). There are no mixed conventions like camelCase or vague verbs.
86 tools is far beyond a well-scoped set (typically 3-15) and is extreme even for a broad platform, with many redundant variants. The count creates a high risk of misselection and cognitive overload.
The surface covers many resources (products, orders, collections, promotions, giveaways, webhooks, media, reports, etc.), but notable gaps exist such as no general update_product for name/description/price, no delete for collections or promotions, and limited order modification. Agents can work around some gaps but will hit dead ends for common updates.