AppealGo

Check and appeal UK parking tickets (PCNs): grounds, deadlines, draft letters and filing.

Should I use this

Quality & Safety

A
Description quality
85%
Schema completeness
82%
Naming quality
94%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'get_guide' description lacks action verbin get_guide
  • LOWTool 'explain_contravention_code' description lacks action verbin explain_contravention_code
  • LOWTool 'lookup_appeal_status' description lacks action verbin lookup_appeal_status

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,636Tokens (tool definitions)
~920 BTypical response size
Moderate attention impact (1.28% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "appealgo": {
      "url": "https://appealgo.com/api/mcp"
    }
  }
}

Remote endpoints

https://appealgo.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_guides(query, category)

Search plain-English guides on appealing UK parking tickets: council PCNs, private parking charges (ParkingEye, Euro Car Parks, APCOA...), bus lane, ULEZ, Clean Air Zone, Notice to Owner, TE9 witness statements, London boroughs and contravention codes. Returns slugs to pass to get_guide.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Free text, e.g. 'ParkingEye grace period' or 'yellow box'"
    },
    "category": {
      "type": "string",
      "enum": [
        "notice-types",
        "operators",
        "councils",
        "codes"
      ]
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_guide(slug)

Returns a full AppealGo guide as Markdown, with its sources.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢explain_contravention_code(code)

What a two-digit council PCN contravention code means (e.g. 01, 12, 30, 34, 62), its penalty band, and the grounds that usually beat it.

Input Schema

{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "The code on the PCN, e.g. '12' or '31J'"
    }
  },
  "required": [
    "code"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_contravention_codes(query)

Find the code for a description, e.g. 'disabled bay' or 'bus lane'.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calculate_deadlines(notice_type, notice_date, event_date, notice_to_owner_date, rejection_date)

Given the notice type and the date on the notice, returns the discount deadline, the challenge/representations deadline, when escalation can start, and (if you pass a rejection date) the tribunal or POPLA/IAS deadline. Statutory defaults; the notice is authoritative.

Input Schema

{
  "type": "object",
  "properties": {
    "notice_type": {
      "type": "string",
      "enum": [
        "council_parking",
        "council_postal",
        "london_moving",
        "tfl_charge",
        "clean_air_zone",
        "private_anpr",
        "private_windscreen"
      ],
      "description": "council_parking = Council parking PCN (windscreen or handed to you); council_postal = Council PCN by post (CCTV parking, bus lane or moving traffic outside London); london_moving = London bus lane, yellow box or banned turn (borough or TfL red route); tfl_charge = ULEZ, LEZ or Congestion Charge PCN (TfL); clean_air_zone = Clean Air Zone PCN (Birmingham, Bristol, Bath, Bradford, Portsmouth, Sheffield, Tyneside); private_anpr = Private parking charge by post (ANPR camera); private_windscreen = Private parking charge left on the windscreen"
    },
    "notice_date": {
      "type": "string",
      "description": "yyyy-mm-dd, the date on the notice"
    },
    "event_date": {
      "description": "yyyy-mm-dd, the parking date if different (private ANPR/windscreen)",
      "type": "string"
    },
    "notice_to_owner_date": {
      "type": "string"
    },
    "rejection_date": {
      "description": "yyyy-mm-dd on the Notice of Rejection, if you have one",
      "type": "string"
    }
  },
  "required": [
    "notice_type",
    "notice_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢lookup_appeal_status(reference)

Public status for a customer reference such as PCN-4471A2B9.

Input Schema

{
  "type": "object",
  "properties": {
    "reference": {
      "type": "string"
    }
  },
  "required": [
    "reference"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡check_notice(image_url, image_base64, content_type, file_name, force)

Upload a photo or PDF of a UK parking ticket, council PCN, private parking charge, bus lane, ULEZ or Clean Air Zone notice. AppealGo reads it, identifies the issuer and contravention, finds the grounds to challenge it and drafts the appeal. Checking is free (fair-use cap per key per day); filing costs £6.99 or is covered by an Unlimited plan. Provide image_url OR image_base64. Takes 20–90 seconds. Never invent notice details: report exactly what this tool returns.

Input Schema

{
  "type": "object",
  "properties": {
    "image_url": {
      "description": "Public https URL of the photo/PDF",
      "type": "string"
    },
    "image_base64": {
      "description": "Base64 of the photo/PDF (data: URLs accepted)",
      "type": "string"
    },
    "content_type": {
      "description": "image/jpeg, image/png, image/heic or application/pdf (for image_base64)",
      "type": "string"
    },
    "file_name": {
      "type": "string"
    },
    "force": {
      "description": "Scan even if this account already appealed the same notice",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_my_notices

Every notice this AppealGo account has scanned, with status and links.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_notice(id)

Full detail for a notice id returned by check_notice or list_my_notices.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴file_appeal(id, name, address)

Files the drafted appeal for a notice in the account holder's own name. This sends a real appeal to a real council or parking operator and cannot be undone, so confirm with the user first. If the notice is unpaid and not covered by a plan, returns a Stripe checkout_url (£6.99 standard); once paid, AppealGo files it automatically. Name and postal address are required (saved on the profile, or pass them here). Always show the user the checkout_url rather than claiming the appeal was filed.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "description": "Full name the appeal is filed under",
      "type": "string"
    },
    "address": {
      "description": "Full postal address including postcode",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Recommended Prompts

find_specific
Find [specific item] using AppealGo
Expected tools: search_guides
fetch_info
Fetch [information type] using AppealGo
Expected tools: get_guide
list_items
List all [items] available in AppealGo
Expected tools: list_my_notices
search_research
Search for information about [topic] using AppealGo
Expected tools: search_guides
retrieve_data
Get details about [item] from AppealGo
Expected tools: get_guide

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools
verifiedversion not recorded10 tools