← All notes

Two directories, two worlds. Zakupomat in Claude the same evening, in ChatGPT after two weeks

· Not by Prompt Alone · episode 5 · Czytaj po polsku

In the previous episode I built, in one evening (and from the bathtub ;-)), an MCP server through which Claude and ChatGPT can work on the shopping list in Zakupomat. In Claude the connection was added right away. In ChatGPT you couldn't add it from the phone at all, and on the computer - only as a plugin from a package. For Zakupomat to be in ChatGPT for everyone, the directory was the only way left. I registered ANSLAN as a developer with OpenAI and... a whole different adventure began.

Because adding an MCP server to your own assistant is one thing. Getting into the directory, where anyone can add it - that's another.

On October 2nd it was time for the directory submissions. And they were two completely different experiences.

OpenAI: a package, a recording, a scan, waiting

Codex had prepared the plugin package for me earlier (yes, sometimes I cheat on Claude ;-)) - the manifest, descriptions, icon, screenshots and 8 test cases. It looked complete. I got stuck in the dashboard, because "the recording link is missing", and Codex couldn't help any further.

Claude compared the package with the documentation and listed what was missing:

  • domain verification - a token under /.well-known/openai-apps-challenge, which didn't exist yet,
  • screenshots aren't allowed - OpenAI only accepts them for tools with their own UI,
  • no test family with the products named in the scenarios,
  • no demo recording.

A funny twist: Claude first repeated after Codex's README that you enter the recording link in the dashboard. The dashboard said otherwise - the link has to be in plugin.json, and the ZIP has to be uploaded again. I asked: "how on earth did you build the package when you don't even have the link to that video yet (the video itself doesn't even exist yet :P)?". One agent repeated the other's mistake, and a human caught it ;-)

Then it got even better. While recording, one of the negative cases was "now order my groceries and pay with my card". Zakupomat doesn't do orders or payments. The model was supposed to refuse. Instead... it asked which store to order from and when I'd like the delivery :-D Luckily it also added that I shouldn't share card details here.

The fix (PR #121): the MCP server's instructions now say explicitly what Zakupomat doesn't do - no orders, no payments, no other people's families, no deleting the family. When you design for agents, you have to say not only what the product can do, but also what it can't. Otherwise the model will, with the best intentions, "fill in" the rest.

More things came up during the review:

  • The test cases from Codex required a data reset before each one, and the fifth one bought bread that the third one had removed from the list. I used some words generally considered offensive, and then proposed a sequence of scenarios that build on whatever the previous ones left behind (PR #122).
  • The tool scan in the OpenAI dashboard disagreed with our annotations. MCP lets you describe every tool with hints, e.g.:
{ "readOnlyHint": false, "destructiveHint": true, "openWorldHint": true }

We'd decided that writing to the family's own list is a "closed world". OpenAI's view is that since other household members can see the list, it's an external system (openWorldHint: true), and overwriting a quantity or a name is irreversible (destructiveHint: true). We gave in (PR #124) and the scan passed.

  • The reviewer credentials form assumes a username and password. Zakupomat has no accounts, so the family key ended up in the "Password" field, with a short explanation in "Username". A product without accounts doesn't fit forms made for accounts ;-)

The plugin went into review on the evening of October 2nd. According to data people collect online, the median review takes about 13 days, and the record holders waited over two months. OpenAI doesn't give any timeline. For us it took exactly two weeks: submitted on October 2nd, approved on October 16th. I published it right away, the same day.

Anthropic: a form and published the same evening

"Shall we try the same thing in Claude?" - I asked that same evening.

At Anthropic it's a form in the portal (10 steps), no recording, but it requires a test account with full data. A separate "Claude Review" family was created with 51 products (PR #125). Each directory has its own test family, because one review would mess up the other's starting state.

The portal detected on its own that we connect via CIMD - even though the agent's README said DCR. The agent admitted the portal was right.

Submitted in the evening. That same evening the dashboard showed "Published", and a moment later Zakupomat was in the Claude directory with the "New" and "Community" labels.

OpenAIAnthropic
Submission formatZIP package with a manifestform in the portal
Demo recordingrequirednot required
Domain verificationtoken under /.well-known/no
Test casesexactly 5 positive and 3 negativetest account with full data
Automated tool scanyes, with an argument over annotationsyes
Time to publication14 daysthe same evening

What's come of it after three weeks

Honestly: still not much, but it's something. As of today (October 18th), 4 families have connected an assistant to Zakupomat. One is our home, another is the test family for OpenAI's reviewers. That leaves two real ones. The first connected Claude at the end of September and still uses it today. The second is the first family from the ChatGPT directory - it created a Zakupomat family overnight and connected it to ChatGPT straight away. Two days after the directory listing went live.

There's still no shopping finished by an assistant, apart from the reviewers' tests. The assistant adds to the list, and in the store you check things off in the app.

But one product decision has already come out of it. Someone asked about importing lists from other apps. I'm not building it. That's what ChatGPT and Claude are for today - you paste your old list or a screenshot and the assistant adds everything to Zakupomat.

What this means for your team

When your product has agent users, assistant directories become a new app store. With their own rules:

  • Boundaries have to be written down explicitly. With the best intentions, the model will fill in features you don't have - including paying with your card ;-)
  • Tool annotations aren't a formality. Directories read them literally and in their own way. A "closed world" to you may be an "open" one to the reviewer.
  • Test cases are a specification. Written in sequence, on real data, they say more about the product than many a document.
  • Forms are made for typical products. If yours is unusual (e.g. no accounts), plan time for explaining that to reviewers.
  • One agent will correct another, but a human has to notice when both are wrong.

At ANSLAN we help prepare systems for working with AI agents - and for AI agents to use them safely.

And Zakupomat itself? You can just grab it and use it: zakupomat.app. Free forever, no ads, no selling data, no subscription. Android, iPhone, the browser - and now also in the Claude and ChatGPT directories. How to connect your assistant: zakupomat.app/en/ai.html.

See you next week :-)