Your agent records what you ship; FoxPlug drafts launch posts and a changelog. Nothing posts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer agent key (starts with fpk_). Make one in the app: Settings, Your code, Make an agent key.
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.
Check whether a project's recent work still matches its current plan. FoxPlug compares the plan you set (via set_plan) against the work recorded since, and returns an alignment verdict with any divergences — work that is off-plan, or plan items nothing has moved toward. Read-only judgment; it never posts anything. Free.
The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http foxplug https://foxplug.com/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Bearer agent key (starts with fpk_). Make one in the app: Settings, Your code, Make an agent key.Check whether a project's recent work still matches its current plan. FoxPlug compares the plan you set (via set_plan) against the work recorded since, and returns an alignment verdict with any divergences — work that is off-plan, or plan items nothing has moved toward. Read-only judgment; it never posts anything. Free.
| Argument | Type | Description |
|---|---|---|
| project* | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. |
{
"type": "object",
"required": [
"project"
],
"properties": {
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one."
}
}
}This week's brief from FoxPlug: one thing to fix, one to say and one to skip, with where each number came from. Ask it when the founder wonders what to post. Read-only. It does not rebuild the brief; the founder presses Build the brief in FoxPlug.
| Argument | Type | Description |
|---|---|---|
| project | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional: omit for the most recent brief. |
{
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional: omit for the most recent brief."
}
}
}Get where a project stands: its current plan, how much work has been recorded since the plan was set, and the latest drift verdict (if any). Read-only and cheap — it runs no judgment, so use it to pull current state without re-running check_drift. It never posts anything. Free.
| Argument | Type | Description |
|---|---|---|
| project* | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. |
{
"type": "object",
"required": [
"project"
],
"properties": {
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one."
}
}
}The latest post drafts FoxPlug wrote for the founder (channel, status, text). Read-only; nothing is posted or changed.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many, 1 to 10. Defaults to 5. |
| project | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "How many, 1 to 10. Defaults to 5."
},
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional."
}
}
}Tell FoxPlug what you just finished building, in one short plain paragraph. Call it after a change a user would notice (user_facing true) or after plumbing nobody outside needs to hear about (user_facing false, which is kept out of drafts and counts toward "not worth a post"). It never posts anything. Free. Do NOT include secrets, keys, or tokens.
| Argument | Type | Description |
|---|---|---|
| details | string | Optional. Notable decisions or trade-offs (1-2 sentences). |
| project | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional when you have exactly one FoxPlug project. |
| summary* | string | One short plain paragraph on what changed and why a person would care. No secrets. |
| user_facing | boolean | True (default) when a user would notice the change. False for plumbing: refactors, dependency bumps, migrations. |
{
"type": "object",
"required": [
"summary"
],
"properties": {
"details": {
"type": "string",
"description": "Optional. Notable decisions or trade-offs (1-2 sentences)."
},
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional when you have exactly one FoxPlug project."
},
"summary": {
"type": "string",
"description": "One short plain paragraph on what changed and why a person would care. No secrets."
},
"user_facing": {
"type": "boolean",
"description": "True (default) when a user would notice the change. False for plumbing: refactors, dependency bumps, migrations."
}
}
}What FoxPlug remembers about this maker, with an epistemic status on every fact: settled (more than one observation, none contradicting), thin (seen once), contested (the evidence disagrees with itself), superseded (replaced by something later — never propose it again). Read-only. Free.
| Argument | Type | Description |
|---|---|---|
| project | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional: omit for facts that are not project-specific. |
{
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional: omit for facts that are not project-specific."
}
}
}Record a build-work summary into FoxPlug as a milestone (source: Claude Code). Call this at the end of a session. It captures what you shipped so FoxPlug can score it and surface the shippable moments in your Radar. It never posts anything. Free — capture is not metered. Do NOT include secrets, keys, or tokens in the summary.
| Argument | Type | Description |
|---|---|---|
| project* | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. |
| summary* | string | A short human summary of what you built or changed this session (1-3 sentences). No secrets. |
| decisions | string | Optional. Notable decisions or trade-offs made this session (1-2 sentences). |
| files_touched | array | Optional. Key file paths changed this session — context only. |
{
"type": "object",
"required": [
"project",
"summary"
],
"properties": {
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one."
},
"summary": {
"type": "string",
"description": "A short human summary of what you built or changed this session (1-3 sentences). No secrets."
},
"decisions": {
"type": "string",
"description": "Optional. Notable decisions or trade-offs made this session (1-2 sentences)."
},
"files_touched": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional. Key file paths changed this session — context only."
}
}
}Set the current plan, intent, or priorities for a project in FoxPlug (source: Claude Code). Call this when you set or change what a project is working toward, so FoxPlug knows the goal your later work is measured against. It replaces the project's previous current plan. Free — it never posts anything. Do NOT include secrets, keys, or tokens in the plan.
| Argument | Type | Description |
|---|---|---|
| plan* | string | The current plan, intent, or priorities for this project, in 1 to 5 sentences. No secrets. |
| horizon | string | Optional. The time frame this plan covers (e.g. 'this week', 'this sprint'). |
| project* | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. |
{
"type": "object",
"required": [
"project",
"plan"
],
"properties": {
"plan": {
"type": "string",
"description": "The current plan, intent, or priorities for this project, in 1 to 5 sentences. No secrets."
},
"horizon": {
"type": "string",
"description": "Optional. The time frame this plan covers (e.g. 'this week', 'this sprint')."
},
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one."
}
}
}Before you merge or ship, ask your buyers. Give the change as the buyer would see it (pricing text, a feature description, launch copy). FoxPlug builds 3 to 5 buyer personas ONLY from evidence the founder already gave it (their site, the feedback requests they connected, what they shipped), each citing its evidence, and returns how each would react: would buy, hesitate or leave, the objection, the exact sentence that confused them and what would change their mind, plus the top objections and a tighter rewrite. It is a SIMULATION, not real customers, and says so. The first simulation per project is free; more need a paid plan. Nothing is posted or changed.
| Argument | Type | Description |
|---|---|---|
| change* | string | The change as a buyer would read it (20 to 4000 characters): the new pricing page text, the feature description or the launch copy. |
| project | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional when you have exactly one FoxPlug project. |
{
"type": "object",
"required": [
"change"
],
"properties": {
"change": {
"type": "string",
"description": "The change as a buyer would read it (20 to 4000 characters): the new pricing page text, the feature description or the launch copy."
},
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. Optional when you have exactly one FoxPlug project."
}
}
}Mark a remembered fact as finished, so it is never proposed again. Takes the fact id from recall and a REASON — a fact struck out without a reason cannot be restored. This is the only one of these tools that changes anything, and it changes memory, never anything public. Free.
| Argument | Type | Description |
|---|---|---|
| reason* | string | Why it is no longer true. Required. |
| fact_id* | string | The id of the fact, from recall. |
| replacement_fact_id | string | Optional. The fact that replaced it. |
{
"type": "object",
"required": [
"fact_id",
"reason"
],
"properties": {
"reason": {
"type": "string",
"description": "Why it is no longer true. Required."
},
"fact_id": {
"type": "string",
"description": "The id of the fact, from recall."
},
"replacement_fact_id": {
"type": "string",
"description": "Optional. The fact that replaced it."
}
}
}What this project shipped that nobody outside it knows about. Counts the milestones worth talking about in a window and how many of them were actually posted, and names the loudest silent ones. Read-only — it generates nothing and posts nothing. Free.
| Argument | Type | Description |
|---|---|---|
| days | integer | How far back to look. Defaults to 30. |
| project* | string | The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one. |
{
"type": "object",
"required": [
"project"
],
"properties": {
"days": {
"type": "integer",
"description": "How far back to look. Defaults to 30."
},
"project": {
"type": "string",
"description": "The project this work belongs to — a FoxPlug project name, domain, or repo (e.g. 'foxplug', 'foxplug.com', or 'owner/lcncagents'). Matched case-insensitively against your own FoxPlug projects and any repo/deploy routes. If it can't be resolved, nothing is written (not dropped) and the reply lists your project names so you can retry with an exact one."
}
}
}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 12, 2026.