rtfx.pro

pro.rtfx由 rtfx.pro 發布官方發布者v1.0.0更新於 Oct 26, 2026

Publish what Claude makes (HTML, PDF, small site) to a private link only chosen people can open.

已驗證Streamable HTTP可網頁執行效率與工作流檔案與儲存

概覽

AI 產生的概覽

託管的 rtfx.pro MCP 伺服器,讓助理把 HTML 頁面、PDF 和小型靜態網站發佈到私有、受存取控管的連結,並管理分享、版本與瀏覽紀錄。

可以做什麼
  • 把請求中攜帶的 HTML 頁面、PDF 或小型多檔案網站發佈出去並回傳穩定連結;為過大的網站或含二進位檔案的網站預留一次性上傳連結。
  • 列出產物,查看詳情、完整版本歷史、分享名單與瀏覽次數,以及彙總統計。
  • 變更誰可以開啟某個產物,把連結回復到較早版本,或憑確認 slug 永久刪除產物。
  • 檢查目前連線如何驗證,以及執行個體是否正常回應。
適用情境
適合讓 Claude 把做好的到達頁、報告或小型網站發佈成只給指定對象開啟的私有連結,並保留版本、查看誰造訪過。託管版只發佈工具呼叫中攜帶的內容,因此更適合助理已持有的內容,而非磁碟上的檔案。
執行需求
遠端 Streamable HTTP 端點 mcp.rtfx.pro,在 Claude 中作為自訂連接器加入,或用 Claude Code 指令加入。驗證為 OAuth 2.1,含探索與動態用戶端註冊,無需貼上任何內容;作用域為 rtfx:read、rtfx:publish、rtfx:manage。需要 rtfx.pro 帳號,分享、回復與刪除需要 manage 作用域。
安裝前請注意
發佈、分享、回復與刪除都會改動託管服務上的資料;delete_artifact 會永久刪除所有版本、檔案、存取授權與分享連結,並要求提供 confirm_slug。分享與刪除需要 manage 作用域,應只授予必要的作用域。發佈的內容存放在 rtfx.pro 的 Cloudflare 託管基礎設施上,託管版無法讀取本機磁碟路徑。免費方案只保留最近五個版本。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 rtfx.pro,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/pro.rtfx%2Frtfx/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "rtfx-pro": {
      "type": "http",
      "url": "https://mcp.rtfx.pro/mcp"
    }
  }
}

README

artifacts-server

Private, access-gated hosting for landing pages and HTML/Claude artifacts, running entirely on Cloudflare Workers. A public product site at / (plus /docs, /signup and /login) explains the product and lets people start on the Free plan. Sign-in is app-owned and passwordless: rtfx.pro emails a one-time code or magic link, then a host-only rtfx_session keeps the browser signed in. One dashboard at /admin handles publishing, sharing and the gallery of everything shared with you. Artifacts — single HTML files or multi-file static bundles — are published from a web dashboard, a CLI, or an agent session (Claude Code, Hermes). With per-artifact permissions and versioning.

  • 🤖 Agent-native publishing — Claude Code, a native MCP server, Hermes, the CLI and the HTTP API all take the same path a human takes; no separate, weaker agent route. See plugins/rtfx and docs/MCP.md.
  • 👥 Access by identity first — each artifact is private, shared with named people, or open to all signed-in users. Unauthorized and non-existent both return 404.
  • 🔗 Revocable share links — for someone who will not have an account, create a capability URL for exactly one artifact, optionally expiring in 1–365 days. Only a hash is stored.
  • 🕓 Versioning — every re-publish is a new immutable version; roll back within your plan's retention window (free keeps the last 5; paid plans keep everything).
  • 📈 Views log + read receipts — see who viewed each artifact, when, which version, and from where, with an email the first time each named recipient opens it.
  • 🏢 Workspaces & roles — artifacts belong to an account with owner/admin/member/viewer roles; instance privilege is re-derived from config, never read from a table.
  • 🔗 Canonical workspace addresses — every workspace has an address (generated as w-xxxxxxxx; a paid workspace can claim a custom one) and every artifact link is rtfx.pro/<workspace>/<artifact> — e.g. rtfx.pro/yogev/q3-board-report. It is the only URL the product shows or returns: the viewer renders on the app host and frames the sandboxed content origin, which is never an address. Old a.rtfx.pro/<slug>/ links redirect browsers to it. A path on the app host, not a custom domain.
  • 🌐 Public product site — /, /docs, /signup, /login, /privacy and /terms are reachable by anyone, with SEO metadata, sitemap.xml, robots.txt and llms.txt; everything else needs an identity.
  • 🔒 Access-gated dashboard — app-owned email OTP/magic-link sign-in for /admin and the API; the app stores no passwords.
  • 🖼️ One dashboard — publish and manage under Artifacts; everything shared with you under Gallery. Same shell, same nav, same brand.
  • 🔑 API tokens — hashed bearer tokens for server-to-server publishing (Hermes Cloud, CI), scoped, owner-bound and revocable.
  • ☁️ All Cloudflare — Worker + R2 (files) + D1 (metadata). No servers, no database to run.

