{
  "version": "1.0",
  "website": "https://pirin.ai",
  "description": "Public form submission endpoints for AI agents. All endpoints accept JSON POST requests. AI agents should obtain explicit user consent before submitting forms on behalf of users.",
  "authentication": {
    "most_forms": "No authentication required for public forms (contact, workshop waitlist)",
    "founder_applications": "OAuth authentication via Supabase (Google or GitHub) required for /api/ai-agent/apply",
    "mcp_submissions": "No authentication required for ChatGPT MCP endpoint /api/mcp/submit-application"
  },
  "forms": [
    {
      "name": "Contact Form",
      "description": "General inquiries, technical questions, partnership requests, pricing questions",
      "webpage": "https://pirin.ai/contact",
      "api_endpoint": "https://pirin.ai/api/contact",
      "http_method": "POST",
      "requires_auth": false,
      "requires_user_consent": true,
      "content_type": "application/json",
      "rate_limit": "100 requests per hour per IP",
      "required_fields": [
        {
          "name": "name",
          "type": "string",
          "description": "Contact's full name"
        },
        {
          "name": "email",
          "type": "string",
          "format": "email",
          "description": "Contact's email address"
        },
        {
          "name": "subject",
          "type": "string",
          "enum": [
            "general",
            "pricing",
            "technical",
            "partnership",
            "other"
          ],
          "description": "Inquiry subject category"
        },
        {
          "name": "message",
          "type": "string",
          "description": "Inquiry message (what the user wants to communicate)"
        }
      ],
      "optional_fields": [
        {
          "name": "phone",
          "type": "string",
          "description": "Optional mobile number, at most 32 characters. Leave blank when the visitor did not provide one. A provided number is stored as E.164. Ten-digit input is treated as US +1. An invalid number returns 400."
        },
        {
          "name": "sms_consent",
          "type": "boolean",
          "description": "True only when the visitor checked the SMS consent box and provided a phone number. False or omitted means no consent. True with a missing or blank phone returns 400."
        }
      ],
      "example_request": {
        "name": "John Smith",
        "email": "john@company.com",
        "subject": "technical",
        "message": "I have questions about integrating AI into our workflow",
        "phone": "",
        "sms_consent": false
      },
      "success_response": {
        "status": 200,
        "body": {
          "success": true
        }
      }
    },
    {
      "name": "Executive AI Workshop Waitlist",
      "description": "Request invitation to executive AI workshops in Austin, TX. Half-day hands-on sessions limited to 20 decision-makers. Requires work email (no Gmail, Yahoo, Hotmail, etc.)",
      "webpage": "https://pirin.ai/workshops#waitlist",
      "api_endpoint": "https://pirin.ai/api/workshop-waitlist",
      "http_method": "POST",
      "requires_auth": false,
      "requires_user_consent": true,
      "content_type": "application/json",
      "rate_limit": "100 requests per hour per IP",
      "validation": {
        "email": "Must be a work email address - free email providers (Gmail, Yahoo, Hotmail, Outlook, AOL, iCloud, Mail.com, ProtonMail) are blocked"
      },
      "required_fields": [
        {
          "name": "name",
          "type": "string",
          "description": "Full name of executive/decision-maker"
        },
        {
          "name": "email",
          "type": "string",
          "format": "email",
          "description": "Work email address (no free email providers)"
        },
        {
          "name": "company",
          "type": "string",
          "description": "Company name"
        },
        {
          "name": "title",
          "type": "string",
          "description": "Job title (e.g., CEO, VP of Operations, CTO)"
        },
        {
          "name": "company_size",
          "type": "string",
          "enum": [
            "10-50",
            "51-200",
            "201-1000",
            "1000+"
          ],
          "description": "Company size range"
        }
      ],
      "optional_fields": [
        {
          "name": "interest_areas",
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "Agentic Workflows",
              "AI Copilots for Teams",
              "On-Premise AI",
              "AI Strategy",
              "Custom Integrations",
              "AI Governance & Safety"
            ]
          },
          "description": "Topics of interest (can be empty array)"
        },
        {
          "name": "message",
          "type": "string",
          "description": "Biggest AI challenge or opportunity in the business"
        }
      ],
      "example_request": {
        "name": "Sarah Johnson",
        "email": "sarah@acmecorp.com",
        "company": "Acme Corp",
        "title": "VP of Operations",
        "company_size": "51-200",
        "interest_areas": [
          "Agentic Workflows",
          "AI Copilots for Teams"
        ],
        "message": "We handle 500+ support tickets/day and want to automate triage"
      },
      "success_response": {
        "status": 200,
        "body": {
          "success": true
        }
      },
      "error_responses": {
        "free_email": {
          "status": 400,
          "body": {
            "error": "Please use your work email address."
          }
        },
        "duplicate": {
          "status": 409,
          "body": {
            "error": "This email is already on the waitlist. We will be in touch."
          }
        }
      }
    },
    {
      "name": "Ground Level Application (Public)",
      "description": "Apply for free Ground Level mentoring for Founder Institute or equivalent program graduates. Public form endpoint. No public membership fee. ",
      "webpage": "https://pirin.ai/apply/ground-level",
      "api_endpoint": "https://pirin.ai/api/apply/ground-level",
      "http_method": "POST",
      "requires_auth": false,
      "requires_user_consent": true,
      "content_type": "application/json",
      "rate_limit": "100 requests per hour per IP",
      "note": "For AI agents submitting via OAuth, use /api/ai-agent/apply instead",
      "required_fields": [
        {
          "name": "firstName",
          "type": "string",
          "description": "Founder's first name"
        },
        {
          "name": "lastName",
          "type": "string",
          "description": "Founder's last name"
        },
        {
          "name": "email",
          "type": "string",
          "format": "email",
          "description": "Founder's email address"
        },
        {
          "name": "projectName",
          "type": "string",
          "description": "Name of the startup or product"
        },
        {
          "name": "description",
          "type": "string",
          "description": "Brief description of what problem the startup is solving"
        },
        {
          "name": "currentStatus",
          "type": "string",
          "enum": [
            "idea",
            "wireframes",
            "prototype",
            "working"
          ],
          "description": "Current project status"
        },
        {
          "name": "launchGoal",
          "type": "string",
          "format": "date",
          "description": "Target launch date (YYYY-MM-DD format)"
        },
        {
          "name": "biggestChallenge",
          "type": "string",
          "description": "The founder's biggest technical challenge right now"
        },
        {
          "name": "successLook",
          "type": "string",
          "description": "What success looks like for this founder"
        }
      ],
      "optional_fields": [
        {
          "name": "startupProgram",
          "type": "string",
          "description": "Startup accelerator or program (e.g., Founder Institute Austin 2026)"
        },
        {
          "name": "directorName",
          "type": "string",
          "description": "Name of program director or mentor who can vouch for the founder"
        },
        {
          "name": "directorEmail",
          "type": "string",
          "format": "email",
          "description": "Business email of the program director or mentor"
        }
      ],
      "example_request": {
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "jane@example.com",
        "projectName": "AI-powered CRM",
        "description": "Building an AI-first customer relationship management platform for small businesses",
        "currentStatus": "prototype",
        "launchGoal": "2026-04-01",
        "biggestChallenge": "Integrating with existing email providers and calendar systems",
        "successLook": "100 paying customers within 6 months of launch",
        "startupProgram": "Founder Institute Austin 2026"
      },
      "success_response": {
        "status": 200,
        "body": {
          "success": true
        }
      }
    },
    {
      "name": "Ground Level Application (AI Agent OAuth)",
      "description": "OAuth-authenticated endpoint for AI agents to submit Ground Level applications on behalf of authenticated users. Requires OAuth token from Supabase (Google or GitHub).",
      "webpage": "https://pirin.ai/ai-agents",
      "api_endpoint": "https://pirin.ai/api/ai-agent/apply",
      "http_method": "POST",
      "requires_auth": true,
      "auth_method": "OAuth 2.0 via Supabase (Google or GitHub)",
      "requires_user_consent": true,
      "content_type": "application/json",
      "rate_limit": "10 applications per user per day",
      "required_fields": [
        {
          "name": "authToken",
          "type": "string",
          "description": "Supabase OAuth access token obtained via Google or GitHub authentication"
        },
        {
          "name": "authProvider",
          "type": "string",
          "enum": [
            "google",
            "github"
          ],
          "description": "OAuth provider used for authentication"
        },
        {
          "name": "firstName",
          "type": "string",
          "description": "Founder's first name"
        },
        {
          "name": "lastName",
          "type": "string",
          "description": "Founder's last name"
        },
        {
          "name": "email",
          "type": "string",
          "format": "email",
          "description": "MUST match the authenticated user's email"
        },
        {
          "name": "projectName",
          "type": "string",
          "description": "Name of the startup or product"
        },
        {
          "name": "description",
          "type": "string",
          "description": "Brief description of what problem the startup is solving"
        },
        {
          "name": "currentStatus",
          "type": "string",
          "enum": [
            "idea",
            "wireframes",
            "prototype",
            "working"
          ],
          "description": "Current project status"
        },
        {
          "name": "launchGoal",
          "type": "string",
          "format": "date",
          "description": "Target launch date (YYYY-MM-DD)"
        },
        {
          "name": "biggestChallenge",
          "type": "string",
          "description": "The founder's biggest technical challenge"
        },
        {
          "name": "successLook",
          "type": "string",
          "description": "What success looks like"
        },
        {
          "name": "aiAgent",
          "type": "string",
          "description": "Name of the AI assistant (e.g., ChatGPT, Claude, Grok)"
        },
        {
          "name": "userConsent",
          "type": "boolean",
          "description": "REQUIRED: Must be true. User must explicitly consent."
        }
      ],
      "validation": {
        "email_match": "The email field must match the email of the authenticated OAuth user",
        "user_consent": "userConsent must be explicitly set to true by the user"
      },
      "example_request": {
        "authToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
        "authProvider": "google",
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "jane@example.com",
        "projectName": "AI-powered CRM",
        "description": "Building an AI-first CRM for small businesses",
        "currentStatus": "prototype",
        "launchGoal": "2026-04-01",
        "biggestChallenge": "Email and calendar integration",
        "successLook": "100 paying customers in 6 months",
        "aiAgent": "ChatGPT",
        "userConsent": true
      },
      "success_response": {
        "status": 200,
        "body": {
          "success": true,
          "message": "Application submitted successfully",
          "applicationId": "123e4567-e89b-12d3-a456-426614174000",
          "userId": "987fcdeb-51a2-3bc4-d567-890123456789",
          "submittedVia": "ChatGPT"
        }
      }
    },
    {
      "name": "MCP Application (ChatGPT Only)",
      "description": "Anonymous application submission endpoint for ChatGPT MCP connector. No OAuth required. Validated via IP allowlist and User-Agent.",
      "api_endpoint": "https://pirin.ai/api/mcp/submit-application",
      "http_method": "POST",
      "requires_auth": false,
      "auth_method": "IP and User-Agent validation (OpenAI/ChatGPT infrastructure only)",
      "requires_user_consent": true,
      "content_type": "application/json",
      "note": "This endpoint only accepts requests from OpenAI/ChatGPT infrastructure",
      "required_fields": [
        {
          "name": "name",
          "type": "string",
          "description": "Applicant's full name"
        },
        {
          "name": "email",
          "type": "string",
          "format": "email",
          "description": "Applicant's email address"
        },
        {
          "name": "details",
          "type": "string",
          "enum": [
            "ground",
            "next"
          ],
          "description": "Application level (ground or next)"
        },
        {
          "name": "message",
          "type": "string",
          "description": "Application message and details"
        }
      ],
      "example_request": {
        "name": "Jane Doe",
        "email": "jane@example.com",
        "details": "ground",
        "message": "I want to join the Ground Level program to build my AI-powered CRM"
      },
      "success_response": {
        "status": 200,
        "body": {
          "success": true,
          "message": "Application submitted successfully"
        }
      }
    }
  ],
  "security_notes": {
    "spam_prevention": "All endpoints include basic validation and rate limiting to prevent spam",
    "user_consent": "AI agents MUST obtain explicit user consent before submitting any forms",
    "email_verification": "Work email validation on workshop waitlist prevents free email providers",
    "oauth_security": "OAuth endpoints verify token authenticity and email matching"
  },
  "best_practices_for_ai_agents": [
    "Always obtain explicit user consent before submitting forms",
    "Confirm all form data with the user before submission",
    "Inform users that their data will be stored and processed by Pirin.ai",
    "Respect rate limits to avoid being blocked",
    "Handle error responses gracefully and inform the user",
    "For workshop waitlist, ensure the user provides a work email address",
    "For OAuth submissions, guide the user through authentication first",
    "Include the AI agent name in the aiAgent field when available"
  ],
  "related_resources": {
    "openapi_spec": "https://pirin.ai/openapi.json",
    "ai_plugin_manifest": "https://pirin.ai/.well-known/ai-plugin.json",
    "llms_txt": "https://pirin.ai/llms.txt",
    "robots_txt": "https://pirin.ai/robots.txt",
    "sitemap": "https://pirin.ai/sitemap.xml"
  }
}
