See which posts, links and releases bring visits, signups and revenue, and draft the next posts.
Maintained by@rhum0ne(verified)Also a maintainer?
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Adds a move of the maker's own to this week's list.
An imperative of at most 80 characters ("Answer the r/SaaS thread about pricing").
One sentence on why it matters this week.
Network the move is about, if any.
Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http uptake https://uptake.me/api/mcp
Adds a move of the maker's own to this week's list.
| Argument | Type | Description |
|---|---|---|
| why | string | One sentence on why it matters this week. |
| title* | string | An imperative of at most 80 characters ("Answer the r/SaaS thread about pricing"). |
| network | string | Network the move is about, if any. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"required": [
"title"
],
"properties": {
"why": {
"type": "string",
"maxLength": 200,
"description": "One sentence on why it matters this week."
},
"title": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "An imperative of at most 80 characters (\"Answer the r/SaaS thread about pricing\")."
},
"network": {
"type": "string",
"description": "Network the move is about, if any."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}One week of the calendar: what was published and what it brought, scheduled posts, posts planned for a day (editorial date), and what is left to plan (moments, this week's moves, ideas).
| Argument | Type | Description |
|---|---|---|
| week | string | Any day of the week to show, YYYY-MM-DD. Default: this week. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"properties": {
"week": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Any day of the week to show, YYYY-MM-DD. Default: this week."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Creates a tracked link that tells upTake which visits, signups and payments came from where it is shared.
| Argument | Type | Description |
|---|---|---|
| place | string | Optional detail of the place: a subreddit (r/SaaS), a newsletter issue (#12), a campaign name. |
| network* | string | Where the link will be shared: x, linkedin, reddit, newsletter, producthunt, hackernews, youtube… |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
| destination* | string | Page to link to. A page of the maker's site gets a direct link; any other address a short /r/ link. |
{
"type": "object",
"required": [
"destination",
"network"
],
"properties": {
"place": {
"type": "string",
"default": "",
"maxLength": 60,
"description": "Optional detail of the place: a subreddit (r/SaaS), a newsletter issue (#12), a campaign name."
},
"network": {
"type": "string",
"description": "Where the link will be shared: x, linkedin, reddit, newsletter, producthunt, hackernews, youtube…"
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
},
"destination": {
"type": "string",
"format": "uri",
"maxLength": 500,
"description": "Page to link to. A page of the maker's site gets a direct link; any other address a short /r/ link."
}
}
}One slice of project data, when the overview is not enough. Slices: channels_90d (visits, signups, revenue and number of posts per source over 90 days); posts_30d (posts of the last 30 days with the visits, signups and revenue each brought); releases_30d (shipped releases and merged changes of the last 30 days (ids usable in uptake_write_post), with their drafts); revenue_by_day_30d (revenue and number of payments per day over 30 days); moments (communication moments: upcoming (ids usable in uptake_write_post), done and skipped); reports_4w (summaries of the last 4 weekly reports and their moves); mentions_7d (what people said about the product in the last 7 days); scheduled_7d (posts scheduled for the next 7 days); time_by_channel_30d (time the maker spent per network over 30 days); google_search_28d (Google Search clicks, impressions and top queries over 28 days); places_28d (results per named place (subreddit, newsletter issue) over 28 days).
| Argument | Type | Description |
|---|---|---|
| slice* | string | Which data to read. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"required": [
"slice"
],
"properties": {
"slice": {
"enum": [
"channels_90d",
"posts_30d",
"releases_30d",
"revenue_by_day_30d",
"moments",
"reports_4w",
"mentions_7d",
"scheduled_7d",
"time_by_channel_30d",
"google_search_28d",
"places_28d"
],
"type": "string",
"description": "Which data to read."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Removes an idea that does not fit, with a reason; upTake will not suggest it again.
| Argument | Type | Description |
|---|---|---|
| reason* | string | Why it does not fit: not_relevant (not relevant), already_done (already done), wrong_numbers (wrong numbers), not_my_channel (not a channel i use), too_much_time (too much time), other (other). |
| idea_id* | string | Id from uptake_ideas. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"required": [
"idea_id",
"reason"
],
"properties": {
"reason": {
"enum": [
"not_relevant",
"already_done",
"wrong_numbers",
"not_my_channel",
"too_much_time",
"other"
],
"type": "string",
"description": "Why it does not fit: not_relevant (not relevant), already_done (already done), wrong_numbers (wrong numbers), not_my_channel (not a channel i use), too_much_time (too much time), other (other)."
},
"idea_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Id from uptake_ideas."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Open post ideas (title, angle, network). Write one with uptake_write_post, about: [{kind: "idea", id}].
| Argument | Type | Description |
|---|---|---|
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"properties": {
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Makes a post count for an open move of this week: publishing the post completes the move.
| Argument | Type | Description |
|---|---|---|
| move_id* | string | Open move from moves_this_week in uptake_overview. Publishing the post then completes it. |
| post_id* | string | Id from uptake_posts or uptake_write_post. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"required": [
"post_id",
"move_id"
],
"properties": {
"move_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Open move from moves_this_week in uptake_overview. Publishing the post then completes it."
},
"post_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Id from uptake_posts or uptake_write_post."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Adds an action the maker did outside upTake (a post, a newsletter, a talk) to the journal, so upTake measures what it brought.
| Argument | Type | Description |
|---|---|---|
| date | string | Day of the action, YYYY-MM-DD. Default: today. |
| title* | string | What the maker did ("Posted the v1.4 thread on X"). |
| network* | string | Network or place of the action: x, linkedin, reddit, newsletter… |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"required": [
"title",
"network"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Day of the action, YYYY-MM-DD. Default: today."
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "What the maker did (\"Posted the v1.4 thread on X\")."
},
"network": {
"type": "string",
"description": "Network or place of the action: x, linkedin, reddit, newsletter…"
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Asks upTake for a new series of post ideas from the project's data. Counts against the maker's monthly idea series.
| Argument | Type | Description |
|---|---|---|
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"properties": {
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}The project at a glance: product, stage and goal, this week's visits, signups, paying customers and revenue against the 4 previous weeks, top sources over 30 days, last actions and what they brought, this week's moves, the next communication moment, the last weekly report. Start here.
| Argument | Type | Description |
|---|---|---|
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"properties": {
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Sets or clears the day a post is planned for in the calendar. Only the editorial date: nothing is scheduled or sent.
| Argument | Type | Description |
|---|---|---|
| day* | any | Day the maker wants to post it, YYYY-MM-DD, from today to 90 days ahead; null clears it. Only the editorial date: nothing is scheduled or sent. |
| post_id* | string | Id from uptake_posts or uptake_write_post. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"required": [
"post_id",
"day"
],
"properties": {
"day": {
"anyOf": [
{
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
{
"type": "null"
}
],
"description": "Day the maker wants to post it, YYYY-MM-DD, from today to 90 days ahead; null clears it. Only the editorial date: nothing is scheduled or sent."
},
"post_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Id from uptake_posts or uptake_write_post."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}The current version of a post for each of its networks, with whether it is posted.
| Argument | Type | Description |
|---|---|---|
| post_id* | string | Id from uptake_posts or uptake_write_post. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"required": [
"post_id"
],
"properties": {
"post_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Id from uptake_posts or uptake_write_post."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Posts prepared in upTake's Write studio, with their state (Draft, Planned, Scheduled, Published…), networks and link to open them.
| Argument | Type | Description |
|---|---|---|
| filter | string | to_post: posts with a network not posted yet. all: the 30 most recent posts. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"properties": {
"filter": {
"enum": [
"to_post",
"all"
],
"type": "string",
"default": "to_post",
"description": "to_post: posts with a network not posted yet. all: the 30 most recent posts."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}The maker's projects (id, name, site). Every other tool takes `project`: call this first when the maker has several.
No arguments.
{
"type": "object",
"properties": {}
}Marks one of this week's moves as done (or reopens it), edits its title or reason, or dismisses it with a reason. Only when the maker asks.
| Argument | Type | Description |
|---|---|---|
| why | string | edit: new one-sentence reason. |
| note | string | dismiss: a few words from the maker. |
| title | string | edit: new title, an imperative of at most 80 characters. |
| change* | string | done: the maker did it (added to the journal). reopen: undo done. edit: new title and/or why. dismiss: remove it, with a reason. |
| reason | string | dismiss: not_relevant (not relevant), already_done (already done), wrong_numbers (wrong numbers), not_my_channel (not a channel i use), too_much_time (too much time), other (other). |
| move_id* | string | Id from moves_this_week in uptake_overview. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
{
"type": "object",
"required": [
"move_id",
"change"
],
"properties": {
"why": {
"type": "string",
"maxLength": 200,
"description": "edit: new one-sentence reason."
},
"note": {
"type": "string",
"maxLength": 300,
"description": "dismiss: a few words from the maker."
},
"title": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "edit: new title, an imperative of at most 80 characters."
},
"change": {
"enum": [
"done",
"reopen",
"edit",
"dismiss"
],
"type": "string",
"description": "done: the maker did it (added to the journal). reopen: undo done. edit: new title and/or why. dismiss: remove it, with a reason."
},
"reason": {
"enum": [
"not_relevant",
"already_done",
"wrong_numbers",
"not_my_channel",
"too_much_time",
"other"
],
"type": "string",
"description": "dismiss: not_relevant (not relevant), already_done (already done), wrong_numbers (wrong numbers), not_my_channel (not a channel i use), too_much_time (too much time), other (other)."
},
"move_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Id from moves_this_week in uptake_overview."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
}
}
}Prepares a post in upTake's Write studio, in the maker's voice and with tracked links, and returns the text for each network. Nothing is published or scheduled: the maker reviews and sends it from upTake. Counts against the maker's monthly drafts (a rewrite when the network already has a version). Takes up to a minute.
| Argument | Type | Description |
|---|---|---|
| about | array | Items the post is about, with ids read from uptake_overview (moves_this_week, next_moment_id), uptake_ideas, or uptake_data (releases_30d, moments). |
| post_id | string | Rework an existing post instead of starting a new one. |
| project | string | Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project. |
| request* | string | What the post should say, as the maker would ask it in upTake (what changed, for whom, why it matters). Facts only: upTake never invents numbers. |
| networks | array | Networks to write for, up to 5: hackernews, indiehackers, producthunt, x, linkedin, reddit, changelog, bluesky, mastodon, devto, newsletter, discord. Default: the maker's networks. |
{
"type": "object",
"required": [
"request"
],
"properties": {
"about": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"kind": {
"enum": [
"release",
"moment",
"idea",
"move"
],
"type": "string"
}
}
},
"maxItems": 5,
"description": "Items the post is about, with ids read from uptake_overview (moves_this_week, next_moment_id), uptake_ideas, or uptake_data (releases_30d, moments)."
},
"post_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Rework an existing post instead of starting a new one."
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Which project: its id or site (example.com) from uptake_projects. Optional when the maker has a single project."
},
"request": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "What the post should say, as the maker would ask it in upTake (what changed, for whom, why it matters). Facts only: upTake never invents numbers."
},
"networks": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"description": "Networks to write for, up to 5: hackernews, indiehackers, producthunt, x, linkedin, reddit, changelog, bluesky, mastodon, devto, newsletter, discord. Default: the maker's networks."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.