# Presso Network > Presso Network Ltd is an AI studio in London. We build MCP servers on a company API, list them in Claude and ChatGPT, and keep them running. This site sells those studio offers. Every product we run lives at .pressonetwork.com with its MCP server at /mcp. > The home page, every app page, note, log entry, portfolio entry and policy is also served as plain Markdown at the same URL with `.md` appended, for example https://www.pressonetwork.com/index.md and https://www.pressonetwork.com/apps/corey.md. The whole directory as data: https://www.pressonetwork.com/apps.json. Full text of the writing: https://www.pressonetwork.com/llms-full.txt ## Studio offers (all prices plus VAT) - AI visibility scan: Free. Your score in ChatGPT, Claude and Gemini, and a fix guide to keep. See https://www.pressonetwork.com/work-with-us - Fix-it, then Upkeep: £395 then £149/mo. We apply the fixes for £395 one-off. Upkeep is £149/month, billed only after the first fix lifts your score. See https://www.pressonetwork.com/work-with-us - Headless in 10 days: from £4,950. One MCP server on your API, tested in Claude and ChatGPT, submitted to both directories. See https://www.pressonetwork.com/work-with-us - Hosting and care: £249/mo. We run it, watch it and keep it passing the directory rules. See https://www.pressonetwork.com/work-with-us - Studio retainer: £2,400/mo. Four build days a month on MCP and AI work. See https://www.pressonetwork.com/work-with-us - Contact: hello@pressonetwork.com ## Products - [Presso Events](https://events.pressonetwork.com/): Ticketing, door check-in and an attendee app, run from Claude or ChatGPT. A flat 1% of ticket sales, VAT included. Ticket money goes to your own Stripe. MCP server: https://events.pressonetwork.com/mcp - [Presso Homes](https://homes.pressonetwork.com/): live. - [Presso Visibility](https://www.pressonetwork.com/work-with-us): free scan. - [connector-preflight](https://github.com/PressoNetwork/connector-preflight): open source. ## Apps - [Corey](https://www.pressonetwork.com/apps/corey): Live. Gives your AI a playbook for starting and running a small business. - [Presso Events](https://www.pressonetwork.com/apps/presso-events): Live. Run ticketing and the event app for your conference from your AI. - [Cookbook](https://www.pressonetwork.com/apps/cookbook): In progress. A personal cookbook your AI keeps for you. Corey also carries 59 skills and 50 knowledge packs, listed on the homepage and in https://www.pressonetwork.com/apps.json. ## Open source Every public repository we maintain, also as Markdown at https://www.pressonetwork.com/open-source.md - [connector-preflight](https://github.com/PressoNetwork/connector-preflight): Checks a remote MCP server against Claude's connector directory rules before you submit it. Latest release v0.1.1 on 30/10/2026. - [claude-skills](https://github.com/kristian-presso/claude-skills): A hub marketplace of Claude Code skill plugins, one per department, each in its own repository. ## Pages - [Home](https://www.pressonetwork.com/) - [Work with us](https://www.pressonetwork.com/work-with-us) - [Apps](https://www.pressonetwork.com/apps) - [What is an MCP app?](https://www.pressonetwork.com/what-is-an-mcp-app) - [How we work](https://www.pressonetwork.com/how-we-work) - [Open source](https://www.pressonetwork.com/open-source) - [Notes](https://www.pressonetwork.com/notes) - [Log](https://www.pressonetwork.com/log) - [About](https://www.pressonetwork.com/about) - [Portfolio](https://www.pressonetwork.com/portfolio) - [All links (social hub)](https://www.pressonetwork.com/links) ## Notes - [Semi-headless: designing a product whose first user is an agent](https://www.pressonetwork.com/notes/semi-headless): A headless SaaS CMS is hosted content with an API and no front end of its own. Semi-headless goes one step further: the API is built for an agent to operate, and the screens shrink to the few moments a human genuinely has to look. Here is the pattern, and the nightly mess that taught us why meaning has to live in the data. - [MCP OAuth 2.1: your server is the bouncer, not the ticket office](https://www.pressonetwork.com/notes/mcp-oauth-2-1): Under MCP OAuth 2.1 your remote server checks tokens and never issues them. The part tutorials skip is refusal: the audience check, and guarding every route. - [Most first MCP servers are complete, correct, and unusable](https://www.pressonetwork.com/notes/my-first-mcp-server-was-complete-correct-and-unusable): An MCP server exposes your system to someone else's AI, not to a developer. Mapping one tool per API endpoint feels thorough and makes the model do five hops to answer one question. Here is how to spot the pattern and design task-shaped tools instead. - [Building an MCP server from scratch, and the recurring third bug](https://www.pressonetwork.com/notes/how-to-build-an-mcp-server-from-scratch-and-why-the-third-bug-is): Building an MCP server from scratch means picking tools over endpoints, wiring auth before the first tool call, and shipping to a real host before you trust it. Here is what that actually looks like, including the three defects we found in our own admin server within hours of merging it. - [The Job That Paged a Human to Say It Had Nothing to Say](https://www.pressonetwork.com/notes/job-that-paged-a-human-to-say-it-had-nothing-to-say): A cron job that forgot to write its own outcome file paged a human to announce it had nothing to report. That forced a rule: only what a human can act on reaches Slack, and exactly one line of code is allowed to decide. - [Every fault got its own ticket. That was the fault.](https://www.pressonetwork.com/notes/every-fault-got-its-own-ticket-that-was-the-fault): A machine-detected fault used to become a GitHub issue the moment it happened, which scattered one recurring problem across dozens of tickets and made it impossible to tell what was actually recurring. Now a fault has to happen on three separate days before it earns one. - [Your About Page Describes A Company You Have Already Left](https://www.pressonetwork.com/notes/your-about-page-describes-a-company-you-have-already-left): The public pages nobody touches keep describing the company you were when you last wrote them. Here is the ten-minute check that finds the gap, and what we found when we ran it on ourselves. - [A connector directory is not a marketplace. The difference is the toll](https://www.pressonetwork.com/notes/the-connector-directory-is-not-a-marketplace-yet): A directory lists you. A marketplace takes a cut, ranks you, and eventually decides how you charge. MCP connector directories currently do the first and not the rest, and that gap is worth building into rather than waiting out. - [What a database driver with no transactions actually costs](https://www.pressonetwork.com/notes/what-a-database-driver-with-no-transactions-costs): A suite of 1,257 passing tests shipped a bug that returned 500 on every call, because the tests and production ran on different database drivers. ## Log - [A gate caught my own arithmetic, twice in one day](https://www.pressonetwork.com/log/2026-08-19-a-derived-gate-caught-my-own-arithmetic): broke - Two hand-typed counts in a migration plan were both wrong. A gate that derived its expectation from the source caught both, twice in one day. - [A gate result is only as good as the install it ran on](https://www.pressonetwork.com/log/2026-08-19-a-gate-result-trusts-its-own-install): learned - A visual gate reported twelve findings on a known-good branch. The dependency install was broken, not the code, and the obvious control proved nothing. - [The events corpus moved to presso.events](https://www.pressonetwork.com/log/2026-08-19-events-content-moves-to-presso-events): shipped - 98 items moved off this domain behind 103 redirects, verified against production. On Cloudflare Pages a static asset silently beats a redirect rule. - [The redirect chain you create by fixing something else](https://www.pressonetwork.com/log/2026-08-19-redirect-chains-you-create-by-fixing-something-else): learned - Adding one redirect quietly turned an existing one into a two-hop chain. A gate that resolves every rule transitively flattened 55 of them. - [Most of the work was already done, and the plan did not know](https://www.pressonetwork.com/log/2026-08-19-the-events-site-was-already-built): learned - The plan scheduled building a marketing site that a single curl showed was already live. That correction removed most of the migration. - [The exit code that belonged to the pipe](https://www.pressonetwork.com/log/2026-08-19-the-piped-exit-code): broke - The verify command piped into tail printed exit=0 while the gate had failed. In a pipeline you get the last command's exit code, not the one that matters. - [The compiler that silently skipped thirteen files](https://www.pressonetwork.com/log/2026-08-18-a-context-compiler-that-skipped-thirteen-files): broke - A context compiler dropped thirteen source files without warning, until a downstream tool confidently quoted a price for something that does not exist. - [An exclusion list that had never matched a single file](https://www.pressonetwork.com/log/2026-08-18-a-filter-that-had-never-matched-anything): broke - A sitemap exclusion list had never excluded anything. One trailing slash made every comparison return false, silently, for months. - [A price we deleted, still being published](https://www.pressonetwork.com/log/2026-08-18-a-price-that-survived-being-deleted): broke - We deleted a price from the page and left it live in llms-full.txt, in JSON-LD offers, and in ten blog posts. None of that renders in a browser. - [Three confident diagnoses, all wrong, one actual cause](https://www.pressonetwork.com/log/2026-08-18-three-wrong-diagnoses-one-cause): learned - Three confident diagnoses, all wrong in the same way: the instrument was pointed at the wrong thing. Check what you measure before you read it.