atlasfetch-mcp 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,14 +15,16 @@ country: United Kingdom (GB) · region: England (GB-ENG) · municipal: City of W
15
15
  | Tool | What it does |
16
16
  | --- | --- |
17
17
  | `lookup_location` | A coordinate becomes the country, region and municipality containing it, with ISO 3166-1 / 3166-2 codes, plus matches from your own boundary sets. Optionally the **nearest street** (ask for the `street` layer), and the point as an H3 cell or Google Plus Code. |
18
+ | `geocode_address` | An address becomes a point, in South Africa today, with a **precision** that says whether the house, the street or only the suburb was found — and what to do about it. |
18
19
  | `get_route` | A route between 2 and 25 coordinates by car, bike, foot or truck, with turn-by-turn steps — optionally **around** your own zones, or **measuring** how far it runs inside them. |
19
20
  | `list_boundary_sets` | Lists your boundary sets, their counts, and which API keys may query them. |
20
21
  | `create_boundary_set` | Creates an empty set for your own polygons. |
21
22
  | `add_boundary` | Adds one GeoJSON polygon, with properties returned on every match. |
23
+ | `update_boundary` | Moves or reshapes one boundary, keeping its id, name and properties. |
22
24
 
23
- **Good for:** reverse geocoding to administrative areas, finding the street a point is on, geofencing against your own delivery zones or service areas, jurisdiction and region checks, tagging location data with region codes, and routing that keeps out of the areas you name.
25
+ **Good for:** reverse geocoding to administrative areas, finding the street a point is on, geofencing against your own delivery zones or service areas, jurisdiction and region checks, tagging location data with region codes, geocoding delivery addresses in South Africa, and routing that keeps out of the areas you name.
24
26
 
25
- **Not for:** forward geocoding or place search (an address to a coordinate), traffic-aware ETAs, distance matrices, isochrones, map tiles, or downloading boundary geometry.
27
+ **Not for:** geocoding outside South Africa (yet), searching for places by name, traffic-aware ETAs, distance matrices, isochrones, map tiles, or downloading boundary geometry.
26
28
 
27
29
  ### Directions
28
30
 
@@ -42,6 +44,19 @@ Three things worth knowing before you wire it up:
42
44
 
43
45
  Plan limits apply: 2 locations on the free plans and up to 25 on Pro, truck is Pro only, and alternatives need exactly 2 locations. Over a cap the answer is a `403` and nothing is billed; a location with no road near it is a `422`, and that one **is** billed, because the route was attempted.
44
46
 
47
+ ### Geocoding
48
+
49
+ `geocode_address` turns one address into a point — `q` on one line, or `address` already split into parts. South Africa today.
50
+
51
+ ```
52
+ address · confidence 0.96 · 25 Adderley Street, Cape Town, ZA-WC — dispatch
53
+ street · confidence 0.47 · ambiguous · Long Street, Cape Town, ZA-WC — ask the customer before dispatching
54
+ ```
55
+
56
+ **Read the precision before you use the point.** `address` is the house; `interpolated` is estimated between the numbers either side; `street` is the right street but not the house; `locality` is only the suburb. The result line applies the API's own advice for deliveries: dispatch only on a house-level answer that is not ambiguous, ask the recipient for a pin on a street-level one, and ask the customer when it is ambiguous. In South Africa most answers are street-level, because OpenStreetMap has house numbers on about 13% of street names.
57
+
58
+ One address per call, at 1 lookup each, found or not. That is deliberate: a delivery list goes through one row at a time, where you can see what it spends. Programs with thousands of rows should call `POST /geocode/batch` on the API directly.
59
+
45
60
  ### Streets
46
61
 
47
62
  Add the `street` layer and the answer includes the nearest street, and the house number where one is mapped. It is **worldwide**, and **opt-in** — not part of the default `country, region, municipal`.
@@ -56,7 +71,7 @@ You always get three answers — for 5 m, 20 m and unlimited — because "the ne
56
71
  ]
