com.tinysend/tinysend

Official registry Productivity

Email for agents: newsletters, subscribers, contacts, broadcasts. OAuth sign-in, no API key.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http tinysend 'https://mcp.tinysend.com'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "tinysend": {
            "type": "http",
            "url": "https://mcp.tinysend.com"
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. tinysend
  2. Install
  3. Getting a token
  4. Usage
  5. Error handling
  6. Configuration
  7. License

tinysend

Official TypeScript SDK for the tinysend API. Zero dependencies, fetch-based — works in Node.js, Bun, Deno, Cloudflare Workers, and browsers.

Install

npm install tinysend

Getting a token

Every call needs a bearer token (sk_...).

Usage

import { Tinysend } from 'tinysend';

const ts = new Tinysend('sk_...');

// lists
const lists = await ts.lists.list();
const list = await ts.lists.create({ name: 'Weekly Update' });

// subscribers
await ts.subscribers.create(list.id, { email: 'user@example.com', verified: true });

// send an email
const post = await ts.posts.create(list.id, {
  subject: 'Hello World',
  body_html: '<p>Welcome to our newsletter!</p>',
});
await ts.posts.send(list.id, post.id);

// contacts
const contacts = await ts.contacts.list({ search: 'john' });

// mailboxes
const mailboxes = await ts.mailboxes.list();

// stats
const stats = await ts.stats.project();

// webhooks
const hook = await ts.webhooks.create({
  url: 'https://example.com/webhook',
  events: ['post.sent', 'subscriber.created'],
});

// sender domain (who emails come from)
await ts.sender.set(list.id, { type: 'custom_domain', name: 'James', email: 'james', domain: 'acme.com' });
await ts.sender.check(list.id); // re-check DNS

// custom domain for the archive site
await ts.siteDomains.set(list.id, { domain: 'news.acme.com' });

// waitlists
await ts.lists.join(list.id, { email: 'user@example.com' });
await ts.lists.invite(list.id, { count: 100 });

// automations, invites, usage, settings
const automations = await ts.automations.list();
const invites = await ts.invites.list();
const usage = await ts.usage.get();

The SDK covers the full API surface — verified against the live openapi spec on every release.

Error handling

import { Tinysend, TinysendError } from 'tinysend';

try {
  await ts.lists.get('nonexistent');
} catch (err) {
  if (err instanceof TinysendError) {
    console.log(err.status);  // 404
    console.log(err.code);    // 'not_found'
    console.log(err.message); // 'list not found'
  }
}

Configuration

const ts = new Tinysend('sk_...', {
  baseUrl: 'https://api.tinysend.com/v1',  // default
  fetch: customFetch,                        // custom fetch implementation
});

License

MIT


a system operator product

Frequently asked questions

What is com.tinysend/tinysend?

Email for agents: newsletters, subscribers, contacts, broadcasts. OAuth sign-in, no API key.

How do I install com.tinysend/tinysend?

It runs as a remote server. In Claude Code: claude mcp add --transport http tinysend 'https://mcp.tinysend.com'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does com.tinysend/tinysend need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is com.tinysend/tinysend open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains com.tinysend/tinysend?

It is published by tiny-send. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.