sendpro-flowmailer-mcp 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,110 @@
1
+ # Repository Health
2
+
3
+ This document captures the repository conventions used here and the reasoning behind them.
4
+
5
+ ## Structure
6
+
7
+ Small MCP servers should stay boring and predictable:
8
+
9
+ ```text
10
+ src/ TypeScript source
11
+ test/ Unit tests
12
+ docs/ Longer documentation
13
+ .github/workflows/ CI, release, security automation
14
+ .github/ISSUE_TEMPLATE/
15
+ README.md Usage and installation
16
+ CHANGELOG.md Human-readable change history
17
+ server.json MCP Registry metadata
18
+ package.json npm package metadata and scripts
19
+ ```
20
+
21
+ Avoid adding framework folders or generated assets unless the project needs them.
22
+
23
+ ## Community Files
24
+
25
+ GitHub's community profile checks expect the basics:
26
+
27
+ - `README.md`
28
+ - `LICENSE`
29
+ - `CONTRIBUTING.md`
30
+ - `CODE_OF_CONDUCT.md`
31
+ - `SECURITY.md`
32
+ - issue templates
33
+ - pull request template
34
+
35
+ This repository currently reports a 100% community profile from GitHub.
36
+
37
+ ## Badges
38
+
39
+ Badges are just image links, usually generated by Shields.io or the service itself. They are useful when they communicate real status.
40
+
41
+ Good badges for this project:
42
+
43
+ - latest GitHub release
44
+ - CI status
45
+ - OpenSSF Scorecard
46
+ - license
47
+ - supported Node.js version
48
+ - TypeScript
49
+ - MCP transport
50
+ - read-only default
51
+ - npm version and npm downloads
52
+
53
+ Avoid badges that imply unverifiable claims, such as "Top ranked", "Trending", or "Best" unless a real service computes that status and the badge links to the evidence.
54
+
55
+ Example badge Markdown:
56
+
57
+ ```markdown
58
+ [![GitHub Release](https://img.shields.io/github/v/release/Mestika/sendpro-flowmailer-mcp?sort=semver&display_name=tag)](https://github.com/Mestika/sendpro-flowmailer-mcp/releases)
59
+ [![npm version](https://img.shields.io/npm/v/sendpro-flowmailer-mcp.svg)](https://www.npmjs.com/package/sendpro-flowmailer-mcp)
60
+ [![npm downloads](https://img.shields.io/npm/dm/sendpro-flowmailer-mcp.svg)](https://www.npmjs.com/package/sendpro-flowmailer-mcp)
61
+ [![CI](https://github.com/Mestika/sendpro-flowmailer-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Mestika/sendpro-flowmailer-mcp/actions/workflows/ci.yml)
62
+ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Mestika/sendpro-flowmailer-mcp/badge)](https://scorecard.dev/viewer/?uri=github.com/Mestika/sendpro-flowmailer-mcp)
63
+ ```
64
+
65
+ ## Branches, Tags, and Releases
66
+
67
+ Use `main` as the stable branch.
68
+
69
+ Use short-lived branches for changes:
70
+
71
+ ```text
72
+ fix/read-only-guard
73
+ docs/release-process
74
+ feat/source-user-tools
75
+ ```
76
+
77
+ Use version tags for released snapshots:
78
+
79
+ ```text
80
+ v0.1.0
81
+ v0.1.1
82
+ v0.2.0
83
+ ```
84
+
85
+ A GitHub Release is built from a tag. The tag is the exact source snapshot; the release is the public changelog entry.
86
+
87
+ ## Security Automation
88
+
89
+ This repository uses:
90
+
91
+ - Dependabot for dependency and GitHub Actions updates.
92
+ - CI on Node 20, 22, and 24.
93
+ - OpenSSF Scorecard for supply-chain posture.
94
+
95
+ Recommended GitHub settings:
96
+
97
+ - Enable secret scanning and push protection if available.
98
+ - Enable private vulnerability reporting.
99
+ - Protect `main` with required CI checks before merge.
100
+ - Delete branches after merge.
101
+ - Prefer squash merges for a tidy history.
102
+
103
+ ## Sources
104
+
105
+ - [GitHub best practices for repositories](https://docs.github.com/en/repositories/creating-and-managing-repositories/best-practices-for-repositories)
106
+ - [GitHub healthy contribution files](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions)
107
+ - [OpenSSF Scorecard Action](https://github.com/ossf/scorecard-action)
108
+ - [Shields.io](https://shields.io/)
109
+ - [Git branching basics](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell)
110
+ - [GitHub releases](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases)
package/docs/tools.md ADDED
@@ -0,0 +1,34 @@
1
+ # Tools
2
+
3
+ The server exposes tools over MCP stdio.
4
+
5
+ ## Read Tools
6
+
7
+ - `flowmailer_request`
8
+ - `flowmailer_endpoint_catalog`
9
+ - `flowmailer_list_messages`
10
+ - `flowmailer_get_message`
11
+ - `flowmailer_get_message_archive`
12
+ - `flowmailer_get_message_error_archive`
13
+ - `flowmailer_get_recipient`
14
+ - `flowmailer_list_resource`
15
+
16
+ ## Write Tools
17
+
18
+ Write tools are registered only when `SENDPRO_READ_ONLY=false`.
19
+
20
+ - `flowmailer_submit_message`
21
+ - `flowmailer_simulate_message`
22
+ - `flowmailer_resend_message`
23
+
24
+ ## Generic Requests
25
+
26
+ Use `flowmailer_request` for endpoints not yet covered by a convenience tool. The path must be relative and start with `/`.
27
+
28
+ In read-only mode the generic request schema only accepts:
29
+
30
+ ```json
31
+ {
32
+ "method": "GET"
33
+ }
34
+ ```
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "sendpro-flowmailer-mcp",
3
+ "version": "0.1.1",
4
+ "description": "Unofficial MCP server for Spotler SendPro, formerly FlowMailer.",
5
+ "type": "module",
6
+ "mcpName": "io.github.mestika/sendpro-flowmailer-mcp",
7
+ "bin": {
8
+ "sendpro-flowmailer-mcp": "dist/index.js",
9
+ "sendpro-mcp": "dist/index.js",
10
+ "spotler-sendpro-mcp": "dist/index.js",
11
+ "flowmailer-sendpro-mcp": "dist/index.js"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "docs",
16
+ "README.md",
17
+ ".env.example",
18
+ "server.json"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.build.json",
22
+ "check": "npm run typecheck && npm test && npm run build",
23
+ "dev": "tsx src/index.ts",
24
+ "inspect": "npx -y @modelcontextprotocol/inspector node dist/index.js",
25
+ "prepack": "npm run build",
26
+ "prepublishOnly": "npm run check",
27
+ "prepare": "npm run build",
28
+ "version:major": "npm version major -m \"Release v%s\"",
29
+ "version:minor": "npm version minor -m \"Release v%s\"",
30
+ "version:patch": "npm version patch -m \"Release v%s\"",
31
+ "test": "vitest run",
32
+ "typecheck": "tsc -p tsconfig.json --noEmit"
33
+ },
34
+ "engines": {
35
+ "node": ">=20"
36
+ },
37
+ "dependencies": {
38
+ "@modelcontextprotocol/sdk": "^1.29.0",
39
+ "dotenv": "^17.4.2",
40
+ "zod": "^4.4.3"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^24.10.1",
44
+ "tsx": "^4.20.6",
45
+ "typescript": "^6.0.3",
46
+ "vitest": "^4.1.6"
47
+ },
48
+ "keywords": [
49
+ "mcp",
50
+ "model-context-protocol",
51
+ "sendpro",
52
+ "spotler",
53
+ "flowmailer",
54
+ "email",
55
+ "transactional-email",
56
+ "sms",
57
+ "api",
58
+ "stdio"
59
+ ],
60
+ "author": "Mestika",
61
+ "license": "MIT",
62
+ "homepage": "https://github.com/Mestika/sendpro-flowmailer-mcp#readme",
63
+ "repository": {
64
+ "type": "git",
65
+ "url": "git+https://github.com/Mestika/sendpro-flowmailer-mcp.git"
66
+ },
67
+ "bugs": {
68
+ "url": "https://github.com/Mestika/sendpro-flowmailer-mcp/issues"
69
+ },
70
+ "publishConfig": {
71
+ "access": "public"
72
+ }
73
+ }
package/server.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.mestika/sendpro-flowmailer-mcp",
4
+ "title": "Spotler SendPro / FlowMailer",
5
+ "description": "Unofficial MCP server for the Spotler SendPro API, formerly FlowMailer.",
6
+ "version": "0.1.1",
7
+ "websiteUrl": "https://github.com/Mestika/sendpro-flowmailer-mcp#readme",
8
+ "repository": {
9
+ "url": "https://github.com/Mestika/sendpro-flowmailer-mcp",
10
+ "source": "github"
11
+ },
12
+ "packages": [
13
+ {
14
+ "registryType": "npm",
15
+ "registryBaseUrl": "https://registry.npmjs.org",
16
+ "identifier": "sendpro-flowmailer-mcp",
17
+ "version": "0.1.1",
18
+ "runtimeHint": "npx",
19
+ "transport": {
20
+ "type": "stdio"
21
+ },
22
+ "environmentVariables": [
23
+ {
24
+ "name": "SENDPRO_ACCOUNT_ID",
25
+ "description": "Spotler SendPro account id.",
26
+ "isRequired": true,
27
+ "isSecret": false
28
+ },
29
+ {
30
+ "name": "SENDPRO_CLIENT_ID",
31
+ "description": "OAuth client id for the SendPro API.",
32
+ "isRequired": true,
33
+ "isSecret": true
34
+ },
35
+ {
36
+ "name": "SENDPRO_CLIENT_SECRET",
37
+ "description": "OAuth client secret for the SendPro API.",
38
+ "isRequired": true,
39
+ "isSecret": true
40
+ },
41
+ {
42
+ "name": "SENDPRO_READ_ONLY",
43
+ "description": "Set to true to allow only SendPro read requests. Defaults to true.",
44
+ "default": "true",
45
+ "isRequired": false,
46
+ "isSecret": false
47
+ }
48
+ ]
49
+ }
50
+ ],
51
+ "_meta": {
52
+ "io.modelcontextprotocol.registry/publisher-provided": {
53
+ "publisher": "Mestika",
54
+ "unofficial": true,
55
+ "legacyNames": ["FlowMailer"],
56
+ "vendor": "Spotler SendPro"
57
+ }
58
+ }
59
+ }