mcpField
C
chasa

chasa

リモート
github.com/docracy1金融データ01 日前に更新
リポジトリ

chasa について

docstocは、フリーランサー向けに未払い請求書の情報からフォローアップメールを作成し、遅延日数に応じて文面の調子を調整します。メールは送信せず、草稿をメールアプリにコピーして使います。MCPの読み取り専用ツールは公開され、草稿作成にはセッションまたはAPIキーが必要です。

主な機能

  1. 01延滞期間に応じた督促メールの草稿
  2. 02柔らかめ・強め・短めへの書き換え
  3. 03CSVから請求書を取り込み
  4. 04請求書の経過日数ボードでの管理
  5. 05公開のMCP読み取り専用ツール

活用シーン

  1. 01未払い請求書のリマインダー作成
  2. 02延滞が続く請求書への強めの連絡準備
  3. 03CSVファイルから請求書データを読み込み
  4. 04経過日数ボードで未払い請求書を確認

MCP 対応

https://api.docstoc.io/mcp でMCPエンドポイントを提供します。読み取り専用ツールは公開され、draft_chase_emailツールにはセッションまたはAPIキーが必要です。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://api.chasa.io/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

docstoc

未払いの請求書を貼り付けると、滞納日数に応じた適切なトーンの督促メールが作成されます。

docstocがクライアントにメールを送信することはありません — Gmail、Outlook、または Apple Mail にコピーして使える督促メールの下書きを作成します。トーンは滞納日数に応じて変化します(友好的 → 強め → 直接的)。

ライブ URL

URL
マーケティングhttps://docstoc.io/
アプリ(ツール)https://docstoc.io/app/
ログインhttps://docstoc.io/app/login
コネクターhttps://docstoc.io/app/connector
管理https://docstoc.io/app/admin
APIhttps://api.docstoc.io
MCPhttps://api.docstoc.io/mcp — 読み取り専用ツールは公開されています。draft_chase_email にはセッションまたは API キーが必要です

Worker の PUBLIC_APP_URL は https://docstoc.io です(マジックリンク、OAuth コールバック、Stripe のリターン URL、ダイジェストリンク)。

旧ドメインの chasa.io / api.chasa.io は docstoc に 301 リダイレクトされます(Pages の _middleware.ts と Worker のリダイレクト)。プロバイダーコンソールの URI については、scripts/oauth-redirect-uris.md を参照してください。

本番公開チェックリスト

  1. Cloudflare Pages プロジェクト chasa に docstoc.io を追加し、Active になるまで待ちます。
  2. www.docstoc.io → ルートドメイン:apps/web/functions/_middleware.ts が処理します(web を再デプロイ)。
  3. chasa.io / www.chasa.io → docstoc.io:同じミドルウェアが処理します。
  4. api.chasa.io → api.docstoc.io:apps/worker/src/lib/legacyHostRedirect.ts の Worker ミドルウェアが処理します。
  5. api.docstoc.io に OAuth リダイレクト URI を登録します — scripts/oauth-redirect-uris.md を参照してください。
  6. DMARC の設定は任意です:./scripts/dmarc-remove-rua.sh(_dmarc.docstoc.io から rua= を削除します)。
  7. ./scripts/go-live-verify.sh を実行します。

順序は問いません。ブラウザー向けリンクは、リクエストが届いたオリジンから生成されるため(下記の「アプリのオリジン解決」を参照)、どちらを先にデプロイしても pages.dev と chasa.io の両方が引き続き動作します。

アプリのオリジン解決

マジックリンク、ログイン後のリダイレクト、Stripe のリターン URL、チームへの招待には、PUBLIC_APP_URL ではなく、ユーザーが実際にアクセスしているオリジンが使われます。Pages の /api プロキシはこれを X-Docstoc-App-Origin として転送し、Worker は lib/appUrl.ts の許可リスト(PUBLIC_APP_URL、docstoc.io、www.docstoc.io、旧 chasa.io ホスト、*.pages.dev のプロジェクト/プレビューホスト、localhost)に一致する場合に限り、その値を受け入れます。これにより、プレビューのデプロイが独立して動作し、ドメインの切り替えをダウンタイムなしで行えます。

信頼できるオリジンを伴わずに届くリクエスト — api.docstoc.io に直接届くプロバイダーの OAuth コールバックと、ダイジェスト cron — は、引き続き PUBLIC_APP_URL にフォールバックします。


製品仕様

