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.
Basis-URL für alle REST-Endpunkte:
https://www.storylenses.app/apiAuthentifizierung
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_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxVerwendung
Füge deinen Key im Authorization-Header ein:
Authorization: Bearer sl_live_YOUR_API_KEYAPI 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-serverSetze diese Umgebungsvariablen:
STORYLENSES_API_KEY=sl_live_YOUR_API_KEY
STORYLENSES_API_URL=https://www.storylenses.appHTTP-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_KEYUnterstützte Methoden
Der MCP-Endpunkt unterstützt die folgenden JSON-RPC-Methoden:
| Methode | Beschreibung |
|---|---|
initialize | MCP-Sitzung initialisieren und Fähigkeiten austauschen |
tools/list | Alle verfügbaren Tools und ihre Schemas auflisten |
tools/call | Ein 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_jobLiveExtract 15+ structured fields from a job posting — role requirements, company challenges, culture signals, recruiter priorities
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
job_url | string | — | URL of the job posting to analyze |
job_text | string | — | Raw text of the job posting (use if no URL) |
locale | string | — | Response language (en, de, es, or pt) (en, de, es, pt) [default: en] |
storylenses_match_profileVorschauMatch a candidate profile/CV against job data — identifies fit score, matching skills, career gaps, and strongest narrative angle
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
job_analysis | object | ✓ | Job analysis output from storylenses_analyze_job |
candidate_cv | string | ✓ | Candidate's CV or resume as plain text |
locale | string | — | Response language (en, de, es, or pt) (en, de, es, pt) [default: en] |
storylenses_generate_letterVorschauGenerate a story-driven cover letter using matched data and a narrative archetype. Supports en/de/es/pt.
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
job_analysis | object | ✓ | Job analysis from storylenses_analyze_job |
match_data | object | ✓ | Match data from storylenses_match_profile |
candidate_name | string | ✓ | Candidate's full name for the letter greeting |
archetype | string | — | Narrative archetype ID (use storylenses_list_archetypes to see options) [default: golden-fleece] |
tone | string | — | Writing tone — professional, conversational, confident, etc. (professional, conversational, formal, confident, analytical, storytelling, humble, technical, creative) [default: professional] |
length | string | — | Letter length — short (150-200 words), medium (250-350), or full (400-500) (short, medium, full) [default: medium] |
locale | string | — | Output language (en, de, es, or pt) (en, de, es, pt) [default: en] |
storylenses_quality_checkVorschauScore and evaluate a cover letter for relevance, narrative strength, and completeness. Returns score 0-100 with actionable feedback.
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
letter_text | string | ✓ | The cover letter text to evaluate (minimum 200 characters) |
job_analysis | object | ✓ | Job analysis from storylenses_analyze_job for context |
locale | string | — | Feedback language (en, de, es, or pt) (en, de, es, pt) [default: en] |
storylenses_list_archetypesLiveReturn available narrative archetypes with descriptions so the agent or user can select a style
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
locale | string | — | Description 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.
/api/analyze-job-descriptionExtrahiere strukturierte Felder aus einer Stellenanzeige. Akzeptiert entweder Rohtext oder eine URL.
| Parameter | Typ | Beschreibung |
|---|---|---|
jobDescription | string | Rohtext der Stellenanzeige |
jobUrl | string | URL der Stellenanzeige (Alternative zu jobDescription) |
locale | string | Antwortsprache: en, de, es oder pt (Standard: en) |
/api/evaluate-letterBewerte ein Anschreiben hinsichtlich Relevanz, Erzählstärke und Vollständigkeit.
| Parameter | Typ | Beschreibung |
|---|---|---|
letterText | string | Der zu bewertende Anschreibentext (mind. 200 Zeichen) |
jobAnalysis | object | Stellenanalyse von /api/analyze-job-description |
locale | string | Feedback-Sprache: en, de, es oder pt (Standard: en) |
/api/healthHealth-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
| Code | Bedeutung | Beschreibung |
|---|---|---|
200 | OK | Anfrage erfolgreich |
400 | Bad Request | Ungültige oder fehlende Parameter |
401 | Unauthorized | Fehlender oder ungültiger API Key |
403 | Forbidden | Gültiger Key, aber unzureichende Berechtigungen oder Tariflimit überschritten |
429 | Too Many Requests | Rate Limit überschritten — nach der angegebenen Zeit erneut versuchen |
500 | Server Error | Interner 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.
| Endpunkt | Limit |
|---|---|
/api/analyze-job-description | 10 req/min (IP) / plan-based (API key) |
/api/evaluate-letter | 10 req/min (IP) / plan-based (API key) |
/api/mcp/endpoint | 30 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/100cURL — 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.
| Tarif | Preis | Generierungen | Überschreitung |
|---|---|---|---|
| Free | $0 | 10 / Monat | — |
| Developer | $29/Monat | 200 / Monat | $0.25 |
| Scale | $99/Monat | 1,000 / Monat | $0.25 |
| Enterprise | Individuell | Unbegrenzt | Individuell |
Was zählt als Generierung?
Nur ein Tool ist kostenpflichtig:
storylenses_generate_letter— jeder 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.
Entwicklerportal
API Keys erstellen und verwalten, Nutzungsstatistiken einsehen
MCP-Übersicht
Marketing-Übersicht, Schnellstart-Anleitungen, Preisdetails
Partner
Partnerschaftsmöglichkeiten und B2B-Integrationen
Für technischen Support, schreibe eine E-Mail an support@storylenses.app