57
72
  ```
58
73
 
59
- **Two nulls that mean different things:** `"street": null` means there is no street data for that country, while an entry whose fields are null means nothing was within that radius. `streetNumber` and `postcode` are strings (`44A`, `12-14`, `0181`); house numbers are rare outside well-mapped areas; no street geometry is returned.
74
+ **Two nulls that mean different things:** `"street": null` means there is no street data for that country, while an entry whose fields are null means nothing was within that radius. `streetNumber` and `postcode` are strings (`44A`, `12-14`, `0181`); house numbers are rare outside well-mapped areas. Set `streetGeometry` and each answer also carries the street's line, trimmed to about 250 m — leave it off unless something will draw it.
60
75
 
61
76
  ## Install
62
77
 
@@ -90,7 +105,7 @@ Requires Node 20 or newer.
90
105
 
91
106
  The demo key is shared by **every** anonymous user on the internet — one pooled quota and rate limit. Fine for a first look, wrong for anything real.
92
107
 
93
- Create your own at [atlasfetch.xyz/dashboard](https://atlasfetch.xyz/dashboard) and set `ATLASFETCH_API_KEY`. The free Personal plan needs no card.
108
+ Create your own at [atlasfetch.xyz/dashboard](https://atlasfetch.xyz/dashboard) and set `ATLASFETCH_API_KEY`. The free Personal plan needs no card. You can copy a key from the dashboard at any time — so restrict it to your own domains there. Keys made before 12 October 2026 were revoked; if yours stops working, copy a live one.
94
109
 
95
110
  | Variable | Default | Purpose |
96
111
  | --- | --- | --- |
@@ -105,7 +120,7 @@ Create your own at [atlasfetch.xyz/dashboard](https://atlasfetch.xyz/dashboard)
105
120
 
106
121
  ## Billing
107
122
 
108
- One call is one lookup, however many layers, sets or grid codes it touches. Metering happens before matching, so a lookup that matches nothing still counts. Requests rejected as invalid or rate-limited are not billed.
123
+ A lookup or a geocoded address is one lookup; a route is 10 on the standard plans. A lookup is one, however many layers, sets or grid codes it touches. Metering happens before matching, so a lookup that matches nothing still counts. Requests rejected as invalid or rate-limited are not billed.
109
124
 
110
125
  ## Development
111
126
 
package/dist/api.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * only `atlasfetch-mcp/<version>` from it — never the rest, and never anything
12
12
  * about the user. See src/lib/clientId.ts in the API.
13
13
  */
14
- export declare const USER_AGENT = "atlasfetch-mcp/0.2.0 (+https://github.com/atlasfetch-dev/atlasfetch-mcp)";
14
+ export declare const USER_AGENT = "atlasfetch-mcp/0.3.0 (+https://github.com/atlasfetch-dev/atlasfetch-mcp)";
15
15
  export declare function baseUrl(): string;
16
16
  /** A failure the caller should be told about verbatim, not retried blindly. */
17
17
  export declare class ApiError extends Error {
@@ -61,6 +61,11 @@ export interface StreetAnswer {
61
61
  streetName: string | null;
62
62
  postcode: string | null;
63
63
  distanceMeters: number | null;
64
+ /** Only when streetgeom was asked for: the named street, trimmed to about 250 m. */
65
+ geometry?: string | {
66
+ type: string;
67
+ coordinates: number[][];
68
+ } | null;
64
69
  }
65
70
  export interface LookupResponse {
66
71
  /**
@@ -83,6 +88,49 @@ export interface LookupResponse {
83
88
  message: string;
84
89
  }>;
85
90
  }
91
+ export interface GeocodeResult {
92
+ lat: number;
93
+ lng: number;
94
+ /** address, interpolated, street or locality: how much of the address was found. */
95
+ precision: 'address' | 'interpolated' | 'street' | 'locality';
96
+ /** 0 to 1. Ranks answers; not a probability. */
97
+ confidence: number;
98
+ /** A same-named street elsewhere scored about as well. */
99
+ ambiguous: boolean;
100
+ /** What was used, spelt as the data spells it. */
101
+ matched: {
102
+ housenumber?: string;
103
+ street?: string;
104
+ locality?: string;
105
+ region?: string;
106
+ country?: string;
107
+ };
108
+ /** Parts of the address that matched nothing. */
109
+ unmatched: string[];
110
+ sets?: Record<string, Array<{
111
+ name: string;
112
+ properties?: unknown;
113
+ }>>;
114
+ base?: Record<string, LayerHit | null>;
115
+ geometry?: string | {
116
+ type: string;
117
+ coordinates: number[][];
118
+ } | null;
119
+ }
120
+ export interface GeocodeResponse {
121
+ result: GeocodeResult | null;
122
+ errors: Array<{
123
+ type: string;
124
+ message: string;
125
+ }>;
126
+ }
127
+ export interface StoredBoundary {
128
+ id: string;
129
+ set?: string;
130
+ name: string;
131
+ properties?: unknown;
132
+ pointCount?: number;
133
+ }
86
134
  export interface RouteStep {
87
135
  /** depart, arrive, continue, turn-left, …, roundabout, ferry, other. */
88
136
  maneuver: string;
package/dist/api.js CHANGED
@@ -102,8 +102,13 @@ export async function request(path, init = {}) {
102
102
  case 400:
103
103
  throw new ApiError(`The request was rejected: ${detail}`, 400);
104
104
  case 401:
105
- throw new ApiError(`The API key was rejected (${detail}). Check ATLASFETCH_API_KEY, or create a new key at ` +
106
- 'https://atlasfetch.xyz/dashboard — keys are shown once and stored hashed.', 401);
105
+ throw new ApiError(
106
+ // Since 2026-10-12 keys can be shown again in the dashboard, and every key
107
+ // made before then was revoked. Someone holding an old key is told to copy
108
+ // a live one, not to start over.
109
+ `The API key was rejected (${detail}). Copy a live key from ` +
110
+ 'https://atlasfetch.xyz/dashboard, where keys can be shown at any time, and set it as ' +
111
+ 'ATLASFETCH_API_KEY. Keys made before 12 October 2026 were revoked.', 401);
107
112
  case 402:
108
113
  throw new ApiError(`The monthly lookup allowance is exhausted (${detail}). It resets at the start of the next ` +
109
114
  'billing period; retrying before then will fail the same way.', 402);
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,gBAAgB,GAAG,4BAA4B,CAAA;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,OAAO,sDAAsD,CAAA;AAEzG,MAAM,UAAU,OAAO;IACrB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AACjF,CAAC;AAED,+EAA+E;AAC/E,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGtB;IAEA;IAJX,YACE,OAAe,EACN,MAAc;IACvB,4EAA4E;IACnE,YAAqB,KAAK;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAA;QAJL,WAAM,GAAN,MAAM,CAAQ;QAEd,cAAS,GAAT,SAAS,CAAiB;QAGnC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IACxB,CAAC;CACF;AAED,IAAI,aAAa,GAAkB,IAAI,CAAA;AAEvC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAA;IACzD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAA;IAEjC,IAAI,aAAa;QAAE,OAAO,aAAa,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;IAChG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAChB,oFAAoF;YAClF,8EAA8E,EAChF,QAAQ,CAAC,MAAM,CAChB,CAAA;IACH,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAqB,CAAA;IACxD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,QAAQ,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAA;IACnE,CAAC;IACD,aAAa,GAAG,IAAI,CAAC,GAAG,CAAA;IACxB,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAA;AAChD,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAC1B,qFAAqF;IACrF,+EAA+E;IAC/E,8DAA8D,CAAA;AAEhE,KAAK,UAAU,SAAS,CAAC,QAAkB;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAA;QAC1D,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAA;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC,UAAU,CAAA;IAC5B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAY,EACZ,OAAwF,EAAE;IAE1F,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAA;IAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;QAC5B,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,GAAG,EAAE;YAC9B,YAAY,EAAE,UAAU;YACxB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;SAC3E;QACD,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;KACtE,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAA;IAEpD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IACxC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,GAAG;YACN,MAAM,IAAI,QAAQ,CAAC,6BAA6B,MAAM,EAAE,EAAE,GAAG,CAAC,CAAA;QAChE,KAAK,GAAG;YACN,MAAM,IAAI,QAAQ;YAChB,2EAA2E;YAC3E,2EAA2E;YAC3E,iCAAiC;YACjC,6BAA6B,MAAM,0BAA0B;gBAC3D,uFAAuF;gBACvF,oEAAoE,EACtE,GAAG,CACJ,CAAA;QACH,KAAK,GAAG;YACN,MAAM,IAAI,QAAQ,CAChB,8CAA8C,MAAM,wCAAwC;gBAC1F,8DAA8D,EAChE,GAAG,CACJ,CAAA;QACH,KAAK,GAAG;YACN,MAAM,IAAI,QAAQ,CAAC,gEAAgE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAA;QACnG,KAAK,GAAG;YACN,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,YAAY,EAAE,GAAG,CAAC,CAAA;QACjD,KAAK,GAAG;YACN,0EAA0E;YAC1E,wEAAwE;YACxE,MAAM,IAAI,QAAQ,CAChB,GAAG,MAAM,2EAA2E;gBAClF,iFAAiF,EACnF,GAAG,CACJ,CAAA;QACH,KAAK,GAAG;YACN,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,mDAAmD,EAAE,GAAG,CAAC,CAAA;QACxF,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YACtD,MAAM,IAAI,QAAQ,CAChB,eAAe,UAAU,CAAC,CAAC,CAAC,iBAAiB,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,qCAAqC,EACpG,GAAG,EACH,IAAI,CACL,CAAA;QACH,CAAC;QACD,KAAK,GAAG;YACN,MAAM,IAAI,QAAQ,CAChB,kDAAkD,MAAM,yBAAyB;gBAC/E,+DAA+D,EACjE,GAAG,EACH,IAAI,CACL,CAAA;QACH;YACE,MAAM,IAAI,QAAQ,CAAC,uBAAuB,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,CAAA;IACpH,CAAC;AACH,CAAC"}
package/dist/server.js CHANGED
@@ -85,14 +85,50 @@ function summariseRoute(result) {
85
85
  parts.push(`${skipped} avoid zone${skipped === 1 ? '' : 's'} skipped`);
86
86
  return `${parts.join(' · ')} — free-flow, no traffic`;
87
87
  }
88
+ /**
89
+ * The dispatch table from the API's docs, applied: what to DO with a geocode.
90
+ * Ambiguity is checked first, because an ambiguous house is still the wrong
91
+ * house half the time, however precise it claims to be.
92
+ */
93
+ function dispatchAdvice(result) {
94
+ if (result.ambiguous || result.precision === 'locality') {
95
+ return 'ask the customer before dispatching';
96
+ }
97
+ if (result.precision === 'street') {
98
+ return 'right street, not the house: ask the recipient for a pin or a landmark';
99
+ }
100
+ if (result.confidence < 0.5) {
101
+ return 'house found, but with low confidence: check with the customer';
102
+ }
103
+ return 'dispatch';
104
+ }
105
+ /** "address · 0.96 · 25 Adderley Street, Cape Town, ZA-WC — dispatch". */
106
+ function summariseGeocode(result) {
107
+ if (!result)
108
+ return 'Nothing trustworthy found for that address. The lookup was still billed.';
109
+ const m = result.matched;
110
+ const where = [
111
+ [m.housenumber, m.street].filter(Boolean).join(' '),
112
+ m.locality,
113
+ m.region ?? m.country,
114
+ ].filter(Boolean).join(', ');
115
+ const flags = [
116
+ result.precision,
117
+ `confidence ${result.confidence}`,
118
+ ...(result.ambiguous ? ['ambiguous'] : []),
119
+ ...(result.unmatched.length > 0 ? [`unmatched: ${result.unmatched.join(', ')}`] : []),
120
+ ];
121
+ return `${flags.join(' · ')} · ${where} — ${dispatchAdvice(result)}`;
122
+ }
88
123
  export function createServer() {
89
124
  const server = new McpServer({ name: 'atlasfetch', version: VERSION }, {
90
125
  instructions: 'AtlasFetch answers "which place is this coordinate in?" — the country, region and ' +
91
126
  'municipality containing a point, the nearest street and house number (opt-in), ' +
92
127
  'plus the boundaries the caller has uploaded themselves. It also routes between ' +
93
- 'coordinates, optionally around those same boundaries (get_route, 10 lookups a call, ' +
94
- 'free-flow durations with no traffic). It does not do forward geocoding or place search, ' +
95
- 'and it does not return boundary geometry for the reference layers.',
128
+ 'coordinates, optionally around those same boundaries (get_route, 10 lookups a call on the ' +
129
+ 'standard plans, free-flow durations with no traffic), and geocodes addresses to ' +
130
+ 'coordinates in South Africa (geocode_address, 1 lookup). It does not search for places ' +
131
+ 'by name, and it does not return boundary geometry for the reference layers.',
96
132
  });
97
133
  // ── The lookup ─────────────────────────────────────────────────────────────
98
134
  server.registerTool('lookup_location', {
@@ -105,9 +141,9 @@ export function createServer() {
105
141
  'Use for: which country, region or municipality a point is in; which street a point is on',
106
142
  '(add "street" to base); geofence checks against your own polygons; tagging data with region',
107
143
  'codes.',
108
- 'Do NOT use for: forward geocoding or place search (an address to a coordinate), or',
109
- 'fetching boundary geometry. For a route, a travel distance or a travel time between',
110
- 'points, use get_route instead — but note it costs 10 lookups to this one’s 1.',
144
+ 'For the other direction, an address to a coordinate, use geocode_address. For a route,',
145
+ 'a travel distance or a travel time, use get_route — 10 lookups on the standard plans to',
146
+ 'this one’s 1. Do NOT use for place search by name or for fetching boundary geometry.',
111
147
  '',
112
148
  'Caveats worth repeating to the user: municipal is the finest unit AVAILABLE, not a',
113
149
  'consistent kind of thing — Los Angeles returns a city, rural Kansas returns a county, so',
@@ -123,7 +159,8 @@ export function createServer() {
123
159
  'Two different nulls: base.street === null means there is no street data for the point’s',
124
160
  'country, while an entry whose fields are null means nothing was within that radius —',
125
161
  'never report them the same way. streetNumber and postcode are STRINGS (44A, 12-14, 0181),',
126
- 'house numbers are rare outside well-mapped areas, and no street geometry is returned.',
162
+ 'house numbers are rare outside well-mapped areas. Street geometry comes back only when',
163
+ 'streetGeometry is set — leave it off unless something will draw the line.',
127
164
  '',
128
165
  'One call is one billed lookup however many layers, sets or grid codes it touches, and a',
129
166
  'call that matches nothing still bills.',
@@ -153,15 +190,27 @@ export function createServer() {
153
190
  ])
154
191
  .optional()
155
192
  .describe('Plus Code length. 9 is not a valid length. 10 is about 14 m.'),
193
+ streetGeometry: z
194
+ .enum(['polyline6', 'geojson'])
195
+ .optional()
196
+ .describe('Give each street answer the line of the street it names, trimmed to about 250 m either ' +
197
+ 'side of the point. Implies the street layer. Off by default, and leave it off unless ' +
198
+ 'something will draw it: a line is hundreds of characters nobody reads.'),
156
199
  },
157
200
  annotations: { readOnlyHint: true, openWorldHint: true },
158
- }, async ({ lat, lng, base, sets, encode, h3res, pluslen }) => {
201
+ }, async ({ lat, lng, base, sets, encode, h3res, pluslen, streetGeometry }) => {
159
202
  try {
203
+ // The API refuses streetgeom without the street layer. Asking for the line
204
+ // of the street means asking for the street, so add it rather than fail.
205
+ const layers = streetGeometry && !(base ?? []).includes('street')
206
+ ? [...(base ?? ['country', 'region', 'municipal']), 'street']
207
+ : base;
160
208
  const result = await request('/location/lookup', {
161
209
  query: {
162
210
  lat: String(lat),
163
211
  lng: String(lng),
164
- base: base?.join(','),
212
+ base: layers?.join(','),
213
+ streetgeom: streetGeometry,
165
214
  set: sets?.join(','),
166
215
  encode: encode?.join(','),
167
216
  h3res: h3res === undefined ? undefined : String(h3res),
@@ -177,6 +226,102 @@ export function createServer() {
177
226
  return fail(error);
178
227
  }
179
228
  });
229
+ // ── Geocoding ─────────────────────────────────────────────────────────────
230
+ server.registerTool('geocode_address', {
231
+ title: 'Geocode an address to a coordinate (South Africa)',
232
+ description: [
233
+ 'Turn ONE address into a point, with an honest account of how much of it was found. Built',
234
+ 'for deliveries. South Africa today; more countries as their data loads. 1 lookup per',
235
+ 'address, found or not.',
236
+ '',
237
+ 'Send either q (one line) or address (housenumber, street, suburb, city, postcode, unit) —',
238
+ 'never both. If the address is already split, send it split: it matches better.',
239
+ '',
240
+ 'READ precision BEFORE using the point. "address" means the house was found;',
241
+ '"interpolated" means it was estimated between the numbers either side; "street" means the',
242
+ 'right street but NOT the house; "locality" means only the suburb or town. NEVER present',
243
+ 'a street- or locality-level point as a door: a driver sent there will be at the wrong',
244
+ 'house. In South Africa most answers are street-level, because OpenStreetMap has house',
245
+ 'numbers on about 13% of street names — that is the data being honest, not a failure.',
246
+ '',
247
+ 'What to do with an answer — the result line says which applies:',
248
+ '- address or interpolated, not ambiguous, confidence 0.5 or more: dispatch.',
249
+ '- street: ask the recipient for a pin or a landmark.',
250
+ '- ambiguous, or locality: ask the customer before dispatching.',
251
+ 'confidence ranks answers; it is NOT a probability. ambiguous means a same-named street',
252
+ 'elsewhere scored about as well. result null means nothing trustworthy was found, and',
253
+ 'that still costs the lookup.',
254
+ '',
255
+ 'country is a hard filter; region (ZA-WC, or "Western Cape") only ranks streets inside it',
256
+ 'first, so a wrong province does not lose the address. An uncovered country is refused,',
257
+ 'unbilled, with the list of covered countries in the message — that message is the live',
258
+ 'coverage list; there is no other. sets and base answer "which delivery zone is it in" in',
259
+ 'the same call, at no extra cost.',
260
+ '',
261
+ 'One address per call, deliberately. For a delivery list, call this once per row so the',
262
+ 'user sees what is being spent; programs with thousands of rows should use the API’s',
263
+ 'POST /geocode/batch directly. Not for: searching for a business or landmark by name,',
264
+ 'or a coordinate to an address (that is lookup_location with the street layer).',
265
+ ].join('\n'),
266
+ inputSchema: {
267
+ q: z.string().max(300).optional().describe('The whole address on one line, e.g. "25 Adderley Street, Cape Town".'),
268
+ address: z
269
+ .object({
270
+ housenumber: z.string().max(120).optional(),
271
+ street: z.string().max(120).optional(),
272
+ suburb: z.string().max(120).optional(),
273
+ city: z.string().max(120).optional(),
274
+ postcode: z.string().max(120).optional(),
275
+ unit: z.string().max(120).optional(),
276
+ })
277
+ .optional()
278
+ .describe('The address already split into parts. Needs at least a street. Use instead of q.'),
279
+ country: z
280
+ .string()
281
+ .length(2)
282
+ .optional()
283
+ .describe('ISO 3166-1 alpha-2, e.g. "ZA". A hard filter: only that country is searched.'),
284
+ region: z
285
+ .string()
286
+ .max(120)
287
+ .optional()
288
+ .describe('ISO 3166-2 ("ZA-WC") or a name ("Western Cape"). A preference, not a filter.'),
289
+ sets: z
290
+ .array(z.string().max(64))
291
+ .optional()
292
+ .describe('Boundary sets on this account to match at the found point, e.g. delivery zones.'),
293
+ base: z
294
+ .array(z.enum(['country', 'region', 'municipal']))
295
+ .optional()
296
+ .describe('Administrative layers to resolve at the found point.'),
297
+ streetGeometry: z
298
+ .enum(['polyline6', 'geojson'])
299
+ .optional()
300
+ .describe('The matched street’s line, trimmed to about 250 m. Only if something will draw it.'),
301
+ },
302
+ annotations: { readOnlyHint: true, openWorldHint: true },
303
+ }, async ({ q, address, country, region, sets, base, streetGeometry }) => {
304
+ // Refuse locally rather than spend a request on a shape the API refuses.
305
+ if ((q === undefined) === (address === undefined)) {
306
+ return {
307
+ content: [{ type: 'text', text: 'Send either q (one line) or address (split into parts) — exactly one of them.' }],
308
+ isError: true,
309
+ };
310
+ }
311
+ try {
312
+ const answer = await request('/geocode', {
313
+ method: 'POST',
314
+ body: { q, address, country, region, set: sets, base, streetgeom: streetGeometry },
315
+ });
316
+ const problems = answer.errors.length > 0
317
+ ? `\n\nPartial problems (the geocode still answered):\n${answer.errors.map(e => `- [${e.type}] ${e.message}`).join('\n')}`
318
+ : '';
319
+ return ok(`${summariseGeocode(answer.result)}\n\n${json(answer)}${problems}`);
320
+ }
321
+ catch (error) {
322
+ return fail(error);
323
+ }
324
+ });
180
325
  // ── Boundary sets ──────────────────────────────────────────────────────────
181
326
  server.registerTool('list_boundary_sets', {
182
327
  title: 'List the boundary sets on this account',
@@ -302,6 +447,83 @@ export function createServer() {
302
447
  return fail(error);
303
448
  }
304
449
  });
450
+ server.registerTool('update_boundary', {
451
+ title: 'Move or reshape a boundary, keeping its name and properties',
452
+ description: [
453
+ 'Replace the shape of ONE existing boundary. Its id, name, properties and set stay as they',
454
+ 'are, so every lookup that matches it keeps returning the same properties.',
455
+ '',
456
+ 'Use this to fix or move a zone. Do NOT delete it and add it again: that gives it a new id',
457
+ 'and loses the properties unless they are re-sent.',
458
+ '',
459
+ 'Name the boundary by set and name; this finds its id. If a set holds two boundaries with',
460
+ 'that name, the answer lists their ids and asks for one. The new shape gets the same',
461
+ 'checks as add_boundary, including the plan’s points-per-boundary cap (refused, unbilled).',
462
+ 'Only boundaries on this account can be changed.',
463
+ ].join('\n'),
464
+ inputSchema: {
465
+ set: z.string().max(64).describe('The set the boundary is in.'),
466
+ name: z.string().max(100).optional().describe('The boundary’s name. Use this or id.'),
467
+ id: z
468
+ .string()
469
+ .regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, 'A boundary id is a UUID; give the name instead.')
470
+ .optional()
471
+ .describe('The boundary’s id (a UUID), when it is known. Use this or name.'),
472
+ geometry: z
473
+ .object({
474
+ type: z.literal('Polygon'),
475
+ coordinates: z
476
+ .array(z.array(z.array(z.number()).min(2).max(3)).min(4))
477
+ .min(1)
478
+ .describe('Rings of [longitude, latitude]; the first is the outline, any others holes. Each ring closed.'),
479
+ })
480
+ .describe('The new shape: a GeoJSON Polygon.'),
481
+ },
482
+ // destructiveHint: the old shape is gone. idempotentHint: sending the same
483
+ // shape twice leaves the same boundary.
484
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true },
485
+ }, async ({ set, name, id, geometry }) => {
486
+ if (!id && !name) {
487
+ return { content: [{ type: 'text', text: 'Name the boundary (name) or give its id.' }], isError: true };
488
+ }
489
+ try {
490
+ let target = id;
491
+ if (!target) {
492
+ const view = await request('/boundaries/view', { query: { set } });
493
+ const matches = view.boundaries.filter(b => b.name === name);
494
+ if (matches.length === 0) {
495
+ const names = view.boundaries.map(b => b.name);
496
+ return {
497
+ content: [{
498
+ type: 'text',
499
+ text: `No boundary named "${name}" in set "${set}".` +
500
+ (names.length > 0 ? ` Its boundaries are: ${names.join(', ')}.` : ' The set is empty.'),
501
+ }],
502
+ isError: true,
503
+ };
504
+ }
505
+ if (matches.length > 1) {
506
+ return {
507
+ content: [{
508
+ type: 'text',
509
+ text: `Set "${set}" has ${matches.length} boundaries named "${name}". Call again with one ` +
510
+ `of these ids: ${matches.map(b => `${b.id} (${b.pointCount ?? '?'} points)`).join(', ')}.`,
511
+ }],
512
+ isError: true,
513
+ };
514
+ }
515
+ target = matches[0].id;
516
+ }
517
+ const updated = await request(`/boundaries/${encodeURIComponent(target)}`, {
518
+ method: 'PATCH',
519
+ body: { geometry },
520
+ });
521
+ return ok(`Reshaped "${updated.name}" in set "${updated.set ?? set}"; its properties are unchanged.\n\n${json({ ...updated, geometry: undefined })}`);
522
+ }
523
+ catch (error) {
524
+ return fail(error);
525
+ }
526
+ });
305
527
  // ── Directions ─────────────────────────────────────────────────────────────
306
528
  server.registerTool('get_route', {
307
529
  title: 'Route between coordinates, optionally avoiding your own zones',
@@ -309,8 +531,9 @@ export function createServer() {
309
531
  'A driving, cycling, walking or truck route from the first location to the last, via any',
310
532
  'in between, with distance, duration and turn-by-turn steps.',
311
533
  '',
312
- 'COST: a route is 10 LOOKUPS, not one. Everything it returns is included in that, but it',
313
- 'is ten times a lookup, so do not call it in a loop to compare options without saying so.',
534
+ 'COST: a route is 10 LOOKUPS on the standard plans, not one (a custom plan may charge less;',
535
+ 'X-Lookups-Remaining is always the truth). Everything it returns is included in that, so do',
536
+ 'not call it in a loop to compare options without saying so.',
314
537
  '',
315
538
  'Durations are FREE-FLOW: the road network at its own speed limits, with NO live or',
316
539
  'historical traffic. Never present one as an arrival time in traffic — for that, say a',
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACL,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAGjD,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAqBtC,gFAAgF;AAChF,SAAS,EAAE,CAAC,IAAY;IACtB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACpE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AACpD,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,MAAM,OAAO,GAAG,KAAK,YAAY,QAAQ;QACvC,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,KAAK,YAAY,KAAK;YACtB,CAAC,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE;YAChD,CAAC,CAAC,gBAAgB,CAAA;IACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AACtE,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAE/D;;;GAGG;AACH,SAAS,eAAe,CAAC,OAAuB;IAC9C,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAC9F,IAAI,CAAC,IAAI;QAAE,OAAO,qCAAqC,CAAA;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,KAAK,CAAA;IAClF,OAAO,WAAW,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,EAAE,CAAA;AACzD,CAAC;AAED,oGAAoG;AACpG,SAAS,SAAS,CAAC,MAAsB;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE;QAC7D,wEAAwE;QACxE,oDAAoD;QACpD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;QACnD,IAAI,KAAK,KAAK,QAAQ;YAAE,OAAO,sCAAsC,CAAA;QACrE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,CAAA;IAChG,CAAC,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;SACzC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,0DAA0D;AAC1D,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAClC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAA;AAEvG,yDAAyD;AACzD,SAAS,KAAK,CAAC,OAAe;IAC5B,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACxC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,MAAM,CAAA;IACzC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,MAAM,OAAO,GAAG,EAAE,MAAM,CAAA;AAC5D,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAAqB;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IACxB,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IACpG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,CAAA;IAClE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxF,IAAI,SAAS,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,QAAQ,CAAC,CAAA;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAA;IACrD,IAAI,YAAY,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,eAAe,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/F,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAA;IACpE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;IAC7G,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACzG,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAAA;IAClD,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,cAAc,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAA;IACvF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAA;AACvD,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAqB;IAC3C,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACxD,OAAO,qCAAqC,CAAA;IAC9C,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,wEAAwE,CAAA;IACjF,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAC5B,OAAO,+DAA+D,CAAA;IACxE,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,0EAA0E;AAC1E,SAAS,gBAAgB,CAAC,MAA4B;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,0EAA0E,CAAA;IAC9F,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAA;IACxB,MAAM,KAAK,GAAG;QACZ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACnD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO;KACtB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG;QACZ,MAAM,CAAC,SAAS;QAChB,cAAc,MAAM,CAAC,UAAU,EAAE;QACjC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAA;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,EACxC;QACE,YAAY,EACV,oFAAoF;YACpF,iFAAiF;YACjF,iFAAiF;YACjF,4FAA4F;YAC5F,kFAAkF;YAClF,yFAAyF;YACzF,6EAA6E;KAChF,CACF,CAAA;IAED,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,gDAAgD;QACvD,WAAW,EAAE;YACX,qFAAqF;YACrF,4FAA4F;YAC5F,2FAA2F;YAC3F,EAAE;YACF,0FAA0F;YAC1F,6FAA6F;YAC7F,QAAQ;YACR,wFAAwF;YACxF,yFAAyF;YACzF,sFAAsF;YACtF,EAAE;YACF,oFAAoF;YACpF,0FAA0F;YAC1F,yFAAyF;YACzF,2FAA2F;YAC3F,mEAAmE;YACnE,EAAE;YACF,mEAAmE;YACnE,qDAAqD;YACrD,2FAA2F;YAC3F,0FAA0F;YAC1F,6FAA6F;YAC7F,yFAAyF;YACzF,sFAAsF;YACtF,2FAA2F;YAC3F,wFAAwF;YACxF,2EAA2E;YAC3E,EAAE;YACF,yFAAyF;YACzF,wCAAwC;SACzC,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACtE,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;iBAC3D,QAAQ,EAAE;iBACV,QAAQ,CACP,gFAAgF;gBAC9E,kEAAkE,CACrE;YACH,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CAAC,gFAAgF,CAAC;YAC7F,MAAM,EAAE,CAAC;iBACN,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;iBACjC,QAAQ,EAAE;iBACV,QAAQ,CACP,mFAAmF;gBACjF,gFAAgF,CACnF;YACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YAC1G,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC;gBACL,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;aAC1E,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,8DAA8D,CAAC;YAC3E,cAAc,EAAE,CAAC;iBACd,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CACP,yFAAyF;gBACvF,uFAAuF;gBACvF,wEAAwE,CAC3E;SACJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;QACzE,IAAI,CAAC;YACH,2EAA2E;YAC3E,yEAAyE;YACzE,MAAM,MAAM,GAAG,cAAc,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC/D,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAC7D,CAAC,CAAC,IAAI,CAAA;YACR,MAAM,MAAM,GAAG,MAAM,OAAO,CAAiB,kBAAkB,EAAE;gBAC/D,KAAK,EAAE;oBACL,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;oBAChB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;oBAChB,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC;oBACvB,UAAU,EAAE,cAAc;oBAC1B,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;oBACpB,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC;oBACzB,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBACtD,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;iBAC7D;aACF,CAAC,CAAA;YAEF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACtC,CAAC,CAAC,uDACE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrE,CAAC,CAAC,EAAE,CAAA;YAEN,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC,CAAA;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,6EAA6E;IAC7E,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,mDAAmD;QAC1D,WAAW,EAAE;YACX,0FAA0F;YAC1F,sFAAsF;YACtF,wBAAwB;YACxB,EAAE;YACF,2FAA2F;YAC3F,gFAAgF;YAChF,EAAE;YACF,6EAA6E;YAC7E,2FAA2F;YAC3F,yFAAyF;YACzF,uFAAuF;YACvF,uFAAuF;YACvF,sFAAsF;YACtF,EAAE;YACF,iEAAiE;YACjE,6EAA6E;YAC7E,sDAAsD;YACtD,gEAAgE;YAChE,wFAAwF;YACxF,sFAAsF;YACtF,8BAA8B;YAC9B,EAAE;YACF,0FAA0F;YAC1F,wFAAwF;YACxF,wFAAwF;YACxF,0FAA0F;YAC1F,kCAAkC;YAClC,EAAE;YACF,wFAAwF;YACxF,qFAAqF;YACrF,sFAAsF;YACtF,gFAAgF;SACjF,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;YAClH,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC;gBACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;aACrC,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,kFAAkF,CAAC;YAC/F,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,MAAM,CAAC,CAAC,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;YAC3F,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;YAC3F,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CAAC,iFAAiF,CAAC;YAC9F,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;iBACjD,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,cAAc,EAAE,CAAC;iBACd,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CAAC,oFAAoF,CAAC;SAClG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE;QACpE,yEAAyE;QACzE,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+EAA+E,EAAE,CAAC;gBAClH,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,UAAU,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE;aACnF,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACvC,CAAC,CAAC,uDACE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrE,CAAC,CAAC,EAAE,CAAA;YACN,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAA;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EACT,0FAA0F;YAC1F,6FAA6F;YAC7F,qCAAqC;QACvC,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAA0B,kBAAkB,CAAC,CAAA;YACzE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,CAAC,6EAA6E,CAAC,CAAA;YAC1F,CAAC;YACD,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;YACX,sFAAsF;YACtF,oBAAoB;YACpB,EAAE;YACF,yFAAyF;YACzF,2FAA2F;YAC3F,2FAA2F;YAC3F,2FAA2F;YAC3F,8DAA8D;SAC/D,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,KAAK,CAAC,kCAAkC,CAAC;iBACzC,QAAQ,CACP,uFAAuF;gBACrF,+CAA+C,CAClD;SACJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACzG,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAc,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAC9F,OAAO,EAAE,CACP,oBAAoB,GAAG,CAAC,IAAI,8DAA8D;gBACxF,oFAAoF;gBACpF,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CACrB,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,qEAAqE;IACrE,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE;YACX,uFAAuF;YACvF,0FAA0F;YAC1F,gFAAgF;YAChF,EAAE;YACF,4FAA4F;YAC5F,+EAA+E;YAC/E,gEAAgE;YAChE,EAAE;YACF,4EAA4E;YAC5E,oFAAoF;YACpF,uFAAuF;YACvF,2FAA2F;YAC3F,EAAE;YACF,0FAA0F;YAC1F,8FAA8F;YAC9F,8FAA8F;YAC9F,uFAAuF;YACvF,4FAA4F;YAC5F,0FAA0F;YAC1F,mEAAmE;YACnE,EAAE;YACF,mFAAmF;SACpF,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,KAAK,CAAC,kCAAkC,CAAC;iBACzC,QAAQ,CAAC,mEAAmE,CAAC;YAChF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,iFAAiF,CAAC;YAC9F,QAAQ,EAAE,CAAC;iBACR,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC1B,WAAW,EAAE,CAAC;qBACX,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACxD,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,CACP,uFAAuF;oBACrF,4EAA4E,CAC/E;aACJ,CAAC;iBACD,QAAQ,CACP,0FAA0F;gBACxF,kDAAkD,CACrD;YACH,UAAU,EAAE,CAAC;iBACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBACnF,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F;gBAC1F,0FAA0F;gBAC1F,uCAAuC,CAC1C;SACJ;QACD,0EAA0E;QAC1E,uEAAuE;QACvE,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAU,aAAa,EAAE;gBACpD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE;aAC1C,CAAC,CAAA;YACF,OAAO,EAAE,CAAC,UAAU,IAAI,aAAa,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,6DAA6D;QACpE,WAAW,EAAE;YACX,2FAA2F;YAC3F,2EAA2E;YAC3E,EAAE;YACF,2FAA2F;YAC3F,mDAAmD;YACnD,EAAE;YACF,0FAA0F;YAC1F,qFAAqF;YACrF,2FAA2F;YAC3F,iDAAiD;SAClD,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YACrF,EAAE,EAAE,CAAC;iBACF,MAAM,EAAE;iBACR,KAAK,CAAC,iEAAiE,EAAE,iDAAiD,CAAC;iBAC3H,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,QAAQ,EAAE,CAAC;iBACR,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC1B,WAAW,EAAE,CAAC;qBACX,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACxD,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,CAAC,+FAA+F,CAAC;aAC7G,CAAC;iBACD,QAAQ,CAAC,mCAAmC,CAAC;SACjD;QACD,2EAA2E;QAC3E,wCAAwC;QACxC,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACvG,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACpC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0CAA0C,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACzG,CAAC;QACD,IAAI,CAAC;YACH,IAAI,MAAM,GAAG,EAAE,CAAA;YACf,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAmC,kBAAkB,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;gBACpG,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;gBAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;oBAC9C,OAAO;wBACL,OAAO,EAAE,CAAC;gCACR,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,sBAAsB,IAAI,aAAa,GAAG,IAAI;oCAClD,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC;6BAC1F,CAAC;wBACF,OAAO,EAAE,IAAI;qBACd,CAAA;gBACH,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO;wBACL,OAAO,EAAE,CAAC;gCACR,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,OAAO,CAAC,MAAM,sBAAsB,IAAI,yBAAyB;oCACzF,iBAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;6BAC7F,CAAC;wBACF,OAAO,EAAE,IAAI;qBACd,CAAA;gBACH,CAAC;gBACD,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACxB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAiB,eAAe,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE;gBACzF,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE;aACnB,CAAC,CAAA;YACF,OAAO,EAAE,CAAC,aAAa,OAAO,CAAC,IAAI,aAAa,OAAO,CAAC,GAAG,IAAI,GAAG,uCAChE,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,+DAA+D;QACtE,WAAW,EAAE;YACX,yFAAyF;YACzF,6DAA6D;YAC7D,EAAE;YACF,4FAA4F;YAC5F,4FAA4F;YAC5F,6DAA6D;YAC7D,EAAE;YACF,oFAAoF;YACpF,uFAAuF;YACvF,mDAAmD;YACnD,EAAE;YACF,uFAAuF;YACvF,yFAAyF;YACzF,EAAE;YACF,0FAA0F;YAC1F,2FAA2F;YAC3F,2CAA2C;YAC3C,EAAE;YACF,wFAAwF;YACxF,wFAAwF;YACxF,2FAA2F;YAC3F,gFAAgF;YAChF,EAAE;YACF,yFAAyF;YACzF,yFAAyF;YACzF,oFAAoF;YACpF,iFAAiF;YACjF,EAAE;YACF,sFAAsF;YACtF,wEAAwE;SACzE,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACjE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;aACvE,CAAC,CACH;iBACA,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,CAAC,qFAAqF,CAAC;YAClG,IAAI,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;iBACtC,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;YAC1F,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,0FAA0F,CAAC;YACvG,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,kFAAkF,CAAC;YAC/F,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CAAC,yFAAyF,CAAC;YACtG,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CACP,6FAA6F;gBAC3F,yCAAyC,CAC5C;YACH,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;iBACtC,QAAQ,EAAE;iBACV,QAAQ,CACP,0FAA0F;gBACxF,gEAAgE,CACnE;YACH,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,wFAAwF,CAAC;YACrG,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC;gBACN,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACrC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,wEAAwE,CAAC;SACtF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACvG,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAgB,QAAQ,EAAE;gBACpD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE;oBACJ,SAAS;oBACT,IAAI;oBACJ,qEAAqE;oBACrE,+DAA+D;oBAC/D,KAAK,EAAE,KAAK,IAAI,IAAI;oBACpB,YAAY;oBACZ,QAAQ,EAAE,QAAQ,IAAI,MAAM;oBAC5B,QAAQ;oBACR,OAAO;oBACP,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;oBAC1D,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;iBACpE;aACF,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG;gBACZ,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;gBACzE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACxD,CAAA;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,0CAA0C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAErG,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAA;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
package/dist/version.d.ts CHANGED
@@ -4,4 +4,4 @@
4
4
  * package.json, server.json and manifest.json by scripts/release.mjs, which
5
5
  * refuses to release if they disagree.
6
6
  */
7
- export declare const VERSION = "0.2.0";
7
+ export declare const VERSION = "0.3.0";
package/dist/version.js CHANGED
@@ -4,5 +4,5 @@
4
4
  * package.json, server.json and manifest.json by scripts/release.mjs, which
5
5
  * refuses to release if they disagree.
6
6
  */
7
- export const VERSION = '0.2.0';
7
+ export const VERSION = '0.3.0';
8
8
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "atlasfetch-mcp",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "mcpName": "xyz.atlasfetch/atlasfetch",
5
- "description": "MCP server for AtlasFetch — reverse geocode a coordinate to its country, region and municipality (ISO 3166 codes), the nearest street and house number, match it against your own geofences, and route around them.",
5
+ "description": "MCP server for AtlasFetch — reverse geocode a coordinate to its country, region and municipality (ISO 3166 codes), the nearest street and house number, geocode South African addresses, match against your own geofences, and route around them.",
6
6
  "keywords": [
7
7
  "mcp",
8
8
  "modelcontextprotocol",
package/server.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
3
  "name": "xyz.atlasfetch/atlasfetch",
4
4
  "title": "AtlasFetch",
5
- "description": "Reverse geocode a coordinate to country, region, municipality, street; route around your geofences.",
6
- "version": "0.2.0",
5
+ "description": "Coordinates to places and streets, ZA addresses to points, and routes around your own geofences.",
6
+ "version": "0.3.0",
7
7
  "websiteUrl": "https://atlasfetch.xyz",
8
8
  "repository": {
9
9
  "url": "https://github.com/atlasfetch-dev/atlasfetch-mcp",
@@ -13,7 +13,7 @@
13
13
  {
14
14
  "registryType": "npm",
15
15
  "identifier": "atlasfetch-mcp",
16
- "version": "0.2.0",
16
+ "version": "0.3.0",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },