MissU More

One button. One person.
Zero small talk.

Miss U More does exactly one thing: it tells the person you miss that you're thinking of them. No feed, no likes, no group chat that needs managing. You tap. They know.

Start missing someone

We'll email you a sign-in link β€” no password needed.

How it works

  1. 1
    Name your person. One email address. Exactly one β€” that's the whole point.
  2. 2
    They name you back. When you've named each other, you both light up green. Nobody gets notified by a stranger, ever.
  3. 3
    Tap the button. They get it right away β€” on their phone, their desktop, their browser. Then they tap back, and now it's a contest.

See it in action

One button, the same everywhere. These are real screenshots of the app running on a phone, tablet, desktop, and Android.

Need one of these for a store listing or article? You can link directly to any image at missu.fyi/screenshots/.

Where you can get it

This is, we must stress, one button. It did not need a cross-platform strategy. It has one anyway: everywhere you could conceivably be when the missing strikes, the button is there β€” and they all share one score, so it never matters which one you reach for.

Right here, in your browserInstalls to your home screen or dock like a real appAvailable
Installs to your home screen or dock like a real app β€” because it is one.
Your AI assistantClaude, or anything else that speaks MCPAvailable
Claude, or anything else that speaks MCP. Instructions below.
Chrome extensionThe score in your toolbar, one tap to sendAvailable
The score in your toolbar, one tap to send. Get it from the Chrome Web Store.
Firefox extensionThe score in your toolbar, one tap to sendAvailable
The score in your toolbar, one tap to send. Get it from Firefox Add-ons.
AndroidCurrently in closed testingSoon
Currently in closed testing.
iPhoneBuilt and waiting on App Store reviewSoon
Built and waiting on App Store review.
Windows & macOS desktopLives in your tray or menu barWindows now
Windows: submitted to the Microsoft Store and in certification. macOS: still in the queue.

Yes, you can wire it up to your chatbot

It is objectively ridiculous to summon a large language model to press a button you could have pressed yourself. It should still be possible. Miss U More speaks MCP, with exactly two powers β€” read your score, and press the button. Nothing else. Any MCP host that supports OAuth works; point it here:

https://missu.fyi/v1/mcp
Devin CLIdevin mcp add missu https://missu.fyi/v1/mcp
devin mcp add missu https://missu.fyi/v1/mcp β€” it signs in on the spot.
Claude Codeclaude mcp add -t http missu … then /mcp β†’ Connect
claude mcp add -t http missu https://missu.fyi/v1/mcp, then /mcp β†’ Connect. (Claude insists on the extra step.)
Claude appSettings β†’ Connectors β†’ Add custom connector
Settings β†’ Connectors β†’ Add custom connector; paste the URL.
ChatGPTDeveloper mode β†’ add an app with the URL
Turn on Developer mode (Settings β†’ Security and login), then add an app with the URL and OAuth.
Mistral Le ChatIntelligence β†’ Connectors β†’ Custom MCP Connector
Intelligence β†’ Connectors β†’ Add Connector β†’ Custom MCP Connector; paste the URL, pick OAuth2.1, Connect.
Gemini CLImcpServers in settings.json, then /mcp auth
Add {"missu": {"url": "https://missu.fyi/v1/mcp"}} under mcpServers in settings.json, then /mcp auth missu.
Anything elseremote/custom MCP server + OAuth
Add a remote/custom MCP server with that URL and choose OAuth.

Whichever host you use, your browser opens a Miss U More consent screen; once you allow it, the chatbot holds a token that only works for those two powers. See or revoke anything you've allowed under Settings β†’ Connected assistants. Hosts that can't do OAuth can still use a pasted token from Settings β†’ Assistants (MCP).

Or just call the API

Underneath all of it, missing someone is one authenticated POST. Mint a token in Settings β†’ Assistants (MCP), send it as a bearer header, and you have an SDK in whatever language you already have open.

curltwo endpoints, one bearer header
There are exactly two endpoints, and one of them is read-only.
# the score, connection and cooldown
curl https://missu.fyi/v1/me/status \
  -H "Authorization: Bearer $MISSU_TOKEN"

