Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
mcp-name: com.eztexting/mcp
Stdio bridge to the EZTexting MCP service at https://mcp.eztexting.com. Use this only when your client doesn't speak Streamable HTTP MCP natively.
Prefer remote. Most modern MCP clients (Claude.ai, ChatGPT, Claude Desktop, Claude Code, Cursor 0.46+, VS Code 1.99+, Windsurf, Cline 3.0+) connect direct to https://mcp.eztexting.com/mcp — no npm, no Node, no child process. See the onboarding guide for copy-paste configs.Thin wrapper around mcp-remote targeting the unified /mcp endpoint. One stdio MCP entry, all 38 tools (some staticly loaded and others discoverable), one OAuth 2.1 PKCE dance. ~3k tokens of catalog (measured).
Point your client at:
https://mcp.eztexting.com/mcpOAuth 2.1 PKCE auto-discovers via /.well-known/oauth-authorization-server. See https://mcp.eztexting.com/ for per-client snippets (Claude Desktop, Claude Code --transport http, Cursor, VS Code type: http, Windsurf, Cline).
Add to claude_desktop_config.json (or equivalent — only if your client lacks remote MCP support):
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}First run: browser opens to https://mcp.eztexting.com/oauth2/.... Sign in. Tokens persist to ~/.mcp-auth/mcp-remote-<version>/<hash>/. Subsequent launches skip the browser.
To force a fresh sign-in, delete that directory.
The unified /mcp endpoint includes all of these. Use the per-sub-server form below only if you want narrow tool catalogs or separate Claude Code identities.
| Sub-server | URL | Tools |
|---|---|---|
messaging | https://mcp.eztexting.com/mcp/messaging | message_send, message_list, message_get, message_template_*, conversation_*, message_report_* |
contacts | https://mcp.eztexting.com/mcp/contacts | contact_*, contact_group_*, contact_field_* |
workflows | https://mcp.eztexting.com/mcp/workflows | wf_list, wf_fetch, wf_save, wf_status, wf_schema, wf_templates, wf_stat, wf_create_from_template |
admin | https://mcp.eztexting.com/mcp/admin | account_details, buy_credits, stat_get, webhook_*, keyword_list |
Tool names are exposed unprefixed; EZTexting's catalog has no cross-sub-server collisions.
Pass --server <name> to scope to one sub-server. Each invocation runs its own mcp-remote child. Remote clients should just point at the sub-server URL directly (e.g., https://mcp.eztexting.com/mcp/messaging) — no flag needed.
{
"mcpServers": {
"eztexting-messaging": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server", "--server", "messaging"]
},
"eztexting-contacts": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server", "--server", "contacts"]
}
}
}Valid names: messaging, contacts, workflows, admin.
git clone https://github.com/eztexting/mcp-server.git
cd mcp-server
npm install
npm run build
node dist/cli.js # unified /mcp endpoint
node dist/cli.js --server messaging # single sub-servermcp-remote owns the auth cache: ~/.mcp-auth/mcp-remote-<version>/<serverUrlHash>/{tokens.json,client_info.json}. One hash per distinct upstream URL.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.