Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ See [API docs](https://mu.xyz/api) · [MCP docs](docs/MCP.md)

## Pricing

Browsing is included. AI features use credits — 20/day with every account, then pay as you go from 1p per query.
Browsing is included. AI features use credits — 100/day with every account, then pay as you go from 1p per query.

- **Card** — Top up via Stripe. 1 credit = 1p.
- **Crypto** — AI agents pay per-request with USDC via [x402](https://x402.org). No account needed.
Expand Down
4 changes: 2 additions & 2 deletions docs/ENVIRONMENT_VARIABLES.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ export DONATION_URL="https://gocardless.com/your-donation-link"

```bash
# Daily AI queries per account (default: 10)
export DAILY_QUOTA="10"
export DAILY_QUOTA="100"

# Credit costs per operation (default values shown)
export CREDIT_COST_NEWS="1" # News search (1p)
Expand Down Expand Up @@ -190,7 +190,7 @@ export MAIL_SELECTOR="default"
| `X402_ASSETS` | `USDC,EURC` | Accepted tokens (comma-separated symbols) |
| `X402_FACILITATOR_URL` | `https://x402.org/facilitator` | x402 facilitator endpoint |
| `X402_NETWORK` | `eip155:8453` | Blockchain network for x402 payments |
| `DAILY_QUOTA` | `10` | Daily AI queries per account |
| `DAILY_QUOTA` | `100` | Daily AI queries per account |
| `CREDIT_COST_NEWS` | `1` | Credits per news search |
| `CREDIT_COST_VIDEO` | `2` | Credits per video search |
| `CREDIT_COST_VIDEO_WATCH` | `0` | Credits per video watch (free by default) |
Expand Down
6 changes: 3 additions & 3 deletions docs/MCP.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,15 @@ Both return a session token. Use it in subsequent requests:
Authorization: Bearer SESSION_TOKEN
```

Every account includes **20 credits per day** and can top up with a card via Stripe.
Every account includes **100 credits per day** and can top up with a card via Stripe.

## Available Tools

| Tool | Description | Credit Cost |
|------|-------------|-------------|
| `login` | Log in and get session token | Free |
| `signup` | Create account and get session token | Free |
| `chat` | Chat with AI assistant | 3 credits |
| `chat` | Chat with AI assistant | 5 credits |
| `news` | Read the latest news feed | Free |
| `news_search` | Search for news articles | 1 credit |
| `blog_list` | Get all blog posts | Free |
Expand Down Expand Up @@ -210,7 +210,7 @@ curl -X POST https://mu.xyz/mcp \
| Auth header | `X-PAYMENT` | `Authorization: Bearer` |
| Payment model | Per request | Pre-paid credits |
| Currency | USDC | GBP |
| Daily allowance | No | 10 queries/day |
| Daily allowance | No | 100 queries/day |
| Best for | Autonomous agents | Human users, MCP clients |

## Self-Hosting
Expand Down
2 changes: 1 addition & 1 deletion docs/SYSTEM_DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ Live financial data.

Credit-based usage metering.

- **Pay as you go** — 20 credits/day included, then 1 credit = 1p
- **Pay as you go** — 100 credits/day included, then 1 credit = 1p
- **Stripe payments** - Card top-up
- **Quota enforcement** - Integrated with API and agent
- **Transaction tracking** - Usage history
Expand Down
2 changes: 1 addition & 1 deletion docs/VISION.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ AI agents can pay per-request with USDC through the [x402 protocol](https://x402
## Pricing

- **Browsing included** — news, blogs, videos, markets
- **20 credits per day** — covers search, chat, and AI features
- **100 credits per day** — covers search, chat, and AI features
- **Pay as you go** — 1 credit = 1p, top up via card
- **Crypto** — AI agents pay per-request via [x402](https://x402.org)
- **Self-host** — run your own instance, no restrictions
Expand Down
10 changes: 5 additions & 5 deletions docs/WALLET_AND_CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Mu is a tool, not a destination. Like Google Search in 2000 — you arrive with

Credits are a straightforward way to pay for what you use. No dark patterns, no pressure to upgrade, no "unlimited" tiers that incentivize us to maximize your engagement.

- **Daily allowance**: 10 AI queries/day — enough for casual utility use
- **Daily allowance**: 100 AI queries/day — enough for daily use
- **Pay-as-you-go**: Top up with a card or pay per-request with crypto
- **Self-host**: Run your own instance for free, forever

Expand All @@ -23,7 +23,7 @@ We charge because LLMs and APIs cost money. Here's our actual cost breakdown —

### Daily Allowance

Every account includes **10 AI queries per day**:
Every account includes **100 credits per day**:
- Resets at midnight UTC
- Covers news search, video search, and chat AI queries
- No payment required
Expand All @@ -38,7 +38,7 @@ This should be enough if you're using Mu as a utility. If you need more, pay-as-
| News Summary | 1 credit (1p) | AI-generated summary |
| Video Search | 2 credits (2p) | YouTube API cost |
| Video Watch | Free | No value added over YouTube |
| Chat AI Query | 3 credits (3p) | LLM inference cost |
| Chat AI Query | 5 credits (5p) | LLM inference cost |
| Chat Room | 1 credit (1p) | Room creation |
| Places Search | 5 credits (5p) | Google Places API cost |
| Places Nearby | 2 credits (2p) | Google Places API cost |
Expand All @@ -53,7 +53,7 @@ This should be enough if you're using Mu as a utility. If you need more, pay-as-
| User Type | Daily Allowance | Credits | Notes |
|-----------|------------|---------|-------|
| Guest | 0 | N/A | Must register |
| Registered | 10 queries | Pay-as-you-go | When daily allowance used |
| Registered | 100 credits | Pay-as-you-go | When daily allowance used |
| Admin | Unlimited | Not needed | Site administrators |

## Why No "Unlimited" Tier?
Expand Down Expand Up @@ -216,7 +216,7 @@ X402_NETWORK="eip155:8453"
X402_ASSET="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

# Quota (optional - these are defaults)
DAILY_QUOTA="10"
DAILY_QUOTA="100"
CREDIT_COST_NEWS="1"
CREDIT_COST_NEWS_SUMMARY="1"
CREDIT_COST_VIDEO="2"
Expand Down
2 changes: 1 addition & 1 deletion docs/WHITEPAPER.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ Read-only operations — browsing news feeds, reading blog posts, watching video

### 3.3 Daily Quota

Each account includes a daily allocation of twenty queries, resetting at midnight UTC. This quota is sufficient for casual utility use. When the daily quota is exhausted, subsequent operations consume credits from the user's wallet. This model ensures accessibility while covering infrastructure costs for heavy usage.
Each account includes a daily allocation of one hundred queries, resetting at midnight UTC. This quota is sufficient for casual utility use. When the daily quota is exhausted, subsequent operations consume credits from the user's wallet. This model ensures accessibility while covering infrastructure costs for heavy usage.

### 3.4 Incentive Alignment

Expand Down
16 changes: 12 additions & 4 deletions home/cards.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,35 +18,43 @@
}
],
"right": [
{
"id": "weather",
"title": "Weather",
"type": "weather",
"position": 0,
"link": "/weather",
"icon": ""
},
{
"id": "markets",
"title": "Markets",
"type": "markets",
"position": 0,
"position": 1,
"link": "/markets",
"icon": "/markets.svg"
},
{
"id": "reminder",
"title": "Reminder",
"type": "reminder",
"position": 1,
"position": 2,
"link": "",
"icon": "/reminder.svg"
},
{
"id": "social",
"title": "Social",
"type": "social",
"position": 2,
"position": 3,
"link": "/social",
"icon": ""
},
{
"id": "video",
"title": "Video",
"type": "video",
"position": 3,
"position": 4,
"link": "/video",
"icon": "/video.png"
}
Expand Down
2 changes: 2 additions & 0 deletions home/home.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"mu/reminder"
"mu/user"
"mu/video"
"mu/weather"
)

//go:embed cards.json
Expand Down Expand Up @@ -124,6 +125,7 @@ func Load() {
"video": video.Latest,
"apps": apps.Preview,
"social": social.CardHTML,
"weather": weather.CardHTML,
}

// Build Cards array from config
Expand Down
2 changes: 1 addition & 1 deletion internal/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -783,7 +783,7 @@ func init() {
Name: "MCP Server",
Path: "/mcp",
Method: "POST",
Description: "Model Context Protocol server for AI tool integration. Supports initialize, tools/list, tools/call, and ping methods. Tools include chat, news, blog, video, mail, search, wallet, weather, places, markets, reminder, login, and signup. Metered tools (chat: 3 credits, news_search: 1 credit, video_search: 2 credits, mail_send: 4 credits, weather_forecast: 1 credit + optional 1 credit for pollen data) use the same wallet credit system as the REST API. 20 queries/day included.",
Description: "Model Context Protocol server for AI tool integration. Supports initialize, tools/list, tools/call, and ping methods. Tools include chat, news, blog, video, mail, search, wallet, weather, places, markets, reminder, login, and signup. Metered tools (chat: 5 credits, news_search: 1 credit, video_search: 2 credits, mail_send: 4 credits, weather_forecast: 1 credit + optional 1 credit for pollen data) use the same wallet credit system as the REST API. 100 credits/day included.",
Params: []*Param{
{
Name: "jsonrpc",
Expand Down
2 changes: 1 addition & 1 deletion internal/data/data.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func SaveFile(key, val string) error {
file := filepath.Join(path, key)
// Create all parent directories including subdirectories in key
os.MkdirAll(filepath.Dir(file), 0700)
os.WriteFile(file, []byte(val), 0644)
os.WriteFile(file, []byte(val), 0600)
return nil
}

Expand Down
Loading
Loading