Documentação da API StoryLenses
O StoryLenses oferece geração de cartas de apresentação com IA por meio de 5 ferramentas MCP compostas e endpoints REST. Crie agentes de carreira, bots de candidatura a emprego ou integre cartas de apresentação baseadas em narrativas à sua plataforma.
URL base para todos os endpoints REST:
https://www.storylenses.app/apiAutenticação
Todas as requisições autenticadas usam autenticação Bearer token com uma API key do StoryLenses. Alguns endpoints (como análise de vaga) funcionam sem chave, porém com limites de taxa mais restritos.
Formato da Chave
As API keys usam o prefixo sl_live_ seguido de 32 caracteres alfanuméricos:
sl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxUso
Inclua sua chave no header Authorization:
Authorization: Bearer sl_live_YOUR_API_KEYAs API keys são hasheadas antes do armazenamento e só podem ser visualizadas uma vez na criação. Se você perder sua chave, crie uma nova pelo Portal do Desenvolvedor.
Obtenha sua API key no Portal do Desenvolvedor
Início Rápido
Comece em menos de 2 minutos. Escolha seu cliente e cole a configuração.
Claude Desktop
Adicione à configuração MCP do seu Claude Desktop:
{
"mcpServers": {
"storylenses": {
"url": "https://mcp.storylenses.app/sse",
"headers": {
"Authorization": "Bearer sl_live_YOUR_API_KEY"
}
}
}
}Cursor / VS Code
Adicione às configurações MCP do seu Cursor ou VS Code:
{
"mcp": {
"servers": {
"storylenses": {
"url": "https://mcp.storylenses.app/sse",
"headers": {
"Authorization": "Bearer sl_live_YOUR_API_KEY"
}
}
}
}
}cURL
Teste a API diretamente com 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"
}'Integração MCP
O StoryLenses suporta transportes Stdio e HTTP para clientes MCP. Use o que melhor se adaptar à sua arquitetura.
Transporte Stdio (npm)
Instale e execute via npx — ideal para agentes locais e ferramentas CLI:
npx -y @storylenses/mcp-serverDefina estas variáveis de ambiente:
STORYLENSES_API_KEY=sl_live_YOUR_API_KEY
STORYLENSES_API_URL=https://www.storylenses.appTransporte HTTP (Streamable HTTP)
Envie requisições JSON-RPC 2.0 diretamente — ideal para agentes hospedados na nuvem e integrações server-side:
POST https://www.storylenses.app/api/mcp/endpoint
Content-Type: application/json
Authorization: Bearer sl_live_YOUR_API_KEYMétodos Suportados
O endpoint MCP suporta os seguintes métodos JSON-RPC:
| Método | Descrição |
|---|---|
initialize | Inicializar a sessão MCP e trocar capacidades |
tools/list | Listar todas as ferramentas disponíveis e seus schemas |
tools/call | Executar uma ferramenta com os argumentos fornecidos |
Referência de Ferramentas
Todas as 5 ferramentas disponíveis através do protocolo MCP. Os schemas de parâmetros são extraídos diretamente das definições das ferramentas.
A API do StoryLenses está em desenvolvimento ativo. 2 das 5 ferramentas estão totalmente ativas. As 3 restantes retornam dados de exemplo realistas para que você possa construir sua integração agora — elas funcionarão de ponta a ponta quando a API completa for lançada.
storylenses_analyze_jobAtivaExtract 15+ structured fields from a job posting — role requirements, company challenges, culture signals, recruiter priorities
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
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_profilePreviewMatch a candidate profile/CV against job data — identifies fit score, matching skills, career gaps, and strongest narrative angle
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
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_letterPreviewGenerate a story-driven cover letter using matched data and a narrative archetype. Supports en/de/es/pt.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
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_checkPreviewScore and evaluate a cover letter for relevance, narrative strength, and completeness. Returns score 0-100 with actionable feedback.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
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_archetypesAtivaReturn available narrative archetypes with descriptions so the agent or user can select a style
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
locale | string | — | Description language (en, de, es, or pt) (en, de, es, pt) [default: en] |
REST API
Endpoints HTTP diretos para quando você não precisa do protocolo MCP completo. Mesma lógica subjacente das ferramentas MCP.
/api/analyze-job-descriptionExtrair campos estruturados de uma vaga de emprego. Aceita texto bruto ou URL.
| Parâmetro | Tipo | Descrição |
|---|---|---|
jobDescription | string | Texto bruto da vaga de emprego |
jobUrl | string | URL da vaga de emprego (alternativa a jobDescription) |
locale | string | Idioma da resposta: en, de, es ou pt (padrão: en) |
/api/evaluate-letterPontuar e avaliar uma carta de apresentação quanto à relevância, força narrativa e completude.
| Parâmetro | Tipo | Descrição |
|---|---|---|
letterText | string | O texto da carta de apresentação a ser avaliada (mín. 200 caracteres) |
jobAnalysis | object | Análise da vaga de /api/analyze-job-description |
locale | string | Idioma do feedback: en, de, es ou pt (padrão: en) |
/api/healthEndpoint de verificação de saúde. Retorna objeto de status — sem autenticação necessária.
{ "status": "ok" }Erros e Limites de Taxa
Todos os erros seguem um formato consistente. Limites de taxa são aplicados por IP para requisições não autenticadas e por API key para requisições autenticadas.
Códigos de Status HTTP
| Código | Significado | Descrição |
|---|---|---|
200 | OK | Requisição bem-sucedida |
400 | Requisição Inválida | Parâmetros inválidos ou ausentes |
401 | Não Autorizado | API key ausente ou inválida |
403 | Proibido | Chave válida, mas permissões insuficientes ou limite do plano excedido |
429 | Muitas Requisições | Limite de taxa excedido — tente novamente após o tempo indicado |
500 | Erro do Servidor | Erro interno — entre em contato com o suporte se persistir |
Formato de Resposta de Erro
{
"error": "Human-readable error message"
}Limites de Taxa
Os limites de taxa variam por endpoint e método de autenticação. Usuários com API key recebem limites maiores de acordo com seu plano.
| Endpoint | Limite |
|---|---|
/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) |
Exemplos de Código
Exemplos completos, prontos para copiar e colar, para padrões comuns de integração.
TypeScript — Fluxo MCP Completo
Geração de carta de apresentação de ponta a ponta usando o 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 — Requisições JSON-RPC
Inicializar, listar ferramentas e chamar uma ferramenta via endpoint HTTP:
# 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
Usando httpx para chamar os endpoints REST diretamente:
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")Planos e Cobrança
Todos os planos incluem acesso a todas as 5 ferramentas em todos os 4 idiomas. Apenas a geração de carta de apresentação conta para o seu limite de uso.
| Plano | Preço | Gerações | Excedente |
|---|---|---|---|
| Free | $0 | 10 / mês | — |
| Developer | $29/mês | 200 / mês | $0.25 |
| Scale | $99/mês | 1,000 / mês | $0.25 |
| Enterprise | Personalizado | Ilimitado | Personalizado |
O que conta como uma geração?
Apenas uma ferramenta é cobrável:
storylenses_generate_letter— cada chamada conta como 1 geração- Todas as outras ferramentas (analisar, combinar, verificação de qualidade, listar arquétipos) são gratuitas e ilimitadas
Suporte
Precisa de ajuda com a integração? Aqui estão os melhores lugares para começar.
Portal do Desenvolvedor
Crie e gerencie API keys, visualize análises de uso
Visão Geral do MCP
Visão geral de marketing, guias de início rápido, detalhes de preços
Parceiros
Oportunidades de parceria e integrações B2B
Para suporte técnico, envie e-mail para support@storylenses.app