# press the button
curl -X POST https://missu.fyi/v1/missu \
  -H "Authorization: Bearer $MISSU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"source":"api"}'
Pythonrequests.post(..., headers={"Authorization": ...})
import os, requests

r = requests.post(
    "https://missu.fyi/v1/missu",
    headers={"Authorization": f"Bearer {os.environ['MISSU_TOKEN']}"},
    json={"source": "api"},
)
print(r.json()["status"]["miss"])
JavaScript / Nodeawait fetch(..., { method: "POST", headers })
const res = await fetch("https://missu.fyi/v1/missu", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MISSU_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ source: "api" }),
});
console.log(await res.json());
RubyNet::HTTP.post with a Bearer header
require "net/http"
require "json"

res = Net::HTTP.post(
  URI("https://missu.fyi/v1/missu"),
  { source: "api" }.to_json,
  "Authorization" => "Bearer #{ENV['MISSU_TOKEN']}",
  "Content-Type" => "application/json",
)
puts JSON.parse(res.body)
C# / .NETHttpClient with AuthenticationHeaderValue
using System.Net.Http.Headers;
using System.Net.Http.Json;

var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("MISSU_TOKEN"));

var res = await http.PostAsJsonAsync("https://missu.fyi/v1/missu", new { source = "api" });
Console.WriteLine(await res.Content.ReadAsStringAsync());
Gohttp.NewRequest + req.Header.Set("Authorization", …)
req, _ := http.NewRequest("POST", "https://missu.fyi/v1/missu",
    strings.NewReader(`{"source":"api"}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("MISSU_TOKEN"))
req.Header.Set("Content-Type", "application/json")

res, err := http.DefaultClient.Do(req)
PHPfile_get_contents with a stream context
$res = file_get_contents("https://missu.fyi/v1/missu", false, stream_context_create([
  "http" => [
    "method"  => "POST",
    "header"  => "Authorization: Bearer " . getenv("MISSU_TOKEN") . "\r\nContent-Type: application/json",
    "content" => json_encode(["source" => "api"]),
  ],
]));
echo $res;
Rustreqwest client .bearer_auth(token)
let res = reqwest::Client::new()
    .post("https://missu.fyi/v1/missu")
    .bearer_auth(std::env::var("MISSU_TOKEN")?)
    .json(&serde_json::json!({ "source": "api" }))
    .send()
    .await?;
JavaHttpClient.newHttpClient().send(...)
var req = HttpRequest.newBuilder(URI.create("https://missu.fyi/v1/missu"))
    .header("Authorization", "Bearer " + System.getenv("MISSU_TOKEN"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString("{\"source\":\"api\"}"))
    .build();

var res = HttpClient.newHttpClient().send(req, BodyHandlers.ofString());
PowerShellInvoke-RestMethod -Authentication Bearer
Invoke-RestMethod -Method Post https://missu.fyi/v1/missu `
  -Headers @{ Authorization = "Bearer $env:MISSU_TOKEN" } `
  -ContentType application/json `
  -Body '{"source":"api"}'

Every one of those does the same single thing, which is the point. The token acts as you for those two endpoints and nothing else; revoke it any time from Settings.

Settings

The person you miss

When they enter your email too, you'll both light up green.

You

πŸ™‚

Your emails

    We'll email that address a verification link. Once verified, you can sign in with it, and your person can enter any of your emails to connect.

    Assistants (MCP)

    Let an AI chatbot (Claude, or any other MCP-speaking host) check your score and tap Miss U for you. Create a token below and paste it into your chatbot's settings. Anyone holding this token can act as you for those two things β€” nothing else β€” so treat it like a password and revoke it here the moment you're done with it.

      Connected assistants

      Chatbots you've allowed to connect via OAuth. You can revoke their access here; their current session will stop working and they will have to ask again.

        Appearance

        Notifications

        Account

        Password. Add a password so you can sign in without waiting on an email.

        Delete your account and all data, including your profile, history, and connections. This cannot be undone.

        Set a new password

        Connect an assistant

        Your chatbot wants to connect to Miss U More.

        It will be able to read your score and tap the Miss U button for you. It cannot change your person, your emails, your name, or your settings.

        Messages

        No messages yet.