Base URL: https://astro-persona.jason-edelman.org. All responses are JSON. CORS is enabled for authorized origins.
☿ MCP endpoint
POST/mcp
JSON-RPC 2.0 MCP server. Supports initialize, ping, tools/list, and tools/call. The get_persona tool returns the assembled persona for a given persona ID.
// Example: tools/call
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_persona",
"arguments": { "persona_id": "persona_abc123..." }
}
}
♃ Chart & persona
POST/chart
Compute and store a natal chart for an existing persona. Requires Placidus house calculation.
// Request body
{
"persona_id": "persona_abc123...",
"birthdate": "1990-06-15",
"birthtime": "14:30",
"lat": 40.71,
"lon": -74.01
}
GET/persona/:id
Retrieve the full persona record including chart data, status, and usage stats.
GET/personas?user_id=...
List all personas belonging to a user.
GET/account?email=...
Customer self-serve: look up persona IDs by purchase email.
♄ Prompt slots
GET/stats
Slot fill statistics: total, filled, by category, by priority.
GET/slots
List prompt slot metadata. Query params: filter (category), priority, unfilled=1, status.
GET/slot/:key
Full slot row including all 9 persona content fields.
GET/export
Export all slots as CSV.
☉ Persona output schema
// Returned by get_persona
{
"natal": { "loves": [...], "drives": [...], ... },
"transits": { "loves": [...], "drives": [...], ... },
"merged": { "loves": [...], "drives": [...], ... },
"meta": {
"active_natal_aspects": 22,
"active_transit_aspects": 8,
"generated_at": "2026-04-15T12:00:00.000Z"
}
}
The merged dict is the primary output. It contains 9 keys: loves, core_values, hates, fears, drives, tone, blindspots, gifts, cosmic. Each value is an array of trait strings ranked by astrological weight (most activated first).
☿ Authentication
The proxy endpoints (/proxy, /api/proxy/*) require Authorization: Bearer <PROXY_SECRET>. MCP and chart endpoints use persona IDs for identification. Full OAuth/PKCE support is planned.