プランと料金
プラン料金AI 下書きチームの席数備考
Free$0月 5 件(サーバー側で適用)1(オーナーのみ)下書きの作成にサインアップは不要。アップグレードするにはサインイン
Pro月額 $14.99無制限5(オーナー+招待ユーザー)ワークスペースの定額料金 — 席ごとの料金ではありません。最も人気
Business月額 $39.99無制限20スマート返信、リスクスコア、督促状、証明書のブランディング、SSL の自動化

Stripe の価格 ID は apps/worker/wrangler.toml にあり、STRIPE_PRICE_SOLO(Pro に対応)、STRIPE_PRICE_PRO / STRIPE_PRICE_ENTERPRISE(Business に対応。いずれもシークレットではありません)として定義されています。請求ポータルと Webhook が accounts.plan と is_paid を更新します。

プラン別機能一覧
機能FreePro+
AI による督促メールの下書き(延滞日数に応じたトーン)5 件/月無制限
15 種類以上のコピー&ペースト可能なメールテンプレート(/free-templates/)✓✓
請求書の CSV アップロード(ツール)✓✓
請求書の手動リスト+経過日数ボード(ツール)✓✓
より柔らかく/強めに/短く書き換え—✓
お礼、クライアントへの返信、3 ステップの連続メール、SMS/WhatsApp の下書き—✓
クライアント CRM+連絡先メモ—✓
経過日数の同期(ツール → サーバー)—✓
リマインダーカレンダー(予定されている督促日)—✓
督促タイムライン+送信済み/支払い済みのマーク—✓
毎日の督促ダイジェストメール(米国東部時間午前 9 時、承認後に送信)—✓
リマインダーのスヌーズ+支払い済みのマーク後に停止—✓
トラッキング対象の HTML でのメール開封/クリック追跡—✓
デフォルトの支払いリンク(Stripe、PayPal、Venmo、Zelle…)—✓
Zapier テンプレート(FreshBooks、Wave、Zoho Books)—✓
スマート返信分類器+支払い予定日の検出—Business
クライアントの支払いリスクスコア—Business
正式な請求書+回収証拠パック—Business
カスタム証明書のブランディング+SSL の自動化—Business
カスタムブランディング(ロゴ、延滞手数料のヒント)—✓(管理者ロール)
アウトバウンド Webhook(chase.drafted、chase.sent、…)+HMAC 署名—✓(管理者)
クリック追跡(トラッキング対象のコピー用 HTML)—✓
チームへの招待(管理者/メンバーロール)—✓
クラウドストレージからの PDF インポート(Dropbox、OneDrive、Box)—✓
QuickBooks Online+Xero の延滞請求書インポート—✓
HTTP API+API キー(/api/v1/chase/draft)—✓
API キー経由の Zapier/Make—✓

ワークスペースのロール: 所有者は常に管理者です。招待されたメンバーは Pro+ の機能を使用できます。管理者限定の操作:ブランディング、Webhook、コネクターの OAuth 接続/インポート、API キーの CRUD、チームへの招待。

