{"openapi":"3.1.0","info":{"title":"PeopleAnalyst — public feeds","version":"1.0.0","description":"Free, CORS-open, machine-readable feeds an AI assistant or agent can call to describe and cite PeopleAnalyst's products, arguments, and evidence. No authentication. The paid data API (minimum-wage dataset, bulk roster evaluation, adjusted benchmarks) is documented at https://peopleanalyst.com/developers.","contact":{"name":"PeopleAnalyst","url":"https://peopleanalyst.com/developers"}},"servers":[{"url":"https://peopleanalyst.com"}],"tags":[{"name":"marketing-feeds","description":"Free product/argument/evidence feeds (the AI-inbound discoverability layer)."}],"paths":{"/api/marketing/product-description":{"get":{"operationId":"productDescription","summary":"Machine-readable description of each PeopleAnalyst product","description":"Versioned, CORS-open descriptions of every product in the portfolio — name, category, oneLiner, problemFrames, capabilities, beachheads, whenNotToUse (honest disqualifiers), canonicalUrls, relatedProducts. Assembled from canon. Pass ?product to filter.","tags":["marketing-feeds"],"parameters":[{"name":"product","in":"query","required":false,"description":"Filter to one product id (e.g. performix, anycomp, compensation-toolbox).","schema":{"type":"string"}}],"responses":{"200":{"description":"{ contract, count?, products: ProductDescription[] }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/marketing/registry":{"get":{"operationId":"marketingRegistry","summary":"The Pitboss marketing-asset registry (typed cards + personas)","description":"Cross-site marketing-asset cards built from the portfolio's brandscripts and proofs, plus the persona set. ?product filters to one product; ?status filters by lifecycle.","tags":["marketing-feeds"],"parameters":[{"name":"product","in":"query","required":false,"description":"Filter cards to one product.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by lifecycle (e.g. live, draft).","schema":{"type":"string"}}],"responses":{"200":{"description":"{ contract, counts, cards: Card[], personas: [] }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/brandscripts":{"get":{"operationId":"brandscripts","summary":"Per-persona StoryBrand arguments for each product","description":"The persona-level argument layer (SB7-shaped): the major problem solved for a persona and what the solution looks like. ?product / ?persona filter; ?status opts into drafts.","tags":["marketing-feeds"],"parameters":[{"name":"product","in":"query","required":false,"description":"Filter to one product's arguments.","schema":{"type":"string"}},{"name":"persona","in":"query","required":false,"description":"Filter to one persona slug.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"live (default) | draft | all.","schema":{"type":"string","enum":["live","draft","all"]}}],"responses":{"200":{"description":"{ contract, brandscripts: BrandscriptRender[] }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/insight-cards":{"get":{"operationId":"insightCards","summary":"A pitch rendered as player-ready InsightCards","description":"Serves a named pitch as an ordered InsightCard[] (the cross-site insight-player contract). ?pitch selects the pitch; ?awareness optionally reshapes the sequence for the buyer's awareness state.","tags":["marketing-feeds"],"parameters":[{"name":"pitch","in":"query","required":true,"description":"The pitch slug to render.","schema":{"type":"string"}},{"name":"awareness","in":"query","required":false,"description":"Awareness state to reshape the sequence.","schema":{"type":"string"}}],"responses":{"200":{"description":"InsightCard[]","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Required parameter missing."},"404":{"description":"Unknown value for a filter/selector."}}}},"/api/situations":{"get":{"operationId":"situations","summary":"Demonstration scenarios (discovered → diagnosed → solved)","description":"The proof layer paired with brandscripts: concrete situations a product resolves. ?product filters; ?status opts into drafts.","tags":["marketing-feeds"],"parameters":[{"name":"product","in":"query","required":false,"description":"Filter to one product.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"live (default) | draft | all.","schema":{"type":"string","enum":["live","draft","all"]}}],"responses":{"200":{"description":"{ contract, situations: Situation[] }","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/tools":{"get":{"operationId":"tools","summary":"The PeopleAnalyst tool catalog (corpus-grounded acting tools)","description":"Machine-readable catalog of every corpus-grounded acting tool — name, category, what it does, inputs/outputs, concrete use cases, the profile URL, and how to run it (auth-gated REST + MCP). Discovery is open (find + cite the tools); execution is API-key gated. ?category filters by family; ?slug returns one tool.","tags":["marketing-feeds"],"parameters":[{"name":"category","in":"query","required":false,"description":"Filter by family (e.g. Marketing, Startup & strategy, Software engineering).","schema":{"type":"string"}},{"name":"slug","in":"query","required":false,"description":"Return a single tool by slug (e.g. positioning).","schema":{"type":"string"}}],"responses":{"200":{"description":"{ contract, count, tools: ToolCatalogEntry[] }","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}