Skip to content
API Reference

StoryLenses API-Dokumentation

StoryLenses bietet KI-gestützte Anschreiben-Generierung über 5 kombinierbare MCP Tools und REST-Endpunkte. Erstelle Karriere-Agenten, Bewerbungs-Bots oder integriere story-basierte Anschreiben in deine Plattform.

2 Tools live3 Tools in der Vorschau

Basis-URL für alle REST-Endpunkte:

https://www.storylenses.app/api

Authentifizierung

Alle authentifizierten Anfragen verwenden Bearer-Token-Authentifizierung mit einem StoryLenses API Key. Einige Endpunkte (wie die Stellenanalyse) funktionieren ohne Key, aber mit strengeren Rate Limits.

Key-Format

API Keys verwenden das Präfix sl_live_ gefolgt von 32 alphanumerischen Zeichen:

sl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Verwendung

Füge deinen Key im Authorization-Header ein:

Authorization: Bearer sl_live_YOUR_API_KEY

API Keys werden vor der Speicherung gehasht und können nur einmal bei der Erstellung eingesehen werden. Falls du deinen Key verlierst, erstelle einen neuen im Entwicklerportal.

Hole deinen API Key im Entwicklerportal

Schnellstart

Starte in unter 2 Minuten. Wähle deinen Client und füge die Konfiguration ein.

Claude Desktop

Füge dies zu deiner Claude Desktop MCP-Konfiguration hinzu:

{
  "mcpServers": {
    "storylenses": {
      "url": "https://mcp.storylenses.app/sse",
      "headers": {
        "Authorization": "Bearer sl_live_YOUR_API_KEY"
      }
    }
  }
}

Cursor / VS Code

Füge dies zu deinen Cursor- oder VS Code MCP-Einstellungen hinzu:

{
  "mcp": {
    "servers": {
      "storylenses": {
        "url": "https://mcp.storylenses.app/sse",
        "headers": {
          "Authorization": "Bearer sl_live_YOUR_API_KEY"
        }
      }
    }
  }
}

cURL

Teste die API direkt mit cURL:

curl -X POST https://www.storylenses.app/api/analyze-job-description \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sl_live_YOUR_API_KEY" \
  -d '{
    "jobDescription": "Senior Frontend Engineer at Stripe...",
    "locale": "en"
  }'

MCP-Integration

StoryLenses unterstützt sowohl Stdio- als auch HTTP-Transport für MCP-Clients. Verwende den, der zu deiner Architektur passt.

Stdio-Transport (npm)

Installation und Ausführung über npx — ideal für lokale Agenten und CLI-Tools:

npx -y @storylenses/mcp-server

Setze diese Umgebungsvariablen:

STORYLENSES_API_KEY=sl_live_YOUR_API_KEY
STORYLENSES_API_URL=https://www.storylenses.app

HTTP-Transport (Streamable HTTP)

Sende JSON-RPC 2.0-Anfragen direkt — ideal für Cloud-gehostete Agenten und serverseitige Integrationen:

POST https://www.storylenses.app/api/mcp/endpoint
Content-Type: application/json
Authorization: Bearer sl_live_YOUR_API_KEY

Unterstützte Methoden

Der MCP-Endpunkt unterstützt die folgenden JSON-RPC-Methoden:

MethodeBeschreibung
initializeMCP-Sitzung initialisieren und Fähigkeiten austauschen
tools/listAlle verfügbaren Tools und ihre Schemas auflisten
tools/callEin Tool mit den angegebenen Argumenten ausführen

Tools-Referenz

Alle 5 Tools, die über das MCP-Protokoll verfügbar sind. Parameter-Schemas werden direkt aus den Tool-Definitionen übernommen.

Die StoryLenses API befindet sich in aktiver Entwicklung. 2 von 5 Tools sind vollständig live. Die verbleibenden 3 liefern realistische Beispieldaten, damit du deine Integration jetzt aufbauen kannst — sie werden Ende-zu-Ende funktionieren, wenn die vollständige API startet.

storylenses_analyze_jobLive

Extract 15+ structured fields from a job posting — role requirements, company challenges, culture signals, recruiter priorities

Auth: Optional (IP-limitiert ohne Key)Abrechnung: Kostenlos
ParameterTypErforderlichBeschreibung
job_urlstringURL of the job posting to analyze
job_textstringRaw text of the job posting (use if no URL)
localestringResponse language (en, de, es, or pt) (en, de, es, pt) [default: en]
storylenses_match_profileVorschau

