gen_discover

shallow

io.github.poweredbyGEN/gen-mcp-server · Verify this server

READ-ONLY. NEVER call this before an action and never to look up a target, plan, connection or id first: when the user asks to create/update/delete/publish/buy/top up/generate/clone/pause/resume/revoke/rename/train/transcribe, or asks a watchlist what it found ('what did my watchlist say/find'), call the matching action tool as the FIRST call — gen_generate (create_image/create_video/create_song/create_song_mix/transcribe), gen_vidsheet_action (any sheet edit or creation-card generate: title card, intro, talking-head), gen_characters (list/create characters), gen_ask, or the gen_<noun>_action family (billing, platform, task, agent, voice, watchlist, publish, content, asset). Call the action first even when an id, sample, plan or connection is not yet known: the action returns the missing field or the options. Use gen_discover only for a pure read. EXISTING-VIDSHEET TEXT-LAYER EDIT EXCEPTION: when changing a text layer that already exists on a Vidsheet, read that row's vidsheet.layers view first to bind the exact layer, save with gen_vidsheet_action, then read the same vidsheet.layers view again to verify the exact saved text — the save's own response is not proof of the sheet's current state. Step 3 (Read anything): THE discovery tool — every GEN read is a domain + view here. Every action family's branches are readable the same way: domain=<family domain> view=actions lists them with one line each, and target=<branch action> (for example domain=content view=actions target=reimagine_video) returns that branch's fields — name, type, required, enum values, description and default — from the same model the family validates an entry with, so a cached tools/list never hides a branch's fields. Vidsheet domain (25 views) reads the editable video workspace; the other domains fold the legacy get/list tools: agent (detail | capabilities | core | settings | profile | profile_photos | list | shares | monitoring) · asset (analysis | detail | libraries | list) · billing (balance | generation_access | usage | plans) · content (resource | list | ideas | idea | idea_job | video_job | directions) · location (countries | cities) · media (last_operation | operations | recommended_sounds | sound_library) · platform (me | organization | organizations | conversation | conversations | preferences | api_keys | backups | members) · publish (post_status | rules | connect_url | connections | scheduled) · task (job | run_status | list) · voice (list | mine | resource | preview_status | sample_status) · watchlist (detail | list) · social (comments | job; user_info/video_info/posts return typed unavailable with a live gen_analyze collect next step) · analyze (job — GET-only owner-scoped status/result for a gen_analyze trends/hooks/creators/research_web job by job_id; never resubmit the branch). Each view takes the id it names (resource_id, conversation_id, post_id, job_id, ...) plus that read's optional filters; publish.connect_url is the one non-pure view: the URL it returns STARTS the platform OAuth flow, so surface it to the user as a step. Social comments and job are provider-free DW reads. Social user_info, video_info and posts are not served as read-only data views because their legacy DW routes can refresh providers; they return a typed direction to the explicit live gen_analyze collect action. Social collection (typed, live, billed) is gen_analyze collect, never a view here. comments reads cached TikTok comment rows by video_ids; job reads one DW job status/result by job_id without resubmitting. The paid DW writes are NOT here: import URLs, live social scrapes and the wide general scrape are gen_analyze's import_urls / analyze_socials branches (they write S3 and bill). Vidsheet views: sheet (summary by default, include=["full"] for the whole dump) | rows | row | columns | cell | video (a row's video_settings + layers) | layers | layer | layer_analysis (one target's placement, media properties and the free read; the paid analysis is its own gen_analyze layer_analysis branch, one synchronous attributed model call behind a single-use confirm_token that answers the projected scene cuts, dead head/tail spans and suggested trim in/out in frames at 30 fps directly — no job to poll) | variables | available_variables | operations | last_operation | engine | template | templates | layout_validation | card_types (keyed by FE card type; produces/container/model filters) | card_schema (one creation card by FE card type, its job type, or the final-video render card) | card_from_job (map a completed job to a card without writing) | actions (the action envelope: every Rails action+target pair with its fields and one worked example, plus named workflows; focus one pair with target="<action>:<kind>", e.g. "update:column"; with a layer_type or audio_library filter it instead asks Rails' live discovery and returns that body — caption/text font: view actions with layer_type=caption lists the allowed styles.fontFamily values, set it with values.settings.styles.fontFamily; song recommendations: view actions with audio_library=recommended returns media with library_reference, put one on a sound layer with update values.card {type: song, inputs: {songTab: recommend, audio: <that media>}}) | generation (poll one generation job by generation_id: pending → processing → completed | failed | stopped; result + output_resources on completion) | generation_estimate (free credit-cost estimate for jobs[] before running them) | running_generations (what this sheet is generating right now: one line per running generation, empty when nothing is running — the read behind a target-less 'stop everything running here') | audio_matches (poll a sound_matching job by job_id; matches in .result.audio_matches when completed). Media views: recommended_sounds (sounds recommended/trending for this agent; optional query, commercial, mood, genre, min_bpm, max_bpm, limit) and sound_library (search the shared catalog by free text: query, mood, tags, commercial, page/per_page; empty query browses) — reach for recommended_sounds when the user asks for trending/recommended sounds. View disambiguation: media.last_operation is the same engine change-set read as vidsheet.last_operation (both take vidsheet_id) — 'is my video/song/generation ready yet?' is media.last_operation, and vidsheet.last_operation is for a sheet edit history. platform.me is only 'who am I / my own profile'. platform.organization is the workspace by organization_id: members and who can access it; platform.organizations lists the workspaces the caller belongs to. Use platform.organization for 'who can see/access X' (its members and visibility). asset.list searches/lists the user's own assets; asset.libraries lists stock/library collections. content.list is its generated content resources (project filter). 'ideas from run X' / 'saved ideas from run X' is content.ideas with run_id=<X> — a run id or its prefix of at least 8 characters — never content.idea_job: content.ideas lists bounded idea summaries (optional status, limit, page) and takes run_id for the ideas from a run; content.idea is one full idea by idea_id; content.idea_job takes only the job_id that generate_ideas returned for a confirmed batch and never a run reference. task.run_status is only the status poll for one agent run's own run_id (the run_id gen_ask/gen_analyze hand back); it never reads a saved run's ideas — a run reference in a content question is content.ideas run_id. billing.usage reports what was spent and the remaining quota this period; billing.generation_access says whether a generation type is allowed for this workspace. 'am I out of X this month' / 'how much have I used' is billing.usage, not billing.balance. 'Who can see / who can access X' is platform.organization (workspace visibility), not a vidsheet read. 'What did my watchlist say/find/summarize about X' is gen_watchlist_action query_watchlist (it starts a run and returns a run_id) — never a watchlist discover read; watchlist.list/detail only enumerate saved watchlist records. 'Who is on this workspace and what is their role' is platform.members; 'who has this agent been shared with' is agent.shares. agent.profile_photos lists the agent's own profile photos (the agent profile photo is set with gen_agent_action set_primary_photo) — never characters: a character (a person with looks and talking characters) is gen_characters. 'What is being monitored for this agent, and is anything paused for credits?' is agent.monitoring (each target's source, active vs paused-for-funding, last scrape). Two halves: ingredient cells (columns/rows/row/cell/variables) feed a row; video (video_settings + layers) composes the output. Agent choice: agent.list is the only agent-id lookup — when an agent-scoped view needs an agent and the conversation has not already named one, list the agents and ask the user which to use, never guess. This tool only reads and never edits or generates. Ideas, scripts, trends and stats come only from GEN calls: never invent them, call GEN.

100.0/100

1 trials · measured 1 day ago

gen_discover scores 100.0/100 on Vouch's measured behaviour index, from 1 real invocation trials against io.github.poweredbyGEN/gen-mcp-server, measured 6 Oct 2026 under methodology v0.2.0. Every measured component scored 100.

Component breakdown

ComponentWeightValue
Reliability35%not applicable
Schema integrity25%100.0
Failure behaviour15%not applicable
Latency15%not applicable
Concurrency10%not applicable

Tool details

Transport
remote
Credential class
gated
Input schema
not declared
Output schema
not declared
Side-effect classification
unclassified

Score history

DayScoreTierMethodology
2026-10-06100.0shallowv0.2.0

Probe evidence

ProbeOutcomes
schema_integritypass: 1

Raw request/response logs are not archived yet — the outcome counts above are drawn directly from every recorded trial.

Embed this score

Available for every tool, scored or not — not a verification perk. Always links back to this page.

Vouch score: gen_discover
[![Vouch score](https://vouch.tools/api/tools/8f2c9182-3063-4e1f-82aa-119280cb8631/badge.svg)](https://vouch.tools/tools/8f2c9182-3063-4e1f-82aa-119280cb8631)
gen_discover — Vouch