Skip to content

io.github.yaotsakpo/inbin

by yaotsakpo · remote · local (npm) · no sign-in to list tools · v0.2.0 · published by GitHub user yaotsakpo

Query Inbin's parsed email events (newsletters, invoices, alerts) as typed JSON tools.

Changes · 4

5 tools: 4 change things and 1 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http inbin https://api.inbin.dev/mcp --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

3 info

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

5 tools

Changes things 4Claude Code: ask
  • await_trial_inboxBlock (up to ttl_seconds, max 60) for the one confirmation email on a trial inbox created by create_trial_inbox.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Block (up to ttl_seconds, max 60) for the one confirmation email on a trial inbox created by create_trial_inbox. Pass the exact inbox_address that call returned. The inbox does NOT self-delete or become unusable after a match: it keeps receiving mail and can still be claimed afterward (call claim_trial_inbox any time before it expires) if the human wants to keep using the same address. Call this AFTER you have actually used the address somewhere (signed up, requested a code) -- calling it before that will just expire, since there is nothing to wait for yet. 60 seconds is a hard per-call ceiling, not the inbox's total lifetime: a sender that takes longer than that is not a failure, just call this again with the same inbox_address to keep waiting (the inbox stays valid for its full ~2-week expiry, and you can call this again later too, e.g. to catch a second, later email on the same address). Only treat expired as final once you've retried a few times.

    Annotations the server declares

    • title: Wait for a trial inbox's confirmation
    • readOnlyHint: true
  • await_trial_inbox_claimBlock (up to ttl_seconds, max 60) for a human to finish the EMAIL+CODE step on the claim_url page from claim_trial_inbox.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...claim_trial_inbox. This NEVER returns a credential, at any status. It returns one of three..."

      What this check looks for
    Description, as the server wrote it
    Block (up to ttl_seconds, max 60) for a human to finish the EMAIL+CODE step on the claim_url page from claim_trial_inbox. This NEVER returns a credential, at any status. It returns one of three honest states, not a single 'connected': "claim_pending" (nobody has entered the code yet -- keep waiting or call again), "claimed" (the human proved ownership and a credential was ISSUED, but nothing has used it yet -- a client still needs to be installed with the config from the claim page's 'Advanced' section before anything works), or "client_installed" (some client has actually authenticated with the connection at least once -- a real, observed signal, not an assumption). Each response includes a next_action field telling you exactly what to say or do -- follow it literally rather than guessing. "claimed" is NOT success: do not tell the human it's working until you see "client_installed", and even then, verify it yourself (call list_inboxes or similar through the new connection and read the actual result) before claiming it works for you specifically -- call claim_connection_status later if you need to check again after this chat session, since installing a client can take arbitrarily long and this tool only blocks up to 60s.

    Annotations the server declares

    • title: Wait for the claim page to be finished
    • readOnlyHint: true
  • claim_trial_inboxStart connecting an agent to this inbox address, permanently -- the SAME address.1 finding

    Why it is in this group

    • The description's first verb is "start": a word for a change.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...one-time code Inbin sends there, and a credential is ISSUED. That is NOT the same as the..."

      What this check looks for
    Description, as the server wrote it
    Start connecting an agent to this inbox address, permanently -- the SAME address. Works whether this is a brand-new trial inbox OR one that's already been claimed by a different agent before: more than one agent can independently connect to the same inbox, each getting its own separate, revocable connection. Returns a claim_url immediately -- share it in chat right away. The human clicks it, enters their email, enters the one-time code Inbin sends there, and a credential is ISSUED. That is NOT the same as the connection working yet -- the human still has to install that credential into an MCP client's config before anything can actually use it, and you will never see the credential itself, by design. Call await_trial_inbox_claim afterward to see the human finish the email+code step, then claim_connection_status (repeatedly, possibly much later -- installing a client is not instant) to see whether a client has actually started using it. The inbox must still exist (not yet expired) for this to work; it does not need to still be a TRIAL inbox specifically.

    Annotations the server declares

    • title: Connect an agent to this inbox, permanently
    • readOnlyHint: false
    • idempotentHint: false
  • create_trial_inboxCreate a temporary inbox with NO Inbin account required at all -- usable before the human has signed up for anything.No findings

    Why it is in this group

    • The name "create_trial_inbox" says "create": a word for a change.
    Description, as the server wrote it
    Create a temporary inbox with NO Inbin account required at all -- usable before the human has signed up for anything. Returns the inbox address IMMEDIATELY; it does not wait for anything. Use the address to sign up wherever you need a confirmation sent, THEN call await_trial_inbox with that same address to block for the confirmation -- calling this alone does not get you a confirmation. This inbox is NOT tied to any account yet and expires automatically within about two weeks regardless of use. If the human wants to keep using this SAME address permanently, call claim_trial_inbox: no dashboard visit, no key to copy, and more than one agent can independently connect to the same address over time this way.

    Annotations the server declares

    • title: Create a no-signup trial inbox
    • readOnlyHint: false
    • idempotentHint: false
Only reads 1Claude Code: allow
  • claim_connection_statusRead-only, non-blocking check of exactly which state a claim_trial_inbox connection is in RIGHT NOW: "claim_pending", "claimed" (credential issued, unused), or "client_installed" (…1 finding

    Why it is in this group

    • The name "claim_connection_status" says "status": a word for reading.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...RIGHT NOW: "claim_pending", "claimed" (credential issued, unused), or "client_installed"..."

      What this check looks for
    Description, as the server wrote it
    Read-only, non-blocking check of exactly which state a claim_trial_inbox connection is in RIGHT NOW: "claim_pending", "claimed" (credential issued, unused), or "client_installed" (a client has actually authenticated with it at least once -- real, observed). Never returns a credential. Use this instead of await_trial_inbox_claim when you want to check progress WITHOUT blocking, especially much later than the original chat session -- installing a client into its own config is a human action with no fixed timeline, so polling this occasionally (not in a tight loop) is the right way to check back. Each response includes a next_action field telling you exactly what to say or do.

    Annotations the server declares

    • title: Check a connection's real status
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.2.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http inbin https://api.inbin.dev/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__inbin__claim_connection_status"
    ],
    "ask": [
      "mcp__inbin__create_trial_inbox",
      "mcp__inbin__await_trial_inbox",
      "mcp__inbin__claim_trial_inbox",
      "mcp__inbin__await_trial_inbox_claim"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as inbin. Review it before you use it.