MCP App Store
by KeenEthics
Developer Tools
Alloy icon

Alloy

by Alloy Technologies Operations Pty Ltd

Overview

Alloy is an AI prototyping tool that lets product managers, designers, and founders build interactive prototypes using their existing product, not a blank canvas. Connect Alloy to Claude to capture, clone, and modify web apps and websites, then iterate with AI cloud agents that run in the background. With the Alloy connector, Claude can: Clone any website or web app — capture live pages with Alloy's website cloner and turn them into editable, high-fidelity prototypes in seconds Prototype on your existing product — import your real UI via browser capture and test new features, flows, and redesigns in context, without engineering time Run cloud agents — delegate multi-step prototyping and editing tasks to Alloy's AI agents and pull results back into your Claude conversation Manage projects and prototypes — create, list, edit, and share Alloy projects directly from Claude Alloy is built for product teams who need to communicate ideas visually: PMs validating concepts before writing a PRD, designers exploring variants of live pages, and founders demoing features that don't exist yet. Unlike generic AI app builders, Alloy works from your existing product's real code and design system, so prototypes look and feel like the real thing.

Tools

approve_device

ChatGPT
Approve a pending device. Issues a fresh API key and flips registry status to "approved".

browse_mesh_storage

ChatGPT
Browse files and folders in Mesh Storage (the org's R2 data lake). Paths are relative to the mesh root — never include an uploads/ prefix. Top-level layout: "" → root (shows devices/); "devices/" → one folder per device (folder name = device_id); "devices/{device_id}/" → pass recursive=True to flatten the per-run subfolders and see every MCAP directly (matches the Mesh Storage page). MCAP files come back with a pipeline_status field reporting ingestion into the data lake: "queued", "processing" (ingesting), "ready" (ingested), "failed" (ingest failed), or absent if unknown.

create_dev_device_key

ChatGPT
Mint a fully-approved device API key for prototyping on a dev machine. The secret is not returned in the response. It is stored behind a short-lived bearer download URL that expires after five minutes. The URL and downloaded content are sensitive credential material; disclosure in logs or transcripts exposes the device key. The credential is intended for development devices, not production fleets.

describe_mesh_table

ChatGPT
Describe the column schema for one Mesh Storage table. The response contains column names, data types, and nullability for one fully-qualified table. It does not contain row data.

get_binary_setup

ChatGPT
Render a host-native binary install bundle. Returns: (a) a signed 1-hour download URL for the binary or .deb, and (b) edge-manager.yaml with <YOUR_PROVISIONING_KEY> placeholder. The user pastes their provisioning key (from the dashboard) or downloads the key-embedded yaml directly.

get_docker_setup

ChatGPT
Render a complete Docker setup bundle for the Alloy edge client. Returns: (a) a fresh 1-hour AR OAuth access token, (b) ready-to-paste docker login and docker pull commands, and (c) a docker-compose.yml rendered with <YOUR_PROVISIONING_KEY> placeholder — the user copies the real provisioning key from the dashboard. Valid distro, architecture, variant, and tag combinations are defined by the current public edge release manifest.

get_edge_config

ChatGPT
Read the edge client's current configuration. Two modes: - path=None → full manifest (every config file + content). - path="state.json" (or any path) → that single file's raw content. A full-manifest response contains every configuration file and its content. A single-file response contains the current raw content for path.

get_edge_manifest

ChatGPT
Return the public edge release manifest. Lists every available Docker distro, architecture, variant, and tag, plus every available binary release. The response contains public release metadata and no secrets.

get_mesh_connection_info

ChatGPT
Get connection info for external Iceberg clients (DuckDB, Spark, Trino). Returns the gateway URL + a dashboard URL where the user creates the API key themselves — Alloy never issues mesh API keys over MCP.

get_mesh_file_download_url

ChatGPT
Generate a presigned download URL for a Mesh Storage file.

get_mesh_inspect_url

ChatGPT
Build a dashboard URL that opens the MCAP Inspect modal. Inspect shows topics, diagnostics, ROS graph, and capture-config for a single MCAP file. Multi-file inspect is not supported yet. Provide exactly one locator: direct path, mission_id, or exact metadata_filters. If a mission or metadata locator matches multiple MCAPs, the response returns candidates so the caller can pass a specific path.

get_mesh_replay_url

ChatGPT
Build a dashboard URL that opens replay for MCAP file(s). Multi-file replay layers the timelines of every recording in a single Replay session. For the UX to be useful, the files should overlap in time or be adjacent / chronological — otherwise the timeline scrubber spans long gaps between recordings and the playback experience degrades. Provide exactly one locator: direct paths, mission_id, or exact metadata_filters. Mission and metadata locators resolve through mesh.file_meta joined to mesh.files and return .mcap files only.

list_devices

ChatGPT
List every device registered to the org with health + storage stats. Use this to answer "what devices do I have", "which are pending approval", "when did device X last sync", or "how many files has each device uploaded". One call returns edge_id, device_id, status (approved / pending / rejected), last_seen_at, last_upload_at, file_count, total_size_bytes, and pending_key_roll.

list_mesh_files

ChatGPT
Resolve a Mesh Storage file locator to concrete files. Provide exactly one locator: - paths: one or more mesh-relative file paths, no uploads/ prefix. - mission_id: exact match on mesh.file_meta key alloy.mission_id. - metadata_filters: exact key/value matches against mesh.file_meta, for example [{"key": "alloy.mission_id", "value": "mission-123"}].

list_mesh_tables

ChatGPT
List Iceberg table names in the org's Mesh Storage, or search columns. Discovery is filtered and paginated because an organization can have more than 1,000 tables. - name_filter: case-insensitive substring on the table name, e.g. name_filter="battery" returns every *battery* table. - column_filter: case-insensitive substring searched across column AND struct field names in every table. For example, column_filter="heading" returns {schema, table, column, matched_fields} rows like fleet, statecsv__data, data, ["Heading_degrees"]; select matched fields double-quoted (data."Heading_degrees"). name_filter and column_filter can be combined. - limit (default 25, max 1000) + offset page the results; when more tables remain, the response includes next_offset.

preview_mesh_table

ChatGPT
Preview a small bounded page from one Mesh Storage table. This operation accepts one table and optional simple column names. It does not accept arbitrary SQL, expressions, or joins.

query_mesh_storage

ChatGPT
Run read-only DataFusion SQL over the org's Mesh Storage Iceberg tables. Mesh SQL uses fully qualified alloy.* Iceberg tables and supports read-only SELECT and WITH queries. It is not DuckDB MCAP SQL; forms such as $FILE and read_mcap_* functions are unsupported. Results are bounded by limit and offset, including SQL without a LIMIT clause. Mission, exact file_id, and time-range predicates can reduce fleet scans before aggregates, sorts, list expansion, or payload retrieval. A natural alloy.mesh.file_meta join on file_id can dynamically prune fleet files. Supported top-level and primitive struct-leaf predicates can prune files when metrics exist. Struct containers, list or map descendants, and pointer payloads cannot prune files. The result limit bounds output, not scan or blocking-operator work. List indexes are 1-based. Bracket access after a list-of-struct index has the form data.points[1]['x']. Full list expansion has the form CROSS JOIN UNNEST(t.data.items) AS u(item). Correlated expansion is inner, accepts one list expression, and requires an alias. Null and empty lists produce no rows. Correlated JOIN UNNEST ... ON, outer expansion, WITH ORDINALITY, multi-argument correlated UNNEST, and arbitrary correlated LATERAL subqueries are unsupported. Ordinary table joins remain supported. Supported large binary leaves such as data.data or data.image.data may be pointer-backed. Project the exact leaf after selective inline filters; SELECT * or the parent struct does not request nested payload hydration. Pointer-backed payload contents are not filterable. Engine validation, syntax, unsupported-form, and scan-budget failures are returned in error. Transport and Arrow-stream failures can be transient or can represent a late query/data error after streaming begins. A selective query can be retried once after a transport or stream failure; repeated failures require a narrower or simpler query.

reject_device

ChatGPT
Reject a pending device. No API key is ever issued.

search_docs

ChatGPT
Search Alloy product docs, or read a specific page.

update_edge_config

ChatGPT
Write a single edge config file. Overwrites if it already exists. This operation replaces the full content at path. The edge client picks up changes on its next sync, normally within 60 seconds, and restarts the recorder atomically. For state.json, omitted process entries are removed from the running process list.

getAgentSession

Claude

getAgentSessionChatMessages

Claude

getAgentSessionFileContent

Claude

getAgentSessionFiles

Claude

getAgentSessions

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

25

Tools

1

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily