Storylenses

io.github.benediktgirzPublished by GitHub account benediktgirzv0.1.3Updated Oct 24, 2026

AI cover letter generation for agents. Job analysis, profile matching, narrative letters.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowAI & ML

Overview

AI-generated overview

StoryLenses lets an assistant analyze job postings, match a CV to them, and generate and score story-driven cover letters.

What you can do
  • Analyze job postings into 15+ structured fields
  • Match a candidate CV against the analyzed job data
  • Generate a story-driven cover letter using a chosen narrative archetype and tone
  • Score and evaluate a finished cover letter
  • List available narrative archetypes and tones
When to use it
Useful when an assistant is helping with job applications: turning a posting into structured data, checking how well a CV fits, and drafting and reviewing a tailored cover letter.
Requirements
A StoryLenses API key, sent as the Authorization bearer header for the remote endpoint or as the STORYLENSES_API_KEY environment variable for the local npm package (npx @storylenses/mcp-server) or Docker image. An optional STORYLENSES_API_URL overrides the API base URL. Network access to the StoryLenses service is required.
Before you install
The API key is a secret and is required; keep it out of shared configs. Usage is metered by paid plans (free tier limited to 10 generations per month, paid tiers at $29 and $99 per month), so calls can consume quota or incur cost. Job postings and CV text you submit are sent to the StoryLenses service.

Installation

In SourceWeft

  1. Open Storylenses in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.benediktgirz%2Fstorylenses/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "storylenses": {
      "type": "http",
      "url": "https://www.storylenses.app/api/mcp/endpoint",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

StoryLenses MCP Server

AI-powered cover letter generation for MCP-compatible agents. The first production MCP server for job applications.

Tools

ToolDescription
storylenses_analyze_jobExtract 15+ structured fields from a job posting
storylenses_match_profileMatch a candidate CV against job data
storylenses_generate_letterGenerate a story-driven cover letter
storylenses_quality_checkScore and evaluate a cover letter
storylenses_list_archetypesList available narrative archetypes and tones

Setup

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "storylenses": {      "command": "npx",      "args": ["-y", "@storylenses/mcp-server"],      "env": {        "STORYLENSES_API_KEY": "your-api-key"      }    }  }}

Cursor / VS Code

Add to .cursor/mcp.json or VS Code MCP settings:

json
{  "mcp": {    "servers": {      "storylenses": {        "command": "npx",        "args": ["-y", "@storylenses/mcp-server"],        "env": {          "STORYLENSES_API_KEY": "your-api-key"        }      }    }  }}

Docker

bash
docker run -e STORYLENSES_API_KEY=your-key ghcr.io/benediktgirz/storylenses-mcp-server

Environment Variables

VariableRequiredDescription
STORYLENSES_API_KEYYesYour API key from storylenses.app/mcp
STORYLENSES_API_URLNoAPI base URL (default: https://www.storylenses.app)

Example Workflow

typescript
// 1. Analyze job postingconst job = await callTool("storylenses_analyze_job", {  job_url: "https://linkedin.com/jobs/view/12345"});
// 2. Match candidate profileconst match = await callTool("storylenses_match_profile", {  job_analysis: job,  candidate_cv: "Senior engineer with 7 years React experience..."});
// 3. Generate cover letterconst letter = await callTool("storylenses_generate_letter", {  job_analysis: job,  match_data: match,  candidate_name: "Alex Chen",  archetype: match.suggestedArchetype});
// 4. Quality checkconst score = await callTool("storylenses_quality_check", {  letter_text: letter.letter_text,  job_analysis: job});

Testing

bash
npm installSTORYLENSES_API_KEY=your-key npm test

Get an API Key

Visit storylenses.app/mcp to get your API key.

  • Free: 10 generations/month
  • Developer ($29/mo): 200 generations
  • Scale ($99/mo): 1,000 generations

License

MIT

Source: README.md at commit a93a496

Tools

0
This server asks for a credential such as an API key, so SourceWeft could not read its tools without one and has not indexed them.

Version history

1
  1. v0.1.3LatestSep 16, 2026

Score

60% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts