Skip to main content
Glama
AppFreeticket

FreeTicket MCP Server

@freeticket/mcp

FreeTicket's official MCP (Model Context Protocol) server. It exposes the B2B domain — events, dates, sales, tickets, memberships, venues, staff, reports — as tools to any MCP client (Claude Code, Claude Desktop, claude.ai).

Same contract and same session as the ft CLI: if you have run ft login, the MCP is already authenticated with nothing to configure (it reads ~/.freeticket/config.json).

Use (Claude Code / Claude Desktop)

{
  "mcpServers": {
    "freeticket": {
      "command": "npx",
      "args": ["-y", "@freeticket/mcp"]
      // No env: uses the `ft login` session. For CI or headless:
      // "env": { "FT_API_KEY": "ft_live_...", "FT_WORKSPACE_ID": "ws_..." }
    }
  }
}

⚠️ @freeticket/mcp is not published on npm yet, so this stdio entry does not work today — npx cannot resolve the package. Use the remote server below until it ships.

Config precedence: env > ~/.freeticket/config.json > default. Variables: FT_API_URL (base, without /api/v1), FT_API_KEY, FT_WORKSPACE_ID, FT_ADMIN_SESSION (enables the admin_* tools of the superadmin contract /api/admin).

Related MCP server: eventos MCP Server

Remote use over URL (HTTP)

Beyond stdio, the server runs over Streamable HTTP so it can be added as a connector by URL (claude.ai, remote Claude Code, curl) with nothing installed locally. It is live at https://mcp.appfreeticket.com/mcp.

freeticket-mcp-http          # listens on :3333 (PORT to change it)

It is stateless: every request carries its own credentials and the server builds per-session isolated clients (it never reads disk), so one process serves many workspaces without crossing sessions. Endpoints:

Endpoint

Auth

Tools

POST /mcp

Bearer (OAuth token or raw API key)

public_* + B2B (+ admin_* when the credential carries it)

POST /mcp/public

none

public_* only (buyer-side agents)

Connecting from claude.ai (Add custom connector)

The server ships an embedded OAuth 2.1 authorization server — that is the only thing claude.ai knows how to speak (it cannot send API keys or custom headers). Steps:

  1. claude.ai → Settings → Connectors → Add custom connector.

  2. Remote MCP server URL: https://mcp.appfreeticket.com/mcp. Client ID and Secret: leave empty (it uses dynamic client registration, RFC 7591).

  3. Connecting opens the consent page: the "Continue with FreeTicket" button signs you into free-admin with your usual account and asks for approval (device flow, RFC 8628 — the same backend as ft login). No keys to paste; with several workspaces, you pick which one to connect. Under "Advanced options" there is still the manual form (an API key for CI, the superadmin cookie for the admin_* tools).

  4. Credentials are sealed (AES-256-GCM, MCP_TOKEN_SECRET) inside the issued token — the server persists nothing: no database, multi-tenant safe.

The full standard flow: RFC 9728/8414 discovery → /register/authorize (PKCE S256) → /token (with refresh). FT_OAUTH_ISSUER delegates all of it to an external AS (for instance, once free-admin publishes its own).

Direct auth (curl, your own clients)

curl -X POST http://localhost:3333/mcp \
  -H 'authorization: Bearer ft_live_...' \      # raw API key
  -H 'x-workspace-id: ws_...' \                 # optional
  -H 'x-admin-session: <cookie>' \              # optional — enables admin_*
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Deploying on Vercel

The repo already carries vercel.json + api/server.ts (the same logic as the binary, as a Vercel Function):

vercel                                        # preview
vercel env add MCP_TOKEN_SECRET production    # openssl rand -hex 32
vercel --prod

Env on Vercel: MCP_TOKEN_SECRET (required — without it tokens die on every cold start), FT_API_URL (optional, defaults to production), MCP_PUBLIC_URL (optional — derived from the Host header). The resulting connector URL is https://<project>.vercel.app/mcp.

Tools

B2B /api/v1 (one tool = one contract operation). Destructive writes (*_delete, *_refund, *_cancel) carry destructiveHint and ask for confirmation.

Domain

Reads

Writes

Session

whoami

Events

events_list · events_get · event_dates_list

events_create · events_update · events_publish · events_delete · event_dates_create · event_dates_update · event_dates_delete

Tickets

