Pivity (GmodStore) integration
Pivity is the marketplace behind GmodStore (Garry's Mod) and RustStore, run by Everyday AS. As a creator, read your teams and products, check who bought a product (look a player up by Steam ID, then list their purchases), grant or revoke access, manage coupons, subscription plans and prices, cancel subscriptions, publish product versions and media, answer support tickets, and manage team webhook endpoints. Requests are not scoped to one marketplace, so results can span GmodStore and RustStore. Left out: personal access token management, two-factor nonce exchange, permission groups (staff, carry commission rates), user bans and badge assignment (moderation), one-time version download links, webhook signing secrets and the webhook endpoint update (it needs the endpoint url, which is not returned). Not returned: user email, country, avatar and bio, team settings and revenue-share percentages, webhook urls, webhook payloads and receiver responses, ticket attachment links. The rate limit is 300 requests per minute (X-RateLimit headers). The API Policy limits caching to reasonable periods, forbids showing product information or images more than a day older than on the marketplace, and requires a valid Pivity account. Authentication is a personal access token created in the Pivity account settings, sent as a Bearer token; each route needs a scope such as products:read.
Say what should happen.
The workflow builds itself.
What you can do with Pivity (GmodStore)
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Team, 6 operations
create_teamCreate teamPOSTCreate a new creator team on the marketplace. Needs scope teams:write.delete_teamDelete teamDELETEDelete a team for real. Needs scope teams:write.get_teamGet teamGETGet one team: name, description, product and member counts. Needs scope teams:read.list_teamsList teamsGETList all teams visible to the token. Use list_user_teams with your user id from get_me to list only your own teams. Needs scope teams:read. Paged with cursor.list_user_teamsList user teamsGETList the teams a user belongs to (name, product and member counts). Pass your id from get_me to find your own teams. Needs scope teams:read. Paged.update_teamUpdate teamPUTChange a team's name or description; send only the fields to change. Needs scope teams:write.
Coupon, 5 operations
create_product_couponCreate product couponPOSTCreate a real discount coupon buyers can redeem on a product: code, percent 1 to 90 and an expiry under 2 weeks away. Needs scope product-coupons:write.delete_product_couponDelete product couponDELETEDelete a product coupon for real; buyers can no longer redeem it. Needs scope product-coupons:write.get_product_couponGet product couponGETGet one coupon of a product: code, percent, uses limit, bound user and expiry. Needs scope product-coupons:read.list_product_couponsList product couponsGETList the discount coupons of a product. filter: {"code": ["SUMMER"]} or {"boundUserId": ["<user id>"]}. Needs scope product-coupons:read. Paged with cursor.update_product_couponUpdate product couponPUTChange a product coupon; send only the fields to change. Needs scope product-coupons:write.
Media, 5 operations
create_product_mediumCreate product mediumPOSTAdd a real image, video or YouTube medium to a product's public gallery. type=image needs image, type=video needs video, type=youtube needs youtube. Needs product-media:write.delete_product_mediumDelete product mediumDELETEDelete a medium from a product's gallery for real. Needs scope product-media:write.get_product_mediumGet product mediumGETGet one gallery medium of a product: title, type, media reference and display order. Needs scope product-media:read.list_product_mediaList product mediaGETList the gallery media (images, videos, YouTube links) of a product, in display order. Needs scope product-media:read. Paged with cursor.update_product_mediumUpdate product mediumPUTRename a gallery medium or change the marketplace it shows on. Needs scope product-media:write.
Subscription plan, 5 operations
create_product_subscription_planCreate product subscription planPOSTCreate a subscription plan on a product. Add its prices with create_product_subscription_price. Needs scope product-subscription-plans:write.delete_product_subscription_planDelete product subscription planDELETEDelete a subscription plan from a product for real. Needs scope product-subscription-plans:write.get_product_subscription_planGet product subscription planGETGet one subscription plan of a product with its tier, features, entitlements, expiry policy and prices. Needs scope product-subscription-plans:read.list_product_subscription_plansList product subscription plansGETList the subscription plans of a product with tier, features, entitlements, expiry policy and prices. Needs scope product-subscription-plans:read.update_product_subscription_planUpdate product subscription planPUTChange a subscription plan. name, tier and expiryPolicy are required: read the plan with get_product_subscription_plan and send them back with your change. Needs product-subscription-plans:write.
Version, 5 operations
create_product_versionCreate product versionPOSTPublish a real new version of a product by uploading its file; buyers can download it per its release type. Needs scope product-versions:write.delete_product_versionDelete product versionDELETEDelete a product version for real; buyers can no longer download it. Needs scope product-versions:write.get_product_versionGet product versionGETGet one version of a product: name, changelog, release type, file size and hash. Needs scope product-versions:read.list_product_versionsList product versionsGETList the released versions of a product with name, release type, changelog and file size. filter: {"releaseType": "stable"}. Needs scope product-versions:read. Paged.update_product_versionUpdate product versionPUTChange a product version's name, changelog or release type; send only the fields to change. Needs scope product-versions:write.
Attachment, 4 operations
create_ticket_attachmentCreate ticket attachmentPOSTAttach a file to a support ticket, for real. Needs scope ticket-attachments:write.delete_ticket_attachmentDelete ticket attachmentDELETEDelete a file attached to a support ticket for real. Needs scope ticket-attachments:write.get_ticket_attachmentGet ticket attachmentGETGet one ticket attachment: original name, hash and uploader (the download link is not returned). Needs scope ticket-attachments:read.list_ticket_attachmentsList ticket attachmentsGETList the files attached to a support ticket: original name and hash (download links are not returned). Needs scope ticket-attachments:read.
Batch, 4 operations
get_products_batchGet products batchGETGet several products by id in one call (name, price, images, plans, listing state). Needs scope products:read.get_teams_batchGet teams batchGETGet several teams by id in one call. Needs scope teams:read.get_tickets_batchGet tickets batchGETGet several support tickets by id in one call. Needs scope tickets:read.get_users_batchGet users batchGETGet several marketplace users by id in one call: Steam ID, name and ban restrictions. Needs scope users:read.
Message, 4 operations
delete_ticket_messageDelete ticket messageDELETEDelete a ticket message; restore_ticket_message can bring it back. Needs scope ticket-messages:write.get_ticket_messageGet ticket messageGETGet one message of a support ticket: author id, body, read flag and revision info. Needs scope ticket-messages:read.list_ticket_messagesList ticket messagesGETList the messages of a support ticket in the richTextFormat you choose (markdown or plaintext reads best). Needs scope ticket-messages:read. Paged with cursor.update_ticket_messageUpdate ticket messagePUTEdit the text of a ticket message; the previous text stays in the revision history. Needs scope ticket-messages:write.
Purchase, 4 operations
get_product_purchaseGet product purchaseGETGet one purchase of a product: buyer id, source, purchase type, subscription and revoked flag. Needs scope product-purchases:read.list_product_purchasesList product purchasesGETList who has access to a product (purchases, gifts, manual grants) with source and revoked flag. filter: {"userId": "<id>"}. Needs scope product-purchases:read. Paged.list_user_purchasesList user purchasesGETList a user's product purchases, to check whether a player owns your product: filter {"productId": "<id>"}. Includes source and revoked flag. Needs user-purchases:read.update_product_purchaseUpdate product purchasePUTRevoke (revoked=true) or restore (revoked=false) a user's access to a product. This changes real access. Needs scope product-purchases:write.
Subscription, 4 operations
get_product_subscriptionGet product subscriptionGETGet one subscription to a product: subscriber, status, periods, payments, access dates, cancellation and items. Needs scope product-subscriptions:read.get_user_subscriptionGet user subscriptionGETGet one of a user's subscriptions: status, periods, payments, access dates, cancellation and items. Needs scope user-subscriptions:read.list_product_subscriptionsList product subscriptionsGETList the subscriptions to a product: subscriber, status, current period, payments, cancellation and items. customerId narrows to one user. Needs scope product-subscriptions:read.list_user_subscriptionsList user subscriptionsGETList a user's subscriptions: status, periods, payments and items. Needs scope user-subscriptions:read. Paged with cursor.
Webhook endpoint, 4 operations
create_team_webhook_endpointCreate team webhook endpointPOSTRegister a webhook endpoint that receives the team's events. Deliveries are signed; the signing secret is shown on the Pivity webhooks dashboard, not here. Needs team-webhook-endpoints:write.delete_team_webhook_endpointDelete team webhook endpointDELETEDelete a team webhook endpoint for real; it stops receiving events. Needs scope team-webhook-endpoints:write.get_team_webhook_endpointGet team webhook endpointGETGet one team webhook endpoint: description, event filter, channels and disabled flag (the url is not returned). Needs scope team-webhook-endpoints:read.list_team_webhook_endpointsList team webhook endpointsGETList a team's webhook endpoints with event filter, channels and disabled flag (urls are not returned). Needs scope team-webhook-endpoints:read.
Product, 3 operations
get_productGet productGETGet one product: name, descriptions, price, images, subscription plans, views and the marketplaces it is listed on. Needs scope products:read.list_team_productsList team productsGETList the products a team sells (name, price, images, plans, active flag). filter: {"slug": "my-addon"}. Needs scope products:read. Paged with cursor.list_user_productsList user productsGETList the products a user sells (via the user's teams). filter: {"slug": "my-addon"}. Needs scope products:read. Paged with cursor.
Tag, 3 operations
create_ticket_tagCreate ticket tagPOSTAdd a tag to a support ticket. Needs scope ticket-tags:write.delete_ticket_tagDelete ticket tagDELETERemove a tag from a support ticket. Needs scope ticket-tags:write.list_ticket_tagsList ticket tagsGETList the tags on a support ticket. Needs scope ticket-tags:read. Paged with cursor.
Ticket, 3 operations
get_ticketGet ticketGETGet one support ticket: subject, type, status, bug-report flag, hidden and lock state. Needs scope tickets:read.list_product_ticketsList product ticketsGETList the support tickets on a product: subject, status, bug-report flag. filter: {"status": "awaiting_agent"}. Needs scope tickets:read. Paged with cursor.update_ticketUpdate ticketPUTChange a support ticket's status (open, on_hold, locked) or hide it; send only the fields to change. Needs scope tickets:write.
User, 3 operations
get_userGet userGETGet one marketplace user by id: Steam ID, name, last activity and ban restrictions. Needs scope users:read.list_team_usersList team usersGETList the members of a team (user ids and which one is primary). Needs scope team-users:read. Paged with cursor.list_usersList usersGETFind marketplace users, usually by Steam ID: filter {"steamId": "76561198000000000"}. Returns id, Steam ID, name and ban restrictions. Needs scope users:read. Paged.
Attempt, 2 operations
list_team_webhook_endpoint_attemptsList team webhook endpoint attemptsGETList the delivery attempts of one webhook endpoint with status and timing (payloads are not returned). Needs scope team-webhook-endpoints:read. Paged with cursor.list_team_webhook_message_attemptsList team webhook message attemptsGETList the delivery attempts of one webhook message with the HTTP status your endpoint answered. Needs scope team-webhook-messages:read. Paged with cursor.
Review, 2 operations
get_product_reviewGet product reviewGETGet one review of a product: author id, title, body, rating, version and votes. Needs scope product-reviews:read.list_product_reviewsList product reviewsGETList the reviews of a product: title, body, rating 1 to 5, version reviewed and votes. filter: {"rating": "1,2"}. Needs scope product-reviews:read. Paged with cursor.
Revision, 2 operations
get_ticket_message_revisionGet ticket message revisionGETGet one earlier revision of a ticket message. Needs scope ticket-messages:read.list_ticket_message_revisionsList ticket message revisionsGETList the earlier revisions (edits) of a ticket message. Needs scope ticket-messages:read. Paged with cursor.
User review, 2 operations
get_my_user_reviewGet my user reviewGETGet one user review the authenticated user received, by id from list_my_user_reviews. Needs scope users:read.list_my_user_reviewsList my user reviewsGETList the user reviews (reputation -1, 0 or 1 with a comment) the authenticated user received. Needs scope users:read. Paged with cursor.
Webhook message, 2 operations
get_team_webhook_messageGet team webhook messageGETGet one webhook message of a team: event id, event type, channels and time (the payload is not returned). Needs scope team-webhook-messages:read.list_team_webhook_messagesList team webhook messagesGETList the webhook messages (events) sent for a team: event type, channels and time (payloads are not returned). Needs scope team-webhook-messages:read. Paged.
Account, 1 operation
get_meGet meGETGet the account behind the access token: its user record (id, Steam ID, name) and the marketplace tenant. Use the user id with list_user_teams to find your teams.
Background, 1 operation
upload_product_backgroundUpload product backgroundPOSTUpload or replace the product's public page background image. The image must be 1920 x 670px. Needs scope product-media:write.
Badge, 1 operation
list_user_badgesList user badgesGETList the profile badges a user holds (name, description). Needs scope user-badges:read. Paged with cursor.
Big header, 1 operation
upload_product_big_headerUpload product big headerPOSTUpload or replace the product's public big header image. The image must be 900 x 415px. Needs scope product-media:write.
Listing header, 1 operation
upload_product_listing_headerUpload product listing headerPOSTUpload or replace the product's public listing image, for real. The image must be 280 x 120px. Needs scope product-media:write.
Page header, 1 operation
upload_product_page_headerUpload product page headerPOSTUpload or replace the product's public page header image. The image must be 920 x 260px. Needs scope product-media:write.
Price, 1 operation
create_product_subscription_priceCreate product subscription pricePOSTAdd a real price to a subscription plan for a billing interval (month or year), in the smallest currency unit. Needs scope product-subscription-plans:write.
Product purchase, 1 operation
grant_product_purchaseGrant product purchasePOSTGrant a user access to a product for real (a manual assignment, no payment). Get the user id from list_users. Needs scope product-purchases:write.
Product subscription, 1 operation
cancel_product_subscriptionCancel product subscriptionPOSTCancel a customer's subscription to your product for real. Returns the updated subscription with its cancellation details. Needs scope product-subscriptions:write.
Restore, 1 operation
restore_ticket_messageRestore ticket messagePATCHRestore a deleted ticket message, for real: it shows on the ticket again. The vendor documents no response fields for this route. Needs scope ticket-messages:write.
Subscription price, 1 operation
deactivate_subscription_priceDeactivate subscription pricePOSTDeactivate a subscription plan's price for one billing interval, for real. Answers with no body. Needs scope product-subscription-plans:write.
Team webhook endpoint, 1 operation
test_team_webhook_endpointsTest team webhook endpointsPOSTSend a real test event to every webhook endpoint of the team. Answers with no body. Needs scope team-webhook-endpoints:write.
Team webhook message, 1 operation
resend_team_webhook_messageResend team webhook messagePOSTDeliver a webhook message to one endpoint again, for real. Needs scope team-webhook-endpoints:write.
Ticket message, 1 operation
create_ticket_messageCreate ticket messagePOSTPost a real reply on a support ticket; the customer sees it. Needs scope ticket-messages:write.
Use Pivity (GmodStore) from Claude Code, Cursor or Codex
Connect Pivity (GmodStore) in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Pivity (GmodStore) operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Pivity (GmodStore)
- Create your workspace
Sign up free. Nothing to install.
- Connect Pivity (GmodStore) once
Add your Pivity (GmodStore) connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Pivity (GmodStore) integration FAQ
What can you do with the Pivity (GmodStore) integration?
LiveContext exposes 86 operations on Pivity (GmodStore), covering team, coupon, media and subscription plan.
