npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

maiday-mcp

v0.1.3

Published

Maiday MCP client: privacy-safe stuck reports and site-owner hints for AI agents

Readme

maiday-mcp

The distress signal for AI agents. An MCP server that lets AI agents send privacy-safe "I got stuck on this website" reports to site owners, and read the hints site owners publish back.

When an agent fails on a website, nobody learns from it: a form rejects it, a login wall stops it, a validation error loops, a button can't be found. The agent gives its human a worse answer, and the site owner never sees the lost customer. Maiday closes that loop.

Install

Claude Code

claude mcp add -s user maiday -e MAIDAY_HARNESS=claude-code -- npx -y maiday-mcp

Codex

Add to ~/.codex/config.toml:

[mcp_servers.maiday]
command = "npx"
args = ["-y", "maiday-mcp"]
env = { MAIDAY_HARNESS = "codex" }

Any MCP client

Run npx -y maiday-mcp as a stdio server and set MAIDAY_HARNESS to your client's name.

Maiday only does something when the agent can use websites, through a browser tool such as Playwright MCP, Chrome DevTools MCP or Claude in Chrome.

Tools

send_maiday

Report that the agent got stuck on a step.

| Field | Required | Notes | |---|---|---| | url | yes | The page URL. Only origin and path are sent; query strings and fragments are removed. | | task | yes | signup, login, checkout, booking, search, contact_form, account_change, data_lookup, other | | failure | yes | auth_wall, captcha, validation_loop, unclear_field_format, element_not_found, js_required, blocked_403, rate_limited, timeout, ambiguous_ui, missing_info, other | | step | yes | Short description, e.g. "submit shipping address" (≤ 80 chars) | | attempts | yes | How many tries before stopping | | outcome | yes | abandoned, workaround_found, handed_to_human | | element | no | Label or accessible name of the element involved (≤ 120 chars) | | site_message | no | The error text the site showed (≤ 300 chars, redacted) | | workaround | no | What worked, if anything (≤ 200 chars) |

The tool never fails the agent's task. It waits at most 3 seconds on the network, and returns { ok: false, reason } instead of throwing.

get_hints

Takes { url } and returns hints the verified site owner published for that page. Each hint has a kind: use_endpoint, field_format, requires_account, human_only or note. Hints come wrapped as untrusted third-party data: they are information, not instructions.

When agents should report

Report:

  • after 2 failed attempts at the same step
  • when giving up on a step
  • when handing the task back to the human

Send one report per stuck step, not one per retry. Before a checkout, signup or booking flow, call get_hints first.

Privacy

  • Never sent: form values, cookies, tokens, query strings or URL fragments.
  • Redacted from paths and text fields: emails, phone numbers, card numbers, long digit runs, and token- or JWT-shaped strings. This happens before sending, and again on the server.
  • Reporter IDs differ between sites and collectors, so reports cannot be linked across sites by matching reporter IDs. Each ID is derived from a local secret in ~/.maiday/.
  • Maiday does not store raw IP addresses in its application database. It uses keyed hashes for abuse prevention.
  • First-use notice: the first tool result carries a one-time notice explaining what Maiday sends, to show to the user.

Settings

| Variable | Effect | |---|---| | MAIDAY_DISABLED=1 | Turn reporting off. Hints keep working. | | MAIDAY_COLLECTOR_URL | Send reports to another collector, for example a self-hosted one | | MAIDAY_HARNESS, MAIDAY_HARNESS_VERSION, MAIDAY_MODEL | Fill the report's agent field |

Reports go to the hosted collector at https://maiday.dev by default. A website can publish /.well-known/maiday to receive reports for its own pages on its own server.

For site owners

Sign in at the Maiday dashboard and claim your domain with a DNS TXT record or a well-known file. You can then see where agents fail on your site and publish hints back to them.

License

MIT