Skip to main content
Glama
chrischall

accessoticketing-mcp

by chrischall

accessoticketing-mcp

CI npm

An MCP server for accesso Passport mobile ticket links — the URL a venue emails you after a purchase. Reads the order and every admission on it, the scannable barcodes, and Google Wallet save links.

accesso powers ticketing for a lot of theme parks, water parks, camps, museums and festivals, so one server covers all of them: the merchant is encoded in the link.

Developed and maintained by AI (Claude Code). Use at your own discretion.

What it needs

No login. These links carry their own credential — the oToken in the query string is what authorises the read. There is no account, no password, no browser session, and no bot wall.

WARNING

That also meansthe link is a secret. Anyone holding it can view and add the order's tickets. Treat it like a password: don't paste it into issues, logs or chats. This server redacts the tokens from its own output and error messages.

Related MCP server: tokenless-zendesk-mcp

Install

npx -y @chrischall/accessoticketing-mcp
// claude_desktop_config.json / .mcp.json
{
  "mcpServers": {
    "accessoticketing": {
      "command": "npx",
      "args": ["-y", "@chrischall/accessoticketing-mcp"],
      "env": { "ACCESSO_TICKET_URL": "https://media-engine.na3.accessoticketing.com/tickets/v1/..." }
    }
  }
}

ACCESSO_TICKET_URL is optional — it just saves passing url on every call. The server starts fine without it and reports the missing link on first use.

Variable

Required

Purpose

ACCESSO_TICKET_URL

no

Default ticket link, used when a tool is called without url.

ACCESSO_OUTPUT_DIR

no

Where accesso_save_barcodes writes PNGs. Defaults to cwd.

ACCESSO_NO_FILE_OUTPUT

no

Set to 1 where the filesystem isn't the user's (a hosted deployment) so barcodes return inline.

Tools

Tool

Does

accesso_get_order

The order and every admission: product, participant, date, start time, instructions. Returns the slim per-ticket list by default; view: "full" for every parsed field.

accesso_get_ticket

One admission in full, by index.

accesso_save_barcodes

Writes barcode PNGs and returns paths, or returns the images inline.

accesso_get_wallet_passes

Google Wallet save links for the tickets.

accesso_resolve_link

Unwraps an email click-tracking link to the accesso URL it hides.

accesso_healthcheck

Confirms reachability and whether a default link is configured.

Every tool is read-only; nothing here mutates an order.

> what do we have booked tomorrow?
9:00 AM   Tiny Trekkers Full-Day (Ages 4-7)   — one participant
9:00 AM   Whitewater Kayak Camp I: Intro      — two participants
all-day   Lunch / Snack / Early Drop-Off      — nine more admissions

Shell-out skill

Prefer a shell? skills/accesso-tickets/ does the same reading with curl and a dependency-free parser, no server required. It ships with the package.

Notes on the data

  • date / time are the merchant's local wall-clock strings with no timezone attached. They are passed through verbatim rather than converted.

  • Merchant-specific detail rows (Guest Number, Web Sales ID, …) are harvested generically into details, so a venue this was never tested against still works.

  • An expired link returns HTTP 200, not an error status — the server detects the body and says the link is expired rather than reporting zero tickets.

Development

npm install
npm run build
npm test
npm run test:coverage   # 100% thresholds, enforced in CI

See docs/ACCESSO-API.md for the captured request/response shapes and CLAUDE.md for repo conventions.

License

MIT

Available Tools

6 tools
accesso_get_orderA
Read-only

Read an accesso ticket link: the order number and every admission on it — product, participant, date, start time, barcode text, and the merchant instructions. Covers any accesso-powered venue (theme parks, camps, festivals). Needs no login; the emailed link is the credential.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe accesso ticket link from the order-confirmation email. Optional when ACCESSO_TICKET_URL is set.
viewNoResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns the slim per-ticket projection — identity, participant, date, time; "full" returns every field parsed from the order page.
include_termsNoInclude each ticket's terms and conditions (long, and identical per venue).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and open-world, and the description is consistent with that. It adds valuable behavioral context beyond annotations by disclosing that no login is needed and that the emailed link itself acts as the credential, plus it specifies what data will be returned. No contradictions found.

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?

Two compact sentences carry substantial useful information: the core function, the return contents, venue coverage, and authentication behavior. There is no filler or redundant restatement of the tool name.

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?

