AppealGo
Server Details
Check and appeal UK parking tickets (PCNs): grounds, deadlines, draft letters and filing.
- Status
- Healthy
- Uptime
- 100.0% over 25 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Most tools target distinct steps: checking a notice, getting notice details, listing notices, calculating deadlines, filing an appeal, and retrieving guides/status. The only potential overlap is between explain_contravention_code and search_contravention_codes, but their descriptions distinguish lookup-by-code from lookup-by-description.
All ten tools use a consistent snake_case verb_noun pattern (calculate_deadlines, check_notice, file_appeal, get_guide, list_my_notices, etc.), with no mixed casing or vague one-word names.
Ten tools is well-scoped for a UK parking appeal assistant, covering scanning, deadlines, codes, guides, filing, notice retrieval, and status lookup without excessive surface area.
The core lifecycle is covered: check/draft, retrieve notice, list notices, calculate deadlines, search/explain codes, file appeal, and check status. Minor gaps include no explicit profile/payment-plan management or appeal withdrawal/cancellation tool, but agents can largely work around these.
Available Tools
10 toolscalculate_deadlinesCalculate PCN and parking charge deadlinesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_date | No | yyyy-mm-dd, the parking date if different (private ANPR/windscreen) | |
| notice_date | Yes | yyyy-mm-dd, the date on the notice | |
| notice_type | Yes | 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 | |
| rejection_date | No | yyyy-mm-dd on the Notice of Rejection, if you have one | |
| notice_to_owner_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent behavior. The description adds useful context beyond that: it clarifies that results are 'statutory defaults' and that 'the notice is authoritative', which tells the agent when the computed value may be overridden. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first front-loads the inputs and enumerates the returned deadlines, the second adds the authoritative caveat. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned deadline values and the conditional tribunal/POPLA/IAS deadline. It leaves the optional event_date and notice_to_owner_date parameters unexplained, but those are not needed for the core call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the baseline is 3; the description reinforces the role of notice_type, notice_date, and rejection_date but adds no new meaning for event_date or notice_to_owner_date. The enum descriptions in the schema already carry most of the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('returns') and names the resource (deadlines) plus the exact outputs: discount deadline, challenge/representations deadline, escalation start, and tribunal/POPLA/IAS deadline with a rejection date. This distinguishes it clearly from siblings like check_notice or file_appeal, which address different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the input condition ('Given the notice type and the date on the notice') and the optional rejection-date branch, making it clear when to call it. It does not name alternative tools or exclusion cases, 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.
check_noticeScan a parking ticket / PCN and get the grounds + draft appealAInspect
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 £7.99 or is covered by a plan, up to its appeal allowance. Provide image_url OR image_base64. Takes 20–90 seconds. Never invent notice details: report exactly what this tool returns.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Scan even if this account already appealed the same notice | |
| file_name | No | ||
| image_url | No | Public https URL of the photo/PDF | |
| content_type | No | image/jpeg, image/png, image/heic or application/pdf (for image_base64) | |
| image_base64 | No | Base64 of the photo/PDF (data: URLs accepted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true and idempotentHint=false; the description adds non-obvious behavior: fair-use cap per key per day, cost model for filing, 20–90s latency, and the instruction not to invent notice details. It doesn't explain what the non-readonly write actually persists (a scan record), but the disclosure is well beyond the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and outcome, then cost/quota, then input requirement and latency, closing with the anti-hallucination instruction. Every sentence carries distinct, needed information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately summarizes the return (issuer, contravention, grounds, draft appeal) and explicitly mandates reporting exactly what the tool returns, covering the key completeness gap for an AI-facing notice scanner. Minor omissions (force parameter meaning, what non-readonly state change occurs) keep it just below a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema documents image_url, image_base64 and content_type on its own. The description usefully clarifies that image_url OR image_base64 (one of two) is required, but says nothing about force or file_name, leaving gaps. Baseline 3 applies when the schema carries most parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scan/check) and resource (UK parking ticket, PCN, bus lane, ULEZ/CAZ notice) plus the full value chain: read, identify issuer/contravention, find grounds, draft appeal. This is clearly distinguishable from siblings like get_notice (retrieve) and file_appeal (submit).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the workflow context (checking is free, filing costs £7.99 or is plan-covered) which implicitly routes the agent to check before file_appeal, and specifies that image_url OR image_base64 must be provided. It does not explicitly contrast with get_notice or list_my_notices, so it falls short of the 'when-not' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_contravention_codeExplain a PCN contravention codeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code on the PCN, e.g. '12' or '31J' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the tool read-only, idempotent, and non-destructive, so the description carries little safety burden. It adds useful context by describing the kind of output (meaning, penalty band, grounds) and includes the caveat 'usually beat it,' implying legal guidance is not absolute. It does not disclose other behavioral traits like data sources or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the main purpose and then lists the key deliverables. Every element adds value, and there is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup tool with a single required parameter and helpful annotations, the description is nearly complete: it tells the agent what the tool returns and the type of input expected. It does not explain how this differs from search_contravention_codes or whether codes outside the listed set are accepted, but these are minor gaps given the simple scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter code is already described with examples in the schema. The description adds the notion of a 'council PCN' and examples of penalty codes, but those largely overlap with the parameter description. It provides no additional formatting or normalization guidance beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (council PCN contravention codes) and what the tool provides: meaning, penalty band, and grounds. It lacks an explicit verb in the description text, but the tool title 'Explain a PCN contravention code' supplies it, and the scope is specific enough to distinguish it from a generic search tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: an agent would call this when the user wants to know what a code means or how to challenge it. However, there is no explicit guidance contrasting it with sibling tools like search_contravention_codes, and no stated conditions for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_appealFile the appeal with the issuerADestructiveInspect
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 (£7.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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | Full name the appeal is filed under | |
| address | No | Full postal address including postcode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the real-world irreversibility ('sends a real appeal to a real council... cannot be undone'), the payment gate and £7.99 price, the automatic filing after payment, and the required name/postal address. The annotations only flag destructive/non-idempotent; the description explains what is actually destroyed and what the agent must relay to the user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences front-load the action and the irreversible warning, then move to payment and parameter requirements. Every sentence carries actionable information, though the payment/checkout instruction is slightly compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive write tool with no output schema, it covers the preconditions, the payment branch, the returned checkout_url, and the correct agent behavior. Nothing needed to invoke it correctly or report results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the description compensates: it clarifies that name and address are required and that they can come from the saved profile or be passed in, which is not evident from the schema alone. The 'id' parameter is left implicit but is unambiguous from the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Files the drafted appeal for a notice') and immediately scopes it ('in the account holder's own name'), which distinguishes it from read-only siblings like get_notice, check_notice, and lookup_appeal_status. An agent can tell it is the only sibling that actually submits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('confirm with the user first') and the payment branch condition ('If the notice is unpaid and not covered by a plan'). It does not name a sibling alternative, but no sibling performs filing, so the when-to-use context is effectively complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_guideRead a guideARead-onlyIdempotentInspect
Returns a full AppealGo guide as Markdown, with its sources.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds behavioral detail about the return format (Markdown) and that sources are included, which goes beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and output format. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 one parameter and no output schema, the description covers the return format and content, but does not explain the slug or address error scenarios (e.g., invalid or missing guide). It is adequate but has gaps given the zero schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the 'slug' parameter at all. While the parameter name is suggestive, the description fails to clarify what a slug represents or how it maps to a guide. The description must compensate for the lack of schema documentation but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a full AppealGo guide in Markdown format and includes sources. This is specific and distinguishes it from search_guides, which is about finding guides rather than retrieving a complete one by slug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool versus alternatives. While the sibling list includes search_guides, there is no guidance on selecting get_guide when you have a slug or need a full guide. Usage is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_noticeGet one notice with its draft appeal and statusARead-onlyIdempotentInspect
Full detail for a notice id returned by check_notice or list_my_notices.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that this returns 'full detail' rather than a summary and constrains valid IDs to those from sibling tools. However, it does not expand on response contents or error behavior, which is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one tight sentence that delivers the essential information: what it returns and where the valid input comes from. Every word earns its place, and the most important qualifier ('Full detail') is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only, idempotent tool with strong annotations, the description is mostly complete. It tells the agent where to obtain a valid ID and what kind of result to expect. The absence of an output schema and the vagueness of 'full detail' are minor gaps, but not blocking for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the burden for the single 'id' parameter. It adds meaningful provenance semantics: the ID must come from check_notice or list_my_notices. This is more useful than the bare schema type string, though it does not describe format requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a single notice and specifies that it returns 'full detail' for an ID, distinguishing it from list-oriented siblings like list_my_notices and check_notice. The title further clarifies the response includes draft appeal and status. This is a specific verb+resource statement with no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when this tool is appropriate: for a notice ID 'returned by check_notice or list_my_notices.' This provides clear context for chaining after discovery tools. It does not explicitly state when not to use it or name alternative tools, but the source constraint is strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_noticesList the account's notices and appealsARead-onlyIdempotentInspect
Every notice this AppealGo account has scanned, with status and links.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the description only needs to add context; it does by noting the account-level scope and that results include status and links. It omits pagination/ordering/limit behavior, but for a simple read-only listing with strong annotations this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence that states the resource, scope, and result contents without filler. The most useful information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The combination of zero parameters, safe-read annotations, and a simple account-wide list makes the description essentially sufficient for an agent to invoke it. It could be slightly richer about output ordering or complete field details, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema is fully self-documenting and the baseline is high. The description appropriately adds no parameter detail because nothing needs explaining.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('list'), an account-scoped resource ('every notice this AppealGo account has scanned'), and the included attributes ('with status and links'). However, it does not explicitly differentiate itself from siblings like get_notice or check_notice, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this tool over siblings such as get_notice, check_notice, or lookup_appeal_status. The phrase 'every notice ... account has scanned' only implies an account-wide use case but gives no explicit exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_appeal_statusLook up an AppealGo appeal by referenceARead-onlyIdempotentInspect
Public status for a customer reference such as PCN-4471A2B9.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds 'public status' implying no authentication needed, but this is minor. It does not contradict annotations and adds minimal extra context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loaded with the core purpose and an example. Every word contributes to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with no output schema, the description is adequate to call the tool correctly. It could mention the return format, but that is not necessary given the simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description provides a concrete example reference (PCN-4471A2B9), giving the agent a format hint that the schema lacks. This adds meaningful semantic value beyond the raw string type, though it doesn't fully specify accepted patterns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('look up') on a specific resource ('AppealGo appeal') with a concrete example reference format. This clearly distinguishes it from sibling tools like file_appeal or check_notice, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for public status lookups but does not explicitly state when to use it versus alternatives. No mention of other tools or conditions for exclusion, leaving the agent to infer context from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contravention_codesSearch contravention codes by descriptionARead-onlyIdempotentInspect
Find the code for a description, e.g. 'disabled bay' or 'bus lane'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description does not need to restate those. The description adds only examples, not behavioral details such as result format, matching behavior, or what happens with partial matches. It is consistent with annotations but adds little beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with a clear action and two useful examples. Every element earns its place; there is no filler or redundant elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with strong annotations, the description is mostly complete: the agent knows what to pass and the general purpose. The lack of an output schema and any statement about multiple matches or empty results is a minor gap, but not critical for such a straightforward search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema gives no description for the single 'query' parameter, so the tool description must compensate. It does clarify that query is a human-readable description and supplies examples. However, it leaves matching semantics (exact vs partial) and acceptable input formats ambiguous, making it adequate but minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Find') with a specific resource ('the code for a description') and concrete examples ('disabled bay', 'bus lane'), so an agent can grasp the core purpose immediately. It does not explicitly differentiate from the sibling explain_contravention_code, though the direction is strongly implied; thus it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the primary use case: given a description, find the corresponding contravention code. However, it provides no explicit guidance on when not to use it or when to prefer alternatives like explain_contravention_code or search_guides, so the agent must infer usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_guidesSearch AppealGo's appeal guidesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Free text, e.g. 'ParkingEye grace period' or 'yellow box' | |
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds behavioral value by specifying the return format (slugs to pass to get_guide) and the scope of content covered. It does not contradict annotations and provides useful context beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the core purpose and includes a concrete list of topics and the return value. It is efficient, though slightly long due to the enumerated examples, but each element adds value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive in scope and mentions the return type, but it lacks any detail about the category parameter and does not mention possible result limitations (e.g., pagination, ordering). Given there is no output schema, the description should clarify the expected return structure beyond 'slugs'. The coverage of topics is thorough, but the parameter ambiguity leaves an agent uncertain about how to use category effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the query parameter with an example but the category parameter is only an enum without description, and the tool description does not explain either parameter. With schema description coverage at 50%, the description should compensate for the category parameter's meaning, but it only implicitly references categories (notice-types, operators, councils, codes) without clarifying how they map. This is a notable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches plain-English guides on appealing UK parking tickets, listing specific topics (council PCNs, private parking charges, bus lane, etc.) and explicitly notes it returns slugs for get_guide. This distinguishes it from sibling tools like search_contravention_codes and get_guide, giving a specific verb+resource+scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates the tool is for finding guides and that results are slugs to pass to get_guide, implying a follow-up workflow. It implicitly separates it from search_contravention_codes by focusing on guides rather than codes. However, it does not explicitly state when not to use this tool or mention alternatives, but the context is clear enough.
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.
10 tool updates
- First observed
calculate_deadlines - First observed
check_notice - First observed
explain_contravention_code - First observed
file_appeal - First observed
get_guide - First observed
get_notice - First observed
list_my_notices - First observed
lookup_appeal_status - First observed
search_contravention_codes - First observed
search_guides
Related MCP Connectors
Free, no key: UK parking ticket appeal guides, PCN contravention codes and deadline calculator.
UK tolls & charges: DVLA vehicle checks (ULEZ/CAZ/MOT/tax), prices, penalties, pay-by deadlines.
EU261/UK261 flight compensation check, rights and claim letters. Free.
UK statutory letters citing real legislation, for councils, NHS, housing, SEND, employers and more.
Related MCP Servers
- FlicenseAqualityDmaintenanceAutomates parking ticket detection, evidence gathering, and dispute preparation across multiple US cities.8-
- AlicenseNot gradedqualityDmaintenanceEnables UK haulage compliance checks including operator licence verification, tachograph auditing, drivers' hours calculations, and DVSA roadside inspection support.29 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceEnables UK haulage compliance managers to audit tachographs, drivers' hours, and DVSA OCRS scores, preventing red status and generating public inquiry briefs.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to help users claim refunds for UK travel (train Delay Repay, flight compensation, TfL overcharges) and parking fines through Untap's detection and deeplink tools.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.