{
  "markdown": "# @vectros-ai/mcp-server\n\n[![npm](https://img.shields.io/npm/v/@vectros-ai/mcp-server)](https://www.npmjs.com/package/@vectros-ai/mcp-server)\n[![license](https://img.shields.io/npm/l/@vectros-ai/mcp-server)](https://www.apache.org/licenses/LICENSE-2.0)\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=vectros&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB2ZWN0cm9zLWFpL21jcC1zZXJ2ZXIiXSwiZW52Ijp7IlZFQ1RST1NfQVBJX0tFWSI6IiJ9fQ%3D%3D)\n[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=vectros&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40vectros-ai%2Fmcp-server%22%5D%2C%22env%22%3A%7B%22VECTROS_API_KEY%22%3A%22%22%7D%7D)\n[![Claude Desktop Extension](https://img.shields.io/badge/Claude_Desktop-Add_Extension-D97757)](https://github.com/vectros-ai/vectros-mcp-server/releases/latest/download/vectros.mcpb)\n\n> One-click badges install the **server entry** in your client. You still supply\n> a key — run `npx -y @vectros-ai/cli bootstrap` (recommended) or paste your\n> `ssk_...`. See [Connect from your client](#connect-from-your-client) and the\n> [honest caveats](#honest-caveats).\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server for\n**Vectros** — a typed, multi-tenant **record store unified with hybrid\nsearch** and citation-grounded RAG. Deterministic lookups and enumeration\n*and* semantic search over one isolated, per-customer index of records and\ndocuments — so an agent gets memory that's precise, not just fuzzy recall.\nReached agent-natively here over MCP (Claude Desktop, Cursor, Claude Code,\nCline, Continue, VS Code, hosted platforms) — and the same data is\nhuman-accessible through the Vectros app + SDKs.\n\n```\nnpx -y @vectros-ai/mcp-server\n```\n\nYour agent can search your indexed corpus, query structured records,\ningest documents, and ask questions grounded against documents — reaching\nonly your tenant's data, never the public web (there are no web tools).\n\n## Quick start — one command\n\nThe fastest way to set up is the [`@vectros-ai/cli`](https://www.npmjs.com/package/@vectros-ai/cli)\n`bootstrap` command. It mints a **least-privilege scoped key** (`ssk_*`)\nbound to a narrowed AccessProfile, optionally scaffolds a use-case data\nmodel, and safe-merges the `vectros` server into your MCP client config —\nno root key, and no hand-editing JSON:\n\n```bash\nnpx -y @vectros-ai/cli bootstrap\n```\n\nYou pick what to set up (a blank read-only credential, or a **blueprint**\nlike task tracking) and sign in once with a token from the\ndeveloper portal. The command then:\n\n- mints a scoped `ssk_*` for **this machine** (independently rotatable),\n- creates the matching AccessProfile — **data-plane only**; the command\n  refuses to provision control-plane scope (keys / profiles / billing / …),\n- backs up and merges the entry into `claude_desktop_config.json` (Claude\n  Desktop, Cursor, Cline). For **Claude Code**, add `--client code`: it merges\n  the project `.mcp.json` and prints the equivalent `claude mcp add` command.\n\nRestart your MCP client and you're done. It's idempotent (re-run any time);\n`--rotate` replaces this machine's key.\n\n**Want to browse the data yourself?** `bootstrap` sets up the key for your\n*agent*, not a login for *you* — so a blueprint's context won't appear in the\ndata-plane app's switcher until you join your own user to it (the app lists only\ncontexts your user has access in). Grant yourself a role once, either in the admin\napp (**Access → Contexts → _your context_ → Profiles → Create profile**, pick\nyourself from the by-email picker, choose a role — no raw id needed) or from the\nCLI with `--principal me` (resolves to your own user):\n\n```bash\nvectros access grant --principal me --context <context-id> --role <role>\n```\n\nBlueprints that ship a human role (e.g. `agentic-sdlc`'s `editor`) let you use\n`--role`; otherwise grant inline scopes with `--actions records:r,search:r,…`.\n\nFor scripted / agent use, set the sign-in token in the environment and skip\nthe prompts:\n\n```bash\nVECTROS_BOOTSTRAP_TOKEN=… npx -y @vectros-ai/cli bootstrap \\\n  --blueprint task-management --yes\n```\n\nPrefer to wire it up by hand? See **Configure manually** below.\n\n## Connect from your client\n\n| Client | One-click | Manual |\n|---|---|---|\n| **Claude Desktop** | [Desktop Extension (`.mcpb`)](https://github.com/vectros-ai/vectros-mcp-server/releases/latest/download/vectros.mcpb) — double-click, paste your key | [JSON snippet](#configure-manually-claude-desktop-or-any-mcp-client) |\n| **Cursor** | [![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=vectros&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB2ZWN0cm9zLWFpL21jcC1zZXJ2ZXIiXSwiZW52Ijp7IlZFQ1RST1NfQVBJX0tFWSI6IiJ9fQ%3D%3D) | `.cursor/mcp.json`, same shape as below |\n| **VS Code** | [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=vectros&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40vectros-ai%2Fmcp-server%22%5D%2C%22env%22%3A%7B%22VECTROS_API_KEY%22%3A%22%22%7D%7D) | `.vscode/mcp.json`, same shape |\n| **Claude Code** | `claude mcp add` (below) | [project `.mcp.json`](#configure-manually-claude-code) |\n| **Cline / Continue** | — | same JSON snippet as Claude Desktop |\n| **Smithery** | `npx -y @smithery/cli install @vectros-ai/mcp-server` | — |\n| **Codex** | — | TOML snippet (below) |\n\nThe fastest path on **every** client is `npx -y @vectros-ai/cli bootstrap` — it\nmints a scoped key and writes the config for you. The one-click buttons install\nthe server entry; you then supply the key (bootstrap, or paste your `ssk_...`).\n\n**Codex** (`~/.codex/config.toml`):\n\n```toml\n[mcp_servers.vectros]\ncommand = \"npx\"\nargs = [\"-y\", \"@vectros-ai/mcp-server\"]\nenv = { VECTROS_API_KEY = \"ssk_live_...\" }\n```\n\n## Honest caveats\n\nPrecision is the pitch — what this server deliberately does *not* do:\n\n- **There's a human step.** Bootstrap needs a developer-portal sign-in / bridge\n  token. One command, but a person signs in — there is no fully unattended\n  provisioning.\n- **No web tools, on purpose.** The agent surface has no web-search or web-fetch\n  tools at all. Vectros is the memory, not the browser.\n- **Agent document upload is text-inline today.** An agent ingests document text\n  inline; on the stdio transport a jailed local-file upload is supported, but\n  bulk file upload from the agent surface isn't the path today.\n- **Audit history is tamper-*evident*, not tamper-proof.** A state-continuity\n  chain makes out-of-band alteration *detectable*; it is not continuous\n  automated verification.\n\n## Configure manually (Claude Desktop or any MCP client)\n\n```json\n{\n  \"mcpServers\": {\n    \"vectros\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@vectros-ai/mcp-server\"],\n      \"env\": {\n        \"VECTROS_API_KEY\": \"ssk_live_...\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. The agent now sees the Vectros tools and\ntwo resources as callable surfaces.\n\n## Configure manually (Claude Code)\n\nClaude Code reads a project-scoped `.mcp.json` with the same shape — drop this\nat your project root (commit it to share the server with the repo):\n\n```json\n{\n  \"mcpServers\": {\n    \"vectros\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@vectros-ai/mcp-server\"],\n      \"env\": {\n        \"VECTROS_API_KEY\": \"ssk_live_...\"\n      }\n    }\n  }\n}\n```\n\nOr let Claude Code's CLI write it for you:\n\n```bash\nclaude mcp add vectros -e VECTROS_API_KEY=ssk_live_... -- npx -y @vectros-ai/mcp-server\n```\n\nAdd `-e VECTROS_API_BASE_URL=https://api.staging.vectros.ai` for a non-production\nenvironment.\n\n**Load it into a session by restarting.** A Claude Code session that was\nalready open when you added the server won't pick it up mid-session — fully\nquit and reopen the project (not just re-select the tab). The `/mcp` panel\nshows the connector marketplace, not locally-configured stdio servers, so it\nwon't confirm the server is loaded — ask the agent to call a Vectros tool\ninstead. Config is keyed by the **git common root**, so a linked worktree\nresolves to its main repo's `.mcp.json` — add and open from the same project.\n\n> **Windows note:** if your `.npmrc` (or a global npm config) points the\n> `@vectros-ai` scope at a private registry, a bare `npx -y @vectros-ai/mcp-server`\n> can resolve an unexpected internal build there instead of the public\n> release — and an internal build is not guaranteed to run on Windows. If the\n> command above fails to start, either remove the scoped-registry override\n> for a plain `npx` run, or pin an explicit version (`npx -y\n> @vectros-ai/mcp-server@<version>`) known to work.\n\n## Tools (22 tools)\n\n**Search & RAG**\n\n| Tool | What it does |\n|---|---|\n| `hybrid_search` | Hybrid BM25 + dense search across the tenant's indexed content (records + documents). Narrow by ownership, folder, type, metadata filters, a created date window, and keyword-precision (`textMode`) / relevance floors. Returns the indexed projection of each hit. |\n| `rag_ask` | Ask a question grounded against the indexed corpus. Scope retrieval (ownership / folder / type / metadata filters / date window) and steer generation (`instructions` / `temperature`). Streaming generation aggregated; progress notifications keep the call alive for the generation window. |\n| `document_ask` | Ask a question grounded against a single document. Same aggregation + progress-notification shape as `rag_ask`. |\n\n**Records** (structured, schema-validated data)\n\n| Tool | What it does |\n|---|---|\n| `list_schemas` | List the record-schema catalog the credential can see (filter by `surface` or resolve one by `recordType`). Makes `record_query` / `record_create` discoverable. |\n| `record_query` | Query records by lookup field — equality (`value`), range, or prefix, with `asc`/`desc` ordering and an optional `sortFrom`/`sortTo` window — or list mode (filter by ownership + type). Also supports composite equality across 2-3 fields (`values`), but only against a lookup the *schema* declares over those fields together (see `list_schemas`) — not any two fields you pick. |\n| `record_get` | Fetch one record by id, including its full payload (large payloads truncated to protect the agent context window). |\n| `record_batch_get` | Fetch several records by id (1-100) in one call, each with its full payload. Returns `missingIds` for any requested id you can't access, since the API silently omits them. |\n| `record_create` | Create a record of a given type; idempotent by `externalId`; optional per-record `indexMode`. |\n| `record_update` | Patch a record's payload (deep-merged; `null` deletes a key); optimistic concurrency via `expectedVersion`. |\n| `record_delete` | Permanently delete a record by id (leaves a tombstone). |\n\n**Documents** (text/file content, indexed for search + Q&A)\n\n| Tool | What it does |\n|---|---|\n| `document_ingest` | Create a document — inline text body OR local file upload (file mode is stdio-transport only). Idempotent by `externalId`; optional `schemaId` + `payload` for a typed, lookup-queryable document. |\n| `document_query` | Query documents by lookup field (equality / range / prefix, with `asc`/`desc` ordering) or list mode (filter by ownership + type). |\n| `document_get` | Fetch a document by id (metadata incl. lifecycle `status` + processing `indexStatus`; optional text truncated at ~8K tokens; optional presigned `downloadUrl` for file-backed documents). |\n| `document_update` | Patch a document's metadata / typed payload (deep-merged); archive/restore via `status` (`ARCHIVED` soft-retracts from search, `ACTIVE` restores); optimistic concurrency via `expectedVersion`. |\n| `document_delete` | Permanently delete a document by id (removes it and its indexed content). |\n\n**Folders** (group records + documents)\n\n| Tool | What it does |\n|---|---|\n| `folder_query` | Get a folder by id, or list folders (a parent's children for tree navigation, or a flat tenant list; paginated via `nextCursor`). |\n| `folder_create` | Create a folder. |\n| `folder_update` | Update a folder's name / description / ownership (merge-patch; optimistic concurrency via `expectedVersion`; folders cannot be re-parented). |\n| `folder_delete` | Delete a folder. |\n\n**Identity & history**\n\n| Tool | What it does |\n|---|---|\n| `current_identity` | Describe the credential: tenantId, environment, principalType, principalKeyId, principalLabel, and (for scoped credentials) allowedActions + dataScope. Does **not** yet include `granted_capabilities` (`member-lifecycle` / `forensic-read` / `context-directory-read` / `delegate-mint`, as of API 0.40.0, joined by `delegate-principal-stamp` in 0.42.0) — a separate reach dimension a scope clause can carry that `/v1/ping` doesn't report yet, so allowedActions + dataScope may understate a credential's true reach. Also reports this server's own version and the bundled SDK version (`mcpServerVersion`, `sdkVersion`). |\n| `lookup_principal` | Resolve a user, or an identity entity in a namespace (`org`/`client`/any namespace you registered), by your own `externalId` (→ its Vectros UUID, for the ownership filters) or by a schema lookup field. Pass `contextId` to target a specific app context for a context-owned namespace. Read-only. |\n| `version_history` | Read the audit/version trail (CREATE/UPDATE/DELETE, with actor + diff) for one record or document. Read-only. |\n\nAll 22 tools wrap published Vectros HTTP API endpoints. JSON\nresponses are what the agent sees as tool output. Per-call cost\nsurfaces via the `usage` field on inference responses.\n\n### Opting into a subset\n\nPass `VECTROS_MCP_TOOLS=hybrid_search,rag_ask` to register only those\ntwo — useful for giving an agent read-only search access without\nexposing ingestion or inference costs to the credential. Unknown tool\nnames fail fast at startup.\n\n## Resources\n\nTwo read-only resources for ambient context (no tool call required):\n\n| URI | What it returns |\n|---|---|\n| `vectros://schemas` | Same payload as `list_schemas`. Lets the agent preload schemas into context for ambient discovery. |\n| `vectros://identity` | Same payload as `current_identity`. Lets the agent self-describe without spending a tool call. |\n\n## Recommended credential\n\nUse a **scoped permanent API key** (`ssk_*`), not a root key (`sk_*`).\n\nA scoped key is bound to a narrowed `AccessProfile` — e.g. read-only\nacross one org scope (`scope:org`). If your MCP install is compromised, the blast\nradius is whatever the profile allows, not the whole tenant. The\nserver emits a `warn` log line on startup when you pass a wildcard\n`sk_*` for exactly this reason.\n\n**The easiest way to get one is `npx -y @vectros-ai/cli bootstrap` (above)**\n— it mints a least-privilege `ssk_*` and an AccessProfile for you, no root\nkey required. To do it by hand instead: mint a scoped key from the developer\nportal under **Keys → Create scoped key**, bind it to an AccessProfile\ntitled `mcp-read-all` or `mcp-read-scoped`, and drop the resulting\n`ssk_live_...` into the config above.\n\nSee the Vectros developer documentation on scoped tokens (\"Recommended\nAccessProfile for MCP\") for least-privilege credential setup — the\n`vectros bootstrap` flow provisions a scoped `ssk_*` key and its AccessProfile\nin one command.\n\n## Credential resolution\n\nThe server resolves its API key from the first source that yields one:\n\n1. **`VECTROS_API_KEY`** — always wins when set.\n2. **The `vectros` CLI keyring** — if the key is unset and\n   [`@vectros-ai/cli`](https://www.npmjs.com/package/@vectros-ai/cli) **0.9.0+** is on\n   your `PATH`, the server runs `vectros keyring show --format raw` as a subprocess\n   and uses the key it prints. By default that is your **active** identity; set\n   `VECTROS_KEYRING_ALIAS` to pick a specific entry. This is the same pattern as\n   `git credential` / `docker-credential-*` / `aws credential_process`: the key\n   lives in one place, and the server, your scripts, and your agent hooks all read\n   it from there instead of each keeping a plaintext copy that drifts.\n3. **Neither** — startup fails with a message naming both options.\n\nThe resolved key is held in memory and never logged. Startup logs which alias it\nresolved (not the key), so you can tell at a glance which identity the server is\nrunning as — `vectros keyring doctor` shows the same view.\n\n> **Startup warns when it picks an identity you didn't name.** If `VECTROS_API_KEY`\n> is unset and no `VECTROS_KEYRING_ALIAS` is set, the server falls back to your\n> **active** keyring entry and logs a warning — it is running as whatever identity\n> `vectros switch` last selected, which may be a `ssk_live_*` key acting on real data\n> or a `ssk_test_*` one that isn't. Either can be an unwelcome surprise, because a\n> blank placeholder (`\"VECTROS_API_KEY\": \"\"` in a client config, or `-e VECTROS_API_KEY`\n> passing through an unset var in Docker) reads as \"not configured yet\" but resolves\n> like an unset key. Nothing is blocked — name an entry with `VECTROS_KEYRING_ALIAS`,\n> or set `VECTROS_API_KEY`, and the warning goes away. `vectros keyring doctor` shows\n> which entry is active and which of your keys are live.\n\n## Environment variables\n\n| Var | Required | Default | Purpose |\n|---|---|---|---|\n| `VECTROS_API_KEY` | no\\* | — | Vectros API key. Accepts `sk_*` / `ssk_*` / `st_*`; `ssk_*` recommended. \\*Required **unless** the `vectros` CLI is installed with a usable keyring entry — see [Credential resolution](#credential-resolution). Takes precedence when set. |\n| `VECTROS_KEYRING_ALIAS` | no | (the active entry) | Resolve this `vectros` keyring entry instead of the active one. Ignored when `VECTROS_API_KEY` is set. |\n| `VECTROS_API_BASE_URL` | no | `https://api.vectros.ai` | Override for staging or other envs. Validated: must be `https://` (or `http://` to localhost) and an official `*.vectros.ai` host. |\n| `VECTROS_ALLOW_INSECURE_BASE_URL` | no | — | Set `1` to bypass the base-URL allow-list (e.g. a trusted local proxy). **Not recommended** — sends your key to an unvalidated host; logs a warning. |\n| `VECTROS_MCP_INGEST_ROOT` | no | process cwd | Directory `document_ingest`'s `filePath` mode is jailed to. Paths escaping it (traversal/absolute/symlink) or matching a sensitive pattern are rejected. |\n| `VECTROS_MCP_TOOLS` | no | (all tools) | Comma-separated tool names (e.g. `hybrid_search,rag_ask`). |\n| `VECTROS_MCP_DEBUG` | no | — | Set `1` for verbose stderr logs. |\n| `VECTROS_MCP_SKIP_PING_VALIDATION` | no | — | Set `1` to disable the startup `/v1/ping` check. |\n| `VECTROS_MCP_HTTP_PORT` | HTTP only | `8765` | Port for HTTP transport. |\n| `VECTROS_MCP_HTTP_HOST` | HTTP only | `127.0.0.1` | Bind address. Use `0.0.0.0` for all interfaces (then set a bearer token). |\n| `VECTROS_MCP_HTTP_BEARER_TOKEN` | HTTP only | — | Client→server bearer token. **Strongly recommended** beyond localhost; **required** for a non-loopback bind. |\n| `VECTROS_MCP_HTTP_ALLOWED_HOSTS` | HTTP only | — | Comma-separated extra `Host` values to allow (DNS-rebinding protection). Set to the public hostname(s) behind a reverse proxy. |\n| `VECTROS_MCP_HTTP_ALLOWED_ORIGINS` | HTTP only | — | Comma-separated extra `Origin` values to allow. |\n| `VECTROS_MCP_HTTP_ALLOW_INSECURE` | HTTP only | — | Set `1` to permit a non-loopback bind without a bearer token. **Not recommended.** |\n\n## Startup credential validation\n\nBefore the first tool call, the server runs a `GET /v1/ping` check\nagainst your credential. Bad keys fail at startup with a clear\nerror instead of opaquely 401'ing mid-conversation. Set\n`VECTROS_MCP_SKIP_PING_VALIDATION=1` to disable.\n\n## HTTP transport\n\nFor hosted-MCP scenarios — running the server behind a network\nboundary, sharing it across multiple agent instances, deploying as\na sidecar — the package also ships an HTTP binary:\n\n```bash\nVECTROS_API_KEY=ssk_live_... \\\nVECTROS_MCP_HTTP_PORT=8765 \\\nVECTROS_MCP_HTTP_BEARER_TOKEN=$(openssl rand -hex 32) \\\n  npx -y -p @vectros-ai/mcp-server vectros-mcp-server-http\n```\n\n> The HTTP binary is **not** the default — select it explicitly with\n> `npx -p <pkg> vectros-mcp-server-http`. A bare `npx -y @vectros-ai/mcp-server`\n> always starts the stdio server.\n\nThe server listens on `http://127.0.0.1:8765/mcp` by default. The\nbearer token is optional but **strongly recommended for any\ndeployment beyond localhost** — without it, anyone who can reach the\nport can call Vectros with your credentials.\n\nHealth probe lives at `GET /healthz` (always unauthenticated, k8s\nreadiness-friendly).\n\nCurrent limitation: the server uses one upstream credential per process\n(the key resolved at startup). Per-request credential override via the\nincoming Authorization header is a planned enhancement. For now, deploy one\nserver per credential boundary you want.\n\n## Programmatic use (advanced)\n\nMost consumers use the CLI shape above. If you need to embed the\nserver in your own Node process:\n\n```ts\nimport { VectrosMCPServer, createStdioTransport } from '@vectros-ai/mcp-server';\n\nconst server = new VectrosMCPServer({\n  apiKey: process.env.VECTROS_API_KEY!,\n  tools: ['hybrid_search', 'rag_ask'],\n  resources: ['schemas'],     // opt-in resource filter; default = all\n  validateOnStart: true,      // default — set false to skip startup ping\n});\nawait server.connect(createStdioTransport());\n```\n\n## What this server doesn't do (yet)\n\n- **No prompts capability** — `/rag` and `/ingest_pdf` slash-command\n  templates land in a future release. (Provisioning — the `bootstrap` command — lives\n  in the separate [`@vectros-ai/cli`](https://www.npmjs.com/package/@vectros-ai/cli)\n  package, above.)\n- **HTTP transport is single-tenant per process** — per-request\n  credential override via incoming Authorization header is a v1.0+\n  enhancement.\n- **No Python implementation** — TS only. Python users can `npx`\n  this server from any project.\n- **`rag_ask` and `document_ask` are not natively streaming** —\n  full answer aggregated before the tool returns. Progress\n  notifications cover the latency. Native MCP-spec streaming lands\n  when the spec stabilizes.\n\nThe server is on a pre-1.0 track toward a stable 1.0 release.\n\n## Rate limits\n\nTool calls hit the same per-account per-minute rate limit as any API client (writes, searches,\nand inference count against it; reads do not). On a `429` the server surfaces the error with its\n`Retry-After` hint so the agent can pace and retry rather than blind-retrying. See the\n[rate limits guide](https://docs.vectros.ai/guides/operations-trust/rate-limits) for the per-plan\nlimits.\n\n## Building from source\n\n```sh\ngit clone https://github.com/vectros-ai/vectros-mcp-server\ncd mcp-server\nnpm install\nnpm run build\nnpm test\n```\n\n`npm install` pulls `@vectros-ai/sdk` from the configured npm\nregistry.\n\n`npm run build` runs `tsup` to produce the dual ESM/CJS output in\n`dist/`. The SDK is bundled into the build (see\n[`tsup.config.ts`](./tsup.config.ts)) — the published npm package is\nself-contained and works without `.npmrc` config on the consumer's\nmachine.\n\n## Security & trust\n\nVectros enforces per-customer, fail-closed isolation and least-privilege scoped keys, with a\ntamper-evident audit and version history. Customer-facing surfaces are hardened through extensive\nadversarial security review. For the full trust posture, drawn plainly with its boundaries, see the\n[compliance and trust guide](https://docs.vectros.ai/guides/operations-trust/compliance).\n\n## License\n\nApache-2.0. See the LICENSE file.\n",
  "bytes": 23592,
  "sha": "afac0c8b2c2c5662b411ad5ab220e808319022ebfcc4ff4ef194c8b8e31e651c",
  "repo_slug": "vectros-ai/vectros-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_vectros_ai_mcp_server_b1143f8e/readme"
}