@ikeytz/maps-mcp 1.0.1 → 1.0.3
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/CHANGELOG.md +8 -0
- package/README.md +26 -8
- package/package.json +2 -7
- package/src/cli.js +21 -10
- package/src/tools-catalog.json +335 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.3
|
|
4
|
+
|
|
5
|
+
- More maps-only commands: slugs, PLZ index, hub, embed, geo_api, Lage, Geschichte, Distanz, URL-resolve, Google-Maps-Paste.
|
|
6
|
+
|
|
7
|
+
## 1.0.2
|
|
8
|
+
|
|
9
|
+
- Drop private Git remote from npm metadata.
|
|
10
|
+
|
|
3
11
|
## 1.0.1
|
|
4
12
|
|
|
5
13
|
- Public npm README (install, 7 tools, hosts, legal). Not the internal geo plan.
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ License: proprietary — LicenseRef-ikeytz-terms (see LICENSE; install & use OK;
|
|
|
10
10
|
|
|
11
11
|
npm name `@ikeytz` = npm organization (namespace). Not the MCP server scope field.
|
|
12
12
|
|
|
13
|
-
This is **not** `@ikeytz/mcp` (www,
|
|
13
|
+
This is **not** `@ikeytz/mcp` (www, prices/FAQ). This server is **only** ikeytz maps: 52 Einsatzgebiete, Punkte, Embed, Discovery.
|
|
14
14
|
|
|
15
15
|
## For AI assistants (npm / discovery)
|
|
16
16
|
|
|
@@ -38,7 +38,7 @@ Install (Mac/Linux/Windows):
|
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
40
|
npm i -g @ikeytz/maps-mcp
|
|
41
|
-
ikeytz-maps-mcp --version # z. B. 1.0.
|
|
41
|
+
ikeytz-maps-mcp --version # z. B. 1.0.3
|
|
42
42
|
ikeytz-maps-mcp update # später: npm i -g @ikeytz/maps-mcp@latest
|
|
43
43
|
```
|
|
44
44
|
|
|
@@ -97,7 +97,7 @@ Discovery (`get_discovery`): Datei 1:1. `which` z. B. `llms`, `llms-keywords`, `
|
|
|
97
97
|
ikeytz-maps-mcp # MCP stdio proxy (any MCP host) — keine Args
|
|
98
98
|
ikeytz-maps-mcp help # Usage + Flags (offline)
|
|
99
99
|
ikeytz-maps-mcp update [ver] # npm i -g @ikeytz/maps-mcp@latest
|
|
100
|
-
ikeytz-maps-mcp list #
|
|
100
|
+
ikeytz-maps-mcp list # Tools (offline) + global CLI flags
|
|
101
101
|
ikeytz-maps-mcp describe NAME # = ikeytz-maps-mcp NAME -h
|
|
102
102
|
ikeytz-maps-mcp call NAME … # oder: ikeytz-maps-mcp NAME …
|
|
103
103
|
```
|
|
@@ -127,19 +127,37 @@ ikeytz-maps-mcp call NAME … # oder: ikeytz-maps-mcp NAME …
|
|
|
127
127
|
|
|
128
128
|
Volltext Geo: `ikeytz-maps-mcp get_discovery --which llms-orte-geo`
|
|
129
129
|
|
|
130
|
-
## Alle
|
|
130
|
+
## Alle Tool-Befehle (HTTP + WebMCP + CLI, dieselbe Liste)
|
|
131
131
|
|
|
132
132
|
| Befehl | Argumente |
|
|
133
133
|
|--------|-----------|
|
|
134
134
|
| `list_service_areas` | — |
|
|
135
|
-
| `get_service_area` | `--slug` · `--plz` · `--name` |
|
|
135
|
+
| `get_service_area` | `--slug` · `--plz` · `--name` (ein Treffer; PLZ = erster) |
|
|
136
136
|
| `get_geo_office` | — |
|
|
137
137
|
| `get_contact` | — |
|
|
138
138
|
| `get_discovery` | `--which*` · `--offset` · `--limit` |
|
|
139
139
|
| `get_llms_mcp_server` | — |
|
|
140
140
|
| `get_llms_mcp_web` | — |
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
| `find_by_keyword` | `--q*` · `--limit` |
|
|
142
|
+
| `find_by_serp` | `--q` · `--path` · `--url` · `--slug` · `--limit` |
|
|
143
|
+
| `get_serp_snippet` | `--path` · `--url` · `--slug` |
|
|
144
|
+
| `find_by_plz` | `--plz*` (alle Gebiete dieser PLZ) |
|
|
145
|
+
| `find_by_geo` | `--lat` · `--lng` · `--icbm` · `--radius_km` · `--limit` |
|
|
146
|
+
| `find_by_icbm` | `--icbm` · `--lat` · `--lng` · `--radius_km` · `--limit` |
|
|
147
|
+
| `find_by_gebiet` | `--q` · `--name` · `--slug` |
|
|
148
|
+
| `find_by_area` | Alias von `find_by_gebiet` |
|
|
149
|
+
| `list_slugs` | — |
|
|
150
|
+
| `list_plz` | — |
|
|
151
|
+
| `get_hub` | — |
|
|
152
|
+
| `get_embed_map` | `--slug` · `--plz` · `--name` |
|
|
153
|
+
| `get_geo_api` | `--slug` · `--plz` · `--name` |
|
|
154
|
+
| `get_lage` | `--slug` · `--plz` · `--name` |
|
|
155
|
+
| `get_geschichte` | `--slug` · `--plz` · `--name` |
|
|
156
|
+
| `distance_to_office` | `--slug` · `--lat` · `--lng` · `--icbm` |
|
|
157
|
+
| `resolve_maps_url` | `--url` |
|
|
158
|
+
| `find_by_google_maps` | `--q` (Koordinaten-Paste) |
|
|
159
|
+
|
|
160
|
+
Präfix immer `ikeytz-maps-mcp` (z. B. `ikeytz-maps-mcp find_by_plz --plz=71638`).
|
|
143
161
|
|
|
144
162
|
## MCP hosts (any client — not only Cursor / Claude)
|
|
145
163
|
|
|
@@ -185,7 +203,7 @@ www bleibt **zweiter** Eintrag:
|
|
|
185
203
|
|
|
186
204
|
`ikeytz-maps-mcp get_service_area --slug=pattonville`, `ikeytz-maps-mcp list_service_areas`, … — ohne MCP-Host.
|
|
187
205
|
|
|
188
|
-
Alle Optionen nutzen dieselbe SSOT: `https://maps.ikeytz.com/mcp` (
|
|
206
|
+
Alle Optionen nutzen dieselbe SSOT: `https://maps.ikeytz.com/mcp` (read/link only, HTTP = WebMCP = CLI).
|
|
189
207
|
|
|
190
208
|
## Env
|
|
191
209
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ikeytz/maps-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"mcpName": "com.ikeytz/maps",
|
|
5
5
|
"description": "Official terminal CLI and MCP stdio proxy for maps.ikeytz.com. Not @ikeytz/mcp.",
|
|
6
6
|
"type": "module",
|
|
@@ -37,10 +37,5 @@
|
|
|
37
37
|
"LICENSE",
|
|
38
38
|
"README.md",
|
|
39
39
|
"CHANGELOG.md"
|
|
40
|
-
]
|
|
41
|
-
"repository": {
|
|
42
|
-
"type": "git",
|
|
43
|
-
"url": "https://vmd199268.contaboserver.net/ikeytz-geo/ikeytz-geo-stack.git",
|
|
44
|
-
"directory": "packages/maps-mcp"
|
|
45
|
-
}
|
|
40
|
+
]
|
|
46
41
|
}
|
package/src/cli.js
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { callTool, mapsMcpUrl, mapsRpc, packageVersion, showMcpCommand, toolByName, toolNames } from "./proxy.js";
|
|
3
3
|
|
|
4
|
-
const TOOL_FLAGS = [
|
|
4
|
+
const TOOL_FLAGS = [
|
|
5
|
+
"slug",
|
|
6
|
+
"plz",
|
|
7
|
+
"name",
|
|
8
|
+
"which",
|
|
9
|
+
"offset",
|
|
10
|
+
"limit",
|
|
11
|
+
"q",
|
|
12
|
+
"path",
|
|
13
|
+
"url",
|
|
14
|
+
"icbm",
|
|
15
|
+
"lat",
|
|
16
|
+
"lng",
|
|
17
|
+
"radius_km",
|
|
18
|
+
];
|
|
19
|
+
const NUMBER_FLAGS = new Set(["offset", "limit", "lat", "lng", "radius_km"]);
|
|
5
20
|
|
|
6
21
|
const HELP = `ikeytz-maps-mcp ${packageVersion()}
|
|
7
22
|
Remote: ${mapsMcpUrl()}
|
|
@@ -11,7 +26,7 @@ Ohne Args stdio-Proxy (Cursor/Claude)
|
|
|
11
26
|
help | --help diese Hilfe
|
|
12
27
|
--version Version
|
|
13
28
|
update npm i -g @ikeytz/maps-mcp@latest
|
|
14
|
-
list
|
|
29
|
+
list ${toolNames().length} Tools (offline)
|
|
15
30
|
describe <tool> Schema (offline)
|
|
16
31
|
call <tool> … wie <tool> …
|
|
17
32
|
<tool> Payload von maps /mcp
|
|
@@ -21,13 +36,9 @@ call <tool> … wie <tool> …
|
|
|
21
36
|
<tool> --json '{…}'
|
|
22
37
|
|
|
23
38
|
Tools:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
get_contact
|
|
28
|
-
get_discovery --which=llms|llms-orte-geo|ai-plugin|…
|
|
29
|
-
get_llms_mcp_server
|
|
30
|
-
get_llms_mcp_web
|
|
39
|
+
${toolNames()
|
|
40
|
+
.map((n) => ` ${n}`)
|
|
41
|
+
.join("\n")}
|
|
31
42
|
`;
|
|
32
43
|
|
|
33
44
|
function parseArgv(argv) {
|
|
@@ -62,7 +73,7 @@ function argsFromFlags(flags) {
|
|
|
62
73
|
if (flags.json) Object.assign(args, JSON.parse(flags.json));
|
|
63
74
|
for (const key of TOOL_FLAGS) {
|
|
64
75
|
if (flags[key] != null && flags[key] !== true) {
|
|
65
|
-
args[key] = key
|
|
76
|
+
args[key] = NUMBER_FLAGS.has(key) ? Number(flags[key]) : String(flags[key]);
|
|
66
77
|
}
|
|
67
78
|
}
|
|
68
79
|
return args;
|
package/src/tools-catalog.json
CHANGED
|
@@ -68,7 +68,8 @@
|
|
|
68
68
|
"ai-txt",
|
|
69
69
|
"ai-plugin",
|
|
70
70
|
"answer-engine",
|
|
71
|
-
"ai-catalog"
|
|
71
|
+
"ai-catalog",
|
|
72
|
+
"agent-skills"
|
|
72
73
|
]
|
|
73
74
|
},
|
|
74
75
|
"offset": {
|
|
@@ -98,6 +99,339 @@
|
|
|
98
99
|
"type": "object",
|
|
99
100
|
"properties": {}
|
|
100
101
|
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "find_by_keyword",
|
|
105
|
+
"description": "Suche in maps llms-keywords.txt (Keyword → maps-URL). Nicht www.",
|
|
106
|
+
"inputSchema": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"properties": {
|
|
109
|
+
"q": {
|
|
110
|
+
"type": "string"
|
|
111
|
+
},
|
|
112
|
+
"limit": {
|
|
113
|
+
"type": "integer"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"required": [
|
|
117
|
+
"q"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "find_by_serp",
|
|
123
|
+
"description": "Suche in maps llms-serp.txt (Title/H1/Description/URL).",
|
|
124
|
+
"inputSchema": {
|
|
125
|
+
"type": "object",
|
|
126
|
+
"properties": {
|
|
127
|
+
"q": {
|
|
128
|
+
"type": "string"
|
|
129
|
+
},
|
|
130
|
+
"path": {
|
|
131
|
+
"type": "string"
|
|
132
|
+
},
|
|
133
|
+
"url": {
|
|
134
|
+
"type": "string"
|
|
135
|
+
},
|
|
136
|
+
"slug": {
|
|
137
|
+
"type": "string"
|
|
138
|
+
},
|
|
139
|
+
"limit": {
|
|
140
|
+
"type": "integer"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "get_serp_snippet",
|
|
147
|
+
"description": "Ein SERP-Block für path, url oder slug (maps llms-serp.txt).",
|
|
148
|
+
"inputSchema": {
|
|
149
|
+
"type": "object",
|
|
150
|
+
"properties": {
|
|
151
|
+
"path": {
|
|
152
|
+
"type": "string"
|
|
153
|
+
},
|
|
154
|
+
"url": {
|
|
155
|
+
"type": "string"
|
|
156
|
+
},
|
|
157
|
+
"slug": {
|
|
158
|
+
"type": "string"
|
|
159
|
+
},
|
|
160
|
+
"q": {
|
|
161
|
+
"type": "string"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "find_by_plz",
|
|
168
|
+
"description": "Alle Einsatzgebiete mit dieser PLZ (nicht nur der erste Treffer).",
|
|
169
|
+
"inputSchema": {
|
|
170
|
+
"type": "object",
|
|
171
|
+
"properties": {
|
|
172
|
+
"plz": {
|
|
173
|
+
"type": "string"
|
|
174
|
+
},
|
|
175
|
+
"q": {
|
|
176
|
+
"type": "string"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"required": [
|
|
180
|
+
"plz"
|
|
181
|
+
]
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "find_by_geo",
|
|
186
|
+
"description": "Gebiete nach lat/lng, optional radius_km, sonst die nächsten.",
|
|
187
|
+
"inputSchema": {
|
|
188
|
+
"type": "object",
|
|
189
|
+
"properties": {
|
|
190
|
+
"lat": {
|
|
191
|
+
"type": "number"
|
|
192
|
+
},
|
|
193
|
+
"lng": {
|
|
194
|
+
"type": "number"
|
|
195
|
+
},
|
|
196
|
+
"icbm": {
|
|
197
|
+
"type": "string"
|
|
198
|
+
},
|
|
199
|
+
"radius_km": {
|
|
200
|
+
"type": "number"
|
|
201
|
+
},
|
|
202
|
+
"limit": {
|
|
203
|
+
"type": "integer"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"name": "find_by_icbm",
|
|
210
|
+
"description": "Gebiete nach ICBM (lat, lng) — nächste Punkte / optional radius_km.",
|
|
211
|
+
"inputSchema": {
|
|
212
|
+
"type": "object",
|
|
213
|
+
"properties": {
|
|
214
|
+
"icbm": {
|
|
215
|
+
"type": "string"
|
|
216
|
+
},
|
|
217
|
+
"lat": {
|
|
218
|
+
"type": "number"
|
|
219
|
+
},
|
|
220
|
+
"lng": {
|
|
221
|
+
"type": "number"
|
|
222
|
+
},
|
|
223
|
+
"radius_km": {
|
|
224
|
+
"type": "number"
|
|
225
|
+
},
|
|
226
|
+
"limit": {
|
|
227
|
+
"type": "integer"
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"name": "find_by_gebiet",
|
|
234
|
+
"description": "Gebiete nach Name oder slug (mehrere Treffer, Umlaut ok).",
|
|
235
|
+
"inputSchema": {
|
|
236
|
+
"type": "object",
|
|
237
|
+
"properties": {
|
|
238
|
+
"q": {
|
|
239
|
+
"type": "string"
|
|
240
|
+
},
|
|
241
|
+
"name": {
|
|
242
|
+
"type": "string"
|
|
243
|
+
},
|
|
244
|
+
"slug": {
|
|
245
|
+
"type": "string"
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "find_by_area",
|
|
252
|
+
"description": "Alias von find_by_gebiet (Name/Slug, mehrere Treffer).",
|
|
253
|
+
"inputSchema": {
|
|
254
|
+
"type": "object",
|
|
255
|
+
"properties": {
|
|
256
|
+
"q": {
|
|
257
|
+
"type": "string"
|
|
258
|
+
},
|
|
259
|
+
"name": {
|
|
260
|
+
"type": "string"
|
|
261
|
+
},
|
|
262
|
+
"slug": {
|
|
263
|
+
"type": "string"
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"name": "list_slugs",
|
|
270
|
+
"description": "Alle 52 maps-Slugs (ikeytz Einsatzgebiete).",
|
|
271
|
+
"inputSchema": {
|
|
272
|
+
"type": "object",
|
|
273
|
+
"properties": {}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"name": "list_plz",
|
|
278
|
+
"description": "PLZ → welche maps-Gebiete (Mehrfach-PLZ sichtbar).",
|
|
279
|
+
"inputSchema": {
|
|
280
|
+
"type": "object",
|
|
281
|
+
"properties": {}
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"name": "get_hub",
|
|
286
|
+
"description": "Karten-Hub maps.ikeytz.com/ — 52 Gebiete, keine Visitenkarte.",
|
|
287
|
+
"inputSchema": {
|
|
288
|
+
"type": "object",
|
|
289
|
+
"properties": {}
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"name": "get_embed_map",
|
|
294
|
+
"description": "Kanonische Karten-URL https://maps.ikeytz.com/{slug}.",
|
|
295
|
+
"inputSchema": {
|
|
296
|
+
"type": "object",
|
|
297
|
+
"properties": {
|
|
298
|
+
"slug": {
|
|
299
|
+
"type": "string"
|
|
300
|
+
},
|
|
301
|
+
"plz": {
|
|
302
|
+
"type": "string"
|
|
303
|
+
},
|
|
304
|
+
"name": {
|
|
305
|
+
"type": "string"
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"name": "get_geo_api",
|
|
312
|
+
"description": "Public Embed-JSON URL für ein Gebiet (Punkt + Grenze, nicht geo-Cockpit).",
|
|
313
|
+
"inputSchema": {
|
|
314
|
+
"type": "object",
|
|
315
|
+
"properties": {
|
|
316
|
+
"slug": {
|
|
317
|
+
"type": "string"
|
|
318
|
+
},
|
|
319
|
+
"plz": {
|
|
320
|
+
"type": "string"
|
|
321
|
+
},
|
|
322
|
+
"name": {
|
|
323
|
+
"type": "string"
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"name": "get_lage",
|
|
330
|
+
"description": "Lage-Text eines Einsatzgebiets (Karte / Visitenkarte).",
|
|
331
|
+
"inputSchema": {
|
|
332
|
+
"type": "object",
|
|
333
|
+
"properties": {
|
|
334
|
+
"slug": {
|
|
335
|
+
"type": "string"
|
|
336
|
+
},
|
|
337
|
+
"plz": {
|
|
338
|
+
"type": "string"
|
|
339
|
+
},
|
|
340
|
+
"name": {
|
|
341
|
+
"type": "string"
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"name": "get_geschichte",
|
|
348
|
+
"description": "Geschichte-Text eines Einsatzgebiets (Karte / Visitenkarte).",
|
|
349
|
+
"inputSchema": {
|
|
350
|
+
"type": "object",
|
|
351
|
+
"properties": {
|
|
352
|
+
"slug": {
|
|
353
|
+
"type": "string"
|
|
354
|
+
},
|
|
355
|
+
"plz": {
|
|
356
|
+
"type": "string"
|
|
357
|
+
},
|
|
358
|
+
"name": {
|
|
359
|
+
"type": "string"
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "distance_to_office",
|
|
366
|
+
"description": "Luftlinie Gebiet oder Koordinate → Gewerbesitz (kein Walk-in).",
|
|
367
|
+
"inputSchema": {
|
|
368
|
+
"type": "object",
|
|
369
|
+
"properties": {
|
|
370
|
+
"slug": {
|
|
371
|
+
"type": "string"
|
|
372
|
+
},
|
|
373
|
+
"plz": {
|
|
374
|
+
"type": "string"
|
|
375
|
+
},
|
|
376
|
+
"name": {
|
|
377
|
+
"type": "string"
|
|
378
|
+
},
|
|
379
|
+
"lat": {
|
|
380
|
+
"type": "number"
|
|
381
|
+
},
|
|
382
|
+
"lng": {
|
|
383
|
+
"type": "number"
|
|
384
|
+
},
|
|
385
|
+
"icbm": {
|
|
386
|
+
"type": "string"
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"name": "resolve_maps_url",
|
|
393
|
+
"description": "maps.ikeytz.com-URL → Hub oder Gebiet.",
|
|
394
|
+
"inputSchema": {
|
|
395
|
+
"type": "object",
|
|
396
|
+
"properties": {
|
|
397
|
+
"url": {
|
|
398
|
+
"type": "string"
|
|
399
|
+
},
|
|
400
|
+
"path": {
|
|
401
|
+
"type": "string"
|
|
402
|
+
},
|
|
403
|
+
"q": {
|
|
404
|
+
"type": "string"
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"name": "find_by_google_maps",
|
|
411
|
+
"description": "Koordinaten-Paste (Google Maps / ICBM) → nächste ikeytz-Gebiete.",
|
|
412
|
+
"inputSchema": {
|
|
413
|
+
"type": "object",
|
|
414
|
+
"properties": {
|
|
415
|
+
"q": {
|
|
416
|
+
"type": "string"
|
|
417
|
+
},
|
|
418
|
+
"icbm": {
|
|
419
|
+
"type": "string"
|
|
420
|
+
},
|
|
421
|
+
"lat": {
|
|
422
|
+
"type": "number"
|
|
423
|
+
},
|
|
424
|
+
"lng": {
|
|
425
|
+
"type": "number"
|
|
426
|
+
},
|
|
427
|
+
"radius_km": {
|
|
428
|
+
"type": "number"
|
|
429
|
+
},
|
|
430
|
+
"limit": {
|
|
431
|
+
"type": "integer"
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
101
435
|
}
|
|
102
436
|
]
|
|
103
437
|
}
|