A blog by StabileRewards.

Blog

Approved and Published, on ChatGPT

Cover Image for Approved and Published, on ChatGPT
Cleo Cordell
Author
Cleo Cordell

Direct Answer On August 25, 2026, OpenAI approved Stabile: Loyalty Rewards Agent (v1.0.0), and it is now published in the ChatGPT app directory under Business & Operations. The app is a Model Context Protocol server that gives a shopping assistant four loyalty primitives: check the connection, read reward options for a cart, redeem a reward, and issue reward units after a transaction. It took eight submissions across six months to get there.

We have written a lot on this blog about loyalty being invisible to AI shopping agents.

Today the argument gets a smaller and more concrete form: our own loyalty server is now listed inside one.

Stabile: Loyalty Rewards Agent is live in the ChatGPT app directory.

View the listing ->


What was published

FieldValue
AppStabile: Loyalty Rewards Agent
DeveloperStabileRewards
CategoryBusiness & Operations
Version1.0.0
ApprovedAugust 25, 2026

The app is an MCP server, not a chat wrapper. It exposes four tools:

  • echo — a connection check, so an agent can confirm the server is reachable before it asks anything that matters.
  • get_reward_options — read-only. Given a cart, it returns the reward options that could apply, what each is worth, and what each costs the merchant.
  • redeem_reward — applies a chosen reward to a checkout session. Takes an idempotency key.
  • issue_reward — posts reward units to a customer account after a qualifying transaction. Also takes an idempotency key.

Two of those tools read. Two of them write. The split matters more than it looks, and it is most of the reason the review took as long as it did.


Eight submissions, and what each one was actually about

The version history is not flattering, and it is the most useful part of this post.

RoundDateWhat that submission changedOutcome
v1.0.0Feb 25First submissionRejected
v1.0.1Mar 10Content Security Policy headers, PII removed from logsRejected
v1.0.2Mar 26Corrected destructiveHintRejected
v1.0.3Mar 30Screenshots, annotations, privacy policy overhaulRejected
v1.0.4Apr 17All four annotations stated explicitly on every toolIn review
v1.0.5May 7openWorldHint corrected on the mutating toolsIn review
v1.0.6Jul 12MCP output schemas addedRejected — category mismatch
v1.0.7Aug 12Category moved from Other to Business & OperationsApproved Aug 25

Read down that table and the pattern is hard to miss. Almost none of it was about the product idea. It was about whether the server told the truth about itself.

An MCP tool carries annotations that describe its own behavior: is it read-only, is it destructive, does it reach outside its own system, is it safe to retry. Those flags are the only thing an agent has to reason about consequences before it calls something. A tool that writes a balance and claims to be read-only is not a bug in the usual sense — nothing crashes. It is a lie the agent has no way to detect.

Getting destructiveHint, openWorldHint, and idempotentHint right on four tools took three rounds. Adding machine-readable output schemas took another. Picking a category that matched what the app actually does took one more, and only because Shopping was not in the list.

Six months of review compressed into one sentence: an agent platform will not distribute a tool that cannot describe its own side effects.

That is a reasonable bar. It is also, for anyone building loyalty into agentic commerce, the bar you should expect to be held to everywhere, not just here.


Why a directory listing is the interesting part

A loyalty program that only exists on a storefront is a loyalty program that only exists for people who are already on the storefront.

We have argued this for a while: the buyer may never browse your store, and assistants differ wildly in whether they can even see a loyalty signal. A public signal is necessary but not sufficient — discovery still has to happen.

A directory listing is discovery. It is the difference between hoping an assistant finds a JSON file on your domain and being an installable thing a shopper can add on purpose.

That is the milestone. Not that the software works — it has worked for months — but that it is now reachable.


What has not been earned yet

Being listed is distribution. It is not trust.

The tools that matter here move real value: redeem_reward spends a shopper's points, issue_reward credits them. When those numbers reach a shopper inside a conversation, the shopper has no way to audit them. They will believe the assistant.

Which means the standard for what those tools return is not "plausible." It is "correct, or explicitly unknown." A loyalty server that guesses a balance is worse than one that says it cannot check — the second is a bad experience, the first is a false promise with a dollar sign attached.

So the work that follows this milestone is unglamorous: making every number these tools return traceable to a real merchant program, and making the absence of a number legible as absence rather than as zero.

We will write about that when it is done, not before.


Where to find it

In ChatGPT — the app is listed as Stabile: Loyalty Rewards Agent under Business & Operations.

Open the listing in the ChatGPT app directory ->

On Shopify — if you run a store and want your loyalty program legible to AI shopping agents, the merchant install path has not changed.

Install StabileRewards from the Shopify App Store ->

Free to install · Pay on results: 1% of reward value redeemed + $0.05 per AI-channel transaction · No charge if no rewards are applied.

Questions about the ChatGPT listing specifically: get in touch or email support@stabilerewards.com.

Share