TaleSpinner

Create personalized stories, gifts, memoirs, tributes, classroom books, and printed keepsakes.

Should I use this

Quality & Safety

A
Description quality
94%
Schema completeness
69%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'list_products' description lacks action verbin list_products
  • LOWTool 'revoke_story_share_link' description lacks action verbin revoke_story_share_link
  • LOWTool 'close_life_project_contributions' name length outside 3-30 rangein close_life_project_contributions

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,212Tokens (tool definitions)
~950 BTypical response size
Significant attention impact (2.51% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "talespinner": {
      "url": "https://www.littletalespinner.com/mcp"
    }
  }
}

Remote endpoints

https://www.littletalespinner.com/mcpstreamable-http

What it can do

Tool inventory

Tools (24)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_products

Discover the right TaleSpinner offering for any personalized story request, including bedtime and children's stories, gifts, memoirs, life stories, family histories, tributes, celebrations, classroom stories, illustrated books, and printed keepsakes.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_started

Help a new customer start using TaleSpinner for a personalized story request before connecting their account to the assistant.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_profile

Get the connected TaleSpinner account and current credit balances.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "nickname": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_account

Get credit balances and subscription status for the connected TaleSpinner account.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_stories

List stories owned by the connected TaleSpinner account.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_story(storyId)

Read a story owned by the connected TaleSpinner account.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "storyId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_story_status(storyId)

Check whether a story's pages and illustrations are ready.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "storyId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡rename_story(storyId, title, approvedChange)

Change the title of a story owned by the connected account.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "approvedChange": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user approved the new story title."
    }
  },
  "required": [
    "storyId",
    "title",
    "approvedChange"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴replace_story_page_text(storyId, pageNumber, pageContent, confirmNarrationRemoval)

Replace the text on one story page. This also permanently clears that page's existing narration audio so it can be regenerated from the new text.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "pageNumber": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "pageContent": {
      "type": "string",
      "maxLength": 30000
    },
    "confirmNarrationRemoval": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user approved replacing the page text and clearing its existing narration audio."
    }
  },
  "required": [
    "storyId",
    "pageNumber",
    "pageContent",
    "confirmNarrationRemoval"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_story(storyId, confirmPermanentDeletion)

Permanently delete a story owned by the connected account. This cannot be undone.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "confirmPermanentDeletion": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user explicitly confirmed permanent deletion of this story."
    }
  },
  "required": [
    "storyId",
    "confirmPermanentDeletion"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_story_share_links(storyId)

List active and revoked share links for a story owned by the connected account.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "storyId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_story_share_link(storyId, approvedSharingChange)

Create or return the active public share link for a story owned by the connected account.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "approvedSharingChange": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user approved creating a public share link."
    }
  },
  "required": [
    "storyId",
    "approvedSharingChange"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴revoke_story_share_link(storyId, linkId, confirmRevocation)

Revoke one public story share link. Anyone using that link will immediately lose access.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "linkId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "confirmRevocation": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user explicitly approved revoking this share link."
    }
  },
  "required": [
    "storyId",
    "linkId",
    "confirmRevocation"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡publish_story_to_world(storyId, confirmPublicPublishing)

Publish a story owned by the connected account to the public Story World library.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "confirmPublicPublishing": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user explicitly approved making this story public."
    }
  },
  "required": [
    "storyId",
    "confirmPublicPublishing"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴remove_story_from_world(storyId, confirmPublicRemoval)

Remove a story owned by the connected account from the public Story World library. The story remains in the owner's private library.

Input Schema

{
  "type": "object",
  "properties": {
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "confirmPublicRemoval": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user explicitly approved removing this story from the public library."
    }
  },
  "required": [
    "storyId",
    "confirmPublicRemoval"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_story(characterName, characterAge, characterGender, characterType, theme, ...)

Create a personalized story and spend the connected account's credits. Call only after the user explicitly approves the credit spend.

Input Schema

{
  "type": "object",
  "properties": {
    "characterName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "characterAge": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "characterGender": {
      "type": "string",
      "maxLength": 40
    },
    "characterType": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "theme": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300
    },
    "specialMessage": {
      "type": "string",
      "maxLength": 500
    },
    "audience": {
      "default": "children",
      "type": "string",
      "enum": [
        "children",
        "adult"
      ]
    },
    "pageCount": {
      "default": 10,
      "type": "integer",
      "minimum": 4,
      "maximum": 24
    },
    "illustrationStyle": {
      "default": "vivid",
      "type": "string",
      "maxLength": 80
    },
    "illustrationQuality": {
      "default": "medium",
      "type": "string",
      "enum": [
        "medium",
        "high"
      ]
    },
    "illustratePages": {
      "default": "all",
      "type": "string",
      "enum": [
        "all",
        "none",
        "cover"
      ]
    },
    "storyLanguage": {
      "default": "en",
      "type": "string",
      "maxLength": 12
    },
    "approvedCreditSpend": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user has explicitly approved spending TaleSpinner credits for this generation."
    }
  },
  "required": [
    "characterName",
    "characterAge",
    "characterType",
    "theme",
    "approvedCreditSpend"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_life_projects

List life-story and keepsake projects owned by the connected account.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_life_project(projectId)

Get a life-story project's details and latest generation status.

Input Schema

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "projectId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_life_project(category, tributeMode, subjectName, subjectRelationship, subjectPronouns, ...)

Create a memoir, family legacy, celebration, tribute, or life-series project.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "memoir",
        "family-legacy",
        "celebration",
        "tribute",
        "life-series"
      ]
    },
    "tributeMode": {
      "type": "string",
      "enum": [
        "celebration",
        "memorial"
      ]
    },
    "subjectName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "subjectRelationship": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "subjectPronouns": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "subjectBirthDecade": {
      "type": "string",
      "maxLength": 20
    },
    "subjectNote": {
      "type": "string",
      "maxLength": 500
    },
    "approvedCreation": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user approved creating this project."
    }
  },
  "required": [
    "category",
    "subjectName",
    "subjectRelationship",
    "subjectPronouns",
    "approvedCreation"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡record_life_project_activity(projectId)

Update the last-activity time for a life-story project owned by the connected account.

Input Schema

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "projectId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴close_life_project_contributions(projectId, confirmCloseContributions)

Close a life-story project to new contributor submissions. Existing contributions remain available.

Input Schema

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "confirmCloseContributions": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user explicitly approved closing the project to new contributions."
    }
  },
  "required": [
    "projectId",
    "confirmCloseContributions"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_life_project(projectId, confirmPermanentDeletion)

Permanently delete a life-story project and its answers, contributors, generations, and project orders.

Input Schema

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "confirmPermanentDeletion": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user explicitly confirmed permanent deletion of this project."
    }
  },
  "required": [
    "projectId",
    "confirmPermanentDeletion"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_orders

List print orders belonging to the connected TaleSpinner account.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡start_checkout(purchaseType, storyId)

Create a secure handoff URL where the connected user can review and purchase a physical printed book in TaleSpinner.

Input Schema

{
  "type": "object",
  "properties": {
    "purchaseType": {
      "type": "string",
      "const": "printed_book"
    },
    "storyId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "purchaseType"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded24 tools