# io.github.git-akki/sendpookie (npm · @sendpookie/mcp)

Create and send cinematic digital gifts for birthdays and anniversaries via Claude.

- Trust score: 64/100 (medium)
- Change this week: +25
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@sendpookie/mcp`: 64/100 (this document), [markdown](https://verifymcp.io/servers/git-akki-sendpookie/sendpookie-mcp.md), [page](https://verifymcp.io/servers/git-akki-sendpookie/sendpookie-mcp)

## Channel facts

- Registry: `npm`
- Package: `@sendpookie/mcp`
- Version: `2.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: the declared repository URL returned HTTP 404.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 80 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 79/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1349 tokens (~96/item across 14 items; 14 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 92/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 76% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add git-akki-sendpookie -- npx -y @sendpookie/mcp
```

### Codex

```bash
codex mcp add git-akki-sendpookie -- npx -y @sendpookie/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "git-akki-sendpookie": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@sendpookie/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add git-akki-sendpookie --command npx --arg -y --arg @sendpookie/mcp
```

### Hermes

```yaml
mcp_servers:
  git-akki-sendpookie:
    command: "npx"
    args: ["-y", "@sendpookie/mcp"]
```

### Other

```json
{
  "mcpServers": {
    "git-akki-sendpookie": {
      "command": "npx",
      "args": [
        "-y",
        "@sendpookie/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 64, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 60, +45)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 15, +15)

- [functional improvement] Tool coverage: unverified → 100

### 2026-07-31 (score 0, −3)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 3, −15)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Dependency health: unverified → partial

### 2026-07-28 (score 18, −21)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 39)

First indexed and scored.

## MCP tools (14)

### `pookie_create` (~162 tokens)

Create a new digital gift (Pookie). Returns the gift object including its id and slug. Required: recipientName. Optional: occasion (e.g. birthday, anniversary, graduation), vibe (e.g. romantic, funny, heartfelt), template, tier.

Input parameters:

- `occasion` (string): The occasion for the gift, e.g. birthday, anniversary, graduation, just-because.
- `recipientName` (string, required): The name of the person receiving the gift.
- `template` (string): The visual template ID to use for this gift.
- `tier` (string): The tier level of the gift, e.g. free, premium.
- `vibe` (string): The emotional tone of the gift, e.g. romantic, funny, heartfelt, playful.

### `pookie_list` (~42 tokens)

List all gifts created by the authenticated user, ordered newest first. Returns up to 50 gifts with their id, recipientName, status, slug, and timestamps.

### `pookie_get` (~53 tokens)

Get a single gift by its id, including all its slides in sort order. Use this to inspect a gift before editing or sharing it.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift.

### `pookie_update` (~95 tokens)

Update metadata fields of an existing draft gift. Updatable fields: recipientName, occasion, vibe, template, tier. At least one field must be supplied.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift to update.
- `occasion` (string)
- `recipientName` (string)
- `template` (string)
- `tier` (string)
- `vibe` (string)

### `pookie_delete` (~51 tokens)

Permanently delete a gift and all its slides. This action is irreversible. Use only when the user explicitly confirms deletion.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift to delete.

### `pookie_add_slide` (~306 tokens)

Add a new slide to a gift. The slide is appended after existing slides. Slide types and the content each expects:

\- hero: { headline, subheadline?, backgroundUrl? } — Opening title card.
\- traits: { traits: string[] } — A list of personality traits or things you love about the recipient.
\- photo_wall: { photos: Array<{ url, caption? }> } — A collage of photos with optional captions.
\- chat_replay: { messages: Array<{ sender, text, ts? }> } — Replays a chat conversation, typewriter style.
\- letter: { body, signedBy? } — A heartfelt letter rendered in a nice font.
\- voice_note: { audioUrl, transcriptText? } — Plays a recorded voice message; transcript optional.
\- candle_blow: {} — Interactive birthday-candle animation the recipient blows out.
\- gift_reveal: { giftName, giftDescription?, giftImageUrl? } — Reveals a physical or virtual gift.
\- thank_you: { message?, ctaLabel?, ctaUrl? } — Closing slide with optional reply CTA.

Input parameters:

- `content` (object): Slide-specific content payload. See tool description for shape per slideType.
- `giftId` (string, required): The Firestore document ID of the gift.
- `interactions` (object): Optional interaction configuration for the slide (e.g. reaction buttons).
- `slideType` (string, required): The type of slide to add.

### `pookie_edit_slide` (~88 tokens)

Update the content, interactions, or slideType of an existing slide. Only the fields you provide are changed.

Input parameters:

- `content` (object)
- `giftId` (string, required): The Firestore document ID of the gift.
- `interactions` (object)
- `slideId` (string, required): The Firestore document ID of the slide to edit.
- `slideType` (string)

### `pookie_remove_slide` (~64 tokens)

Remove a slide from a gift by its slideId. The remaining slides keep their existing sort order.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift.
- `slideId` (string, required): The Firestore document ID of the slide to remove.

### `pookie_reorder` (~87 tokens)

Reorder all slides in a gift by providing the full ordered array of slide IDs. Every slide in the gift must be included; their sortOrder is reassigned to match the array index.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift.
- `slideIds` (array, required): All slide IDs in the desired display order, index 0 = first slide.

### `pookie_publish` (~72 tokens)

Publish a gift so the recipient can view it. Returns a shareUrl (e.g. https://sendpookie.com/g/<slug>) and publishedAt timestamp. The gift status changes from 'draft' to 'published'.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift to publish.

### `pookie_unpublish` (~62 tokens)

Unpublish a previously-published gift, taking it offline and setting its status back to 'draft'. The shareUrl will stop working until the gift is published again.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift to unpublish.

### `pookie_insights` (~54 tokens)

Get analytics for a published gift: total view count, page views, unique viewers, first viewed timestamp, and average time spent per slide.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift.

### `pookie_replies` (~46 tokens)

Fetch thank-you replies left by the recipient on a gift's thank_you slide, ordered newest first.

Input parameters:

- `giftId` (string, required): The Firestore document ID of the gift.

### `pookie_upload_url` (~167 tokens)

Get a pre-signed Google Cloud Storage upload URL so the client can upload a file directly without routing through the API. Returns uploadUrl (PUT to this), publicUrl (permanent read URL after upload), storage path, and expiry seconds (900). Allowed file types: image/jpeg, image/png, image/webp, image/gif, audio/webm, audio/mp4, audio/mpeg. Max 10 MB.

Input parameters:

- `fileName` (string): Original file name (optional, used to generate storage path).
- `fileSize` (number): File size in bytes (optional, validated against 10 MB limit).
- `fileType` (string, required): MIME type of the file being uploaded.
- `giftId` (string, required): The gift this file will be attached to.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/git-akki-sendpookie/sendpookie-mcp#diagnostics

## Score history

- 2026-08-03: 64
- 2026-08-02: 60
- 2026-08-01: 15
- 2026-07-31: 0
- 2026-07-30: 3
- 2026-07-28: 18
- 2026-07-27: 39

## Links

- npm package: https://www.npmjs.com/package/@sendpookie/mcp
- Socket report: https://socket.dev/npm/package/@sendpookie/mcp
- Changelog RSS feed: https://verifymcp.io/servers/git-akki-sendpookie/sendpookie-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/git-akki-sendpookie/sendpookie-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/git-akki-sendpookie/sendpookie-mcp