アプリのルート(/app/*)
ルート目的
/ツール — 請求書リスト、AI による下書き、CSV/PDF インポート、複数選択による一括操作
/loginマジックリンクログイン+Cloudflare Turnstile
/accountプラン、請求ポータル、支払いリンク
/teamメンバーの招待、ロール(Pro+)
/clientsクライアント CRM(Pro+)
/brandingロゴ+延滞手数料のヒント(ワークスペース管理者)
/webhooksアウトバウンド Webhook URL(ワークスペース管理者)
/connectorクラウドストレージ+QBO/Xero OAuth+API キー
/admin内部管理ダッシュボード(別個の Cookie)

/login と /admin を除くすべてのアプリルートでは、セッションが必要です。認証されていないユーザーは /login にリダイレクトされます。SPA の分析機能には Cookie の同意が必要です(GDPR)。

i18n(EN+ES)

Docracy と同じパスを使用します。apps/web/app/src/lib/i18n/ に軽量なカタログを配置しています(i18next は使用しません)。ログイン画面、サイドバー、「その他」シートに LocaleProvider と EN|ES 切り替え機能があります。P1 ではログイン画面/シェル/ウェルカム画面に対応しています。次に、アプリの残りの部分へカタログを拡張します。設定は chasa_locale に保存されます。マーケティング HTML は、後の作業まで英語のままです。

マーケティングと SEO(apps/web/public/ 内の静的 HTML)
  • 価格、FAQ の JSON-LD、競合他社との比較を含むホームページ
  • SEO ランディングページ:/invoice-follow-up、/payment-reminder、/overdue-invoice、/chase-invoices、/freelancer-invoice-follow-up
  • /features/(インデックス、AI のトーン、テンプレート)、/docs/、/ai、/about
  • /blog/(3 記事+動的な post.html)
  • /free-templates/ — 自動生成されたテンプレートページ 15 件+インデックス
  • 法的ページ:/privacy、/terms、/imprint
  • sitemap.xml、robots.txt、404.html、Cookie 同意、スクロール深度分析
  • セルフホストフォント(Google Fonts は不使用);_headers による CSP の適用

apps/web/scripts/generate-free-templates.mjs を編集した後、無料テンプレートを再生成します:

npm run generate:templates --workspace apps/web

アーキテクチャ

モノレポ(npm workspaces):

パッケージスタックデプロイ先
apps/webReact 18 + Vite + React RouterCloudflare Pages(chasa)
apps/workerHono + Cloudflare Workers + D1 + Workers AIapi.chasa.io
apps/web/
  app/              React SPA (/app/*) — lazy-loaded routes, AccountProvider
    src/pages/tool/     Tool module (components, CSV import, aging sync)
    src/pages/connector/ Connector module (OAuth, API keys)
  public/           Static marketing site + fonts + _headers
  scripts/          copy-fonts, generate-free-templates, validate-static-html

apps/worker/
  src/routes/       HTTP handlers (auth, billing, emails, aging, mcp, …)
  src/lib/          auth, ai, billing, schemas (Zod), rate limits, webhooks
  migrations/       D1 SQL (0001–0011)

データ: Cloudflare D1(chasa-db)。OAuth トークンは保存時に暗号化されます(AES-GCM、TOKEN_SECRET)。セッションは sessions テーブルに保存されます。マジックリンクは一度だけ使用できます(アトミックに消費)。

AI: Cloudflare Workers AI(@cf/meta/llama-3.1-8b-instruct-fp8)。インジェクションを軽減するため、プロンプトではユーザーコンテンツを区切り文字で囲みます。

API サーフェス(worker)
プレフィックス目的
/api/authマジックリンクのリクエスト/検証、ログアウト、Turnstile 設定
/api/accountプロフィール、ブランディング
/api(emails)generate-email、rewrite-email、generate-thank-you、generate-reply、generate-sequence、generate-sms
/api/billingStripe のチェックアウト、ポータル、Webhook
/api/agingエイジングボードの CRUD とアトミックな一括同期
/api/clientsクライアント CRM
/api/reminders督促リマインダーのカレンダー
/api/teamワークスペースのメンバーと招待
/api/webhooksアウトバウンド Webhook の CRUD
/api/connectorレガシー API キーの CRUD
/api/account/connectorsクラウドおよび会計サービスの OAuth
/api/trackingトラッキング対象のコピーとクリック統計
/api/analyticsイベントのトラッキングとページビューの集計
/api/v1/chase/draft公開 HTTP API(Bearer chasa_… キー)
/api/admin管理者ダッシュボード API
/api/blogD1 の公開ブログ記事
/api/csp-reportCSP 違反レポート
/mcpMCP JSON-RPC(下書きツール、テンプレート一覧)
/api/t/:idクリック時のリダイレクト(許可リストに登録された URL のみ)

セキュリティとコンプライアンス(実装済み)

  • 無料プランの利用上限: 月 5 件の AI 下書き。クライアント側ではなく D1(ai_usage)で適用
  • レート制限: AI 下書き、MCP、アナリティクス、管理者ログイン(D1 バケット)
  • Turnstile: シークレットが設定されている場合、本番 HTTPS ではフェイルクローズ。メールアドレスごとにマジックリンクの送信間隔を 60 秒に制限
  • HKDF トークン用途: セッション、マジックリンク、API キー、管理者、招待、OAuth state、Webhook 署名に個別のキーを使用(検索時はレガシーハッシュにもフォールバック)
  • セッションローテーション: マジックリンクでのログイン時に以前のセッションを無効化。管理者ログイン時に管理者セッションをクリア
  • セッションクリーンアップ: 毎日の cron で期限切れのセッション、マジックリンク、レート制限バケットを削除
  • RBAC: ブランディング、Webhook、コネクター OAuth、API キー、チーム招待にはワークスペース管理者権限が必要
  • 入力検証: すべての JSON API ルート(auth、emails、clients、team、webhooks、billing、admin、MCP の draft args)で Zod スキーマを使用
  • Stripe Webhook: イベント ID による重複排除(stripe_events)
  • アウトバウンド Webhook: X-Chasa-Signature: sha256=… HMAC
  • クリックトラッキング: リダイレクト先は、トラッキング対象のメール作成時に保存された URL のみに限定
  • Webhook URL: SSRF チェック(localhost/プライベート IP を拒否)
  • OAuth state: タイミングセーフな HMAC 比較
  • CSP: Pages でポリシーを強制。report-uri → /api/csp-report
  • GDPR: Cookie の同意を SPA アナリティクスの利用条件とし、ページビューに訪問者 ID を付与せず、集計のみ実施
  • シークレット: コミット禁止 — wrangler secret put …

ローカル開発

npm install
npm run dev:worker   # wrangler dev --local, http://127.0.0.1:8787
npm run dev:web      # vite, http://localhost:5173 (proxies /api to worker)

RESEND_API_KEY がない場合、マジックリンクは worker のコンソールに出力されます。URL をコピーしてブラウザーで開いてください。

品質チェック
npm run lint          # ESLint (web app + worker)
npm run test          # Vitest (schemas, crypto, dates)
npm run typecheck     # tsc worker + vite build web

CI(.github/workflows/ci.yml)はすべての PR で lint → test → 静的 HTML 検証 → typecheck を実行します。CLOUDFLARE_API_TOKEN が設定されている場合、main への push 時に worker と web を自動デプロイします。

手動デプロイ
npm run deploy:worker
npm run deploy:web    # builds (copies fonts) then pages deploy

スキーマ変更後:

cd apps/worker
wrangler d1 migrations apply chasa-db --local    # dev
wrangler d1 migrations apply chasa-db --remote   # production

マイグレーション 0001~0011 には、プラン、管理者/アナリティクス、ブランディング、Webhook、API キー、クラウドコネクター、クライアント/エイジング、パリティ機能、セキュリティ強化(レート制限、AI 利用状況、Stripe の冪等性、トラッキングリンクの許可リスト)が含まれます。

Cloudflare Turnstile(ボット対策)

/api/auth/request と管理者ログインを保護します。

  1. Cloudflare Dashboard → Turnstile → Add widget
  2. ホスト名:chasa-71s.pages.dev、chasa.io、localhost
  3. サイトキー → wrangler.toml の [vars] にある TURNSTILE_SITE_KEY
  4. シークレット → wrangler secret put TURNSTILE_SECRET_KEY
  5. Worker を再デプロイします。ログイン UI は GET /api/auth/config から設定を読み込みます。

ローカル/キー未設定の場合: コンソールに警告を表示し、検証をバイパスします。テストキー:

値
サイトキー1x00000000000000000000AA
シークレットキー1x0000000000000000000000000000000AA

クラウドの初回セットアップ

  1. cd apps/worker && wrangler d1 create chasa-db — database_id を wrangler.toml に貼り付けます

  2. wrangler d1 migrations apply chasa-db --remote

  3. Stripe(まずテストモードで): 定期購入の Price を2つ作成します(Pro $14.99、Business $39.99)。price_… ID を wrangler.toml にコピーします:

    • STRIPE_PRICE_SOLO、STRIPE_PRICE_PRO、STRIPE_PRICE_ENTERPRISE
  4. wrangler secret put TOKEN_SECRET — openssl rand -hex 32

  5. wrangler secret put STRIPE_SECRET_KEY(まずテストキーを設定)

  6. Stripe webhook → https://api.chasa.io/api/billing/webhook — イベント:checkout.session.completed、customer.subscription.deleted → wrangler secret put STRIPE_WEBHOOK_SECRET

  7. wrangler secret put RESEND_API_KEY — Resend で送信ドメインを検証します

  8. Turnstile — 上記を参照してください

  9. wrangler secret put ADMIN_PASSWORD — /app/admin 用 9a. AI Document Generator(任意、一般公開のマーケティングツール): Google AI Studio → 無料の API キーを作成 → wrangler secret put GEMINI_API_KEY。無料枠にはレート制限があり、Worker でも IP ごとの制限と Turnstile を適用します。apps/worker/src/lib/geminiDocGen.ts を参照してください。

  10. クラウドストレージ OAuth(任意、Pro 以上):

    プロバイダーリダイレクト URI
    Dropboxhttps://api.docstoc.io/api/account/connectors/dropbox/callback
    OneDrivehttps://api.docstoc.io/api/account/connectors/onedrive/callback
    Boxhttps://api.docstoc.io/api/account/connectors/box/callback
    Googlehttps://api.docstoc.io/api/account/connectors/google/callback

    Google Sign-In のリダイレクト先:https://api.docstoc.io/api/auth/google/callback

    プロバイダーごとの手順:scripts/connectors-docstoc-setup.md

    wrangler secret put DROPBOX_CLIENT_ID
    wrangler secret put DROPBOX_CLIENT_SECRET
    wrangler secret put ONEDRIVE_CLIENT_ID
    wrangler secret put ONEDRIVE_CLIENT_SECRET
    wrangler secret put BOX_CLIENT_ID
    wrangler secret put BOX_CLIENT_SECRET
    wrangler secret put GOOGLE_LOGIN_CLIENT_SECRET
    wrangler secret put GOOGLE_INTEGRATIONS_CLIENT_SECRET
    
  11. QuickBooks Online + Xero(任意、Pro 以上):

    プロバイダーリダイレクト URI
    QBOhttps://api.docstoc.io/api/account/connectors/quickbooks/callback
    Xerohttps://api.docstoc.io/api/account/connectors/xero/callback

    コンソールでの手順は scripts/connectors-docstoc-setup.md を参照してください。

    wrangler secret put QBO_CLIENT_ID
    wrangler secret put QBO_CLIENT_SECRET
    wrangler secret put XERO_CLIENT_ID
    wrangler secret put XERO_CLIENT_SECRET
    
  12. Cloudflare Pages プロジェクト chasa とカスタムドメイン chasa.io を設定します。Worker のカスタムドメインは api.chasa.io です

  13. エンドツーエンドのテストモードでのスモークテストが完了してから、Stripe の 本番キー/価格/Webhook に切り替えます

ローカルのシークレット(apps/worker/.dev.vars、gitignore 対象)
TOKEN_SECRET=dev-secret-not-for-prod
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
ADMIN_PASSWORD=your-dev-admin-password
# Optional Turnstile test keys (or omit to bypass):
# TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA
# Optional — AI Document Generator tool returns 503 until set:
# GEMINI_API_KEY=your-google-ai-studio-key

ローカル Webhook 用の Stripe CLI:

stripe listen --forward-to localhost:8787/api/billing/webhook
ステージング環境
wrangler deploy --env staging

別の D1(chasa-db-staging)を使用します。作成し、ID を wrangler.toml の [env.staging] に貼り付けてください。


SEO 公開前チェックリスト

自動化(ビルド)

generate-seo.mjs は npm run build のたびに実行され、次のファイルを生成します。

  • sitemap.xml — すべての公開ページ(マーケティング、テンプレート、ブログ)
  • robots.txt — クロールルールとサイトマップの URL
  • blog/feed.xml — ブログ記事の RSS
  • {indexnow-key}.txt — Bing/Yandex 用の IndexNow キーファイル
  • 環境変数が設定されている場合に index.html/ai.html に検証用メタ情報を追加します(下記を参照)

プレスキットは /press にあります。ロゴ、定型文、被リンク用の推奨アンカーテキストを掲載しています。

Google Search Console(初回のみ)
  1. Search Console で https://chasa.io のプロパティを追加します

  2. HTML tag による確認を選択し、content="…" の値をコピーします

  3. トークンを使って再ビルドします。

    GOOGLE_SITE_VERIFICATION=your_token_here npm run build --workspace apps/web
    npm run deploy:web
    

    または Cloudflare で DNS TXT を使用します(再ビルドは不要です)。

  4. サイトマップ https://chasa.io/sitemap.xml を送信します

  5. /、/app/、/payment-reminder、/free-templates/ で URL 検査を行います

Bing は任意です。BING_SITE_VERIFICATION=… は Google と同様に設定します。

デプロイ後、IndexNow(Bing)に通知します。

curl -X POST https://api.indexnow.org/indexnow \
  -H 'Content-Type: application/json' \
  -d '{"host":"chasa.io","key":"chasa-indexnow-20260727","keyLocation":"https://chasa.io/chasa-indexnow-20260727.txt","urlList":["https://chasa.io/sitemap.xml"]}'
被リンク(創業者向け — /press を使用)

サイト側の対応は完了しています。すべてのページにソーシャルリンクと sameAs スキーマを追加し、ブログからランディングページへの内部リンク、RSS、llms.txt を用意しました。

手動での対応が必要です(プレスキットからコピーしてください)。

  • LinkedIn の会社ページ — ウェブサイト欄と、/app/ またはブログ記事へのリンクを含むローンチ投稿
  • X @DocstocHQ — ローンチ投稿をピン留め
  • 準備ができたら Product Hunt/Indie Hackers に掲載
  • RELACON GmbH のウェブサイトから chasa.io への相互リンク
  • フリーランサー向けコミュニティを3〜5か所 — ホームページだけでなく、/blog/ の記事または /free-templates/ へのリンク
  • メール署名に chasa.io を追加

事業者情報

docstoc は、オーストリアのウィーンにある RELACON GmbH の製品です。/imprint と /privacy をご覧ください。

お問い合わせ:[email protected]

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。