@h-ear/mcp-server 1.1.0-dev.202604280051 → 1.1.0-dev.202604290216
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/dist/schemas/index.d.ts +8 -125
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +14 -258
- package/dist/schemas/index.js.map +1 -1
- package/package.json +1 -1
package/dist/schemas/index.d.ts
CHANGED
|
@@ -1,135 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* H-ear MCP tool schemas — JSON Schema derivation from the shared Zod source.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* (api-version 2025-03-01-preview) auto-generates tool schemas from
|
|
8
|
-
* operations but DROPS query/header parameters
|
|
4
|
+
* The Zod shapes and descriptions live in @h-ear/core (single source of truth
|
|
5
|
+
* shared with @h-ear/openclaw). This file ONLY adds the wire-format JSON
|
|
6
|
+
* Schema derivation that mcp-server needs for the APIM REST-as-MCP passthrough
|
|
7
|
+
* (api-version 2025-03-01-preview), which auto-generates tool schemas from
|
|
8
|
+
* APIM operations but DROPS query/header parameters — so filters like
|
|
9
9
|
* `listClasses(category: "Animal")` silently vanish on the https transport
|
|
10
10
|
* unless we patch explicit inputSchemas into `mcpTools[]`.
|
|
11
11
|
*
|
|
12
|
-
* Flow:
|
|
12
|
+
* Flow: @h-ear/core SHAPE → zod-to-json-schema → toolSchemas →
|
|
13
13
|
* consumed by stdio tool files AND by scripts/userMcp.root-status.mjs
|
|
14
14
|
* when PATCHing APIM.
|
|
15
15
|
*/
|
|
16
|
-
|
|
17
|
-
export declare const HEALTH_CHECK_SHAPE: {};
|
|
18
|
-
export declare const USAGE_SHAPE: {};
|
|
19
|
-
export declare const LIST_WEBHOOKS_SHAPE: {};
|
|
20
|
-
export declare const LIST_CLASSES_SHAPE: {
|
|
21
|
-
taxonomy: z.ZodOptional<z.ZodEnum<["audioset-yamnet-521", "audioset-panns-527", "species"]>>;
|
|
22
|
-
category: z.ZodOptional<z.ZodString>;
|
|
23
|
-
limit: z.ZodOptional<z.ZodNumber>;
|
|
24
|
-
offset: z.ZodOptional<z.ZodNumber>;
|
|
25
|
-
};
|
|
26
|
-
export declare const LIST_JOBS_SHAPE: {
|
|
27
|
-
limit: z.ZodDefault<z.ZodNumber>;
|
|
28
|
-
offset: z.ZodDefault<z.ZodNumber>;
|
|
29
|
-
status: z.ZodOptional<z.ZodEnum<["processing", "completed", "failed"]>>;
|
|
30
|
-
batchId: z.ZodOptional<z.ZodString>;
|
|
31
|
-
startDate: z.ZodOptional<z.ZodString>;
|
|
32
|
-
endDate: z.ZodOptional<z.ZodString>;
|
|
33
|
-
};
|
|
34
|
-
export declare const GET_JOB_SHAPE: {
|
|
35
|
-
jobId: z.ZodString;
|
|
36
|
-
};
|
|
37
|
-
export declare const GET_JOB_EVENTS_SHAPE: {
|
|
38
|
-
jobId: z.ZodString;
|
|
39
|
-
offset: z.ZodDefault<z.ZodNumber>;
|
|
40
|
-
taxonomy: z.ZodOptional<z.ZodString>;
|
|
41
|
-
minConfidence: z.ZodOptional<z.ZodNumber>;
|
|
42
|
-
category: z.ZodOptional<z.ZodString>;
|
|
43
|
-
tier2: z.ZodOptional<z.ZodString>;
|
|
44
|
-
tier3: z.ZodOptional<z.ZodString>;
|
|
45
|
-
startTime: z.ZodOptional<z.ZodNumber>;
|
|
46
|
-
endTime: z.ZodOptional<z.ZodNumber>;
|
|
47
|
-
sourceId: z.ZodOptional<z.ZodString>;
|
|
48
|
-
};
|
|
49
|
-
export declare const GET_JOB_AUDIO_SHAPE: {
|
|
50
|
-
jobId: z.ZodString;
|
|
51
|
-
};
|
|
52
|
-
export declare const GET_JOB_WAVEFORM_SHAPE: {
|
|
53
|
-
jobId: z.ZodString;
|
|
54
|
-
zoom: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<256>, z.ZodLiteral<1024>, z.ZodLiteral<4096>]>>;
|
|
55
|
-
};
|
|
56
|
-
export declare const GET_UPLOAD_STATUS_SHAPE: {
|
|
57
|
-
uploadSessionId: z.ZodString;
|
|
58
|
-
};
|
|
59
|
-
export declare const CLASSIFY_AUDIO_SHAPE: {
|
|
60
|
-
filePath: z.ZodOptional<z.ZodString>;
|
|
61
|
-
url: z.ZodOptional<z.ZodString>;
|
|
62
|
-
fileName: z.ZodOptional<z.ZodString>;
|
|
63
|
-
threshold: z.ZodDefault<z.ZodNumber>;
|
|
64
|
-
filterMinDurationSeconds: z.ZodOptional<z.ZodNumber>;
|
|
65
|
-
waitForResult: z.ZodDefault<z.ZodAny>;
|
|
66
|
-
callbackUrl: z.ZodOptional<z.ZodString>;
|
|
67
|
-
callbackSecret: z.ZodOptional<z.ZodString>;
|
|
68
|
-
latitude: z.ZodOptional<z.ZodNumber>;
|
|
69
|
-
longitude: z.ZodOptional<z.ZodNumber>;
|
|
70
|
-
};
|
|
71
|
-
export declare const CLASSIFY_BATCH_SHAPE: {
|
|
72
|
-
filePaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
73
|
-
files: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
74
|
-
url: z.ZodString;
|
|
75
|
-
id: z.ZodOptional<z.ZodString>;
|
|
76
|
-
fileName: z.ZodOptional<z.ZodString>;
|
|
77
|
-
}, "strip", z.ZodTypeAny, {
|
|
78
|
-
url: string;
|
|
79
|
-
id?: string | undefined;
|
|
80
|
-
fileName?: string | undefined;
|
|
81
|
-
}, {
|
|
82
|
-
url: string;
|
|
83
|
-
id?: string | undefined;
|
|
84
|
-
fileName?: string | undefined;
|
|
85
|
-
}>, "many">>;
|
|
86
|
-
callbackUrl: z.ZodOptional<z.ZodString>;
|
|
87
|
-
callbackSecret: z.ZodOptional<z.ZodString>;
|
|
88
|
-
threshold: z.ZodDefault<z.ZodNumber>;
|
|
89
|
-
filterMinDurationSeconds: z.ZodOptional<z.ZodNumber>;
|
|
90
|
-
latitude: z.ZodOptional<z.ZodNumber>;
|
|
91
|
-
longitude: z.ZodOptional<z.ZodNumber>;
|
|
92
|
-
};
|
|
93
|
-
export declare const CREATE_WEBHOOK_SHAPE: {
|
|
94
|
-
url: z.ZodString;
|
|
95
|
-
events: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
96
|
-
description: z.ZodOptional<z.ZodString>;
|
|
97
|
-
taxonomyFilter: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
98
|
-
notificationTierDepth: z.ZodOptional<z.ZodNumber>;
|
|
99
|
-
notificationTierValues: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
100
|
-
};
|
|
101
|
-
export declare const UPDATE_WEBHOOK_SHAPE: {
|
|
102
|
-
webhookId: z.ZodString;
|
|
103
|
-
url: z.ZodOptional<z.ZodString>;
|
|
104
|
-
events: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
105
|
-
status: z.ZodOptional<z.ZodEnum<["active", "paused"]>>;
|
|
106
|
-
description: z.ZodOptional<z.ZodString>;
|
|
107
|
-
taxonomyFilter: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
|
108
|
-
notificationTierDepth: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
109
|
-
notificationTierValues: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
|
110
|
-
};
|
|
111
|
-
export declare const GET_WEBHOOK_SHAPE: {
|
|
112
|
-
webhookId: z.ZodString;
|
|
113
|
-
};
|
|
114
|
-
export declare const DELETE_WEBHOOK_SHAPE: {
|
|
115
|
-
webhookId: z.ZodString;
|
|
116
|
-
};
|
|
117
|
-
export declare const PING_WEBHOOK_SHAPE: {
|
|
118
|
-
webhookId: z.ZodString;
|
|
119
|
-
};
|
|
120
|
-
export declare const LIST_WEBHOOK_DELIVERIES_SHAPE: {
|
|
121
|
-
webhookId: z.ZodString;
|
|
122
|
-
limit: z.ZodDefault<z.ZodNumber>;
|
|
123
|
-
};
|
|
124
|
-
export declare const GET_JOB_REPORT_SHAPE: {
|
|
125
|
-
jobId: z.ZodString;
|
|
126
|
-
};
|
|
127
|
-
export declare const GET_JOB_RAW_ANALYSIS_V1_SHAPE: {
|
|
128
|
-
jobId: z.ZodString;
|
|
129
|
-
yearMonth: z.ZodOptional<z.ZodString>;
|
|
130
|
-
};
|
|
131
|
-
export declare const toolDescriptions: Record<string, string>;
|
|
132
|
-
export declare const toolShapes: Readonly<Record<string, ZodRawShape>>;
|
|
16
|
+
export { toolShapes, toolDescriptions, toolNames, HEALTH_CHECK_SHAPE, USAGE_SHAPE, LIST_WEBHOOKS_SHAPE, LIST_CLASSES_SHAPE, LIST_JOBS_SHAPE, GET_JOB_SHAPE, GET_JOB_EVENTS_SHAPE, GET_JOB_AUDIO_SHAPE, GET_JOB_WAVEFORM_SHAPE, GET_UPLOAD_STATUS_SHAPE, CLASSIFY_AUDIO_SHAPE, CLASSIFY_BATCH_SHAPE, CREATE_WEBHOOK_SHAPE, UPDATE_WEBHOOK_SHAPE, GET_WEBHOOK_SHAPE, DELETE_WEBHOOK_SHAPE, PING_WEBHOOK_SHAPE, LIST_WEBHOOK_DELIVERIES_SHAPE, GET_JOB_REPORT_SHAPE, GET_JOB_RAW_ANALYSIS_V1_SHAPE, } from '@h-ear/core';
|
|
133
17
|
export declare const toolSchemas: Readonly<Record<string, unknown>>;
|
|
134
|
-
export declare const toolNames: readonly string[];
|
|
135
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,EACH,UAAU,EAAE,gBAAgB,EAAE,SAAS,EACvC,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EACxE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EACzE,sBAAsB,EAAE,uBAAuB,EAAE,oBAAoB,EACrE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAChE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAC3D,6BAA6B,EAAE,oBAAoB,EAAE,6BAA6B,GACrF,MAAM,aAAa,CAAC;AAcrB,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzD,CAAC"}
|
package/dist/schemas/index.js
CHANGED
|
@@ -1,268 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* H-ear MCP tool schemas — JSON Schema derivation from the shared Zod source.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* (api-version 2025-03-01-preview) auto-generates tool schemas from
|
|
8
|
-
* operations but DROPS query/header parameters
|
|
4
|
+
* The Zod shapes and descriptions live in @h-ear/core (single source of truth
|
|
5
|
+
* shared with @h-ear/openclaw). This file ONLY adds the wire-format JSON
|
|
6
|
+
* Schema derivation that mcp-server needs for the APIM REST-as-MCP passthrough
|
|
7
|
+
* (api-version 2025-03-01-preview), which auto-generates tool schemas from
|
|
8
|
+
* APIM operations but DROPS query/header parameters — so filters like
|
|
9
9
|
* `listClasses(category: "Animal")` silently vanish on the https transport
|
|
10
10
|
* unless we patch explicit inputSchemas into `mcpTools[]`.
|
|
11
11
|
*
|
|
12
|
-
* Flow:
|
|
12
|
+
* Flow: @h-ear/core SHAPE → zod-to-json-schema → toolSchemas →
|
|
13
13
|
* consumed by stdio tool files AND by scripts/userMcp.root-status.mjs
|
|
14
14
|
* when PATCHing APIM.
|
|
15
15
|
*/
|
|
16
16
|
import { z } from 'zod';
|
|
17
17
|
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
18
|
-
import {
|
|
19
|
-
// ───
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export
|
|
23
|
-
|
|
24
|
-
taxonomy: z.enum(['audioset-yamnet-521', 'audioset-panns-527', 'species']).optional()
|
|
25
|
-
.describe('Taxonomy to query. Defaults to audioset-yamnet-521.'),
|
|
26
|
-
category: z.string().optional()
|
|
27
|
-
.describe('Filter by category name (case-insensitive partial match). E.g. "Animal", "Human sounds", "Music".'),
|
|
28
|
-
limit: z.number().int().positive().optional()
|
|
29
|
-
.describe('Max classes to return (pagination).'),
|
|
30
|
-
offset: z.number().int().min(0).optional()
|
|
31
|
-
.describe('Number of classes to skip (pagination).'),
|
|
32
|
-
};
|
|
33
|
-
export const LIST_JOBS_SHAPE = {
|
|
34
|
-
limit: z.number().int().positive().max(100).default(10)
|
|
35
|
-
.describe('Max jobs to return (1-100, default 10).'),
|
|
36
|
-
offset: z.number().int().min(0).default(0)
|
|
37
|
-
.describe('Number of jobs to skip (pagination).'),
|
|
38
|
-
status: z.enum(['processing', 'completed', 'failed']).optional()
|
|
39
|
-
.describe('Filter by job status.'),
|
|
40
|
-
batchId: z.string().optional()
|
|
41
|
-
.describe('Filter by batch ID (from classifyBatch).'),
|
|
42
|
-
startDate: z.string().optional()
|
|
43
|
-
.describe('ISO8601 date range start — jobs created on or after this date (e.g. "2026-01-01T00:00:00Z").'),
|
|
44
|
-
endDate: z.string().optional()
|
|
45
|
-
.describe('ISO8601 date range end — jobs created on or before this date (e.g. "2026-04-04T23:59:59Z").'),
|
|
46
|
-
};
|
|
47
|
-
export const GET_JOB_SHAPE = {
|
|
48
|
-
jobId: z.string().min(1)
|
|
49
|
-
.describe('The job ID returned from classifyAudio or classifyBatch.'),
|
|
50
|
-
};
|
|
51
|
-
export const GET_JOB_EVENTS_SHAPE = {
|
|
52
|
-
jobId: z.string().min(1)
|
|
53
|
-
.describe('Job ID from classifyAudio, classifyBatch, or listJobs.'),
|
|
54
|
-
offset: z.number().int().min(0).default(0)
|
|
55
|
-
.describe('Pagination offset. Each call returns up to 100 events; pass offset=100 for the next page, etc. Walk until hasMore is false.'),
|
|
56
|
-
taxonomy: z.string().optional()
|
|
57
|
-
.describe('Filter by taxonomy: audioset-yamnet-521, audioset-panns-527, or species.'),
|
|
58
|
-
minConfidence: z.number().min(0).max(1).optional()
|
|
59
|
-
.describe('Minimum confidence threshold (0.0–1.0). e.g. 0.7 returns only events ≥70% confidence.'),
|
|
60
|
-
category: z.string().optional()
|
|
61
|
-
.describe('Filter by tier1 category (e.g. "Animal", "Music", "Vehicle", "Nature").'),
|
|
62
|
-
tier2: z.string().optional()
|
|
63
|
-
.describe('Filter by tier2 subcategory (e.g. "Domestic animals, pets", "Wild animals"). Narrows within a tier1 category.'),
|
|
64
|
-
tier3: z.string().optional()
|
|
65
|
-
.describe('Filter by tier3 class (e.g. "Dog", "Cat", "Bird"). Finest supported filter depth — tiers 4-5 exist in the taxonomy but are not filterable.'),
|
|
66
|
-
startTime: z.number().min(0).optional()
|
|
67
|
-
.describe('Only return events overlapping at or after this time in seconds (window is inclusive overlap, not strict containment).'),
|
|
68
|
-
endTime: z.number().min(0).optional()
|
|
69
|
-
.describe('Only return events overlapping at or before this time in seconds (window is inclusive overlap, not strict containment).'),
|
|
70
|
-
sourceId: z.string().optional()
|
|
71
|
-
.describe('Filter by noise source cluster ID.'),
|
|
72
|
-
};
|
|
73
|
-
export const GET_JOB_AUDIO_SHAPE = {
|
|
74
|
-
jobId: z.string().min(1)
|
|
75
|
-
.describe('Job ID from classifyAudio, classifyBatch, or listJobs.'),
|
|
76
|
-
};
|
|
77
|
-
export const GET_JOB_WAVEFORM_SHAPE = {
|
|
78
|
-
jobId: z.string().min(1)
|
|
79
|
-
.describe('Job ID from classifyAudio, classifyBatch, or listJobs.'),
|
|
80
|
-
zoom: z.union([z.literal(256), z.literal(1024), z.literal(4096)]).default(1024)
|
|
81
|
-
.describe('Waveform resolution in samples-per-pixel: 256 (high detail), 1024 (default), 4096 (overview).'),
|
|
82
|
-
};
|
|
83
|
-
export const GET_UPLOAD_STATUS_SHAPE = {
|
|
84
|
-
uploadSessionId: z.string().min(1)
|
|
85
|
-
.describe('The uploadSessionId returned by classifyAudio for large files.'),
|
|
86
|
-
};
|
|
87
|
-
export const CLASSIFY_AUDIO_SHAPE = {
|
|
88
|
-
filePath: z.string().optional()
|
|
89
|
-
.describe('Path to a local audio file (Desktop/CLI only — requires local filesystem access). The server reads and encodes it automatically. Large files are split into chunks. Use url for web/mobile clients.'),
|
|
90
|
-
url: z.string().url().optional()
|
|
91
|
-
.describe('Public URL (or SAS URL) to an audio file. The server fetches bytes server-side via Azure Storage `appendBlockFromURL` (URL-marshal) — no bytes pass through the API host or the MCP client. Use this from web/mobile/sandboxed clients with no filesystem; also valid from stdio.'),
|
|
92
|
-
fileName: z.string().optional()
|
|
93
|
-
.describe('**When using `url`, pass `fileName`** (URL basename, e.g. "morning-0400.mp3") so the snippet/job persists a meaningful name in the UI. Otherwise it defaults to "api-upload.mp3". With `filePath`, it is auto-derived from the basename and may be omitted.'),
|
|
94
|
-
threshold: z.number().min(0).max(1).default(0.3)
|
|
95
|
-
.describe('Confidence threshold (0.0-1.0). Only classes above this score are returned.'),
|
|
96
|
-
filterMinDurationSeconds: z.number().min(0.1).max(595).optional()
|
|
97
|
-
.describe('Minimum event duration filter in seconds.'),
|
|
98
|
-
waitForResult: z.any().default(false)
|
|
99
|
-
.describe('If true, polls until classification completes (up to 30s — strict cap to stay within the MCP tool wall budget). On timeout returns the AsyncAccepted shape ({requestId, status:"processing", pollUrl}); call getJob(requestId) externally to keep watching. For jobs likely to take longer than 30s, use callbackUrl for webhook delivery instead. Default false — returns immediately with requestId.'),
|
|
100
|
-
callbackUrl: z.string().url().optional()
|
|
101
|
-
.describe('Webhook URL (HTTPS) for async result delivery. When provided, the server POSTs classification results to this URL on completion — no polling needed. Use getJob to check status manually.'),
|
|
102
|
-
callbackSecret: z.string().optional()
|
|
103
|
-
.describe('HMAC-SHA256 secret for webhook signature verification. Only used with callbackUrl.'),
|
|
104
|
-
latitude: z.number().min(-90).max(90).optional()
|
|
105
|
-
.describe('GPS latitude (decimal degrees, -90 to 90). Tag the recording location. Must be paired with longitude.'),
|
|
106
|
-
longitude: z.number().min(-180).max(180).optional()
|
|
107
|
-
.describe('GPS longitude (decimal degrees, -180 to 180). Tag the recording location. Must be paired with latitude.'),
|
|
108
|
-
};
|
|
109
|
-
export const CLASSIFY_BATCH_SHAPE = {
|
|
110
|
-
filePaths: z.array(z.string()).min(1).max(HEAR_API.MAX_BATCH_FILES).optional()
|
|
111
|
-
.describe('Array of local audio file paths to classify (Desktop/CLI only — requires local filesystem access). Use files with URLs for web/mobile clients.'),
|
|
112
|
-
files: z.array(z.object({
|
|
113
|
-
url: z.string().url().describe('Public URL to audio file.'),
|
|
114
|
-
id: z.string().optional().describe('Client-provided tracking ID.'),
|
|
115
|
-
fileName: z.string().optional().describe('**Pass `fileName`** (URL basename, e.g. "morning-0400.mp3") so the snippet/job persists a meaningful name in the UI. Otherwise it defaults to "api-upload.mp3".'),
|
|
116
|
-
})).min(1).max(HEAR_API.MAX_BATCH_FILES).optional()
|
|
117
|
-
.describe('Array of public audio URLs (alternative to filePaths). Requires callbackUrl.'),
|
|
118
|
-
callbackUrl: z.string().url().optional()
|
|
119
|
-
.describe('Webhook URL (HTTPS) for async result delivery. Required for URL-based files. Optional for local files — when provided, skips polling and delivers results via webhook instead.'),
|
|
120
|
-
callbackSecret: z.string().optional()
|
|
121
|
-
.describe('HMAC-SHA256 secret for webhook signature verification.'),
|
|
122
|
-
threshold: z.number().min(0).max(1).default(0.3)
|
|
123
|
-
.describe('Confidence threshold for all files.'),
|
|
124
|
-
filterMinDurationSeconds: z.number().min(0.1).max(595).optional()
|
|
125
|
-
.describe('Minimum event duration filter in seconds.'),
|
|
126
|
-
latitude: z.number().min(-90).max(90).optional()
|
|
127
|
-
.describe('GPS latitude (decimal degrees, -90 to 90). Applied to all files in the batch. Must be paired with longitude.'),
|
|
128
|
-
longitude: z.number().min(-180).max(180).optional()
|
|
129
|
-
.describe('GPS longitude (decimal degrees, -180 to 180). Applied to all files in the batch. Must be paired with latitude.'),
|
|
130
|
-
};
|
|
131
|
-
export const CREATE_WEBHOOK_SHAPE = {
|
|
132
|
-
url: z.string().url()
|
|
133
|
-
.describe('HTTPS webhook URL where events will be POSTed.'),
|
|
134
|
-
events: z.array(z.string()).optional()
|
|
135
|
-
.describe('Event types to subscribe to (e.g. job.completed, job.failed). Defaults to all events if omitted.'),
|
|
136
|
-
description: z.string().max(200).optional()
|
|
137
|
-
.describe('Human-readable description for this webhook.'),
|
|
138
|
-
taxonomyFilter: z.array(z.string()).optional()
|
|
139
|
-
.describe('Scope notifications to specific taxonomies (e.g. audioset-yamnet-521, species).'),
|
|
140
|
-
notificationTierDepth: z.number().int().min(1).max(3).optional()
|
|
141
|
-
.describe('AudioSet tier depth for filtering: 1=coarse (Animal), 2=mid (Domestic animals, pets), 3=fine (Dog). Max depth is 3 — the taxonomy has tiers 4-5 but webhook filtering does not extend beyond tier 3. Must pair with notificationTierValues.'),
|
|
142
|
-
notificationTierValues: z.array(z.string()).optional()
|
|
143
|
-
.describe('Tier labels to match at the specified depth (e.g. ["Animal", "Music"]). Must pair with notificationTierDepth.'),
|
|
144
|
-
};
|
|
145
|
-
export const UPDATE_WEBHOOK_SHAPE = {
|
|
146
|
-
webhookId: z.string().min(1)
|
|
147
|
-
.describe('The webhook ID to update.'),
|
|
148
|
-
url: z.string().url().optional()
|
|
149
|
-
.describe('New HTTPS webhook URL.'),
|
|
150
|
-
events: z.array(z.string()).optional()
|
|
151
|
-
.describe('New event types to subscribe to.'),
|
|
152
|
-
status: z.enum(['active', 'paused']).optional()
|
|
153
|
-
.describe('Set to "paused" to disable or "active" to re-enable.'),
|
|
154
|
-
description: z.string().max(200).optional()
|
|
155
|
-
.describe('Updated description.'),
|
|
156
|
-
taxonomyFilter: z.array(z.string()).nullable().optional()
|
|
157
|
-
.describe('Scope to taxonomies. Pass null to clear filter.'),
|
|
158
|
-
notificationTierDepth: z.number().int().min(1).max(3).nullable().optional()
|
|
159
|
-
.describe('AudioSet tier depth (1=coarse, 2=mid, 3=fine). Max depth is 3 — tiers 4-5 exist in the taxonomy but are not supported for webhook filtering. Pass null to clear. Must pair with notificationTierValues.'),
|
|
160
|
-
notificationTierValues: z.array(z.string()).nullable().optional()
|
|
161
|
-
.describe('Tier labels to match. Pass null to clear. Must pair with notificationTierDepth.'),
|
|
162
|
-
};
|
|
163
|
-
export const GET_WEBHOOK_SHAPE = {
|
|
164
|
-
webhookId: z.string().min(1)
|
|
165
|
-
.describe('The webhook ID to retrieve.'),
|
|
166
|
-
};
|
|
167
|
-
export const DELETE_WEBHOOK_SHAPE = {
|
|
168
|
-
webhookId: z.string().min(1)
|
|
169
|
-
.describe('The webhook ID to delete.'),
|
|
170
|
-
};
|
|
171
|
-
export const PING_WEBHOOK_SHAPE = {
|
|
172
|
-
webhookId: z.string().min(1)
|
|
173
|
-
.describe('The webhook ID to ping.'),
|
|
174
|
-
};
|
|
175
|
-
export const LIST_WEBHOOK_DELIVERIES_SHAPE = {
|
|
176
|
-
webhookId: z.string().min(1)
|
|
177
|
-
.describe('The webhook ID to get deliveries for.'),
|
|
178
|
-
limit: z.number().int().positive().max(100).default(20)
|
|
179
|
-
.describe('Max deliveries to return (1-100, default 20).'),
|
|
180
|
-
};
|
|
181
|
-
export const GET_JOB_REPORT_SHAPE = {
|
|
182
|
-
jobId: z.string().min(1)
|
|
183
|
-
.describe('Job ID from classifyAudio, classifyBatch, or listJobs.'),
|
|
184
|
-
};
|
|
185
|
-
export const GET_JOB_RAW_ANALYSIS_V1_SHAPE = {
|
|
186
|
-
jobId: z.string().min(1)
|
|
187
|
-
.describe('Job ID from classifyAudio, classifyBatch, or listJobs.'),
|
|
188
|
-
yearMonth: z.string().regex(/^\d{4}-\d{2}$/).optional()
|
|
189
|
-
.describe('Partition hint in YYYY-MM format (e.g. "2026-04") narrowing the storage lookup. Optional — defaults to the job\'s creation month.'),
|
|
190
|
-
};
|
|
191
|
-
// ─── Descriptions (authoritative) ────────────────────────────────────────────
|
|
192
|
-
const formats = HEAR_API.SUPPORTED_FORMATS.join(', ');
|
|
193
|
-
const maxMB = HEAR_API.MAX_FILE_SIZE_BYTES / (1024 * 1024);
|
|
194
|
-
export const toolDescriptions = {
|
|
195
|
-
healthCheck: 'Check H-ear API health and liveness. No authentication required. Returns `{ apiStatus, apiVersion, apiDeployedTimestamp, mcpClientVersion }` — the `api*` fields come from `/v1/health`; `mcpClientVersion` is the version of the locally-installed `@h-ear/mcp-server` package the host pulled (read from its `package.json` at process start), used to verify `--pull` loaded the expected dist-tag.',
|
|
196
|
-
usage: 'Get H-ear API usage statistics. Returns `{ tier, daily:{used,limit,remaining}, period:{minutesUsed,minutesLimit}, activeKeys? }`. **What counts toward `daily.used`:** every authenticated `/v1/*` call increments it — `listJobs`, `getJob`, `getJobEvents`, `getJobAudio`, `getJobWaveform`, `getJobReport`, `classifyAudio`, `classifyBatch`, **and `usage` itself** (the call you just made to read this value is already in the count). **What does NOT count:** unauthenticated endpoints (`healthCheck`, `listClasses`) and webhook CRUD. `period.minutesUsed` is separate — billable ML compute minutes only. Requires API key (HEAR_API_KEY).',
|
|
197
|
-
listClasses: 'List supported audio classification classes. Default taxonomy: audioset-yamnet-521 (521 classes across 7 categories). Also available: audioset-panns-527 (527 classes), species (6522 bird species). ' +
|
|
198
|
-
'Each class has a tierDepth (1–5) indicating its position in the AudioSet hierarchy, but filtering in getJobEvents and webhook notifications is supported up to tier 3 only. ' +
|
|
199
|
-
'Response fields: total and totalFiltered both reflect the post-filter count; totalAvailable is the unfiltered class count for the entire taxonomy. ' +
|
|
200
|
-
'Some AudioSet indices are retired and absent (e.g. 79, 83, 87) — this is normal, do not treat index gaps as errors. ' +
|
|
201
|
-
'No authentication required.',
|
|
202
|
-
listJobs: 'List recent classification jobs with status, file name, event count, and timestamps. Supports pagination. Requires API key (HEAR_API_KEY).',
|
|
203
|
-
getJob: 'Get job metadata for a classification job: status, fileName, duration, eventCount, modelId, reportUrl, location, timestamps. Per-event records are NOT returned — `eventCount` is the total; call `getJobEvents(jobId)` for the per-event records (served as a SAS-URL envelope per ARCH-015). Requires API key (HEAR_API_KEY).',
|
|
204
|
-
getJobEvents: 'Get noise events for a completed job — 100 per page, timeline order, no sort. ' +
|
|
205
|
-
'Walk with `offset`; hasMore=false is the last page. Filters (category, tier2, tier3, ' +
|
|
206
|
-
'minConfidence, startTime, endTime, sourceId, taxonomy) apply server-side. matchedTotal ' +
|
|
207
|
-
'is exact when matchedTotalExact=true; otherwise it is a lower bound until hasMore=false. ' +
|
|
208
|
-
'Tier filters (category/tier2/tier3) are exact from page 0 (denormalised summary); other ' +
|
|
209
|
-
'filters become exact on the final page. summary.totalEvents is the unfiltered job total. ' +
|
|
210
|
-
'downloadUrl is a SAS URL to the full events.json blob for SDK one-shot fetch — sandboxed ' +
|
|
211
|
-
'callers (claude.ai connector, web HTTPS MCP) ignore it and walk pages instead. Time ' +
|
|
212
|
-
'window is inclusive overlap, not strict containment. API key required.',
|
|
213
|
-
getJobAudio: 'Get a time-limited SAS URL for streaming the source audio of a classification job. ' +
|
|
214
|
-
'Returns a 1-hour URL for direct audio playback via HTML5 <audio> element or fetch. ' +
|
|
215
|
-
'The URL supports HTTP Range requests — browsers can seek without downloading the full file. ' +
|
|
216
|
-
'For event-specific playback, append a Media Fragment time range to the URL: audioUrl + "#t=1.92,5.76". ' +
|
|
217
|
-
'Returns 200 + audioUrl for both file-uploaded and URL-submitted jobs (URL submissions persist an ' +
|
|
218
|
-
'AppendBlob via appendBlockFromURL). 404 only fires for legacy URL jobs that pre-date URL-marshal. ' +
|
|
219
|
-
'Requires API key.',
|
|
220
|
-
getJobWaveform: 'Get pre-computed waveform data and audio URL for a completed classification job. ' +
|
|
221
|
-
'Returns waveformUrl (peaks.js-compatible .dat binary) and audioUrl for synchronized playback. ' +
|
|
222
|
-
'Initialize peaks.js with: Peaks.init({ dataUri: { arraybuffer: waveformUrl }, mediaElement: audioEl }). ' +
|
|
223
|
-
'If waveformUrl is null, use wavesurfer.js with audioUrl instead (decodes via Web Audio API). ' +
|
|
224
|
-
'Zoom controls resolution: 256=high detail, 1024=standard (default), 4096=overview. ' +
|
|
225
|
-
'Both URLs expire in 1 hour. ' +
|
|
226
|
-
'For event navigation, combine with getJobEvents to get startTime values for seeking. ' +
|
|
227
|
-
'Requires API key.',
|
|
228
|
-
getUploadStatus: 'Diagnostic endpoint — returns fine-grained slice-level upload progress for a chunked upload (fileName, totalSlices, slicesUploaded, totalBytes, requestId). Not required for the happy path: classifyAudio returns requestId on the FIRST chunk response, and getJob(requestId) reflects the upload → processing → completed lifecycle. State lives in the MCP server process — if the process restarted since the upload started, the session will not be found.',
|
|
229
|
-
getJobReport: 'Get a 7-day SAS URL to download the Excel analysis report for a completed classification job. Returns `{ jobId, reportUrl, expiresIn }`. Returns 409 if the job is still processing, 404 if the report blob is missing. Requires API key.',
|
|
230
|
-
getJobRawAnalysisV1: 'Get a short-lived SAS URL to download the raw ML predictions blob (direct-from-storage) for a completed classification job. Returns `{ jobId, downloadUrl, expiresIn, sizeBytes }`. Returns 409 if the job is still processing, 404 if the raw predictions blob is missing. Optional yearMonth (YYYY-MM) narrows the storage lookup. Requires API key (enterprise).',
|
|
231
|
-
classifyAudio: `Classify a local audio file or public URL for noise/sound detection. Provide filePath (stdio + local FS) OR url (any transport — server marshals bytes via Azure Storage appendBlockFromURL, no client IO). With url, pass fileName so the job persists a display name in the UI; otherwise it defaults to "api-upload". Formats: ${formats}. Files over ${maxMB}MB on filePath auto-split into 25 MB byte slices client-side; url has no client chunking. Returns { requestId, status } — poll getJob(requestId) until status='completed'. filePath returns 'uploading' while bytes arrive; url returns 'processing' immediately. Both transition to 'completed'. Requires API key (HEAR_API_KEY).`,
|
|
232
|
-
classifyBatch: `Classify multiple audio files. Provide filePaths (local files, recommended) or files (URL entries). For URL entries, pass each file's basename in fileName so jobs persist meaningful names; otherwise they default to "api-upload.mp3". Local files: submits all then polls each sequentially (may take minutes), or pass callbackUrl to skip polling and deliver results via webhook. URL files: returns immediately with batch ID (results via webhook). Max ${HEAR_API.MAX_BATCH_FILES} files. Requires API key (HEAR_API_KEY).`,
|
|
233
|
-
createWebhook: 'Create an enterprise webhook registration for async event delivery (job.completed, job.failed, etc.). Returns webhook details and a signing secret shown ONCE — save it immediately. Supports taxonomy and tier-based notification filtering. Requires Bearer token (enterprise subscription).',
|
|
234
|
-
updateWebhook: 'Update an enterprise webhook registration. Change events, URL, status (active/paused), or notification filters. Set status to "paused" to temporarily disable without deleting. Requires Bearer token (enterprise subscription).',
|
|
235
|
-
listWebhooks: 'List all enterprise webhook registrations. Shows URL, subscribed events, status, failure count, and notification filter config. Requires Bearer token (enterprise subscription).',
|
|
236
|
-
getWebhook: 'Get detailed information about a specific enterprise webhook, including delivery stats, notification filters, and status. Requires Bearer token (enterprise subscription).',
|
|
237
|
-
deleteWebhook: 'Permanently delete an enterprise webhook registration. This action cannot be undone. Requires Bearer token (enterprise subscription).',
|
|
238
|
-
pingWebhook: 'Send a test ping event to an enterprise webhook to verify connectivity. Returns delivery result with response status and timing. Requires Bearer token (enterprise subscription).',
|
|
239
|
-
listWebhookDeliveries: 'List recent delivery attempts for an enterprise webhook. Shows event type, HTTP response status, success/failure, timing, and attempt count for audit trail. Requires Bearer token (enterprise subscription).',
|
|
240
|
-
};
|
|
241
|
-
// ─── Shape map ───────────────────────────────────────────────────────────────
|
|
242
|
-
const shapes = {
|
|
243
|
-
healthCheck: HEALTH_CHECK_SHAPE,
|
|
244
|
-
usage: USAGE_SHAPE,
|
|
245
|
-
listClasses: LIST_CLASSES_SHAPE,
|
|
246
|
-
listJobs: LIST_JOBS_SHAPE,
|
|
247
|
-
getJob: GET_JOB_SHAPE,
|
|
248
|
-
getJobEvents: GET_JOB_EVENTS_SHAPE,
|
|
249
|
-
getJobAudio: GET_JOB_AUDIO_SHAPE,
|
|
250
|
-
getJobWaveform: GET_JOB_WAVEFORM_SHAPE,
|
|
251
|
-
getJobReport: GET_JOB_REPORT_SHAPE,
|
|
252
|
-
getJobRawAnalysisV1: GET_JOB_RAW_ANALYSIS_V1_SHAPE,
|
|
253
|
-
getUploadStatus: GET_UPLOAD_STATUS_SHAPE,
|
|
254
|
-
classifyAudio: CLASSIFY_AUDIO_SHAPE,
|
|
255
|
-
classifyBatch: CLASSIFY_BATCH_SHAPE,
|
|
256
|
-
createWebhook: CREATE_WEBHOOK_SHAPE,
|
|
257
|
-
updateWebhook: UPDATE_WEBHOOK_SHAPE,
|
|
258
|
-
listWebhooks: LIST_WEBHOOKS_SHAPE,
|
|
259
|
-
getWebhook: GET_WEBHOOK_SHAPE,
|
|
260
|
-
deleteWebhook: DELETE_WEBHOOK_SHAPE,
|
|
261
|
-
pingWebhook: PING_WEBHOOK_SHAPE,
|
|
262
|
-
listWebhookDeliveries: LIST_WEBHOOK_DELIVERIES_SHAPE,
|
|
263
|
-
};
|
|
264
|
-
export const toolShapes = Object.freeze(shapes);
|
|
265
|
-
// ─── JSON Schemas (derived from shapes) ──────────────────────────────────────
|
|
18
|
+
import { toolShapes } from '@h-ear/core';
|
|
19
|
+
// ─── Re-export everything authoritative from core ────────────────────────────
|
|
20
|
+
// Import path stays @h-ear/mcp-server/schemas for back-compat with existing
|
|
21
|
+
// tool files (registerClassifyAudio, etc.) and scripts/userMcp.root-status.mjs.
|
|
22
|
+
export { toolShapes, toolDescriptions, toolNames, HEALTH_CHECK_SHAPE, USAGE_SHAPE, LIST_WEBHOOKS_SHAPE, LIST_CLASSES_SHAPE, LIST_JOBS_SHAPE, GET_JOB_SHAPE, GET_JOB_EVENTS_SHAPE, GET_JOB_AUDIO_SHAPE, GET_JOB_WAVEFORM_SHAPE, GET_UPLOAD_STATUS_SHAPE, CLASSIFY_AUDIO_SHAPE, CLASSIFY_BATCH_SHAPE, CREATE_WEBHOOK_SHAPE, UPDATE_WEBHOOK_SHAPE, GET_WEBHOOK_SHAPE, DELETE_WEBHOOK_SHAPE, PING_WEBHOOK_SHAPE, LIST_WEBHOOK_DELIVERIES_SHAPE, GET_JOB_REPORT_SHAPE, GET_JOB_RAW_ANALYSIS_V1_SHAPE, } from '@h-ear/core';
|
|
23
|
+
// ─── JSON Schemas (derived from core shapes) ─────────────────────────────────
|
|
266
24
|
function shapeToJsonSchema(shape) {
|
|
267
25
|
// zod-to-json-schema expects a ZodObject; wrap the raw shape.
|
|
268
26
|
const obj = z.object(shape);
|
|
@@ -272,7 +30,5 @@ function shapeToJsonSchema(shape) {
|
|
|
272
30
|
delete full.$schema;
|
|
273
31
|
return full;
|
|
274
32
|
}
|
|
275
|
-
export const toolSchemas = Object.freeze(Object.fromEntries(Object.entries(
|
|
276
|
-
// ─── Tool name catalogue ─────────────────────────────────────────────────────
|
|
277
|
-
export const toolNames = Object.freeze(Object.keys(shapes));
|
|
33
|
+
export const toolSchemas = Object.freeze(Object.fromEntries(Object.entries(toolShapes).map(([name, shape]) => [name, shapeToJsonSchema(shape)])));
|
|
278
34
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAoB,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,gFAAgF;AAChF,4EAA4E;AAC5E,gFAAgF;AAChF,OAAO,EACH,UAAU,EAAE,gBAAgB,EAAE,SAAS,EACvC,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EACxE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EACzE,sBAAsB,EAAE,uBAAuB,EAAE,oBAAoB,EACrE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAChE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAC3D,6BAA6B,EAAE,oBAAoB,EAAE,6BAA6B,GACrF,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAEhF,SAAS,iBAAiB,CAAC,KAAkB;IACzC,8DAA8D;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAA4B,CAAC;IACvF,8EAA8E;IAC9E,iDAAiD;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC;IACpB,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAsC,MAAM,CAAC,MAAM,CACvE,MAAM,CAAC,WAAW,CACd,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CACtF,CACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-ear/mcp-server",
|
|
3
|
-
"version": "1.1.0-dev.
|
|
3
|
+
"version": "1.1.0-dev.202604290216",
|
|
4
4
|
"mcpName": "io.github.badajoz95/h-ear",
|
|
5
5
|
"description": "MCP server for the H-ear World audio classification API — connect Claude, ChatGPT, and other AI agents to 521+ sound classes",
|
|
6
6
|
"type": "module",
|