KDP keyword boxes, listing checks, royalties and sales-from-rank for self-published authors
Maintain this server? Claim it
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.
Turns an Amazon Best Sellers Rank (the 'Best Sellers Rank' line on a book's Amazon page, overall store rank) into an estimated range of units per day and per month, using two independent public models. Amazon.com (Kindle Store or print); UK/DE are rough scalings. Optionally multiplies by royalty per sale.
Turns an Amazon Best Sellers Rank (the 'Best Sellers Rank' line on a book's Amazon page, overall store rank) into an estimated range of units per day and per month, using two independent public models. Amazon.com (Kindle Store or print); UK/DE are rough scalings. Optionally multiplies by royalty per sale.
| Argument | Type | Description |
|---|---|---|
| bsr* | integer | |
| format | string | |
| marketplace | string | |
| royaltyPerSale | number |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bsr"
],
"properties": {
"bsr": {
"type": "integer",
"maximum": 20000000,
"minimum": 1
},
"format": {
"enum": [
"kindle",
"print"
],
"type": "string",
"default": "kindle"
},
"marketplace": {
"enum": [
"US",
"UK",
"DE"
],
"type": "string",
"default": "US"
},
"royaltyPerSale": {
"type": "number",
"maximum": 1000,
"exclusiveMinimum": 0
}
}
}Checks a book's title, subtitle, description, keyword boxes and categories against Amazon KDP's published metadata guidelines (length limits, allowed HTML, prohibited claims, other authors/titles/trademarks, programme names, contact details, review requests, emojis) and gives optimisation tips. Each issue links to the KDP help page it comes from.
| Argument | Type | Description |
|---|---|---|
| title* | string | |
| keywords | array | |
| subtitle | string | |
| categories | array | |
| description | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"maxLength": 500,
"minLength": 1
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 20
},
"subtitle": {
"type": "string",
"maxLength": 500
},
"categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 10
},
"description": {
"type": "string",
"maxLength": 10000
}
}
}Packs keyword phrases (most important first) into KDP's 7 keyword boxes of 50 characters each. Removes words already in the title/subtitle, drops prohibited, trademarked and likely author/title phrases, and reports what did not fit.
| Argument | Type | Description |
|---|---|---|
| title | string | |
| phrases* | array | |
| subtitle | string | |
| skipTitleWords | boolean |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"phrases"
],
"properties": {
"title": {
"type": "string",
"maxLength": 300
},
"phrases": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"maxItems": 80,
"minItems": 1
},
"subtitle": {
"type": "string",
"maxLength": 300
},
"skipTitleWords": {
"type": "boolean",
"default": true
}
}
}Calculates KDP royalties per sale. eBook: 70% vs 35% option for any of 13 Amazon stores (current 2026 price bands, delivery cost per MB, VAT/GST handling, KDP Select rules). Paperback: printing cost and royalty on Amazon.com/.co.uk/EU stores (60% or 50% tier). Optional Kindle Unlimited earnings from pages read.
| Argument | Type | Description |
|---|---|---|
| ink | string | |
| trim | string | "large" = wider than 6.12" or taller than 9". |
| pages | integer | Paperback page count. |
| format* | string | |
| kdpSelect | boolean | |
| listPrice* | number | |
| fileSizeMb | number | eBook file size after conversion (MB). |
| marketplace | string | eBook: US, UK, DE, FR, ES, IT, NL, JP, CA, AU, BR, MX, IN. Paperback: US, UK or EU. |
| monthlySales | integer |
| printListPrice | number | Lowest print list price, for the 70% rule. |
| kuPagesReadPerMonth | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"format",
"listPrice"
],
"properties": {
"ink": {
"enum": [
"black",
"black-groundwood",
"standard-color",
"premium-color"
],
"type": "string",
"default": "black"
},
"trim": {
"enum": [
"regular",
"large"
],
"type": "string",
"default": "regular",
"description": "\"large\" = wider than 6.12\" or taller than 9\"."
},
"pages": {
"type": "integer",
"maximum": 1000,
"description": "Paperback page count.",
"exclusiveMinimum": 0
},
"format": {
"enum": [
"ebook",
"paperback"
],
"type": "string"
},
"kdpSelect": {
"type": "boolean",
"default": false
},
"listPrice": {
"type": "number",
"maximum": 100000,
"exclusiveMinimum": 0
},
"fileSizeMb": {
"type": "number",
"default": 1,
"maximum": 650,
"description": "eBook file size after conversion (MB).",
"exclusiveMinimum": 0
},
"marketplace": {
"type": "string",
"default": "US",
"description": "eBook: US, UK, DE, FR, ES, IT, NL, JP, CA, AU, BR, MX, IN. Paperback: US, UK or EU."
},
"monthlySales": {
"type": "integer",
"maximum": 1000000,
"minimum": 0
},
"printListPrice": {
"type": "number",
"description": "Lowest print list price, for the 70% rule.",
"exclusiveMinimum": 0
},
"kuPagesReadPerMonth": {
"type": "integer",
"maximum": 100000000,
"minimum": 0
}
}
}