With no output schema, the description carries the burden of communicating return value, and it does so by listing the key fields. It also covers access scope and auth requirements. Minor gaps remain around how this differs from accesso_resolve_link or accesso_get_wallet_passes, but the description is still sufficient for an agent to use the tool correctly.

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 100%, so the schema fully documents url, view, and include_terms. The tool description does not need to repeat parameter details, and it adds no extra parameter-level meaning beyond implying the url comes from the emailed link. Baseline 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 opens with a specific verb and resource ('Read an accesso ticket link') and enumerates the exact output fields: order number, product, participant, date, start time, barcode text, and merchant instructions. This clearly distinguishes the order-level view from a single-ticket view such as accesso_get_ticket.

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?

The description gives clear usage context: use this when you have an emailed accesso ticket link and need the order plus all admissions. It also states coverage across accesso venues and explains that no login is required, which helps an agent decide when this tool is appropriate. It does not explicitly name alternatives or exclusion conditions, so it stops short of a 5.

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

accesso_get_ticketA
Read-only

One admission from an accesso order in full detail, including the merchant instructions and (on request) the terms. Identify it by its index from accesso_get_order.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe accesso ticket link from the order-confirmation email. Optional when ACCESSO_TICKET_URL is set.
indexYesTicket index, from accesso_get_order.
include_termsNoInclude the terms and conditions.

TDQS

A4.2/5.0
Behavior4/5

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

Given readOnlyHint=true, the description adds useful behavioral context by stating the response includes full detail and merchant instructions, with terms available on request. No side effects or safety contradictions.

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?

Two compact sentences front-load the object returned and then explain how to identify the ticket. No filler or redundant detail.

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?

The description is sufficient for a simple read-only ticket fetch: it defines what is returned, how to identify the ticket, and the optional terms flag. Without an output schema, a bit more return-structure detail could help, but the current text is adequate.

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%, and the description mostly repeats what the schema already says, especially about index coming from accesso_get_order. It adds no format, defaults, or cross-parameter constraints 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 identifies a specific resource: one admission from an accesso order, and specifies the detail level and optional terms. It also points to accesso_get_order as the source of the index, which differentiates this ticket-level tool from the order-level sibling.

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?

It gives a clear usage context: obtain an index from accesso_get_order, then fetch the individual ticket. It does not explicitly list when-not-to-use or name alternative tools, but the workflow is unambiguous.

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

accesso_get_wallet_passesA
Read-only

Google Wallet save links for the tickets on an accesso order. Open one on a phone to add that ticket to Google Wallet. Not every merchant enables passes.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe accesso ticket link from the order-confirmation email. Optional when ACCESSO_TICKET_URL is set.
indexesNoTicket `index` values to act on. Omit for every ticket on the order.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already mark the tool read-only and open-world, and the description adds helpful context beyond that: the returned items are links intended to be opened on a phone, and pass availability depends on merchant enablement. This sets accurate expectations for the output and for cases where passes may be unavailable, without contradicting the annotations.

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 three short sentences with no filler: the main deliverable is stated first, followed by how it is used and a relevant caveat. Every sentence adds information an agent needs.

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?

For a simple read-only tool with no output schema, the description explains what is returned (Google Wallet save links) and the main caveat (merchant enablement). It does not specify the exact return shape or behavior when passes are not enabled, but the combination of description, annotations, and full schema coverage makes the tool callable without major gaps.

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 100%, so the parameters are already well documented: url is optional when ACCESSO_TICKET_URL is set, and indexes filters by ticket index values. The tool description does not add further parameter-level meaning beyond restating the order/ticket scope, so the schema carries the load.

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

Purpose4/5

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

The description clearly identifies the resource (Google Wallet save links) and the scope (tickets on an accesso order), so an agent can tell this apart from tools that return order or ticket data. It lacks an explicit action verb like 'returns' and does not explicitly name sibling distinctions, but the meaning is unambiguous.

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 when to use the tool: to get Google Wallet passes for tickets on an order, and it notes the limitation that not every merchant enables passes. It does not explicitly state when not to use it or mention an alternative such as accesso_save_barcodes when passes are unavailable, so usage guidance is only implied.

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

accesso_healthcheckA
Read-only

