Xyla AI
ai.xyla/xylaxyla.aistreamable-httpv1.0.0Scanned
Social posts for Shopify and WooCommerce stores: approve posts, see results, change settings.
20 tools: 2 can delete or cancel things, 10 change things and 8 only read.
- Reads private data · 0
- Reads text others write · 7
- Can send data out · 7
- 3 findings
Anlyon alternative
12 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
20 tools
Deletes or cancels 2Claude Code: deny
reject_postRejects one post in this Xyla shop that is waiting for approval, by its ID from pending_approvals.Can send data outNo findings
Why it is in this group
- The name "reject_post" says "reject": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- outboundThe name "reject_post" says "reject" and "post": it writes something other people read.
Description, as the server wrote it Rejects one post in this Xyla shop that is waiting for approval, by its ID from pending_approvals. The post is cancelled and will not be published.
Annotations the server declares
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: false
set_autopilotTurns Xyla autopilot on or off for this shop.No findings
Why it is in this group
- The name "set_autopilot" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Turns Xyla autopilot on or off for this shop. With autopilot on, Xyla makes and schedules posts by itself. mode include (the default) keeps posts already made and adds them to the schedule. mode fresh DELETES every post not yet scheduled, including posts the merchant made by hand, then builds a new schedule: call it first without confirm_delete_count to get the number of posts it deletes, tell the merchant, and only after they agree call again with confirm_delete_count set to that number. Turning autopilot off unschedules upcoming posts and deletes nothing.
Annotations the server declares
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
Changes things 10Claude Code: ask
approve_first_batchApproves this Xyla shop's first batch of posts as a whole.No findings
Why it is in this group
- The name "approve_first_batch" says "approve": a word for a change.
Description, as the server wrote it Approves this Xyla shop's first batch of posts as a whole. When the shop can publish, this also turns autopilot on in include mode (the posts already made are scheduled and nothing is deleted), and releases posts held for review into the schedule. Posts go out at their scheduled times, not straight away.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
approve_postsApproves posts in this Xyla shop that are waiting for approval, by their IDs from pending_approvals.Can send data outNo findings
Why it is in this group
- The name "approve_posts" says "approve": a word for a change.
What it can reach
- outboundThe name "approve_posts" says "approve" and "post": it writes something other people read.
Description, as the server wrote it Approves posts in this Xyla shop that are waiting for approval, by their IDs from pending_approvals. Each approved post takes the next free slot in the schedule; nothing publishes straight away. Posts in the shop's first batch cannot be approved one by one: use approve_first_batch for those.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
change_settingsChanges the shop's Xyla settings in one setting group (or a few related ones) and returns each value before and after plus an undo id.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Changes the shop's Xyla settings in one setting group (or a few related ones) and returns each value before and after plus an undo id. Every change in a call applies, or none does. Read the group with get_settings first, and confirm the change with the merchant before calling this. Changes affect posts made from now on, not posts already scheduled or published.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
confirm_post_fixRuns a post fix that request_post_fix started in this Xyla shop, with the change the merchant asked for.Can send data outNo findings
Why it is in this group
- The name "confirm_post_fix" says "post": a word for a change.
What it can reach
- outboundThe name "confirm_post_fix" says "post": it sends or publishes something to other people.
Description, as the server wrote it Runs a post fix that request_post_fix started in this Xyla shop, with the change the merchant asked for. Call post_fix_status first and tell the merchant whether it is free or what it costs; a fix that is not free uses the shop's credits. The new image or video replaces the post's media when it is ready.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
connect_accountMakes a one-use link that connects a social account to this Xyla shop, or reconnects a broken 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.
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 Makes a one-use link that connects a social account to this Xyla shop, or reconnects a broken one. Give the merchant the link to open in their browser; it works once and expires in 10 minutes, and asks for the store's email. To reconnect an account from connection_status, pass its social_media_account_id. Instagram has two ways in: instagram_direct (Instagram Login, the usual choice) and instagram (through a Facebook Page, needed for Stories and product tags). Disconnecting stays on the Xyla website.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- readOnlyHint: false
post_fix_statusReports where a post fix from request_post_fix stands in this Xyla shop: still being checked, free (Xyla found a problem on its side), or how many credits it costs.Can send data out1 finding
Why it is in this group
- The name "post_fix_status" says "post": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe name "post_fix_status" says "post": it sends or publishes something to other people.
Findings
- Warn
The server marks "post_fix_status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "post_fix_status" says "post": a word for a change.
Description, as the server wrote it Reports where a post fix from request_post_fix stands in this Xyla shop: still being checked, free (Xyla found a problem on its side), or how many credits it costs. After confirm_post_fix, reports whether the fix is running, done or failed.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
preview_storeShows what Xyla would post for an online store, with no Xyla account.Reads text others writeCan send data out1 finding
Why it is in this group
- The name "preview_store" says "preview": 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 "show" and "post": it reads posts, which other people can write.
- untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Findings
- Warn
The server marks "preview_store" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "preview_store" says "preview": a word for reading.
Description, as the server wrote it Shows what Xyla would post for an online store, with no Xyla account. Give it the store's web address (Shopify or WooCommerce). Xyla reads the store's brand (logo, colours, niche) and makes 3 sample social media posts from the store's own product photos, with captions. Returns a preview token at once; the posts take about 3 minutes and the card shows them as they finish. A store previewed in the last 7 days gets its earlier samples back. When no card is shown, call preview_status with the token to follow it. A store that already uses Xyla gets a sign-in link instead.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- readOnlyHint: false
request_post_fixStarts a fix for one post's image or video in this Xyla shop.Can send data outNo findings
Why it is in this group
- The name "request_post_fix" says "request": a word for a change.
What it can reach
- outboundThe name "request_post_fix" says "request" and "post": it writes something other people read.
Description, as the server wrote it Starts a fix for one post's image or video in this Xyla shop. Xyla first checks the media for a problem on its side, which makes the fix free; otherwise the fix costs credits. Nothing is changed or charged yet. Then call post_fix_status with the audit_id to learn the cost, tell the merchant, and call confirm_post_fix only once they agree.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
undo_changePuts back the settings a change set replaced, using the undo id from change_settings or change_history.No findings
Why it is in this group
- The description's first verb is "put": a word for a change.
Description, as the server wrote it Puts back the settings a change set replaced, using the undo id from change_settings or change_history. The whole set is undone, or nothing is. It is refused when a setting has changed again since, so a newer choice is never overwritten.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
upcoming_postsLists the posts this Xyla shop will publish, day by day, for up to 7 days from a start date (the shop's today if left out).Can send data out1 finding
Why it is in this group
- The name "upcoming_posts" says "post": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe name "upcoming_posts" says "post": it sends or publishes something to other people.
Findings
- Warn
The server marks "upcoming_posts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "upcoming_posts" says "post": a word for a change.
Description, as the server wrote it Lists the posts this Xyla shop will publish, day by day, for up to 7 days from a start date (the shop's today if left out). Each post has its platforms, send time in the shop's time zone, type, caption and media links. Posts waiting for approval are not here: use pending_approvals.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
Only reads 8Show 8 read-only tools
change_historyLists recent changes to the shop's Xyla settings, newest first: what changed, before and after, who made it (the merchant, Xyla or the assistant), and the undo id to pass to undo_c…No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it Lists recent changes to the shop's Xyla settings, newest first: what changed, before and after, who made it (the merchant, Xyla or the assistant), and the undo id to pass to undo_change.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
connection_statusShows each social account connected to this Xyla shop: connected, expiring soon, expired, needs reconnecting, restricted or disconnected, and how many upcoming posts a broken accou…Reads text others writeNo findings
Why it is in this group
- The name "connection_status" says "status": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "show" and "post": it reads posts, which other people can write.
Description, as the server wrote it Shows each social account connected to this Xyla shop: connected, expiring soon, expired, needs reconnecting, restricted or disconnected, and how many upcoming posts a broken account is blocking.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
get_settingsShows the shop's current Xyla settings for one setting group, with the ids change_settings needs and how each field works.No findings
Why it is in this group
- The name "get_settings" says "get": a word for reading.
Description, as the server wrote it Shows the shop's current Xyla settings for one setting group, with the ids change_settings needs and how each field works. Call it without tool to list the setting groups. Read a group before changing it.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
insightsShows how this Xyla shop's published posts performed over the last 7, 14, 30 or 90 days: reach, views, engagement, followers per account, and the top posts.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "show": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "show" and "post": it reads posts, which other people can write.
Description, as the server wrote it Shows how this Xyla shop's published posts performed over the last 7, 14, 30 or 90 days: reach, views, engagement, followers per account, and the top posts. Same data as the Insights page in Xyla.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
pending_approvalsLists the posts in this Xyla shop that wait for the merchant's approval before they are scheduled, 12 per page, with captions and media links.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "list": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "list" and "post": it reads posts, which other people can write.
Description, as the server wrote it Lists the posts in this Xyla shop that wait for the merchant's approval before they are scheduled, 12 per page, with captions and media links. When the shop is still on its first batch, returns that batch as one draft: it is approved as a whole, not post by post.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
preview_statusChecks a store preview started with preview_store: the brand Xyla found and the sample posts finished so far.Reads text others writeNo findings
Why it is in this group
- The name "preview_status" says "preview": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "post": it reads posts, which other people can write.
Description, as the server wrote it Checks a store preview started with preview_store: the brand Xyla found and the sample posts finished so far. done is true once the preview is ready or has stopped. While the preview card is showing it updates itself, so only call this when no card is shown, every few seconds.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
shop_overviewSummarises this Xyla shop: its plan, AI credits left, whether autopilot is on, how many posts wait for approval, the next 3 posts due, and any social account that needs fixing.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "summarise": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "summarise" and "post": it reads posts, which other people can write.
Description, as the server wrote it Summarises this Xyla shop: its plan, AI credits left, whether autopilot is on, how many posts wait for approval, the next 3 posts due, and any social account that needs fixing.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
whoamiShows which Xyla shop this connection acts for and whether it can only read or can also make changes.No findings
Why it is in this group
- The name "whoami" says "whoami": a word for reading.
Description, as the server wrote it Shows which Xyla shop this connection acts for and whether it can only read or can also make changes.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: 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.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write7
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out7
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
- Warnupcoming_posts
The server marks "upcoming_posts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "upcoming_posts" says "post": a word for a change.
- Warnpost_fix_status
The server marks "post_fix_status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "post_fix_status" says "post": a word for a change.
- Warnpreview_store
The server marks "preview_store" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "preview_store" says "preview": a word for reading.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http xyla https://app.xyla.ai/mcpclaude mcp add --transport http xyla https://app.xyla.ai/mcpRun 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__xyla__whoami",
"mcp__xyla__shop_overview",
"mcp__xyla__pending_approvals",
"mcp__xyla__insights",
"mcp__xyla__connection_status",
"mcp__xyla__get_settings",
"mcp__xyla__change_history",
"mcp__xyla__preview_status"
],
"ask": [
"mcp__xyla__upcoming_posts",
"mcp__xyla__change_settings",
"mcp__xyla__undo_change",
"mcp__xyla__connect_account",
"mcp__xyla__approve_posts",
"mcp__xyla__approve_first_batch",
"mcp__xyla__request_post_fix",
"mcp__xyla__post_fix_status",
"mcp__xyla__confirm_post_fix",
"mcp__xyla__preview_store"
],
"deny": [
"mcp__xyla__reject_post",
"mcp__xyla__set_autopilot"
]
}
}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 xyla. Review it before you use it.
Capability tags behind 13 rules
- mcp__xyla__shop_overview untrusted-input
- mcp__xyla__upcoming_posts outbound
- mcp__xyla__pending_approvals untrusted-input
- mcp__xyla__insights untrusted-input
- mcp__xyla__connection_status untrusted-input
- mcp__xyla__connect_account untrusted-input
- mcp__xyla__approve_posts outbound
- mcp__xyla__reject_post outbound
- mcp__xyla__request_post_fix outbound
- mcp__xyla__post_fix_status outbound
- mcp__xyla__confirm_post_fix outbound
- mcp__xyla__preview_store untrusted-input, outbound
- mcp__xyla__preview_status untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/ai.xyla/xyla/verify?hash=59ea19d51d4d7394d5a5bc33aacd5618c8682278313cf205ec1f1ff64d942452" | jq -e '.changed == false'Pinned hash 59ea19d51d4d, from Oct 22, 2026, 21:20 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/ai.xyla/xyla/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/ai.xyla/xyla)Source: MCP Registry. Synced Oct 22, 2026, 22:17 UTC.