ticket_types_list · ticket_types_get · tickets_access

ticket_types_create · ticket_types_update · ticket_types_delete · tickets_checkin · tickets_resend

Sales

sales_list · sales_get · sales_tickets

sales_create · sales_cancel · sales_refund

Memberships

plans_list · plans_get · plans_subscribers

plans_create · plans_update · plans_delete · subscriptions_cancel

Commercial

discounts_list · webhooks_list · venues_list · venues_get · staff_list

discounts_create · discounts_update · discounts_delete · webhooks_create · webhooks_delete · venues_create · venues_update · venues_delete · staff_create · staff_update_role

Reports

reports_summary · reports_by_event · reports_timeseries · reports_inventory · reports_financials · reconciliation

Settlements

settlements_list · settlements_document · settlements_proof

Credentials

api_keys_list

Exports

reports_export_buyers · reports_export_attendees · reports_export_subscribers · reports_export_reconciliation

Members area (headless SSO)

customer_me · customer_tickets · customer_ticket_get · customer_membership · customer_profile

customer_ticket_cancel · customer_subscribe · customer_subscription_cancel · customer_profile_update · customer_logout

Content

content_videos · content_posts · content_lives · content_live_get

content_playback_token

Minting and revoking credentials (ft api-keys, ft admin tokens) is left out of the MCP on purpose: an agent lists credentials to audit them, it does not issue them. The customer_* tools are for enterprise integrations: they need an enterprise service API key and the buyer's session token (X-Customer-Session). The exchange that issues that token is not a tool either — it mints third-party sessions.

settlements_document and settlements_proof return a signed URL with a 5-minute TTL, not the file: the API answers 302, and following the redirect would drop the whole PDF into the model's context.

The content tools list what is published without the playback id; to play anything you need content_playback_token (30 min live, 1 h video), and memberOnly content additionally requires a buyer session with a membership.

