--- name: lysande version: 0.3.0 description: Lysande agent integration (claim activation + project data) homepage: https://lysande.ai metadata: {"lysande":{"category":"marketing","api_base":"https://rukqpqmurijczzzkzlce.supabase.co/functions/v1"}} --- # Lysande Skill This file describes how AI agents connect to Lysande with human approval. ## Important security model - `apikey` (Supabase publishable key) is public by design. - Agent bearer/API keys are private. - Service role keys are never exposed to agents. ## Public publishable key Use this exact `apikey` in requests: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4` ## Authenticated API base Use: `https://rukqpqmurijczzzkzlce.supabase.co/functions/v1` ## Connect flow (human-in-the-loop claim) 1. Agent registers and gets: - `POST https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-join` 2. Response includes: - `api_key` (agent key) - `claim_code` - `claim_url` 3. Agent sends `claim_url` to human. 4. Human opens `claim_url` and logs in to Lysande. 5. `/connect` calls activation endpoint and marks claim active. 6. Agent polls claim status until active: - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-claim-status` 7. Agent then uses: - `Authorization: Bearer ` - `apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4` ## Endpoints - `POST https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-join` - `POST https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-activate` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-claim-status` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-me` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-projects` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-scores` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-prompts` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-personas` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-prompt-runs` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-prompt-run-details` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-overview` - `GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-recommendations` ## Skill: Get user projects After activation, list all projects available to the activated user (owned + collaborations): ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-projects Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` ## Skill: Get project scores List latest score snapshot per accessible project: ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-scores Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Optional filter for one project: ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-scores?project_id= Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Score response includes: - `project.id`, `project.name`, `project.relation` - `score.overall_score` - `score.geo_score` - `score.prompt_coverage` - `score.citation_rate` - latest snapshot metadata (created/reference timestamps, run IDs) If not activated yet: - `403` with `{"error":"Agent connection is not activated"}` ## Skill: Get project prompts List prompts for all accessible projects: ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-prompts Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Filter on one project: ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-prompts?project_id= Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Optional filters: - `limit=<1-1000>` - `q=` - `source_type=` (for example `persona`) ## Skill: Get project personas and maps List personas + persona maps (folders) for accessible projects: ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-personas Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Filter on one project: ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-personas?project_id= Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Optional filters: - `folder_id=` - `q=` - `limit=<1-1000>` ## Skill: Get prompt run details (test prompt runs) Get prompt-level test run history (same core data as `/test-prompts/[id]`): ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-prompt-runs?prompt_id= Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Optional filters: - `project_id=` - `include_answers=true|false` (default `true`) - `limit=<1-5000>` (default `2000`) ## Skill: Get deep test prompt analytics Get full run-level and provider-level analytics for a prompt: ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-prompt-run-details?prompt_id= Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Optional filters: - `project_id=` - `provider=` - `run_id=` - `batch_id=` - `include_answers=true|false` (default `true`) - `include_raw_response=true|false` (default `false`) - `limit=<1-5000>` (default `3000`) - `run_limit=<1-500>` (default `100`) ## Skill: Get project overview snapshot ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-overview Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Optional filters: - `project_id=` - `include_history=true|false` (default `true`) - `history_limit=<1-10>` - `project_limit=<1-200>` ## Skill: Get project recommendations ```http GET https://rukqpqmurijczzzkzlce.supabase.co/functions/v1/os-lys-agent-project-recommendations Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 ``` Optional filters: - `project_id=` - `type=` - `priority=` - `q=` - `limit=<1-2000>` ## Example request headers ```http Authorization: Bearer apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1a3FwcW11cmlqY3p6emt6bGNlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTM3ODk5MzgsImV4cCI6MjA2OTM2NTkzOH0.rbdu3IyZUTfeC2eRYpjkCy7UZjhP9Po3h_8KqrzR3Q4 Content-Type: application/json ``` ## Current status Claim activation flow is live (no manual key handoff from human).