Check that this server can reach accesso and whether a default ticket link is configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe accesso ticket link from the order-confirmation email. Optional when ACCESSO_TICKET_URL is set.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, so the description does not need to restate safety. It adds concrete behavioral context by naming exactly what is tested: network reachability to accesso and default ticket link configuration. No contradiction with annotations.

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?

One sentence communicates the complete purpose with no filler. The key facts are front-loaded: it checks reachability and default-link configuration.

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?

For a one-parameter, read-only healthcheck with no required inputs, the description is adequate. It omits the exact return shape, but that is a minor gap given the low complexity and the absence of an 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 coverage is 100%, and the url parameter is already described as the ticket link from the order-confirmation email, optional when ACCESSO_TICKET_URL is set. The description adds no parameter-level 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?

Uses the specific verb 'Check' plus two clear targets: connectivity to accesso and the presence of a default ticket link. This distinguishes it from sibling tools that get orders, tickets, wallet passes, or resolve links.

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?

The description makes the diagnostic context clear: an agent should use this when verifying server-side reachability and default-link configuration. It does not explicitly name alternatives or exclusions, but the healthcheck purpose is obvious enough that little is left to inference.

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

accesso_save_barcodesA
Read-only

Save the scannable barcode images from an accesso order. Writes PNGs and returns their paths; set inline to receive the images directly instead (which is the only useful mode when this server runs remotely, since its filesystem is not the user's).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe accesso ticket link from the order-confirmation email. Optional when ACCESSO_TICKET_URL is set.
inlineNoReturn the images in the response instead of writing files.
indexesNoTicket `index` values to act on. Omit for every ticket on the order.

TDQS

A3.8/5.0
Behavior1/5

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

Annotation Contradiction: the description says 'Writes PNGs and returns their paths', which is a side-effecting write to the server filesystem, but the annotations declare readOnlyHint=true. This directly contradicts the described behavior and could mislead an agent about whether the tool mutates state.

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?

Two sentences, front-loaded with the core purpose, and every clause earns its place. The mode distinction and remote-filesystem caveat are tight and directly useful rather than filler.

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?

The description covers what the tool does, what it returns (paths or inline images), and the critical environment consideration for choosing inline mode. Some response-shape details are absent and there is no output schema, but the agent has enough to invoke it correctly. The annotation contradiction slightly undermines completeness, though the textual description itself is solid.

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 description coverage is 100%, so the baseline is 3. The description adds extra value by explaining the practical meaning of inline mode and why it matters ('the only useful mode when this server runs remotely, since its filesystem is not the user's'), which helps an agent choose parameter values correctly.

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 verb ('Save'), the resource ('scannable barcode images from an accesso order'), and the concrete output behavior ('Writes PNGs and returns their paths'). This distinguishes it from sibling tools like accesso_get_order and accesso_get_wallet_passes, which are retrieval-oriented rather than barcode-image saving.

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?

The description gives explicit, practical guidance about when to use inline mode versus file-writing mode, including the remote-server caveat. It does not explicitly compare against sibling tools, but it provides clear context for choosing the correct invocation mode.

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. Dates show when Glama detected each change.

  1. 6 tool updatesv0.2.0
    • First observedaccesso_get_order
    • First observedaccesso_get_ticket
    • First observedaccesso_get_wallet_passes
    • First observedaccesso_healthcheck
    • First observedaccesso_resolve_link
    • First observedaccesso_save_barcodes

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct function: resolving a tracking link, retrieving an order summary, retrieving a single ticket, saving barcode images, generating wallet passes, and checking connectivity. There is minimal overlap, and descriptions clarify the boundary between order-level and ticket-level retrieval.

Naming Consistency4/5

All tools share the accesso_ prefix and mostly follow a clear verb_noun pattern such as get_order, get_ticket, save_barcodes, and resolve_link. The exception is accesso_healthcheck, which is a noun rather than a verb-object phrase, but it is still predictable and consistent with the overall naming style.

Tool Count5/5

Six tools is well-scoped for the stated purpose of working with accesso ticket links. Each tool covers a distinct part of the workflow without unnecessary redundancy or an overwhelming surface area.

Completeness5/5

The tool set covers the full practical workflow: resolving a link, reading an order, viewing individual ticket details, saving barcodes, and generating wallet passes. The healthcheck tool also covers operational needs, and no major dead ends or missing core operations are apparent.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrischall/accessoticketing-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server