Match a candidate profile/CV against job data — identifies fit score, matching skills, career gaps, and strongest narrative angle

Auth: API Key erforderlichAbrechnung: Kostenlos
ParameterTypErforderlichBeschreibung
job_analysisobjectJob analysis output from storylenses_analyze_job
candidate_cvstringCandidate's CV or resume as plain text
localestringResponse language (en, de, es, or pt) (en, de, es, pt) [default: en]
storylenses_generate_letterVorschau

Generate a story-driven cover letter using matched data and a narrative archetype. Supports en/de/es/pt.

Auth: API Key erforderlichAbrechnung: Kostenpflichtig ($0.25 Überschreitung)
ParameterTypErforderlichBeschreibung
job_analysisobjectJob analysis from storylenses_analyze_job
match_dataobjectMatch data from storylenses_match_profile
candidate_namestringCandidate's full name for the letter greeting
archetypestringNarrative archetype ID (use storylenses_list_archetypes to see options) [default: golden-fleece]
tonestringWriting tone — professional, conversational, confident, etc. (professional, conversational, formal, confident, analytical, storytelling, humble, technical, creative) [default: professional]
lengthstringLetter length — short (150-200 words), medium (250-350), or full (400-500) (short, medium, full) [default: medium]
localestringOutput language (en, de, es, or pt) (en, de, es, pt) [default: en]
storylenses_quality_checkVorschau

Score and evaluate a cover letter for relevance, narrative strength, and completeness. Returns score 0-100 with actionable feedback.

Auth: API Key erforderlichAbrechnung: Kostenlos
ParameterTypErforderlichBeschreibung
letter_textstringThe cover letter text to evaluate (minimum 200 characters)
job_analysisobjectJob analysis from storylenses_analyze_job for context
localestringFeedback language (en, de, es, or pt) (en, de, es, pt) [default: en]
storylenses_list_archetypesLive

Return available narrative archetypes with descriptions so the agent or user can select a style

Auth: KeineAbrechnung: Kostenlos
ParameterTypErforderlichBeschreibung
localestringDescription language (en, de, es, or pt) (en, de, es, pt) [default: en]

REST API

Direkte HTTP-Endpunkte für den Fall, dass du nicht das vollständige MCP-Protokoll benötigst. Dieselbe zugrunde liegende Logik wie die MCP Tools.

POST/api/analyze-job-description

Extrahiere strukturierte Felder aus einer Stellenanzeige. Akzeptiert entweder Rohtext oder eine URL.

ParameterTypBeschreibung
jobDescriptionstringRohtext der Stellenanzeige
jobUrlstringURL der Stellenanzeige (Alternative zu jobDescription)
localestringAntwortsprache: en, de, es oder pt (Standard: en)
POST/api/evaluate-letter

Bewerte ein Anschreiben hinsichtlich Relevanz, Erzählstärke und Vollständigkeit.

ParameterTypBeschreibung
letterTextstringDer zu bewertende Anschreibentext (mind. 200 Zeichen)
jobAnalysisobjectStellenanalyse von /api/analyze-job-description
localestringFeedback-Sprache: en, de, es oder pt (Standard: en)
GET/api/health

Health-Check-Endpunkt. Gibt ein Status-Objekt zurück — keine Authentifizierung erforderlich.

{ "status": "ok" }

Fehler & Rate Limits

Alle Fehler folgen einem einheitlichen Format. Rate Limits werden pro IP für nicht authentifizierte Anfragen und pro API Key für authentifizierte Anfragen angewandt.

HTTP-Statuscodes

CodeBedeutungBeschreibung
200OKAnfrage erfolgreich
400Bad RequestUngültige oder fehlende Parameter
401UnauthorizedFehlender oder ungültiger API Key
403ForbiddenGültiger Key, aber unzureichende Berechtigungen oder Tariflimit überschritten
429Too Many RequestsRate Limit überschritten — nach der angegebenen Zeit erneut versuchen
500Server ErrorInterner Fehler — kontaktiere den Support, falls das Problem bestehen bleibt

Fehlerantwort-Format

{
  "error": "Human-readable error message"
}

Rate Limits

Rate Limits variieren je nach Endpunkt und Authentifizierungsmethode. API-Key-Nutzer erhalten höhere Limits basierend auf ihrem Tarif.

EndpunktLimit
/api/analyze-job-description10 req/min (IP) / plan-based (API key)
/api/evaluate-letter10 req/min (IP) / plan-based (API key)
/api/mcp/endpoint30 req/min (IP)

