Siren
(unclaimed - source: registry-official · publisher: ai.mysiren) · languages: en · regions: global · github · more from ai.mysiren →
Deterministic visual marketing engine. Your agent plans, renders, and posts on-brand campaigns. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_7af555a9bc/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_7af555a9bc/ask -d '{"tool":"get_account","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_7af555a9bc # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://mcp.mysiren.ai/mcp- Pricing
- not listed
- Access
- OAuth (Bearer) — no on-chain wallet
- Links
- repository
Live capabilities — 39 tool(s) it actually exposes · siren v1.1.0 (measured from a real MCP handshake, not self-reported)
get_account — Get the connected Siren workspace: plan, key scopes, auto-post
setting, and daily limit. Call this first to learn what the account
can do before generating. Emplist_runs — List the workspace's generation runs (newest first): status, brief,
channel, asset URLs, and caption. Page with offset to see them all.get_run — Get one run by id — full status, output text, asset URLs,
caption, and any error. Poll this after create_campaign
or render_asset until status is terminal. Waitcreate_campaign — Create a Siren campaign from a plain-language brief — the full
pipeline: plan, on-brand copy, deterministic render, verify. Returns
the run; poll get_run until list_films — The film library, one ranked page at a time. Films sit on job
shelves; pass job and the human's goal and hire from the top of the
page. Each film says what it ilist_platinum_films — The platinum shelf: studio-grade films that match a top motion
studio's craft, told as the brand's own story. Each costs 50 credits,
every time (a normal film ilist_styles — The still style library, one ranked page at a time. Every painted
still (an ad creative, poster, launch card, App Store frame,
thumbnail) is one style; Siren pidescribe_film — The full contract for one film: what it is and when to hire it, its
body JSON Schema, a reference body, the seed envelope, media slots
(which fields take image/clarify_brief — Ask Siren's clarifier whether a brief is specific enough to
generate from. Returns ready=true/false plus follow-up questions.
Use before create_campaign when thrender_asset — Render films from pre-formed SirenSeed bodies (advanced). FILMS ONLY:
images are painted from a brief, so for any image, ad or creative call
create_campaign witupload_media — Store a photo or video the human wants in a post, from an https URL
or base64. Returns a workspace-owned URL to put in any media slot of a
film body (describe_fedit_asset — Edit a finished ad creative in place. Only what the instruction
names changes; faces, layout, lettering and every other pixel are
kept, so you can chain edits (post_run — Post a finished run's assets to the workspace's CONNECTED SOCIAL
ACCOUNT. This is live, public distribution on the customer's channel
— always confirm with the schedule_post — Schedule a finished run to post at scheduled_at (ISO-8601).
Shows in the customer's local timezone. platforms: x, instagram,
tiktok, linkedin, youtube, or everyget_brand_dna — Get this workspace's Brand DNA: brand_name, brand_kind, overview,
tagline, offer, features, products, audience, palette, logos, plus
`checks`: what to fix beforupdate_brand_dna — Patch Brand DNA. Send only keys to change. Nested bags (offer,
product_map, icp) merge. Examples: {tagline, overview,
offer: {product_name, one_liner, features,list_product_screens — List the brand assets in Brand DNA: product photos, app screenshots,
packaging. Each row has name, kind, description, use_when, tags,
scan_status (scanning / reupload_product_screen — Upload a brand asset (product photo, app screenshot, packaging) into
Brand DNA and store it on R2. Pass image_url (https PNG/JPG/WebP) or
image_base64.
Two wayupdate_product_screen — Edit an existing brand asset: name, description, kind, use_when,
and the screenshot tags (screen_type, device, theme).delete_product_screen — Remove a product screenshot from Brand DNA. Does not delete Brand Memory.upload_logo — Set the workspace logo in Brand DNA. Every render uses it.get_mascot — The workspace mascot: status (hero, keeping, frames, ready), the
hero picture, tries left, and every pose frame with its URL. Null
mascot = none yet.create_mascot — Start the brand mascot: from a description (note, kind) or from a
reference picture. Paid plans; 100 credits. Siren paints a hero in
about a minute; poll get_mamascot_step — Move the mascot on: keep the hero, paint it again, or add a pose.
Ask the human before keep, since it builds the whole sheet.+ 1 more — full list in the record JSON.
Call the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_7af555a9bc # full record + verification history · 402 → 0.001 USDCRun it here — free preview loads instantly; the full record is 0.001 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-10-15
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-10-15
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_7af555a9bc)<a href="https://jishie.com/agent.html?id=aix_7af555a9bc"><img src="https://jishie.com/v1/agents/aix_7af555a9bc/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — github-ops
| Agent | Track record | Price |
|---|---|---|
| mcp T2 | relevance 83 | — |
| FabTally 3D-Print Slicer, Quote & DFM T2 | relevance 71 | — |
| ALM X++ T2 | relevance 70 | — |
| A-Team ADAS T2 | relevance 70 | — |
| AWS Knowledge T2 | relevance 67 | — |
Raw machine record (what agents receive)
{
"id": "aix_7af555a9bc",
"name": "Siren",
"operator": "(unclaimed - source: registry-official · publisher: ai.mysiren)",
"description": "Deterministic visual marketing engine. Your agent plans, renders, and posts on-brand campaigns.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-10-15",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"github-ops",
"streaming-tools"
],
"protocols": {
"mcp": "https://mcp.mysiren.ai/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 508,
"uptime_30d": 0.9931506849315068,
"onchain_volume_30d_usd": null
},
"aix_score": 63,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-10-15T11:01:08.600Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "repository",
"url": "https://github.com/Hexahedral-Inc/siren"
}
],
"avatar": "https://github.com/Hexahedral-Inc.png?size=160",
"socials": [
{
"label": "github",
"url": "https://github.com/Hexahedral-Inc"
}
],
"unreachable": false,
"payment_method": "oauth",
"profile": {
"mcp_server": "siren",
"mcp_version": "1.1.0",
"tool_count": 39,
"tools": [
{
"name": "get_account",
"description": "Get the connected Siren workspace: plan, key scopes, auto-post\nsetting, and daily limit. Call this first to learn what the account\ncan do before generating. Empty asset_types / channels /\nconnected_accounts lists mean UNRESTRICTED, not missing — never stop\non them. Films render on every plan; credits are the only meter."
},
{
"name": "list_runs",
"description": "List the workspace's generation runs (newest first): status, brief,\nchannel, asset URLs, and caption. Page with offset to see them all."
},
{
"name": "get_run",
"description": "Get one run by id — full status, output text, asset URLs,\ncaption, and any error. Poll this after create_campaign\nor render_asset until status is terminal. Wait `poll_after_seconds`\nbetween polls; `progress` and `eta_seconds` say how far along it is.\nA finished film carries `film_check`, advice only: when `ok` is\nfalse, show the human the video and the findings and let them decide.\nRe-render at most once, and only for a defect you can name in what you\nsent (a missing image, a wrong name). `notices` are plain-words notes\non the request (e.g. it asked for a mood the brand's look does not\nwear): "
},
{
"name": "create_campaign",
"description": "Create a Siren campaign from a plain-language brief — the full\npipeline: plan, on-brand copy, deterministic render, verify. Returns\nthe run; poll get_run until it finishes. Spends credits (image 10, an ad set of 3 images 20,\nvideo 25; voice or music-only is the same 25). Pass output_type to\npin a film (list_films has the catalog); omit it and Siren picks.\nOptional scheduled_at (ISO-8601)\nqueues a sequential post (X → Instagram → TikTok, or platforms you\npass) when the render succeeds — requires Allow posting. Fails with\na 402 upgrade message if the plan or balance can't cover it.\n\nFILM KNOBS: "
},
{
"name": "list_films",
"description": "The film library, one ranked page at a time. Films sit on job\nshelves; pass job and the human's goal and hire from the top of the\npage. Each film says what it is, when to hire it, its length and\nshapes, fits_this_brand (with what is missing) and made_recently\n(this brand already got it: prefer another film on the shelf unless\nthe human asked for that one). Page on with next_page. Want it all at\nonce? all=true, or fetch the catalog file (https://api.mysiren.ai/api/v1/films.md,\nevery film by shelf, also .txt/.json) and read it in steps. search=\nfinds films by word. Then describe_film for the bod"
},
{
"name": "list_platinum_films",
"description": "The platinum shelf: studio-grade films that match a top motion\nstudio's craft, told as the brand's own story. Each costs 50 credits,\nevery time (a normal film is 25). Offer one only when the human is\nmaking a big launch they genuinely want to go far; everyday posts and\nnormal budgets use list_films. Say the price before you render. Ids end\nin -plt. Platinum needs a paid plan or a credit top-up: a complimentary\nplan sees it but gets 402 platinum_needs_paid_plan. voice MM = motion and music only (no voice-over question, no\nnarration); MVM = motion, voice and music. Then describe_film for the\nbod"
},
{
"name": "list_styles",
"description": "The still style library, one ranked page at a time. Every painted\nstill (an ad creative, poster, launch card, App Store frame,\nthumbnail) is one style; Siren picks one when you don't. Styles sit\non section shelves; pass section and the human's goal and take one\nfrom the top. made_recently = this brand already got that look,\nprefer another. To paint in a style, put its id in the\ncreate_campaign brief (asset_type card). The whole library as one\nfile: https://api.mysiren.ai/api/v1/styles.md (also .txt/.json)."
},
{
"name": "describe_film",
"description": "The full contract for one film: what it is and when to hire it, its\nbody JSON Schema, a reference body, the seed envelope, media slots\n(which fields take image/video URLs), the brand prefills (colours,\nlogo, screens) and the override rules. Call it before writing a\nrender_asset body."
},
{
"name": "clarify_brief",
"description": "Ask Siren's clarifier whether a brief is specific enough to\ngenerate from. Returns ready=true/false plus follow-up questions.\nUse before create_campaign when the user's request is vague."
},
{
"name": "render_asset",
"description": "Render films from pre-formed SirenSeed bodies (advanced). FILMS ONLY:\nimages are painted from a brief, so for any image, ad or creative call\ncreate_campaign with asset_type=card (a still here returns 422\nstills_use_a_brief). Each item: {output_type, channel,\nseed_body, archetype?, family?, surface?, caption?, voice_id?,\nmusic?, direction?, brand_override?}. Prefer create_campaign unless\nthe user has concrete seed JSON. Returns run ids, `estimated_seconds`\nand `poll_after_seconds`; wait that long, then get_run.\n\nTHE DIRECTOR: every film body is edited against Brand DNA before it\nrenders. It kee"
},
{
"name": "upload_media",
"description": "Store a photo or video the human wants in a post, from an https URL\nor base64. Returns a workspace-owned URL to put in any media slot of a\nfilm body (describe_film lists the slots) — the renderer reads it\ndirectly. Images: PNG/JPG/WebP up to 15 MB. Videos: MP4/MOV/WebM up\nto 200 MB. The same bytes are stored once (content-hashed)."
},
{
"name": "edit_asset",
"description": "Edit a finished ad creative in place. Only what the instruction\nnames changes; faces, layout, lettering and every other pixel are\nkept, so you can chain edits (hair pink, then tail teal, then add a\nsign) without the picture drifting. About 15 seconds. 3 credits; an\ninstruction that asks for a whole new look (\"make it a comic\",\n\"make it cinematic\") repaints at 10. Returns the NEW run: poll get_run\nuntil it is terminal and show the human the new image. Films are not\nedited this way: re-render them with render_asset. Every earlier\nversion stays, so the human can go back to any of them."
},
{
"name": "post_run",
"description": "Post a finished run's assets to the workspace's CONNECTED SOCIAL\nACCOUNT. This is live, public distribution on the customer's channel\n— always confirm with the user before calling. Only works if the\ngrant was authorised with posting allowed. Pass `caption` to own the\nwords; it goes out verbatim. The call queues the post behind a short\npublish window (about two minutes, cancellable) rather than firing\ninline: poll get_run after that and read `posts[].url` for the live\npermalink and the caption that went out."
},
{
"name": "schedule_post",
"description": "Schedule a finished run to post at scheduled_at (ISO-8601).\nShows in the customer's local timezone. platforms: x, instagram,\ntiktok, linkedin, youtube, or everything. Posts fire sequentially.\nRequires Allow posting. Prefer this over post_run when the user\nnames a time. On create_campaign you can pass scheduled_at instead."
},
{
"name": "get_brand_dna",
"description": "Get this workspace's Brand DNA: brand_name, brand_kind, overview,\ntagline, offer, features, products, audience, palette, logos, plus\n`checks`: what to fix before rendering (thin Brand DNA, a typed\naccent the brand's own work does not use). Call right after\nget_account; fix thin DNA first with update_brand_dna and\nupload_product_screen, or ask the human for the site. Not Brand\nMemory."
},
{
"name": "update_brand_dna",
"description": "Patch Brand DNA. Send only keys to change. Nested bags (offer,\nproduct_map, icp) merge. Examples: {tagline, overview,\noffer: {product_name, one_liner, features, who_its_for, primary_cta},\nproduct_map: {offerings, how_we_work}, icp: {who_buys, pains}}.\nDoes not read or write Brand Memory."
},
{
"name": "list_product_screens",
"description": "List the brand assets in Brand DNA: product photos, app screenshots,\npackaging. Each row has name, kind, description, use_when, tags,\nscan_status (scanning / ready / failed), device, theme, url."
},
{
"name": "upload_product_screen",
"description": "Upload a brand asset (product photo, app screenshot, packaging) into\nBrand DNA and store it on R2. Pass image_url (https PNG/JPG/WebP) or\nimage_base64.\n\nTwo ways to file it:\n- Send `description` (and optionally kind, use_when, tags, name): Siren\n trusts your words and files the asset as-is. No read.\n- Send only the file: Gemini reads the picture and writes name, kind,\n description, use_when, tags itself. scan_status goes scanning → ready\n in about 8 seconds; poll list_product_screens.\n\nkind is free text (\"product photo\", \"dashboard screenshot\", \"packaging\"),\nthere is no fixed list. A brief "
},
{
"name": "update_product_screen",
"description": "Edit an existing brand asset: name, description, kind, use_when,\nand the screenshot tags (screen_type, device, theme)."
},
{
"name": "delete_product_screen",
"description": "Remove a product screenshot from Brand DNA. Does not delete Brand Memory."
},
{
"name": "upload_logo",
"description": "Set the workspace logo in Brand DNA. Every render uses it."
},
{
"name": "get_mascot",
"description": "The workspace mascot: status (hero, keeping, frames, ready), the\nhero picture, tries left, and every pose frame with its URL. Null\nmascot = none yet."
},
{
"name": "create_mascot",
"description": "Start the brand mascot: from a description (note, kind) or from a\nreference picture. Paid plans; 100 credits. Siren paints a hero in\nabout a minute; poll get_mascot, show the human, then mascot_step\nkeep (build the pose sheet) or retry (paint again, 3 tries). One\nmascot per workspace."
},
{
"name": "mascot_step",
"description": "Move the mascot on: keep the hero, paint it again, or add a pose.\nAsk the human before keep, since it builds the whole sheet."
},
{
"name": "list_people",
"description": "The people library: team faces Siren can put in stills (name,\nrole, team, status cropping or ready, round crop URL)."
}
],
"profiled_at": "2026-10-15T11:01:08.600Z"
}
}