Public B2C /api/public (no credentials — a buyer's agent):

Domain

Tools

Discovery

public_events_list · public_events_get · public_events_availability

Checkout

public_orders_create (→ a Mercado Pago checkoutUrl) · public_orders_get

Post-sale

public_tickets_resend

The public_* tools are always registered (anonymous). The agent never touches the payment: public_orders_create returns the Mercado Pago link for the human to pay. Checkout scope: general admission (not seated, not members-only).

Superadmin /api/admin (only with FT_ADMIN_SESSION):

Domain

Tools

Session / audit

admin_whoami · admin_audit_log · admin_tokens

Workspaces

admin_workspaces · admin_workspaces_get · admin_workspaces_create · admin_workspaces_update (includes webTemplate / customDomain) · admin_workspaces_assign_plan · admin_workspaces_suspend · admin_workspaces_restore

Users

admin_users · admin_users_get · admin_users_update · admin_impersonate · admin_impersonate_stop

Platform plans

admin_platform_plans_list · admin_platform_plans_get · admin_platform_plans_create · admin_platform_plans_update

Feature flags

admin_feature_flags_list · admin_feature_flags_set

UI in the host (MCP Apps)

The server implements the io.modelcontextprotocol/ui extension (MCP Apps, spec 2026-01-26), so lists and reports do not arrive as a wall of JSON: the host draws them.

  • Resource: ui://freeticket/view.html, mimeType text/html;profile=mcp-app.

  • Tools with a view point at it through _meta.ui.resourceUri; the result also travels in structuredContent so the view can read it.

  • A single view picks the render from the shape of the payload: array → table (currency formatting, status pills, horizontal scroll), object → KPI tiles.

  • The HTML is self-contained: no external scripts, no fetch, no remote fonts. It declares csp: {} — it asks for no network, so the host's deny-by-default sandbox has nothing to block.

  • The brand is ours, the theme is the host's. The view adopts the host's CSS variables (hostContext.styles.variables) to blend into the chat, but only those in the extension's contract (--color-*, --font-*): the FreeTicket logo and brand accent are not overridable. On a theme change it sets data-theme and color-scheme, otherwise light-dark() would follow the OS and the view would render light inside a dark chat.

  • It listens only to the frame that mounted it (event.source), reports its height with ui/notifications/size-changed, formats currency in the host's locale, and answers ui/resource-teardown so unmounting is clean.

  • Hosts without the extension (or terminal clients) ignore _meta and see the same text as always: nothing breaks.

29 tools with a view (v0.14.0) — every list and every report. Details (*_get) and writes deliberately have none: a lone object or a delete acknowledgement gains nothing from a table, and drawing one suggests there is data where there is not. src/ui.test.ts mounts the real view in jsdom and fails if a new list registers without _meta.ui, if the host manages to override the branding, or if an API payload renders unescaped.

Development

pnpm install
pnpm generate     # regenerates src/client/, src/admin-client/ and src/public-client/ from the specs
pnpm dev          # runs the server over stdio
pnpm typecheck && pnpm test

Contracts this build targets: B2B 1.7.0, superadmin 1.3.0, public 0.4.0. All three are served by free-admin and are the only source of truth, on separate semver lineages. To propagate a backend change, use the contract-sync agent from the ai-native umbrella — and check for drift first: what free-admin serves today may already be ahead of the numbers above.

MIT.

Available Tools

6 tools
public_events_availabilityA

Stock en vivo por fecha y tipo de ticket (GET /public/events/{slug}/availability). Consultar antes de armar una orden.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesSlug del evento

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or rate limits. The term 'live stock' implies real-time data but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences. Every word serves a purpose, starting with the core function and then providing usage advice. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fails to explain what the response contains (e.g., structure of availability data). For a simple tool it's acceptable but leaves the agent guessing about return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter 'slug', documented as 'Slug del evento'. The description adds no additional meaning beyond what the schema already provides, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves live stock by date and ticket type using a specific API endpoint. It distinguishes itself from sibling tools like public_events_get (event details) and public_orders_create (order creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises 'Consultar antes de armar una orden' (check before building an order), indicating when to use it. No exclusions or alternative statements are provided, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

public_events_getA

Detalle público de un evento por slug (GET /public/events/{slug}).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesSlug del evento

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility. It indicates the HTTP method (GET) and that the operation is public, implying it is read-only and safe. However, it does not explicitly state that it is non-destructive, idempotent, or describe any response structure or edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded with the action and resource, with no redundant information, making it efficient for an AI agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is adequate but not complete. It lacks information about the returned fields (e.g., event title, date, location) and any constraints (e.g., authentication, data freshness). For a public details endpoint, more context would improve understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a description for the single parameter 'slug' ('Slug del evento'). The tool description adds no additional semantic meaning beyond what the schema offers, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves public event details by slug, using a specific verb ('Detalle') and resource ('evento por slug'). It distinguishes itself from sibling tools like 'public_events_list' (listing) and 'public_events_availability' (availability), leaving no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly specify when to use this tool versus alternatives like 'public_events_list' or 'public_events_availability'. Usage is implied (when you have a slug and need event details), but there is no direct comparison or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

public_events_listA

Catálogo público de eventos publicados (GET /public/events). Descubrimiento B2C, sin login.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoBúsqueda por nombre/descripción
toNoFunciones hasta (ISO 8601)
cityNoFiltrar por ciudad
fromNoFunciones desde (ISO 8601)
pageNoPágina (default 1)
sortNo
pageSizeNoTamaño (default 20, máx 50)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the burden of behavioral disclosure. It states the tool is public and requires no login, which is helpful. However, it doesn't confirm read-only nature, pagination details, or other side effects. The description is minimally adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence front-loads the purpose (public catalog, no login). No wasted words. Efficient and immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 optional parameters and no output schema, the description provides minimal context. It doesn't describe return format, pagination behavior, or how results are ordered by default. While the schema covers parameters, the tool's overall behavior is underdescribed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (86%), so the description adds little beyond the schema's parameter descriptions. The tool description does not explain the filtering or sorting semantics in more detail. With high schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it's a public catalog of published events (B2C discovery without login). The tool name and description effectively communicate its listing purpose and distinguish it from sibling tools like public_events_get (single event) and public_events_availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus siblings like public_events_get or public_events_availability. The context implies it's for browsing/discovery, but lacks direct differentiation or usage constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

public_orders_createA

Crea una orden B2C y devuelve el link de pago de Mercado Pago (POST /public/orders). El agente NUNCA procesa el pago: entrega la checkoutUrl al comprador para que pague. Solo admisión general (no numerado / no members-only) de un mismo organizador. Consultá el stock con public_events_availability antes.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesTipos de ticket y cantidades
buyerNameYesNombre del comprador
buyerEmailYesCorreo del comprador (recibe el QR)
buyerPhoneNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description adds significant behavioral context beyond annotations: it creates an order (not idempotent), returns payment link, and explicitly states the agent does not process payment. No contradictions with annotations (idempotentHint=false, destructiveHint=false match creation semantics).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with clear structure: first states action and output, second adds constraints and usage hints. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, return value, constraints (general admission, same organizer), and a prerequisite action (check stock). Lacks error handling details but sufficient for a creation tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75% (3 of 4 params described). The description does not add extra meaning beyond the schema; e.g., buyerEmail receives QR is already in schema description. Baseline score of 3 is appropriate as schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it creates a B2C order and returns a Mercado Pago payment link. It specifies the scope (general admission, same organizer) and distinguishes from sibling tools like public_events_availability and public_orders_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent not to process payment, only deliver the checkoutUrl. Also recommends checking stock with public_events_availability beforehand. Could be improved by explicitly stating when not to use (e.g., for numbered or members-only events).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

public_orders_getA

Estado de una orden B2C — pending | paid | expired | cancelled — y los tickets al pagar (GET /public/orders/{id}).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId de la orden (devuelto por public_orders_create)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It indicates the tool returns status and tickets, which suggests a read operation, but does not explicitly state that it is read-only, non-destructive, or describe any side effects. More transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose and key details. No extraneous information, front-loaded with the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one required parameter, good schema coverage, and no output schema, the description provides sufficient context about what the tool does and returns. It could be enhanced by explicitly stating that it is a read operation, but overall it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of the 'id' parameter. The description adds context about what the id refers to (returned by public_orders_create) and what the tool returns (status and tickets), providing meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns order status (pending, paid, expired, cancelled) and associated tickets when paying. It uses a specific verb and resource (GET /public/orders/{id}), and implicitly distinguishes from siblings like public_orders_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used after creating an order (id returned by public_orders_create), but it does not explicitly state when to use it, when not to, or mention alternatives. It lacks explicit usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

public_tickets_resendA

Reenvía el QR/email de un ticket al correo del comprador (POST /public/tickets/{code}/resend). Rate-limited; el email va siempre al correo original de la compra.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCódigo del ticket
emailNoOpcional: debe coincidir con el correo del comprador

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that the tool is rate-limited and that the email always goes to the original purchase email, which are important behavioral traits. However, it does not mention side effects (e.g., whether the previous email is invalidated) or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with a parenthetical, containing only essential information. It is front-loaded and free of redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 parameters, no output schema), and the description covers the main action and constraints. However, it lacks information about return values or error conditions, which would be helpful for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description reiterates that the email must match the original purchase email, which is already stated in the schema. It adds no new semantics beyond the schema, so a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: resending the QR/email of a ticket to the buyer's email. It includes the HTTP method and path, and the resource ('ticket') and verb ('resend') are specific. The sibling tools are unrelated to ticket resending, so no confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions rate-limiting but provides no guidance on when to use this tool versus alternatives, nor when not to use it. No comparison to sibling tools or other methods is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.11.0
    • First observedpublic_events_availability
    • First observedpublic_events_get
    • First observedpublic_events_list
    • First observedpublic_orders_create
    • First observedpublic_orders_get
    • First observedpublic_tickets_resend

TDQS

A4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource-action pair (events availability, events detail, events list, orders create, orders get, tickets resend) with no functional overlap.

Naming Consistency5/5

All tools follow a consistent 'public_{resource}_{action}' pattern using snake_case, making it predictable for an agent.

Tool Count5/5

With 6 tools, the server is well-scoped for B2C event browsing and order management, covering the essential workflows without bloat.

Completeness4/5

The set covers the main user journey (browse, check stock, create order, check status, resend ticket) but lacks a cancel order tool, which is a minor gap.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes FastAPI API-key management and request-making routes as MCP tools, enabling users to manage and interact with their APIs via Claude.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for eventos event management platform, enabling AI assistants to manage events and tickets via API integration. Supports authentication, ticket CRUD operations, and listing with pagination.
    1
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for thinker-ci, exposing tickets, CI/CD pipelines, project management data, and AI-agent sessions as tools and resources for Claude Code and other MCP clients.
    -