> ## Documentation Index
> Fetch the complete documentation index at: https://docs.preuve.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate startup ideas

> Synchronous idea generation - the backing route for the generate_ideas MCP tool. Spends no scan quota or tokens. Free accounts get 5 generations per rolling 24 hours per account (GENERATION_LIMIT when exhausted); paid-or-credited accounts bypass the cap and get limit: null. pro: true (Pro model) requires a paid plan and is refused with PRO_PAID_REQUIRED otherwise. Founder-profile tailoring is automatic on paid plans with a saved profile (fit: false opts out); the response's fitReason and fitHint state why tailoring did or did not apply.




## OpenAPI

````yaml /api-reference/openapi.yaml post /api/agent/tools/idea-generator
openapi: 3.1.0
info:
  title: Preuve Agent API
  version: '2.0'
  description: >
    API for programmatic startup idea validation. Every request carries a single
    x-preuve-key header holding the whole API key - no signing, no bearer token.
    See the Authentication guide.
servers:
  - url: https://preuve.ai
security:
  - preuveKey: []
paths:
  /api/agent/tools/idea-generator:
    post:
      tags:
        - Tools
      summary: Generate startup ideas
      description: >
        Synchronous idea generation - the backing route for the generate_ideas
        MCP tool. Spends no scan quota or tokens. Free accounts get 5
        generations per rolling 24 hours per account (GENERATION_LIMIT when
        exhausted); paid-or-credited accounts bypass the cap and get limit:
        null. pro: true (Pro model) requires a paid plan and is refused with
        PRO_PAID_REQUIRED otherwise. Founder-profile tailoring is automatic on
        paid plans with a saved profile (fit: false opts out); the response's
        fitReason and fitHint state why tailoring did or did not apply.
      operationId: generateIdeas
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - interests
              properties:
                interests:
                  type: string
                  minLength: 3
                  maxLength: 500
                  description: Interests or skills to generate ideas from.
                budget:
                  type: string
                  maxLength: 100
                audience:
                  type: string
                  maxLength: 100
                industry:
                  type: string
                  maxLength: 100
                language:
                  type: string
                  maxLength: 10
                pro:
                  type: boolean
                  description: Use the Pro model. Paid plans only.
                fit:
                  type: boolean
                  description: >
                    Founder-profile tailoring is automatic on paid plans with a
                    saved profile; pass false to opt out. Passing true is never
                    needed.
      responses:
        '200':
          description: >
            Generated ideas. remaining and limit are null for paid-or-credited
            accounts; free accounts see the rolling-24h window state. Pain
            points are teased as locked on non-paid plans.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ideas:
                    type: array
                    items:
                      type: object
                  remaining:
                    type:
                      - integer
                      - 'null'
                  limit:
                    type:
                      - integer
                      - 'null'
                  pro:
                    type: boolean
                  fit:
                    type: boolean
                  fitReason:
                    type: string
                    enum:
                      - applied
                      - disabled
                      - requires_paid_plan
                      - no_profile
                  fitHint:
                    type: string
                    description: >
                      Present when tailoring did not apply for a reason worth
                      relaying to the user (no_profile, requires_paid_plan).
        '403':
          description: >
            Pro model requested without a paid plan (PRO_PAID_REQUIRED, body
            carries an upsell object).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: >
            Free generation cap reached (GENERATION_LIMIT, body carries the
            limit and an upsell object, no Retry-After) or the hourly abuse
            limit (RATE_LIMITED, with Retry-After).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
components:
  schemas:
    ApiError:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: Human-readable message.
        code:
          type: string
          description: Stable machine-readable code. Branch on this.
        details:
          description: Optional context (validation errors, limits, ...).
  securitySchemes:
    preuveKey:
      type: apiKey
      in: header
      name: x-preuve-key
      description: >
        Your API key (prv_...), sent as-is. It is the only credential the API
        needs - see the Authentication guide.

````