
Tallied
com.withtallied由 withtallied.com 發布官方發布者v0.1.0更新於 Oct 24, 2026
Log hours and invoice clients from your AI chat. Time tracking and invoicing for freelancers.
概覽
Tallied 是一個遠端計時與開立發票伺服器,讓 AI 助理記錄工時、檢視未請款時間並草擬客戶發票。
- 可以做什麼
- 透過告訴助理你做了什麼來記錄工時,依工作區設定與費率解析時長並計算金額。檢視未請款的工作並草擬客戶發票,發票 PDF 在服務行程內產生。執行補記、月末結算類流程,以及週報和客戶請款,這些以隨附技能和 MCP 提示的形式提供。帳戶設定、從 Toggl、Harvest 或 Clockify 匯入 CSV 以及帳務計費,透過小型網頁應用而非對話完成。
- 適用情境
- 適合希望以對話方式記錄可計費工時並產生發票的自由工作者與小型服務型業務,不必切換到獨立的計時軟體。當助理是主要介面、只在設定、匯入或帳務時偶爾使用網頁應用時最合適。
- 執行需求
- 遠端 MCP 端點,使用 Streamable HTTP 傳輸,OAuth 2.1 驗證為必需。登入方式為 Google OIDC 或電子郵件魔法連結,無密碼;首次使用者需在授權頁面建立工作區。自架需要 Node.js、Postgres,可選 SMTP 或 Resend 用於郵件,以及 Stripe 用於帳務與付款連結。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Tallied,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/com.withtallied%2Ftallied/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"tallied": {
"type": "http",
"url": "https://withtallied.com/mcp"
}
}
}README
Tallied
Tallied is a time-tracking and invoicing MCP server. It's connector-first: Claude and ChatGPT (or any MCP client) are the primary UI — you tell an assistant what you worked on and it logs the hours, ask what's unbilled and it drafts the invoice. A minimal web app handles the things chat is bad at: account settings, CSV import, and billing. Clients pay invoices through a Stripe payment link on a public, tokenized page.
Quick start
Then connect with the MCP Inspector:
Choose Streamable HTTP, point it at http://localhost:3000/mcp, and connect. The inspector will hit the OAuth flow and open the login page in your browser. Without SMTP_URL or RESEND_API_KEY set, magic-link sign-in doesn't send an email — the link is printed to the server log and also shown directly on the "check your email" page, so local dev never needs a real mailbox.
Project layout
Environment variables
See .env.example for the same list with inline comments.
OAuth notes
- The
@modelcontextprotocol/sdkrouter (mcpAuthRouter) provides the protocol surface: dynamic client registration, PKCE (S256), a form-encoded token endpoint, and RFC 8414 + RFC 9728 discovery metadata.src/http/app.tsmounts it atAUTH_ISSUER_URLand wires it toTallyOAuthProvider(src/auth/provider.ts), which persists clients, codes, and tokens in Postgres. - Identity is Google OIDC or an emailed magic link — no passwords. See
src/auth/routes.ts. - The OAuth consent screen is signup. A user with no workspace yet gets an onboarding card (business name, default rate, currency, timezone) inline on the consent page; clicking Allow creates the workspace and completes the authorization in one step.
- Tokens are opaque and hashed at rest (never stored in plain text). Access tokens last 1 hour; refresh tokens last 30 days and rotate on every use, with reuse detection (a reused, already-rotated refresh token revokes the whole token family).
- To swap in a hosted identity/OAuth provider (Clerk, WorkOS, Stytch) instead of
TallyOAuthProvider, replace it with the SDK'sProxyOAuthServerProvider, which delegates the same protocol surface to an upstream authorization server.
Deployment
Tallied runs on any host that gives you a stable HTTPS origin — Fly.io, Railway, Render, or similar.
- Set
BASE_URLto your public origin. SetMCP_URL,AUTH_ISSUER_URL, and/orAPP_URLonly if you're splitting those surfaces across subdomains. npm run build(runsbuild:appthentsc), thennpm start.- Point your Postgres at
DATABASE_URLand runnpm run db:migrate. - If using Stripe, register a webhook endpoint at
${BASE_URL}/webhooks/stripesubscribed tocheckout.session.completed,payment_intent.succeeded,customer.subscription.updated, andcustomer.subscription.deleted. - If using Google sign-in, add
${BASE_URL}/oauth/google/callbackas an authorized redirect URI in the Google OAuth client.
Testing
npm test— unit tests (vitest).test/golden-prompts.json— a hand-curated set of prompts and expected tool-call behavior. It's run manually, in both Claude and ChatGPT, before any change to tool names, descriptions, or input schemas — those are effectively a public API for the model and regressions there don't show up in unit tests.
Submission checklists
Before submitting to a connector directory, see docs/listing.md for store-listing copy and screenshots, and the product spec's submission checklist for the full requirements. Note that Claude's connector directory requires the submitting organization to be on a Team (or Enterprise) plan.
來源:README.md,提交 8ecfec8
工具
0版本歷史
1- v0.1.0最新Sep 16, 2026
評分
已滿足適用檢查項的 75%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
請在儲存庫或註冊中心條目中宣告授權條款。