Code-Beispiele

Vollständige, kopierbare Beispiele für gängige Integrationsmuster.

TypeScript — Vollständiger MCP-Workflow

Ende-zu-Ende Anschreiben-Generierung mit dem MCP SDK:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";

// Connect to StoryLenses MCP
const transport = new SSEClientTransport(
  new URL("https://mcp.storylenses.app/sse"),
  { requestInit: { headers: { Authorization: "Bearer sl_live_YOUR_API_KEY" } } }
);
const client = new Client({ name: "my-agent", version: "1.0" });
await client.connect(transport);

// 1. Analyze the job posting
const jobResult = await client.callTool({
  name: "storylenses_analyze_job",
  arguments: { job_url: "https://linkedin.com/jobs/view/12345" }
});
const jobAnalysis = JSON.parse(jobResult.content[0].text);

// 2. Match candidate profile
const matchResult = await client.callTool({
  name: "storylenses_match_profile",
  arguments: {
    job_analysis: jobAnalysis,
    candidate_cv: "Jane Doe — 8 years frontend, React, TypeScript..."
  }
});
const matchData = JSON.parse(matchResult.content[0].text);

// 3. Generate cover letter
const letterResult = await client.callTool({
  name: "storylenses_generate_letter",
  arguments: {
    job_analysis: jobAnalysis,
    match_data: matchData,
    candidate_name: "Jane Doe",
    archetype: matchData.suggested_archetype || "golden-fleece",
    tone: "professional",
    length: "medium"
  }
});
const letter = JSON.parse(letterResult.content[0].text);

// 4. Quality check
const scoreResult = await client.callTool({
  name: "storylenses_quality_check",
  arguments: {
    letter_text: letter.letter_text,
    job_analysis: jobAnalysis
  }
});
const score = JSON.parse(scoreResult.content[0].text);

console.log(letter.letter_text);   // Story-driven cover letter
console.log(score.overall_score);  // 87/100

cURL — JSON-RPC-Anfragen

Initialisieren, Tools auflisten und ein Tool über den HTTP-Endpunkt aufrufen:

# Initialize MCP session
curl -X POST https://www.storylenses.app/api/mcp/endpoint \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sl_live_YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2024-11-05",
      "capabilities": {},
      "clientInfo": { "name": "my-agent", "version": "1.0" }
    }
  }'

# List available tools
curl -X POST https://www.storylenses.app/api/mcp/endpoint \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sl_live_YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list"
  }'

# Call a tool
curl -X POST https://www.storylenses.app/api/mcp/endpoint \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sl_live_YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "storylenses_analyze_job",
      "arguments": {
        "job_url": "https://linkedin.com/jobs/view/12345",
        "locale": "en"
      }
    }
  }'

Python — REST API

Mit httpx die REST-Endpunkte direkt aufrufen:

import httpx

API_KEY = "sl_live_YOUR_API_KEY"
BASE = "https://www.storylenses.app/api"

# Analyze a job posting
resp = httpx.post(
    f"{BASE}/analyze-job-description",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"jobDescription": "Senior Engineer at Acme...", "locale": "en"}
)
job = resp.json()

# Evaluate a cover letter
resp = httpx.post(
    f"{BASE}/evaluate-letter",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "letterText": "Dear Hiring Manager, ...",
        "jobAnalysis": job,
        "locale": "en"
    }
)
score = resp.json()
print(f"Score: {score['overall_score']}/100")

Tarife & Abrechnung

Alle Tarife beinhalten Zugang zu allen 5 Tools in allen 4 Sprachen. Nur die Anschreiben-Generierung zählt zum Nutzungslimit.

TarifPreisGenerierungenÜberschreitung
Free$010 / Monat
Developer$29/Monat200 / Monat$0.25
Scale$99/Monat1,000 / Monat$0.25
EnterpriseIndividuellUnbegrenztIndividuell

Was zählt als Generierung?

Nur ein Tool ist kostenpflichtig:

  • storylenses_generate_letterjeder Aufruf zählt als 1 Generierung
  • Alle anderen Tools (Analyse, Abgleich, Qualitätsprüfung, Archetypen auflisten) sind kostenlos und unbegrenzt

Support

Brauchst du Hilfe bei der Integration? Hier sind die besten Anlaufstellen.

Für technischen Support, schreibe eine E-Mail an support@storylenses.app