# Vektor > Vektor is a place for product ideas that run. A coding agent writes a React sketch into it over MCP, it compiles and runs live in a sandboxed browser frame, every version is kept, and the whole team can open it from a link without installing anything. Who it is for: Product teams and solo builders who want an idea to be something you can click, not a screenshot or a Figma frame. Home: https://tryvektor.app MCP endpoint: https://tryvektor.app/api/mcp ## What Vektor is Vektor is a place for product ideas that run. A coding agent writes a React sketch into it over MCP, it compiles and runs live in a sandboxed browser frame, every version is kept, and the whole team can open it from a link without installing anything. An idea is a small React app. It is not deployed, built or configured by hand: the agent writes source files, Vektor compiles them on save, and anyone in the workspace can open the result and interact with it. - Written by the coding agent a team already pays for, over MCP. - Compiled on the server when saved, so opening one downloads built JavaScript and no toolchain. - Hosted for you. There is nothing to deploy and no build step to own. - Every version is kept and immutable. Nothing overwrites history. - Ideas live in exactly one workspace and never cross between them. ## Connecting an agent Vektor exposes a remote MCP server over streamable HTTP. Authentication is OAuth 2.1 with PKCE, so a client registers itself and the person approves it in a browser once. ```bash claude mcp add --transport http vektor https://vektor-hazel.vercel.app/api/mcp ``` Any MCP client that supports remote servers and OAuth can connect to the same URL. Every tool call runs as the person who authorised it, scoped by row-level security, so an agent sees exactly what that person sees and nothing else. ## MCP tools | Tool | Does | | --- | --- | | list_workspaces | The workspaces you belong to, with an idea count each. | | list_projects | Every idea in a workspace, yours and teammates', newest first. | | read_project | An idea's current source. Supports manifest_only and a paths filter. | | write_project | Create or replace an idea and save a new version. | | write_files | Merge changed files into one of your own ideas. Omitted files are kept. | | edit_files | Atomic find-and-replace, without resending whole files. | | delete_files | Remove paths and save a new version. | | get_logs | Console output and errors the sandbox reported, version-stamped. | | screenshot_project | Render the idea headless and return PNGs. Accepts keys and clicks. | | clear_logs | Drop stored logs for an idea. | Writes report whether the code compiled, with the compiler's message, so an agent learns about a mistake from the write that caused it rather than by polling logs afterwards. ## Project conventions - The entry is src/App.tsx and it must default-export a React component. - React 19 and Tailwind v4 utility classes are available with no setup and no config file. - Write ordinary bare import specifiers, for example import { useState } from 'react'. - Declare third-party packages in a dependencies map of name to semver. They resolve through esm.sh. - Importing a .css file works and its rules are applied. - Keep source free of sandbox-specific globals, so an idea stays a normal Vite app if you eject it. ```tsx // src/App.tsx import { useState } from "react"; export default function App() { const [count, setCount] = useState(0); return (