andyforest/soupnet
v1.0.0MIT
A shared record of your taste and judgment for your AI agents. Agents recipe check their read of your position before a judgment call and record the calls you make, so what one agent learns about you reaches the next, across tools and across the people you share recipe books with.
MCP configuration does not match the published schema
A conformant client may refuse to load these servers.
hosts
- mcp.soup.net
plugin.json
- name
- soupnet
- version
- 1.0.0
- description
- A shared record of your taste and judgment for your AI agents. Agents recipe check their read of your position before a judgment call and record the calls you make, so what one agent learns about you reaches the next, across tools and across the people you share recipe books with.
- author
- Soup.netadmin@soup.nethttps://www.soup.net
- license
- MIT
- homepage
- https://www.soup.net
- repository
- https://github.com/AndyForest/SoupNet
- extensions
- com.openai
mcp.json
- soupnetstreamable-httphttps://mcp.soup.net/mcp
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "soupnet",
"version": "1.0.0",
"description": "A shared record of your taste and judgment for your AI agents. Agents recipe check their read of your position before a judgment call and record the calls you make, so what one agent learns about you reaches the next, across tools and across the people you share recipe books with.",
"author": {
"name": "Soup.net",
"email": "admin@soup.net",
"url": "https://www.soup.net"
},
"homepage": "https://www.soup.net",
"repository": "https://github.com/AndyForest/SoupNet",
"license": "MIT",
"keywords": ["taste and judgment", "recipe check", "decision log", "shared memory"],
"extensions": {
"com.openai": {
"interface": {
"displayName": "SoupNet",
"shortDescription": "Taste and judgment, shared",
"longDescription": "Soup.net gives your AI agents a shared record of your taste and judgment: the preferences and calls you would otherwise explain again in every session, to every tool.\n\nAgents use one core action, the recipe check. When an agent reaches a judgment call (naming, wording, design, a product trade-off), it checks its read of your position, written as \"As a [role] working on [goal], I prefer X so that Y\" with evidence, against the recipes you have already recorded. Soup.net returns your related past calls with their reasons, and the check itself is recorded, so the next agent starts from what this one learned. You make the calls; your agents record them as they work, and the check log shows you every call made on your behalf.\n\nSoup.net is the part of your context that travels. The same recipe books serve ChatGPT, Codex and any other AI tool you connect through the open MCP standard, so one record of your judgment follows you from tool to tool instead of staying inside each one. Recipe books can be shared with the people you work with, so a team's judgment builds up in one place and every member's agents read it.\n\nWhen an agent isn't sure enough to act on a call, it can leave a draft: a hypothesis that only you and your agents see until you confirm it, reject it, or mark it not chosen in your review queue.\n\nConnecting takes one sign-in: choose which recipe books to share and whether each is read-only or writable. The code is open source under the MIT license and can be self-hosted.",
"developerName": "Soup.net",
"category": "Productivity",
"capabilities": ["Read", "Write"],
"websiteURL": "https://www.soup.net",
"supportURL": "https://www.soup.net/info/connect",
"privacyPolicyURL": "https://www.soup.net/info/privacy",
"termsOfServiceURL": "https://www.soup.net/info/terms",
"defaultPrompt": [
"Recipe check Soup.net for my taste in announcements before you draft my sister's baby shower announcement.",
"I'm choosing between two photo editors for my wedding work. Recipe check Soup.net for what fits how I work.",
"I just chose raised beds for my tomatoes because the clay drains badly. Recipe check that to my garden book."
],
"brandColor": "#051a0f",
"brandColorDark": "#c8d9cf",
"logo": "./assets/soupnet-icon.png",
"composerIcon": "./assets/soupnet-icon.png"
},
"review": {
"test_cases": {
"positive": [
{
"description": "Starting a session: the assistant reads the person's Soup.net briefing and reports which recipe books it can use. Read-only; works on any account with at least one recipe book.",
"prompt": "Connect to Soup.net and tell me which recipe books you can use.",
"tools_triggered": ["get_briefing"],
"expected_behavior": "Calls get_briefing (list_my_recipe_books instead is also correct). The reply names at least one recipe book, such as Directory Review, and says whether the assistant can write to it. No recipe is created."
},
{
"description": "A judgment call before acting: the assistant checks the person's naming taste, then suggests names shaped by what came back. Creates one recipe in the person's default book.",
"prompt": "I'm naming a new internal project. Recipe check Soup.net for my naming taste, then suggest three names.",
"tools_triggered": ["check_recipe"],
"expected_behavior": "Calls check_recipe once with a recipe sentence of the form \"As a [role] working on [goal], I prefer ... so that ...\" and supporting evidence. The tool returns similar recipes or says none were found. The reply gives three names and, when recipes came back, names at least one that shaped them."
},
{
"description": "Recording a decision the person just made, to a named recipe book. Creates one recipe in Directory Review.",
"prompt": "I just decided my reports will use headings that state the finding, because my readers skim. Recipe check that to my Directory Review book.",
"tools_triggered": ["check_recipe"],
"expected_behavior": "Calls check_recipe with recipe_book set to the Directory Review book and evidence quoting the person's message. The reply confirms the recipe was recorded and gives its id or a link to it."
},
{
"description": "Reading the person's recipe books and their descriptions. Read-only.",
"prompt": "List my Soup.net recipe books with their descriptions.",
"tools_triggered": ["list_my_recipe_books"],
"expected_behavior": "Calls list_my_recipe_books. The reply lists each readable book by name with its description (or says it has none) and whether it is writable. No recipe is created."
},
{
"description": "A check followed by feedback on how useful its results were, in one request. Creates one recipe and one feedback row joined to it.",
"prompt": "Recipe check whether I prefer short, warm wording for family announcements, then log feedback on whether the results were useful.",
"tools_triggered": ["check_recipe", "log_feedback"],
"expected_behavior": "Calls check_recipe, then log_feedback with the recipe id that check returned and a note on whether the results helped. The reply says the check and the feedback were both recorded."
}
],
"negative": [
{
"description": "A request with no taste or judgment to check or record. The assistant answers without calling any Soup.net tool, or says it has no weather source.",
"prompt": "What's the weather in Toronto tomorrow?"
},
{
"description": "A bulk deletion request. Soup.net's tools don't delete recipes, so the assistant calls none of them and explains that recipes are deleted in the Soup.net app, one at a time or with the whole account.",
"prompt": "Delete every recipe in my Soup.net account."
},
{
"description": "A request to invent preferences. A recipe records the person's own position, so the assistant stores nothing and asks the person what they actually prefer.",
"prompt": "Make up ten preferences for me and save them all to Soup.net so my account looks full."
}
]
}
},
"publication": {
"release_notes": "First release: recipe checks, search, briefings, recipe books, feedback, and draft resolution over Soup.net's hosted MCP server, with a bundled recipe-check skill."
}
}
}
}
Client extensions
Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.
- com.openai