Stack: TypeScript · Hono · Cloudflare Workers / R2 / D1 / Email Sending · Lemon Squeezy

Not built yet, and deliberately not implied anywhere in the copy: per-link passwords, custom domains for artifacts (branded workspace addresses are a path on the app host, not your own hostname), comments/approvals, a public gallery of artifacts, usage-based billing, and per-seat billing beyond the fixed seats included in each plan. Access is by identity first; share links are separate capability URLs with optional expiry and immediate revocation. The competitive reasoning, and the full table-stakes-vs-differentiators split, is in docs/POSITIONING.md. The public site is one page: rtfx.pro — connect the MCP server, then publish, share, delete.


How it works

                    /, /docs, /signup, /login and legal pages (public)                                        │Browser / CLI ─────────────────────────┼──────────────────────────▶  Worker (Hono)                    ┌──────── app-owned email OTP / magic link ───────┐    │                    │  rtfx_session cookie + users/accounts tables    │────┘                    └─────────────────────────────────────────────────┘                            files · /admin · /api                          │                        ┌───────────────────────┬────────────────────┐      │                        ▼                       ▼                    ▼      │                  R2  (files at            D1 (metadata:        Email +     │                  <slug>/v<N>/…)           artifacts, grants,   billing     │                                           versions, sessions)  webhooks    │
  • /, /signup, /login, /docs, /privacy, /terms, robots.txt, sitemap.xml and llms.txt are public product/crawler pages.
  • rtfx.pro sessions authenticate dashboard/API/artifact requests with a signed rtfx_session cookie created after email-code or magic-link verification.
  • The Worker authorizes per-artifact (who sees what), serves the current version of each artifact, renders the public site and the dashboard, and exposes a JSON API.
  • R2 stores files under <slug>/v<N>/…; D1 stores metadata.

See docs/ARCHITECTURE.md for details.

