Aetherya
by aetherya.ai · remote · local (npm) · no sign-in to list tools · v1.0.5 · published by ai.aetherya
Test decisions on a synthetic audience: studies, site audits, copy tests and post simulations.
27 tools: 1 can delete or cancel things, 20 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things20Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http aetherya https://mcp.aetherya.ai/mcp --header 'Authorization: <your-authorization>'Findings
Matches of fixed checks, with the text they matched.
- Warnaetherya_read
The server marks "aetherya_read" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "aetherya_read" says "read": a word for reading.
The server marks "aetherya_get_brief" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "aetherya_get_brief" says "get": a word for reading.
The server marks "aetherya_compare_creatives" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "aetherya_compare_creatives" says "compare": a word for reading.
The description mentions "credentials".
What this check looks forMatched text
description: "...bmitted. For pages behind a login, pass credentials for a dedicated test account the user g..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
27 tools
Deletes or cancels 1Claude Code: deny
aetherya_cancelStop a study, instant read, plan, audit or post simulation that is still running.Reads text others writeNo findings
Why it is in this group
- The name "aetherya_cancel" says "cancel": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Stop a study, instant read, plan, audit or post simulation that is still running. Use it when the user changes their mind or a run was started with the wrong inputs. Finished runs are not affected.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 20Claude Code: ask
aetherya_ask_audienceSECONDARY TOOL.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it SECONDARY TOOL. Pose a question to a SINGLE synthetic persona and get one predicted, in-character response — good for an open-ended 'would this confuse someone like this?' sounding-out. The answer is SIMULATED (one persona's predicted reaction), not a real person, and ONE persona is not an audience: it carries no distribution and no disagreement, so never report it as what 'users' or 'the audience' think. For a finding you can act on, use aetherya_test_copy (compare variants) or aetherya_run_study / aetherya_plan_study (a panel with a spread of reactions).
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_audit_siteRun a behavioral simulation: a synthetic audience visits a URL and predicts where real users would hesitate, get confused, or drop off, plus messaging-clarity and UX friction findi…Reads text others writeCan send data out1 finding
Why it is in this group
- The description's first verb is "run": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...bmitted. For pages behind a login, pass credentials for a dedicated test account the user g..."
Description, as the server wrote it Run a behavioral simulation: a synthetic audience visits a URL and predicts where real users would hesitate, get confused, or drop off, plus messaging-clarity and UX friction findings with concrete fixes. Ideal for evaluating a freshly built or changed page and getting actionable UX/messaging improvements in the same loop. To find out how people experience a flow (sign-up, onboarding, checkout), pass tasks and start_url: the simulated visitors then walk the flow step by step instead of touring the site. By default they stop before the final submit, so nothing is created or bought; pass allow_test_signups only when the user explicitly allows test sign-ups. Payment is never submitted. For pages behind a login, pass credentials for a dedicated test account the user gave you. Results are SIMULATED (predicted behavior of a synthetic audience), not feedback from real users.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_compare_creativesCompare 2+ image creatives (thumbnails, display banners, social images) against a synthetic audience.Reads text others write1 finding
Why it is in this group
- The name "aetherya_compare_creatives" says "compare": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The server marks "aetherya_compare_creatives" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "aetherya_compare_creatives" says "compare": a word for reading.
Description, as the server wrote it Compare 2+ image creatives (thumbnails, display banners, social images) against a synthetic audience. Creates the experiment, uploads the images, attaches the audience and drafts the comparison (free). It then returns status 'needs_price_confirmation' with the quoted simulation sessions; nothing is spent until you re-call with accept_sessions >= the quote (pass accept_sessions up front to skip the pause). To confirm a draft already created, pass comparison_id + accept_sessions only. Cost scales with creatives x personas; an audience group is capped at 10 personas per segment. choice_task adds a forced-choice round (choiceCost in the quote). Collect the ranking with aetherya_get_result kind 'creative_comparison'. Results are simulated, not real-user data.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_confirm_studyRespond to a plan from aetherya_plan_study.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Respond to a plan from aetherya_plan_study. Use action 'confirm' with accept_sessions to approve the quoted cost and start the run — this is the point at which simulation sessions are spent, so check with the user first. Use 'answer' to reply to the clarifying questions (answers with the option ids the user picked, or answer for one free-text reply), 'cancel' to abandon the plan, or 'retry' after a failure. After confirming, the run continues and returns its decision brief when it finishes.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_create_audienceCreate synthetic-audience personas to simulate against.Reads text others writeNo findings
Why it is in this group
- The name "aetherya_create_audience" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Create synthetic-audience personas to simulate against. Describe who you want to model and get back personas (with ids) you can then target as the 'audience' in aetherya_audit_site, aetherya_test_copy, or aetherya_ask_audience. These are SIMULATED personas (engine-generated), not real people. Returns the created personas inline.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_create_intake_linkCreate a secret upload link to send a client so they can drop creative files (images, video) for pretesting.Reads text others writeNo findings
Why it is in this group
- The name "aetherya_create_intake_link" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Create a secret upload link to send a client so they can drop creative files (images, video) for pretesting. Returns the url and expiry; treat the url as a secret and share it only with the client. Needs a workspace admin or manager, and the feature must be enabled for the workspace (otherwise a clear 'not enabled' message).
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_estimateQuote how many simulation sessions a run would cost, and roughly what share of your plan it would consume, before committing to it.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Quote how many simulation sessions a run would cost, and roughly what share of your plan it would consume, before committing to it. Free — this never starts a simulation. Use it to size an audience or shorten a study when headroom is tight.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
aetherya_get_briefTurn a finished study, audit, read or post simulation into a short decision brief: the question, a direct answer, the reasoning with supporting simulated reactions, the risks, and …Reads text others write1 finding
Why it is in this group
- The name "aetherya_get_brief" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "post": it reads posts, which other people can write.
Findings
- Warn
The server marks "aetherya_get_brief" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "aetherya_get_brief" says "get": a word for reading.
Description, as the server wrote it Turn a finished study, audit, read or post simulation into a short decision brief: the question, a direct answer, the reasoning with supporting simulated reactions, the risks, and what to do next. This is what you hand a human — use it instead of relaying raw metrics. Reuses the stored brief when one exists, so repeat calls are free (unless language, register or regulated is given: that writes a new brief with a model call). Everything in it comes from SIMULATED behaviour, not real-user research.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_plan_studyGive Aetherya a decision you need to make, in plain English, and it designs the study, picks or builds the audience, prices it, and runs it — then writes a decision brief.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Give Aetherya a decision you need to make, in plain English, and it designs the study, picks or builds the audience, prices it, and runs it — then writes a decision brief. Use this when you do not already know which research method fits; use aetherya_run_study when you do. It can also simulate a whole funnel (an ad leading to a landing page, and which call to action people take there): describe the ad, the page URL and the goals in the objective. It always stops for your approval at a price before spending anything: expect status 'needs_price_confirmation' and answer it with aetherya_confirm_study. Call it again with autopilot_id to check on a plan already running. Results are SIMULATED predicted behaviour, not real-user research.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_pretest_reportAssemble a markdown pretest report (how we worked, one section per set, what the results mean, sealed predictions appendix) from finished simulations.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Assemble a markdown pretest report (how we worked, one section per set, what the results mean, sealed predictions appendix) from finished simulations. Deterministic unless generateFixes is true (then the model drafts fixes and a one-line summary per set, if enabled on the account); otherwise the recommended fixes are left as placeholders for the analyst. Returns the markdown plus claim-lint warnings to resolve before sending. Seals each set's prediction as a side effect. Results are simulated, not real-user data. For a branded PDF, open the same report in the app at /dashboard/ad-lab/pretest and use Download PDF.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_pretest_videoPretest a short video (mp4, mov, webm; max 512 MB, 10 minutes) against a synthetic audience: hook score, attention curve, drop-off points.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Pretest a short video (mp4, mov, webm; max 512 MB, 10 minutes) against a synthetic audience: hook score, attention curve, drop-off points. Uploads the file (video_path on this machine, or video_url), splits it into scenes, then returns status 'needs_price_confirmation' with the quote. The quote exists only after preparing, and the draft is free EXCEPT speech-to-text: when you pass no transcript_srt, preparing charges 0.25 to 6 simulation sessions for transcription up front. Analysis cost is personas x 5 + scenes x 0.5 sessions, minimum 10, max 60 personas. Nothing more is spent until you re-call with accept_sessions >= the quote (pass it up front to skip the pause). If preparing is still running the tool returns 'preparing' with experiment_id, video_id and prepare_job_id: call again with those. Collect with aetherya_get_result kind 'video_analysis'. Results are simulated, not real-user data.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_readMyrias instant read.Reads text others write1 finding
Why it is in this group
- The name "aetherya_read" says "read": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The server marks "aetherya_read" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "aetherya_read" says "read": a word for reading.
Description, as the server wrote it Myrias instant read. Reads 2-5 variants against a census-weighted synthetic population for a market, in seconds, and returns each variant's predicted action propensity, its lift over the control, and which demographic archetypes favour it. A variant can be copy (text), a live page (url), an image (image_path, image_url or image_base64) or a video (video_path). Media reads are single-kind: images or videos cannot be mixed with copy, pages or each other. The first read of a new image takes about 30-45 s and may come back running (collect it with aetherya_get_result). A video is uploaded and prepared first, about 1-2 min. Much cheaper and faster than aetherya_test_copy, which is the deeper follow-up. Counts against the monthly read allowance, not simulation sessions. Results are SIMULATED, not real-user data.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_record_outcomeAttach what actually happened to a sealed prediction (append-only) and get the evaluation.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "attach": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Attach what actually happened to a sealed prediction (append-only) and get the evaluation. creative_comparison actual: {metric:'ctr', values:[{creativeId?|variant?, value, impressions?, clicks?}]}; impressions and clicks let Aetherya record the result for calibration (see calibrationRecorded). video_analysis actual: {threeSecondHoldPct?, biggestDropSec?, watchedFullPct?}. Other kinds: any object.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_run_studyRun a Research Lab study — pricing sensitivity, message testing, concept testing, focus groups — against a synthetic audience and get a structured verdict with segment breakdowns, …Reads text others writeNo findings
Why it is in this group
- The name "aetherya_run_study" says "run": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Run a Research Lab study — pricing sensitivity, message testing, concept testing, focus groups — against a synthetic audience and get a structured verdict with segment breakdowns, objections and representative reactions. Call aetherya_list_capabilities first to pick a method and see the inputs it needs. Results are SIMULATED predicted behaviour, not feedback from real users.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_seal_predictionLock a prediction (a creative comparison ranking, a video analysis, a study or a manual payload) with a SHA-256 hash and timestamp, so it can later be compared with what really hap…Reads text others writeNo findings
Why it is in this group
- The description's first verb is "lock": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Lock a prediction (a creative comparison ranking, a video analysis, a study or a manual payload) with a SHA-256 hash and timestamp, so it can later be compared with what really happened. Pass source_id to seal a finished simulation, or payload for a manual prediction. Returns the id, hash and sealed payload.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_simulate_postRun a post (X, LinkedIn, Instagram, Facebook) or email through a synthetic audience and get predicted engagement, sentiment and representative reactions before publishing.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "aetherya_simulate_post" says "post": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe name "aetherya_simulate_post" says "post": it sends or publishes something to other people.
Description, as the server wrote it Run a post (X, LinkedIn, Instagram, Facebook) or email through a synthetic audience and get predicted engagement, sentiment and representative reactions before publishing. Starts the run and waits briefly; collect with aetherya_get_result kind 'post_simulation'. Results are SIMULATED reactions, not real engagement.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_test_copyCompare 2-5 copy variants — headlines, value propositions, ad or email copy — against a synthetic audience, and get a ranked verdict with predicted action propensity, comprehension…Reads text others writeNo findings
Why it is in this group
- The name "aetherya_test_copy" says "copy": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Compare 2-5 copy variants — headlines, value propositions, ad or email copy — against a synthetic audience, and get a ranked verdict with predicted action propensity, comprehension and trust per variant, plus the objections each raises. Results are SIMULATED predicted reactions, not feedback from real users.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_test_flowSimulate people who arrive from an ad (image, video or copy), land on a page, and take one of several exits (for example book a consultation, open the plan form, or leave).Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Simulate people who arrive from an ad (image, video or copy), land on a page, and take one of several exits (for example book a consultation, open the plan form, or leave). Reports the exit split per arm. Pass rewrites to compare a changed ad and page copy against the original on the same audience. The first call quotes the cost and starts nothing; call again with accept_cost true once the user agrees. Collect results with aetherya_get_result kind 'flow'. Results are SIMULATED, not real-user data.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
aetherya_verify_predictionRecompute the hash of a sealed prediction and report whether it still matches the stored one.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Recompute the hash of a sealed prediction and report whether it still matches the stored one.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
Only reads 6Claude Code: allow
aetherya_get_audit_resultFetch the result of an audit started by aetherya_audit_site, using its job_id.Reads text others writeNo findings
Why it is in this group
- The name "aetherya_get_audit_result" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Fetch the result of an audit started by aetherya_audit_site, using its job_id. Returns the full simulated behavioral findings once complete, or a 'running' status to poll again. Results are SIMULATED predicted behavior, not real users.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
aetherya_get_resultFetch the findings of a run started by aetherya_run_study, aetherya_test_copy, aetherya_audit_site, aetherya_plan_study, aetherya_read, aetherya_simulate_post, aetherya_compare_cre…Reads text others writeNo findings
Why it is in this group
- The name "aetherya_get_result" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "fetch" and "post": it reads posts, which other people can write.
Description, as the server wrote it Fetch the findings of a run started by aetherya_run_study, aetherya_test_copy, aetherya_audit_site, aetherya_plan_study, aetherya_read, aetherya_simulate_post, aetherya_compare_creatives, aetherya_pretest_video or aetherya_test_flow, using the kind and id from that tool's response. Simulations run longer than a single tool call, so this is the normal way to collect results. All results are SIMULATED predicted behaviour, not real-user data.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
aetherya_list_audiencesList the synthetic audiences (simulated personas) in this workspace: their overall shape (where they are, what they do, how much is actually filled in) plus a sample with ids.Reads text others writeNo findings
Why it is in this group
- The name "aetherya_list_audiences" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List the synthetic audiences (simulated personas) in this workspace: their overall shape (where they are, what they do, how much is actually filled in) plus a sample with ids. These are simulated personas, not real people, and a stored persona pool is usually narrower than the audience a decision is about — read the distribution before targeting by id, and prefer describing the audience you want in aetherya_plan_study when the pool does not match it.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
aetherya_list_capabilitiesList the research methods this workspace can run — with the exact stimulus fields each one requires — plus remaining plan headroom and simulation-session balance.Reads text others writeNo findings
Why it is in this group
- The name "aetherya_list_capabilities" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List the research methods this workspace can run — with the exact stimulus fields each one requires — plus remaining plan headroom and simulation-session balance. Call this before aetherya_run_study or aetherya_test_copy to pick a method and check cost headroom. Everything Aetherya runs is a SIMULATION of a synthetic audience, not real-user research.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
aetherya_list_intake_filesList the files a client uploaded through an intake link (name, type, size, status, set label, a short-lived download url).Reads private dataReads text others writeNo findings
Why it is in this group
- The name "aetherya_list_intake_files" says "list": a word for reading.
What it can reach
- private-dataThe name "aetherya_list_intake_files" says "list" and "file": it reads files.
- private-dataThe description's first sentence says "list" and "file": it reads files.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "list" and "url": it reads web pages, which anyone can write.
Description, as the server wrote it List the files a client uploaded through an intake link (name, type, size, status, set label, a short-lived download url). The feature must be enabled for the workspace.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
aetherya_list_runsList the workspace's recent simulations across studies, instant reads, plans, audits and post simulations, newest first, with the kind and id to pass to aetherya_get_result or aeth…Reads text others writeNo findings
Why it is in this group
- The name "aetherya_list_runs" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "list" and "post": it reads posts, which other people can write.
Description, as the server wrote it List the workspace's recent simulations across studies, instant reads, plans, audits and post simulations, newest first, with the kind and id to pass to aetherya_get_result or aetherya_get_brief. Use it to find earlier work instead of re-running it.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
54 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 private-data tool breaks every one.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write27
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out2
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__aetherya__aetherya_list_intake_files"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 1.0.5. Values in angle brackets are yours to fill in.
claude mcp add --transport http aetherya https://mcp.aetherya.ai/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__aetherya__aetherya_list_capabilities",
"mcp__aetherya__aetherya_list_runs",
"mcp__aetherya__aetherya_get_result",
"mcp__aetherya__aetherya_get_audit_result",
"mcp__aetherya__aetherya_list_intake_files",
"mcp__aetherya__aetherya_list_audiences"
],
"ask": [
"mcp__aetherya__aetherya_estimate",
"mcp__aetherya__aetherya_plan_study",
"mcp__aetherya__aetherya_confirm_study",
"mcp__aetherya__aetherya_read",
"mcp__aetherya__aetherya_run_study",
"mcp__aetherya__aetherya_test_copy",
"mcp__aetherya__aetherya_audit_site",
"mcp__aetherya__aetherya_test_flow",
"mcp__aetherya__aetherya_ask_audience",
"mcp__aetherya__aetherya_simulate_post",
"mcp__aetherya__aetherya_get_brief",
"mcp__aetherya__aetherya_share_result",
"mcp__aetherya__aetherya_pretest_report",
"mcp__aetherya__aetherya_compare_creatives",
"mcp__aetherya__aetherya_pretest_video",
"mcp__aetherya__aetherya_seal_prediction",
"mcp__aetherya__aetherya_verify_prediction",
"mcp__aetherya__aetherya_record_outcome",
"mcp__aetherya__aetherya_create_intake_link",
"mcp__aetherya__aetherya_create_audience"
],
"deny": [
"mcp__aetherya__aetherya_cancel"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as aetherya. Review it before you use it.
Capability tags behind 27 rules
- mcp__aetherya__aetherya_list_capabilities untrusted-input
- mcp__aetherya__aetherya_estimate untrusted-input
- mcp__aetherya__aetherya_plan_study untrusted-input
- mcp__aetherya__aetherya_confirm_study untrusted-input
- mcp__aetherya__aetherya_read untrusted-input
- mcp__aetherya__aetherya_run_study untrusted-input
- mcp__aetherya__aetherya_test_copy untrusted-input
- mcp__aetherya__aetherya_audit_site untrusted-input, outbound
- mcp__aetherya__aetherya_test_flow untrusted-input
- mcp__aetherya__aetherya_ask_audience untrusted-input
- mcp__aetherya__aetherya_simulate_post untrusted-input, outbound
- mcp__aetherya__aetherya_cancel untrusted-input
- mcp__aetherya__aetherya_list_runs untrusted-input
- mcp__aetherya__aetherya_get_result untrusted-input
- mcp__aetherya__aetherya_get_audit_result untrusted-input
- mcp__aetherya__aetherya_get_brief untrusted-input
- mcp__aetherya__aetherya_share_result untrusted-input
- mcp__aetherya__aetherya_pretest_report untrusted-input
- mcp__aetherya__aetherya_compare_creatives untrusted-input
- mcp__aetherya__aetherya_pretest_video untrusted-input
- mcp__aetherya__aetherya_seal_prediction untrusted-input
- mcp__aetherya__aetherya_verify_prediction untrusted-input
- mcp__aetherya__aetherya_record_outcome untrusted-input
- mcp__aetherya__aetherya_create_intake_link untrusted-input
- mcp__aetherya__aetherya_list_intake_files private-data, untrusted-input
- mcp__aetherya__aetherya_list_audiences untrusted-input
- mcp__aetherya__aetherya_create_audience untrusted-input