Xquik MCP Server
Xquik's MCP server allows AI agents to search, read, and post on X (Twitter) by exposing the Xquik REST API through the Model Context Protocol. It supports public reads, private account actions, and webhook monitoring.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://xquik.com/mcpWhat its tools do
4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Can change data (1)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to xquik.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search public X posts, accounts, replies, and trends
- Analyze post sentiment and brand mentions
- Publish and manage posts from connected accounts
- Monitor accounts or keywords via signed webhooks
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- xquik 2.6.64
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 4 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
},
"resources": {
"listChanged": false
},
"extensions": {
"io.modelcontextprotocol/skills": {}
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
docs — Search Xquik documentation
Search Xquik's public docs to answer questions about its X (Twitter) API, MCP setup, SDKs, errors and limits. Queries reach only the read-only docs server. Free.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Documentation search query."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text",
"title",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "Documentation page path"
},
"url": {
"type": "string",
"description": "Documentation URL"
},
"text": {
"type": "string",
"description": "Matching documentation text"
},
"title": {
"type": "string",
"description": "Documentation page title"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "Search Xquik documentation",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}search — Search Xquik API specification
Search the current credential's Xquik OpenAPI catalog for X (Twitter) operations. The sandbox has no network access. spec is global and the async function's first argument. spec.paths maps paths to HTTP methods and operation objects. Fields include operationId, summary, description, readOnly, tags, parameters, requestBody, and responses. The catalog resolves inputs inline. Each response schema describes the body as the API sends it and execute's request() returns it. Response $refs point to reusable schemas in spec.components.schemas. An answer can hold operation descriptions, parameters & response schemas with their paths. Fields remain queryable independently. Answers hold up to 24,000 characters of JSON. Free. Examples ```js // Every tag async (spec) => [...new Set(Object.values(spec.paths).flatMap(Object.values).flatMap((op) => op.tags ?? []))] // Operations tagged Users async (spec) => Object.entries(spec.paths).flatMap(([path, methods]) => Object.entries(methods).filter(([, op]) => op.tags?.includes("Users")).map(([method, op]) => ({ method, path, summary: op.summary }))) // 1 operation's parameters async (spec) => Object.values(spec.paths).flatMap(Object.values).find((op) => op.operationId === "searchTweets")?.parameters ```
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"maxLength": 10000,
"description": "JavaScript async arrow function that searches spec."
}
}
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/$defs/__schema0",
"description": "JSON returned by the executed async function."
},
"warnings": {
"type": "object",
"description": "Missing field names mapped to available keys. Optional fields may require explicit request parameters. Absence does not prove the data is unavailable.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"truncated": {
"type": "object",
"required": [
"characters",
"next"
],
"properties": {
"next": {
"type": "string",
"description": "What to do with the shortened answer."
},
"result_id": {
"type": "string",
"description": "Pass it to execute to read the whole answer through xquik.result."
},
"characters": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Characters in the whole answer."
},
"download_url": {
"type": "string",
"format": "uri",
"description": "Link a person opens to download the whole answer as CSV. Add &format=xlsx for Excel."
}
},
"description": "Present when the answer was over 24,000 characters & result holds a shortened copy.",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Search Xquik API specification",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}execute — Execute Xquik API requests
Execute JavaScript against Xquik's X (Twitter) API. Reads cost 1 credit per result, 2 per analyzed post & 5 per article. 1,000 credits cost $0.12-$0.15. Writes cost 10 credits & posts from 30. Empty & failed reads are free. First use the search tool to find endpoints, parameters & response schemas. The sandbox declares `interface XquikRequest { path: string; method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"; query?: Record<string, string | number | boolean | undefined>; body?: unknown } declare const xquik: { result: unknown; request<T = unknown>(options: XquikRequest): Promise<T> }`. request() returns the body as the API sends it, as the response schema from search describes it. code is an async arrow function. Fields use snake_case, & camelCase reads work too. A missing field reads as undefined & warns with the available keys. An absent field may need a request parameter. Output holds up to 24,000 characters, so large arrays fit after projection. A call ends at 55 s, waits included. A post can take 1 minute. Wait between calls. Paged reads return a cursor. Run independent reads with Promise.all. A result_id from an earlier answer lets a later call project its saved data through xquik.result. Authentication & idempotency headers are injected, so code holds no credentials. The sandbox has no filesystem or general network access. A failed request throws an Error naming its method, path, HTTP status & request ID, then the API's error body. Example ```js async () => xquik.request({ path: "<path from search>" }) ```
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"maxLength": 10000,
"description": "JavaScript async arrow function that calls xquik.request()."
},
"result_id": {
"type": "string",
"pattern": "^[a-f0-9]{64}\\.[1-9]\\d{0,6}$",
"description": "Saved result ID from an earlier answer. Leave it out unless an answer gave you one. Read its data through xquik.result."
}
}
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/$defs/__schema0",
"description": "JSON returned by the executed async function."
},
"warnings": {
"type": "object",
"description": "Missing field names mapped to available keys. Optional fields may require explicit request parameters. Absence does not prove the data is unavailable.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"truncated": {
"type": "object",
"required": [
"characters",
"next"
],
"properties": {
"next": {
"type": "string",
"description": "What to do with the shortened answer."
},
"result_id": {
"type": "string",
"description": "Pass it to execute to read the whole answer through xquik.result."
},
"characters": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Characters in the whole answer."
},
"download_url": {
"type": "string",
"format": "uri",
"description": "Link a person opens to download the whole answer as CSV. Add &format=xlsx for Excel."
}
},
"description": "Present when the answer was over 24,000 characters & result holds a shortened copy.",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Execute Xquik API requests",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}whoami — Current Xquik account
Return the Xquik account this connection is authenticated as. Takes no arguments. The id stays the same across token refresh, reconnection & permission changes. Free.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Opaque profile identifier. Unique within Xquik, unchanged across token refresh & reconnection, & never reassigned to another account."
},
"name": {
"type": "string",
"description": "Display name for the authenticated account."
},
"email": {
"type": "string",
"description": "Email address for display, never the profile identity."
}
},
"additionalProperties": false
}{
"title": "Current Xquik account",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
Xquik skill
Use when a user needs public X data, monitors, publishing, or Xquik automation.
skill://xquik/SKILL.mdSaved result
Read a saved result with the original account and credential scope. It charges no extraction credits.
xquik://results/{id}90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1115 ms
- 95th percentile latency
- 1115 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1115 ms · metadata changed · 4 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http xquik-mcp-server https://xquik.com/mcpCodex
codex mcp add xquik-mcp-server --url https://xquik.com/mcpCursor
{
"mcpServers": {
"xquik-mcp-server": {
"url": "https://xquik.com/mcp"
}
}
}Cline
{
"mcpServers": {
"xquik-mcp-server": {
"type": "streamableHttp",
"url": "https://xquik.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"xquik-mcp-server": {
"type": "http",
"url": "https://xquik.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http xquik-mcp-server https://xquik.com/mcpClaude Desktop
https://xquik.com/mcpWindsurf
{
"mcpServers": {
"xquik-mcp-server": {
"serverUrl": "https://xquik.com/mcp"
}
}
}Let your agent find its tools
Find servers like Xquik MCP Server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other ai and machine learning servers
Do you run Xquik MCP Server?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.