Prerequisites

  • Node.js 18+
  • A Cloudflare account with a domain (zone) on the account (you'll serve from a hostname you control, plus a separate content hostname if you want the same isolation as rtfx.pro).
  • Cloudflare Workers, R2, D1 and Email Sending enabled.
  • npx wrangler login (authorizes Workers/R2/D1/deploy)

Quick deploy

bash
git clone https://github.com/yogevgab/artifacts-server.gitcd artifacts-servernpm installnpx wrangler login
npm run setup

npm run setup is the simple, single-hostname path: it creates the R2 bucket + D1 database, applies the schema, fills the basic Worker config, deploys, and leaves you to add production-only choices such as a separate content hostname, Email Sending, billing secrets and legal values. For a multi-hostname deployment like rtfx.pro, use docs/SELF_HOSTING.md plus the manual steps below instead of relying on the setup script.

When it finishes, configure Email Sending and SESSION_SECRET, then open https://<your-domain>/signup or /login to create the first account. ADMIN_EMAILS in wrangler.jsonc decides who gets platform-admin rights.

Manual deployment

Step-by-step without the setup script

Deploying with a separate content-only hostname (multiple routes entries, e.g. app + content-host isolation)? npm run setup only supports a single hostname — see docs/DEPLOY_RTFX.md for a worked example runbook.

bash
npm installnpx wrangler login
# 1. Storagenpx wrangler r2 bucket create artifacts-filesnpx wrangler d1 create artifacts-meta        # copy the database_id into wrangler.jsoncnpx wrangler d1 execute artifacts-meta --remote --file schema.sql
# 2. Edit wrangler.jsonc: set route patterns to your app/content hostnames,#    ADMIN_EMAILS, PUBLIC_BASE_URL, CONTENT_HOSTNAMES and the database_id.
# 3. Required secrets / mailnpx wrangler secret put SESSION_SECRET# Optional, only if selling paid plans:# npx wrangler secret put LEMONSQUEEZY_WEBHOOK_SECRET
# 4. Deploy (creates the custom domains)npx wrangler deploy

Email Sending is required for sign-in. Enable it for the domain, verify SPF/DKIM/DMARC, and keep MAIL_FROM inside the Worker send_email.allowed_sender_addresses. The app sends a one-time code or magic link, then issues its own host-only rtfx_session cookie. Fresh deployments do not need Cloudflare Access.

Configuration

All config lives in wrangler.jsonc (vars) plus one secret. See the comments there.

SettingWhat it is
routes[0].patternHostname to serve from (a zone on your account).
ADMIN_EMAILSComma-separated emails with admin rights.
SUPER_ADMIN_EMAILS (optional)The operator/owner account(s). A super admin may manage other admins, and can never be paused or removed — the anti-lockout invariant. Defaults to the first ADMIN_EMAILS entry, so every deployment has one.
MAIL_FROMVerified sender address for OTP/magic-link email. Must match the Email Sending binding.
SESSION_SECRET (secret)At least 32 bytes; signs the app-owned rtfx_session cookie.
LEMONSQUEEZY_WEBHOOK_SECRET (secret, optional)Verifies billing webhooks when paid plans are enabled.
PUBLIC_BASE_URL (optional)Canonical public origin, e.g. https://rtfx.pro. Canonical links, OpenGraph URLs, sitemap.xml and llms.txt are absolute against it, and any other hostname serves a disallow-everything robots.txt. Defaults to https://rtfx.pro (SITE.origin in src/seo.ts).
CONTENT_HOSTNAMES (optional)Hostnames that serve artifact files only — no dashboard, API or product pages.

Usage

Public product site

https://<your-domain>/ — public, no login required. Positions the product, covers use cases and differentiators, and collects /waitlist access requests. Its two CTAs are deliberately distinct: Request access (for people without an account) and Sign in (/login, for people with one). /docs is the public documentation page (publishing, Claude Code/Hermes, the access model, #why-rtfx, FAQ). See docs/PUBLIC_SITE.md for the SEO/crawler surface and the copy rules, and docs/POSITIONING.md for what the copy may claim.

Sign-in

https://<your-domain>/login — public, app-owned sign-in. It emails a one-time code or magic link, verifies it, then sets a host-only rtfx_session cookie. It renders signed-out, already signed-in and paused-account states. There is no password auth and no Cloudflare Access dependency in a fresh deployment.

Dashboard

https://<your-domain>/admin — publish artifacts, manage per-artifact access, upload new versions / roll back, and (admins only) manage people. Every user, admins included, sees only the artifacts they own or belong to; platform admins get no access to other people's artifact content, versions, view log, access list or share links. The Platform section (super admin) lists every artifact as metadata only (owner, size, counts, dates) and offers an audited abuse-delete. The Gallery section at /admin/gallery is filtered to what each viewer may open — what they own plus what has been shared with them. /gallery is kept as a redirect into it; visiting it signed out goes to /login.

People (user management)

Admin-only, in the dashboard and at /api/users. The app owns identity with signed sessions and stores account/user state in D1:

LayerHoldsSource of truth for
rtfx_session cookieSigned email/account identityWho this browser request is
users / accounts tablesstatus, display name, workspace membership, roles and audit stateWhether this app serves them and what they can manage
ADMIN_EMAILS / SUPER_ADMIN_EMAILSPlatform privilegeWho is an operator/admin for the whole instance

The Worker re-derives platform privilege from config, never from a user-writable table. Lifecycle actions can pause/re-enable/remove accounts and revoke API tokens, but API tokens are refused from user-management routes entirely.

CLI

bash
export ARTIFACTS_URL=https://<your-domain># One credential: the artifact commands go to /api/machine/…, which authenticates# this bearer token and nothing else.export RTFX_API_TOKEN=<rtfx_… token>
node cli/artifacts.mjs publish ./page.html --slug my-page --title "My Page"node cli/artifacts.mjs publish ./site/ --slug demo --title "Demo"   # a folder is zippednode cli/artifacts.mjs listnode cli/artifacts.mjs publish ./page-v2.html --slug my-page --note "new hero"  # new versionnode cli/artifacts.mjs versions my-pagenode cli/artifacts.mjs rollback my-page 1node cli/artifacts.mjs grant my-page [email protected]node cli/artifacts.mjs views my-page   # total/unique + recent views lognode cli/artifacts.mjs users                     # directory with role + statusnode cli/artifacts.mjs user-add [email protected]  # invitenode cli/artifacts.mjs user-disable [email protected]  # pause + revoke their tokensnode cli/artifacts.mjs user-enable [email protected]
node cli/artifacts.mjs token-create "hermes-cloud" --owner [email protected] --scopes read,publishnode cli/artifacts.mjs tokensnode cli/artifacts.mjs token-revoke <token-id>

token-* and user-* require an app session with the right platform/workspace role — an API token can't mint or revoke tokens, or change who may sign in.

Remote MCP server (hosted)

rtfx.pro is a remote MCP server. Add it to Claude (claude.ai, Claude Desktop and mobile use the same flow: Customize → Connectors → + Add → Add custom connector) and ask Claude to publish, share and delete. Step by step with screenshots: rtfx.pro/guide.

  • Endpoint: https://mcp.rtfx.pro/mcp (Streamable HTTP)
  • Auth: OAuth 2.1 with discovery, dynamic client registration and client ID metadata documents (CIMD); nothing to paste. Scopes: rtfx:read, rtfx:publish, rtfx:manage.
  • Claude Code: claude mcp add --transport http rtfx https://mcp.rtfx.pro/mcp

The hosted server publishes content sent inside the tool call; it cannot read a path on your disk (use the local plugin below for that). Tools (REMOTE_TOOLS in src/mcp.ts):

ToolWhat it does
publishPublish an artifact from content carried in the request (one HTML page or PDF, or a small multi-file site) and return its stable URL; the same slug appends a new version.
create_upload_linkReserve the destination and return a single-use upload URL for a site too big for publish or containing images, video or other binary files.
list_artifactsList the artifacts the credential can manage (slug, title, URL, type, visibility, live version, size, last update), newest first and paginated.
artifact_detailsEverything known about one artifact: URL, full version history, who it is shared with (viewers and editors) and how often it has been opened.
artifact_statisticsAggregate numbers: versions, files, bytes and views, for one artifact or across everything the credential can reach.
share_artifactReplace who may open an artifact: restricted to named viewers and editors, or everyone in the workspace. Needs the manage scope.
rollback_artifactPoint an artifact's URL back at one of its earlier versions; non-destructive. Needs the manage scope.
delete_artifactPermanently delete an artifact: every version, file, access grant and share link. Requires confirm_slug; needs the manage scope.
doctorReport how this connection is authenticated and whether the instance answers; publishes nothing.

Claude Code plugin (local, stdio alternative)

This repository is also a Claude Code marketplace. Installing the plugin makes publishing part of the conversation rather than a separate step:

/plugin marketplace add yogevgab/artifacts-server/plugin install rtfx@rtfx

Then sign in from the session — no token to copy, paste or store:

/rtfx:login

That runs an OAuth authorization-code flow with PKCE against the instance, on a loopback redirect, and writes a 0600 credential to ~/.config/rtfx/credentials.json (refresh tokens rotate; /rtfx:logout revokes both tokens and deletes it). For CI and scripted use, an environment token is the fallback and takes precedence over any stored sign-in:

bash
export RTFX_API_TOKEN=rtfx_…            # dashboard → Integrations (scopes: read, publish)export ARTIFACTS_URL=https://rtfx.pro   # only when self-hosting
Skill publishing-to-rtfxLoads on its own when someone says "publish this" / "ship it".
/rtfx:publish [path] [slug]Publish or re-publish, then report the URL.
/rtfx:list · /rtfx:versions · /rtfx:rollbackInventory, history, and going back.
/rtfx:login · /rtfx:logoutBrowser sign-in, and revoking it.
/rtfx:setupCheck credentials and connectivity (prints a token's id, never the token).

The publisher (plugins/rtfx/scripts/rtfx.mjs) is dependency-free Node 18+, so it also works as a plain CLI on a machine that has never checked this repo out. It refuses to upload .env, *.pem, *.key and similar, and skips .git/node_modules, printing everything it left out.

This works today and needs nobody's approval — any repository with a valid .claude-plugin/marketplace.json is a Claude Code marketplace. The plugin is not listed in Anthropic's community or official marketplace; what a submission to the first would need is written down in docs/ANTHROPIC_PLUGIN_SUBMISSION.md.

Details, testing and design notes: docs/CLAUDE_CODE.md. Release notes: plugins/rtfx/CHANGELOG.md.

Claude Desktop Extension

Download it from the current release or build it locally:

text
https://github.com/yogevgab/artifacts-server/releases/download/v1.2.0/rtfx.dxt
bash
npm run dxt:packopen dist/rtfx.dxt

That installs the same local MCP server without hand-editing claude_desktop_config.json. Because it runs on the user's machine, it can publish local paths/folders. Leave the optional API token blank when using the browser OAuth credential store; expose access management only when explicitly needed. Full details: docs/CLAUDE_DESKTOP.md.

Local MCP server (stdio alternative)

The hosted server above is the default. The plugin also ships a native local MCP server (plugins/rtfx/scripts/rtfx-mcp.mjs), so a client with no shell to run a command in — Claude Desktop, or anything else that speaks MCP — publishes through tool calls instead. Installing the plugin registers it; for a manual Claude Desktop setup, point claude_desktop_config.json at the script:

json
{  "mcpServers": {    "rtfx": {      "command": "node",      "args": ["/absolute/path/to/plugins/rtfx/scripts/rtfx-mcp.mjs"],      "env": { "RTFX_API_TOKEN": "rtfx_…" }    }  }}

Tools: publish (with a dry_run that uploads nothing), list_artifacts, get_versions, rollback, doctor, and update_access behind an opt-in env var. Same token, same scopes, same bundle filters — it is a wrapper over the same libraries as the CLI, not a second implementation. Zero dependencies, no MCP SDK, Node 18+.

Tool schemas, client configuration and when to use the plugin instead: docs/MCP.md.

API tokens (server-to-server)

Automated publishers — Hermes Cloud, CI, scripts — authenticate with a hashed API token sent as Authorization: Bearer <token>, instead of a browser login:

bash
curl -X POST "$ARTIFACTS_URL/api/machine/artifacts" \  -H "Authorization: Bearer $RTFX_API_TOKEN" \  -F "slug=my-page" -F "title=My Page" -F "file=@./page.html;type=text/html"
  • Only a SHA-256 hash of each token is stored; the plaintext is shown once, at creation.
  • Every token has an owner and so inherits that person's ownership rules — an admin token manages everything, a user's token only their own artifacts.
  • Scopes (read, publish, manage) narrow a token below its owner's rights; they never widen anyone's. Default is read,publish, so a publishing integration can't delete.
  • Tokens are revocable (token-revoke), can carry an expiry, and are revoked automatically when their owner is removed from rtfx.pro.

Two surfaces, on purpose. /api/… is the dashboard's browser/session API: the app-owned rtfx_session identifies you and ordinary role checks decide what you may do. /api/machine/… is the same artifact surface for machines — publish, list, versions, rollback, views, sharing, delete — behind a stricter gate that requires a bearer token and refuses a browser session outright (requireApiToken in src/auth.ts). User management, token issuance and workspace membership are deliberately not mounted there: they require a signed-in app session with the right role, and refuse API tokens whatever the path.

Full request/response contract, error codes and rollback flow: docs/HERMES_CLOUD.md.

Permissions

The app decides who is signed in by verifying an emailed code or magic link and setting an rtfx_session cookie. The Worker decides who sees each artifact: restricted (only granted emails) or everyone (everyone in the artifact's workspace). Platform admins see metadata only, never content. New artifacts are private by default. A direct URL a viewer lacks access to returns 404.

Ownership. Every artifact belongs to the person/workspace that published it (artifacts.owner_email / artifacts.account_id). Instance admins (ADMIN_EMAILS / SUPER_ADMIN_EMAILS) manage everything; ordinary signed-in members manage the artifacts their workspace role allows — their dashboard, /api/artifacts list, version previews and analytics are scoped to artifacts they own/manage. Attempts to read or change someone else's artifact return 404, so a slug they don't own is indistinguishable from one that doesn't exist. Being granted view access never confers management rights, and publishing to a slug someone else owns is refused (409 slug_taken) rather than adding a version to their artifact. Account/user management is admin-only, and API tokens are deliberately refused from those routes.

Artifacts with no owner (published before this model, or by a legacy service token with no email) are manageable by admins only. Run migrations/0005_owner_email.sql on an existing database; it backfills owners from created_by where that was a real email. API tokens live in migrations/0006_api_tokens.sql, and the local user/account tables in 0007 onward are additive.

Accounts / workspaces. An artifact also belongs to an account — the workspace that owns it, and later the thing a plan is billed to (artifacts.account_id). Every person gets a personal workspace automatically; a team workspace can have several members with an account role of owner, admin, member or viewer. member and up manage the workspace's artifacts; a viewer can open them but not change them.

Four ideas are kept apart on purpose, and it is worth reading the row you care about twice:

AnswersComes from
Identitywho you arertfx_session + users
Accountwhose artifacts these areaccounts
Membershipwhat you may do in one workspaceaccount_members
Instance rolewhat you may do to this deploymentADMIN_EMAILS / SUPER_ADMIN_EMAILS

Being owner of a workspace is not being an admin of the instance, and there is no way to become one by writing to the database: instance privilege is re-derived from configuration on every request and is never read from a table. That is the property the test suite guards hardest.

This is entirely additive. account_id is nullable everywhere, owner_email is still checked first, and an artifact the backfill never adopted behaves exactly as it did before. Run migrations/0008_accounts.sql, 0009_account_links.sql and 0010_backfill_accounts.sql on an existing database — 0008 and 0010 are safe to re-run, 0009 adds two columns and is not (check PRAGMA table_info(artifacts) first). None of them is strictly required: the Worker provisions the same rows on first use. See docs/ARCHITECTURE.md for the full model.

Versioning

Each publish to an existing slug creates a new immutable version and makes it live. On the free plan the five most recent versions are retained and older ones expire — their bytes are removed but the history entry stays, so a version list never has holes in it. Paid plans keep every version. Previous versions are kept. Admins preview any version at /v/<slug>/<n>/; roll back from the dashboard or rollback <slug> <n>.

Views log

Each artifact records a view when a signed-in person loads an HTML page (assets, machine/ service-token fetches, and admin version previews aren't counted). The admin dashboard and views <slug> show total/unique counts and a recent log (time · viewer · version · country). Views are retained indefinitely; prune the artifact_views table if it grows large.

Development

bash
npm installnpm run dev        # wrangler dev on http://localhost:8787 (DEV_LOGIN: no sign-in, you are admin)npm test           # vitest (unit + integration via @cloudflare/vitest-pool-workers)npm run typechecknpm run validate:plugin  # structural check of the Claude Code plugin filesnpm run check      # typecheck + tests + plugin validation

Locally there is no real email challenge. To simulate a specific viewer, send an X-Dev-Email header; to simulate a signed-out visitor (e.g. to see /gallery redirect to /login), send X-Dev-Anonymous: true. Both are honored only when DEV_LOGIN=true, which npm run dev sets — never in production.

bash
# once, seed the local DB:npx wrangler d1 execute artifacts-meta --local --file schema.sql

Contributing

Issues and PRs welcome — see CONTRIBUTING.md. Please run npm run check before opening a PR. Security reports: see SECURITY.md — GitHub Security Advisories, never a public issue.

Self-hosting

Everything needed to run your own instance is in this repository; you supply your own Cloudflare account, R2/D1, mail path, session secret, optional Lemon Squeezy billing config, and your own legal values — the /privacy and /terms pages ship as an operator template and say so on the page. See docs/SELF_HOSTING.md.

Open source, and where the line is

The source is MIT and public on purpose: an access-control product should let you read the code that enforces the access. The Worker, the plugin, the local and remote MCP servers, the CLI, the tests and the docs are all here, and the parts that run on your own machine are not held back.

The hosted rtfx.pro service is operated separately from this source. Its customer data, live account configuration, support and billing pipelines and commercial materials are not in this repository — and the name, mark and domain are not part of the MIT grant, which is a copyright licence and does not license trademarks. Fork it and run it; please call it your own thing.

The full boundary — what is intentionally public, what stays out, and why — is in OPEN_SOURCE.md. The threat model, the plugin's credential handling and the local-vs-remote MCP boundary are in SECURITY.md.

License

MIT

來源:README.md,提交 d33d4f2

工具

0
SourceWeft 尚未讀取此伺服器的工具。

版本歷史

1
  1. v1.0.0最新Oct 26, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式必需10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分