fantasy-basketball-sdk 1.1.0 → 1.2.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/dist/mcp/create-server.d.ts.map +1 -1
- package/dist/mcp/create-server.js +5 -4
- package/dist/mcp/create-server.js.map +1 -1
- package/dist/mcp/instructions.d.ts +2 -0
- package/dist/mcp/instructions.d.ts.map +1 -0
- package/dist/mcp/instructions.js +37 -0
- package/dist/mcp/instructions.js.map +1 -0
- package/dist/mcp/league-context.d.ts +7 -0
- package/dist/mcp/league-context.d.ts.map +1 -0
- package/dist/mcp/league-context.js +47 -0
- package/dist/mcp/league-context.js.map +1 -0
- package/dist/mcp/results.d.ts +5 -1
- package/dist/mcp/results.d.ts.map +1 -1
- package/dist/mcp/results.js +36 -5
- package/dist/mcp/results.js.map +1 -1
- package/dist/mcp/serialize.d.ts +6 -1
- package/dist/mcp/serialize.d.ts.map +1 -1
- package/dist/mcp/serialize.js +116 -1
- package/dist/mcp/serialize.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +4 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +381 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/package.json +2 -2
- package/dist/mcp/tools/espn.d.ts +0 -3
- package/dist/mcp/tools/espn.d.ts.map +0 -1
- package/dist/mcp/tools/espn.js +0 -182
- package/dist/mcp/tools/espn.js.map +0 -1
- package/dist/mcp/tools/yahoo.d.ts +0 -3
- package/dist/mcp/tools/yahoo.d.ts.map +0 -1
- package/dist/mcp/tools/yahoo.js +0 -165
- package/dist/mcp/tools/yahoo.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,wBAAgB,eAAe,IAAI,SAAS,
|
|
1
|
+
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,wBAAgB,eAAe,IAAI,SAAS,CAc3C;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpD"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { DEFAULT_INSTRUCTIONS } from './instructions.js';
|
|
4
|
+
import { registerWorkflowTools } from './tools/index.js';
|
|
5
5
|
export function createMcpServer() {
|
|
6
6
|
const server = new McpServer({
|
|
7
7
|
name: 'fantasy-basketball-sdk',
|
|
8
8
|
version: process.env.npm_package_version ?? '0.0.0',
|
|
9
|
+
}, {
|
|
10
|
+
instructions: DEFAULT_INSTRUCTIONS,
|
|
9
11
|
});
|
|
10
|
-
|
|
11
|
-
registerYahooTools(server);
|
|
12
|
+
registerWorkflowTools(server);
|
|
12
13
|
return server;
|
|
13
14
|
}
|
|
14
15
|
export async function startMcpServer() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO;KACpD,EACD;QACE,YAAY,EAAE,oBAAoB;KACnC,CACF,CAAC;IAEF,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/mcp/instructions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,QAmCzB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const DEFAULT_INSTRUCTIONS = `
|
|
2
|
+
You are connected to the Fantasy Basketball SDK MCP server — a read-only interface for ESPN and Yahoo fantasy basketball leagues.
|
|
3
|
+
|
|
4
|
+
## Configuration
|
|
5
|
+
|
|
6
|
+
Set credentials in your MCP client configuration (not in the terminal shell):
|
|
7
|
+
|
|
8
|
+
**ESPN**
|
|
9
|
+
- \`ESPN_LEAGUE_ID\` (required)
|
|
10
|
+
- \`ESPN_SEASON_ID\` (required)
|
|
11
|
+
- \`ESPN_S2\` and \`ESPN_SWID\` (required for private leagues)
|
|
12
|
+
|
|
13
|
+
**Yahoo**
|
|
14
|
+
- \`YAHOO_ACCESS_TOKEN\` (required)
|
|
15
|
+
- \`YAHOO_LEAGUE_KEY\` **or** both \`YAHOO_LEAGUE_ID\` and \`YAHOO_SEASON\`
|
|
16
|
+
|
|
17
|
+
## Recommended workflow
|
|
18
|
+
|
|
19
|
+
1. Start with \`getLeagueOverview\` to learn league metadata, teams, and standings.
|
|
20
|
+
2. Use \`getMatchupContext\` for scoreboards and box scores (current or historical week).
|
|
21
|
+
3. Use \`searchPlayers\` to look up a player by name or ID and fetch stats.
|
|
22
|
+
4. Use \`findRosterOptions\` for waiver wire, free agents, and pickup candidates.
|
|
23
|
+
5. Use \`getLeagueActivity\` for recent adds/drops/trades and transaction history.
|
|
24
|
+
6. Use \`getDraftContext\` for draft results and pick history.
|
|
25
|
+
|
|
26
|
+
## Tool selection
|
|
27
|
+
|
|
28
|
+
- Pass \`provider\`: \`espn\` or \`yahoo\` on every tool call.
|
|
29
|
+
- Prefer workflow tools over guessing provider-specific API details.
|
|
30
|
+
- All tools are read-only; they never modify rosters or league settings.
|
|
31
|
+
|
|
32
|
+
## Privacy and security
|
|
33
|
+
|
|
34
|
+
- Never log or repeat access tokens, cookies, or league credentials in responses.
|
|
35
|
+
- Treat league rosters and transaction history as private user data.
|
|
36
|
+
`.trim();
|
|
37
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/mcp/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCnC,CAAC,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { League as EspnLeague } from '../espn/league.js';
|
|
2
|
+
import { League as YahooLeague } from '../yahoo/models/league.js';
|
|
3
|
+
export declare function getEspnLeague(): Promise<EspnLeague>;
|
|
4
|
+
export declare function getYahooLeague(): Promise<YahooLeague>;
|
|
5
|
+
/** Clears in-process league caches (for tests). */
|
|
6
|
+
export declare function clearLeagueContextCache(): void;
|
|
7
|
+
//# sourceMappingURL=league-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"league-context.d.ts","sourceRoot":"","sources":["../../src/mcp/league-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAclE,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAczD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAc3D;AAED,mDAAmD;AACnD,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { League as EspnLeague } from '../espn/league.js';
|
|
2
|
+
import { League as YahooLeague } from '../yahoo/models/league.js';
|
|
3
|
+
import { readEspnConfig, readYahooConfig } from './config.js';
|
|
4
|
+
function espnCacheKey(config) {
|
|
5
|
+
return `espn:${config.leagueId}:${config.seasonId}:${config.espnS2 ?? ''}:${config.swid ?? ''}`;
|
|
6
|
+
}
|
|
7
|
+
function yahooCacheKey(config) {
|
|
8
|
+
return `yahoo:${config.accessToken}:${config.leagueKey ?? ''}:${config.leagueId ?? ''}:${config.season ?? ''}`;
|
|
9
|
+
}
|
|
10
|
+
const espnLeagues = new Map();
|
|
11
|
+
const yahooLeagues = new Map();
|
|
12
|
+
export async function getEspnLeague() {
|
|
13
|
+
const config = readEspnConfig();
|
|
14
|
+
const key = espnCacheKey(config);
|
|
15
|
+
let cached = espnLeagues.get(key);
|
|
16
|
+
if (!cached) {
|
|
17
|
+
cached = EspnLeague.create({
|
|
18
|
+
leagueId: config.leagueId,
|
|
19
|
+
seasonId: config.seasonId,
|
|
20
|
+
espnS2: config.espnS2,
|
|
21
|
+
swid: config.swid,
|
|
22
|
+
});
|
|
23
|
+
espnLeagues.set(key, cached);
|
|
24
|
+
}
|
|
25
|
+
return cached;
|
|
26
|
+
}
|
|
27
|
+
export async function getYahooLeague() {
|
|
28
|
+
const config = readYahooConfig();
|
|
29
|
+
const key = yahooCacheKey(config);
|
|
30
|
+
let cached = yahooLeagues.get(key);
|
|
31
|
+
if (!cached) {
|
|
32
|
+
cached = YahooLeague.create({
|
|
33
|
+
accessToken: config.accessToken,
|
|
34
|
+
leagueKey: config.leagueKey,
|
|
35
|
+
leagueId: config.leagueId,
|
|
36
|
+
season: config.season,
|
|
37
|
+
});
|
|
38
|
+
yahooLeagues.set(key, cached);
|
|
39
|
+
}
|
|
40
|
+
return cached;
|
|
41
|
+
}
|
|
42
|
+
/** Clears in-process league caches (for tests). */
|
|
43
|
+
export function clearLeagueContextCache() {
|
|
44
|
+
espnLeagues.clear();
|
|
45
|
+
yahooLeagues.clear();
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=league-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"league-context.js","sourceRoot":"","sources":["../../src/mcp/league-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAqC,MAAM,aAAa,CAAC;AAEjG,SAAS,YAAY,CAAC,MAAkB;IACtC,OAAO,QAAQ,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AAClG,CAAC;AAED,SAAS,aAAa,CAAC,MAAmB;IACxC,OAAO,SAAS,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;AACjH,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAA+B,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAgC,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;QACH,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,uBAAuB;IACrC,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC"}
|
package/dist/mcp/results.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export declare const DEFAULT_TOOL_TIMEOUT_MS = 30000;
|
|
3
|
+
export declare function sanitizeErrorMessage(error: unknown): string;
|
|
2
4
|
export declare function textResult(data: unknown): CallToolResult;
|
|
3
5
|
export declare function errorResult(message: string): CallToolResult;
|
|
4
|
-
export declare function runTool<T>(fn: () => Promise<T
|
|
6
|
+
export declare function runTool<T>(fn: () => Promise<T>, options?: {
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
}): Promise<CallToolResult>;
|
|
5
9
|
//# sourceMappingURL=results.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/mcp/results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAIxD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAK3D;AAED,wBAAsB,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/mcp/results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAa9C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAU3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAIxD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAK3D;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,OAAO,CAAC,cAAc,CAAC,CAmBzB"}
|
package/dist/mcp/results.js
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
export const DEFAULT_TOOL_TIMEOUT_MS = 30_000;
|
|
2
|
+
const ACTIONABLE_ERROR_PATTERNS = [
|
|
3
|
+
/^Missing required environment variable:/,
|
|
4
|
+
/^Environment variable .+ must be an integer/,
|
|
5
|
+
/^Missing Yahoo league configuration:/,
|
|
6
|
+
/^Provide leagueKey or both leagueId and season$/,
|
|
7
|
+
];
|
|
8
|
+
function isActionableError(message) {
|
|
9
|
+
return ACTIONABLE_ERROR_PATTERNS.some((pattern) => pattern.test(message));
|
|
10
|
+
}
|
|
11
|
+
export function sanitizeErrorMessage(error) {
|
|
12
|
+
if (error instanceof Error) {
|
|
13
|
+
if (error.message === 'Tool execution timed out') {
|
|
14
|
+
return 'Tool failed: request timed out. Try again or narrow the query.';
|
|
15
|
+
}
|
|
16
|
+
if (isActionableError(error.message)) {
|
|
17
|
+
return error.message;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return 'Tool failed: an unexpected error occurred while fetching fantasy data.';
|
|
21
|
+
}
|
|
1
22
|
export function textResult(data) {
|
|
2
23
|
return {
|
|
3
24
|
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
@@ -9,15 +30,25 @@ export function errorResult(message) {
|
|
|
9
30
|
isError: true,
|
|
10
31
|
};
|
|
11
32
|
}
|
|
12
|
-
export async function runTool(fn) {
|
|
33
|
+
export async function runTool(fn, options) {
|
|
34
|
+
const timeoutMs = options?.timeoutMs ?? DEFAULT_TOOL_TIMEOUT_MS;
|
|
35
|
+
let timeoutId;
|
|
13
36
|
try {
|
|
14
|
-
|
|
37
|
+
const result = await Promise.race([
|
|
38
|
+
fn(),
|
|
39
|
+
new Promise((_, reject) => {
|
|
40
|
+
timeoutId = setTimeout(() => reject(new Error('Tool execution timed out')), timeoutMs);
|
|
41
|
+
}),
|
|
42
|
+
]);
|
|
43
|
+
return textResult(result);
|
|
15
44
|
}
|
|
16
45
|
catch (error) {
|
|
17
|
-
|
|
18
|
-
|
|
46
|
+
return errorResult(sanitizeErrorMessage(error));
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
if (timeoutId !== undefined) {
|
|
50
|
+
clearTimeout(timeoutId);
|
|
19
51
|
}
|
|
20
|
-
return errorResult(String(error));
|
|
21
52
|
}
|
|
22
53
|
}
|
|
23
54
|
//# sourceMappingURL=results.js.map
|
package/dist/mcp/results.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/mcp/results.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/mcp/results.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,MAAM,yBAAyB,GAAG;IAChC,yCAAyC;IACzC,6CAA6C;IAC7C,sCAAsC;IACtC,iDAAiD;CAClD,CAAC;AAEF,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,0BAA0B,EAAE,CAAC;YACjD,OAAO,gEAAgE,CAAC;QAC1E,CAAC;QACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,wEAAwE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,EAAoB,EACpB,OAAgC;IAEhC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,uBAAuB,CAAC;IAChE,IAAI,SAAoD,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,EAAE,EAAE;YACJ,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACzF,CAAC,CAAC;SACH,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/mcp/serialize.d.ts
CHANGED
|
@@ -20,5 +20,10 @@ export declare function serializeEspnDraft(draft: Pick[]): Record<string, unknow
|
|
|
20
20
|
export declare function serializeEspnPlayer(player: EspnPlayer | EspnPlayer[] | null): unknown;
|
|
21
21
|
export declare function serializeYahooMatchups(matchups: YahooMatchup[]): Record<string, unknown>[];
|
|
22
22
|
export declare function serializeYahooSettings(settings: YahooSettings): Record<string, unknown>;
|
|
23
|
-
export declare function serializeYahooTeams(teams: JsonObject[]):
|
|
23
|
+
export declare function serializeYahooTeams(teams: JsonObject[]): Record<string, unknown>[];
|
|
24
|
+
export declare function serializeYahooPlayers(players: JsonObject[]): Record<string, unknown>[];
|
|
25
|
+
export declare function serializeYahooTransactions(transactions: JsonObject[]): Record<string, unknown>[];
|
|
26
|
+
export declare function serializeYahooDraft(doc: JsonObject): Record<string, unknown>[];
|
|
27
|
+
export declare function serializeYahooPlayerStats(doc: JsonObject): Record<string, unknown>[];
|
|
28
|
+
export declare function serializeYahooMetadata(metadata: JsonObject): Record<string, unknown>;
|
|
24
29
|
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/mcp/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/mcp/serialize.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/serialize.js
CHANGED
|
@@ -1,6 +1,77 @@
|
|
|
1
|
+
import { collectIndexedResources, flattenLeagueNode, flattenResource, getFantasyContent, } from '../yahoo/parse.js';
|
|
1
2
|
function teamRef(team) {
|
|
2
3
|
return typeof team === 'number' ? team : team.teamName;
|
|
3
4
|
}
|
|
5
|
+
function yahooFullName(name) {
|
|
6
|
+
if (typeof name === 'string') {
|
|
7
|
+
return name;
|
|
8
|
+
}
|
|
9
|
+
if (name !== null && typeof name === 'object' && 'full' in name) {
|
|
10
|
+
const full = name.full;
|
|
11
|
+
return full === undefined ? undefined : String(full);
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
function compactYahooTeam(team) {
|
|
16
|
+
const flat = flattenResource(team);
|
|
17
|
+
const standings = flattenResource(flat.team_standings ?? {});
|
|
18
|
+
const outcomes = flattenResource(standings.outcome_totals ?? {});
|
|
19
|
+
return {
|
|
20
|
+
teamKey: flat.team_key,
|
|
21
|
+
teamId: flat.team_id,
|
|
22
|
+
name: yahooFullName(flat.name),
|
|
23
|
+
rank: standings.rank,
|
|
24
|
+
wins: outcomes.wins,
|
|
25
|
+
losses: outcomes.losses,
|
|
26
|
+
ties: outcomes.ties,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function compactYahooPlayer(player) {
|
|
30
|
+
const flat = flattenResource(player);
|
|
31
|
+
const ownership = flattenResource(flat.ownership ?? {});
|
|
32
|
+
const percentOwned = flattenResource(flat.percent_owned ?? {});
|
|
33
|
+
return {
|
|
34
|
+
playerKey: flat.player_key,
|
|
35
|
+
playerId: flat.player_id,
|
|
36
|
+
name: yahooFullName(flat.name),
|
|
37
|
+
proTeam: flat.editorial_team_abbr,
|
|
38
|
+
status: ownership.status ?? ownership.ownership_type,
|
|
39
|
+
percentOwned: percentOwned.value,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function compactYahooTransaction(transaction) {
|
|
43
|
+
const flat = flattenResource(transaction);
|
|
44
|
+
const playersNode = flat.players;
|
|
45
|
+
const players = playersNode !== undefined && playersNode !== null
|
|
46
|
+
? collectIndexedResources(playersNode, 'player').map((player) => {
|
|
47
|
+
const playerFlat = flattenResource(player);
|
|
48
|
+
const txData = flattenResource(playerFlat.transaction_data ?? {});
|
|
49
|
+
return {
|
|
50
|
+
playerId: playerFlat.player_id,
|
|
51
|
+
name: yahooFullName(playerFlat.name),
|
|
52
|
+
action: txData.type,
|
|
53
|
+
teamKey: txData.destination_team_key ?? txData.source_team_key,
|
|
54
|
+
};
|
|
55
|
+
})
|
|
56
|
+
: [];
|
|
57
|
+
return {
|
|
58
|
+
transactionKey: flat.transaction_key,
|
|
59
|
+
transactionId: flat.transaction_id,
|
|
60
|
+
type: flat.type,
|
|
61
|
+
status: flat.status,
|
|
62
|
+
timestamp: flat.timestamp,
|
|
63
|
+
players,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function compactYahooDraftPick(pick) {
|
|
67
|
+
const flat = flattenResource(pick);
|
|
68
|
+
return {
|
|
69
|
+
pick: flat.pick,
|
|
70
|
+
round: flat.round,
|
|
71
|
+
teamKey: flat.team_key,
|
|
72
|
+
playerKey: flat.player_key,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
4
75
|
export function serializeEspnLeague(league) {
|
|
5
76
|
return {
|
|
6
77
|
leagueId: league.leagueId,
|
|
@@ -120,6 +191,50 @@ export function serializeYahooSettings(settings) {
|
|
|
120
191
|
};
|
|
121
192
|
}
|
|
122
193
|
export function serializeYahooTeams(teams) {
|
|
123
|
-
return teams;
|
|
194
|
+
return teams.map(compactYahooTeam);
|
|
195
|
+
}
|
|
196
|
+
export function serializeYahooPlayers(players) {
|
|
197
|
+
return players.map(compactYahooPlayer);
|
|
198
|
+
}
|
|
199
|
+
export function serializeYahooTransactions(transactions) {
|
|
200
|
+
return transactions.map(compactYahooTransaction);
|
|
201
|
+
}
|
|
202
|
+
export function serializeYahooDraft(doc) {
|
|
203
|
+
const content = getFantasyContent(doc);
|
|
204
|
+
const league = flattenLeagueNode(content.league);
|
|
205
|
+
const draftNode = league.draft_results;
|
|
206
|
+
if (draftNode === undefined || draftNode === null) {
|
|
207
|
+
return [];
|
|
208
|
+
}
|
|
209
|
+
return collectIndexedResources(draftNode, 'draft_result').map(compactYahooDraftPick);
|
|
210
|
+
}
|
|
211
|
+
export function serializeYahooPlayerStats(doc) {
|
|
212
|
+
const content = getFantasyContent(doc);
|
|
213
|
+
const league = flattenLeagueNode(content.league);
|
|
214
|
+
const playersNode = league.players;
|
|
215
|
+
if (playersNode === undefined || playersNode === null) {
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
return collectIndexedResources(playersNode, 'player').map((player) => {
|
|
219
|
+
const flat = flattenResource(player);
|
|
220
|
+
const stats = flattenResource(flat.player_stats ?? {});
|
|
221
|
+
return {
|
|
222
|
+
playerId: flat.player_id,
|
|
223
|
+
name: yahooFullName(flat.name),
|
|
224
|
+
stats,
|
|
225
|
+
};
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
export function serializeYahooMetadata(metadata) {
|
|
229
|
+
const flat = flattenResource(metadata);
|
|
230
|
+
return {
|
|
231
|
+
leagueKey: flat.league_key,
|
|
232
|
+
leagueId: flat.league_id,
|
|
233
|
+
name: flat.name,
|
|
234
|
+
season: flat.season,
|
|
235
|
+
url: flat.url,
|
|
236
|
+
draftStatus: flat.draft_status,
|
|
237
|
+
numTeams: flat.num_teams,
|
|
238
|
+
};
|
|
124
239
|
}
|
|
125
240
|
//# sourceMappingURL=serialize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/mcp/serialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/mcp/serialize.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAK3B,SAAS,OAAO,CAAC,IAAuB;IACtC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QAChE,MAAM,IAAI,GAAI,IAAmB,CAAC,IAAI,CAAC;QACvC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgB;IACxC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACjE,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,QAAQ;QACtB,MAAM,EAAE,IAAI,CAAC,OAAO;QACpB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAkB;IAC5C,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAC/D,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,UAAU;QAC1B,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,OAAO,EAAE,IAAI,CAAC,mBAAmB;QACjC,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,cAAc;QACpD,YAAY,EAAE,YAAY,CAAC,KAAK;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,WAAuB;IACtD,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;IACjC,MAAM,OAAO,GACX,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI;QAC/C,CAAC,CAAC,uBAAuB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5D,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO;gBACL,QAAQ,EAAE,UAAU,CAAC,SAAS;gBAC9B,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpC,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,OAAO,EAAE,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,eAAe;aAC/D,CAAC;QACJ,CAAC,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,eAAe;QACpC,aAAa,EAAE,IAAI,CAAC,cAAc;QAClC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAgB;IAC7C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,QAAQ;QACtB,SAAS,EAAE,IAAI,CAAC,UAAU;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IACpD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QAC1B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;QACpC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;QACxC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAqB;IACxD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,YAA+B;IAE/B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ;QAChC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,UAAsB;IAC5D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;YAC1E,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAA6B;IAClE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,SAAS,EAAE,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACnE,SAAS,EAAE,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KACpE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;QACtB,eAAe,EAAE,IAAI,CAAC,SAAS;QAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAwC;IAC1E,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAwB;IAC7D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAuB;IAC5D,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,YAA0B;IACnE,OAAO,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAe;IACjD,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;IACvC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,uBAAuB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAe;IACvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IACnC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,uBAAuB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACnE,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,KAAK;SACN,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAoB;IACzD,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,UAAU;QAC1B,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,WAAW,EAAE,IAAI,CAAC,YAAY;QAC9B,QAAQ,EAAE,IAAI,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
export declare const WORKFLOW_TOOL_NAMES: readonly ["getLeagueOverview", "getMatchupContext", "searchPlayers", "findRosterOptions", "getLeagueActivity", "getDraftContext"];
|
|
3
|
+
export declare function registerWorkflowTools(server: McpServer): void;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyBzE,eAAO,MAAM,mBAAmB,mIAOtB,CAAC;AAQX,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuc7D"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getEspnLeague, getYahooLeague } from '../league-context.js';
|
|
3
|
+
import { runTool } from '../results.js';
|
|
4
|
+
import { serializeEspnActivities, serializeEspnBoxScores, serializeEspnDraft, serializeEspnLeague, serializeEspnMatchups, serializeEspnPlayer, serializeEspnPlayers, serializeEspnTeams, serializeEspnTransactions, serializeYahooDraft, serializeYahooMatchups, serializeYahooMetadata, serializeYahooPlayerStats, serializeYahooPlayers, serializeYahooSettings, serializeYahooTeams, serializeYahooTransactions, } from '../serialize.js';
|
|
5
|
+
export const WORKFLOW_TOOL_NAMES = [
|
|
6
|
+
'getLeagueOverview',
|
|
7
|
+
'getMatchupContext',
|
|
8
|
+
'searchPlayers',
|
|
9
|
+
'findRosterOptions',
|
|
10
|
+
'getLeagueActivity',
|
|
11
|
+
'getDraftContext',
|
|
12
|
+
];
|
|
13
|
+
const providerSchema = z
|
|
14
|
+
.enum(['espn', 'yahoo'])
|
|
15
|
+
.describe('Fantasy platform: espn or yahoo. Set matching env vars in MCP client config.');
|
|
16
|
+
const readOnly = { readOnlyHint: true };
|
|
17
|
+
export function registerWorkflowTools(server) {
|
|
18
|
+
server.registerTool('getLeagueOverview', {
|
|
19
|
+
description: `<use_case>
|
|
20
|
+
Start here for league metadata, settings, team list, and standings.
|
|
21
|
+
Aliases: league info, league settings, standings, team rankings, who is in first place.
|
|
22
|
+
</use_case>
|
|
23
|
+
<important_notes>
|
|
24
|
+
Requires \`provider\` (espn or yahoo). Configure ESPN or Yahoo credentials in the MCP client before calling.
|
|
25
|
+
For Yahoo, standings are included alongside metadata and settings.
|
|
26
|
+
</important_notes>`,
|
|
27
|
+
inputSchema: z.object({
|
|
28
|
+
provider: providerSchema,
|
|
29
|
+
}),
|
|
30
|
+
annotations: readOnly,
|
|
31
|
+
}, async ({ provider }) => runTool(async () => {
|
|
32
|
+
if (provider === 'espn') {
|
|
33
|
+
const league = await getEspnLeague();
|
|
34
|
+
return {
|
|
35
|
+
provider,
|
|
36
|
+
league: serializeEspnLeague(league),
|
|
37
|
+
teams: serializeEspnTeams(league.standings()),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const league = await getYahooLeague();
|
|
41
|
+
const [metadata, settings] = await Promise.all([
|
|
42
|
+
league.metadata(),
|
|
43
|
+
league.fetchSettings(),
|
|
44
|
+
]);
|
|
45
|
+
return {
|
|
46
|
+
provider,
|
|
47
|
+
metadata: serializeYahooMetadata(metadata),
|
|
48
|
+
settings: serializeYahooSettings(settings),
|
|
49
|
+
teams: serializeYahooTeams(await league.standings()),
|
|
50
|
+
};
|
|
51
|
+
}));
|
|
52
|
+
server.registerTool('getMatchupContext', {
|
|
53
|
+
description: `<use_case>
|
|
54
|
+
Get scoreboard matchups and optional box scores for the current or a specific fantasy week.
|
|
55
|
+
Aliases: scoreboard, matchups, head-to-head, weekly scores, box scores, lineup scores.
|
|
56
|
+
</use_case>
|
|
57
|
+
<important_notes>
|
|
58
|
+
ESPN uses \`matchupPeriod\` (H2H week) and optional \`scoringPeriod\` for box scores.
|
|
59
|
+
Yahoo uses \`week\`. Set \`includeBoxScores\` true for ESPN cumulative or single-period box scores.
|
|
60
|
+
</important_notes>`,
|
|
61
|
+
inputSchema: z.object({
|
|
62
|
+
provider: providerSchema,
|
|
63
|
+
matchupPeriod: z
|
|
64
|
+
.number()
|
|
65
|
+
.int()
|
|
66
|
+
.optional()
|
|
67
|
+
.describe("ESPN only: H2H matchup period (fantasy week). Defaults to the league's current period."),
|
|
68
|
+
week: z
|
|
69
|
+
.number()
|
|
70
|
+
.int()
|
|
71
|
+
.optional()
|
|
72
|
+
.describe('Yahoo only: fantasy week number. Defaults to current week.'),
|
|
73
|
+
scoringPeriod: z
|
|
74
|
+
.number()
|
|
75
|
+
.int()
|
|
76
|
+
.optional()
|
|
77
|
+
.describe('ESPN only: NBA scoring period for box scores.'),
|
|
78
|
+
matchupTotal: z
|
|
79
|
+
.boolean()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe('ESPN box scores: true for cumulative matchup totals (default), false for single scoring period.'),
|
|
82
|
+
includeBoxScores: z
|
|
83
|
+
.boolean()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe('ESPN only: include box score breakdown when true.'),
|
|
86
|
+
}),
|
|
87
|
+
annotations: readOnly,
|
|
88
|
+
}, async ({ provider, matchupPeriod, week, scoringPeriod, matchupTotal, includeBoxScores }) => runTool(async () => {
|
|
89
|
+
if (provider === 'espn') {
|
|
90
|
+
const league = await getEspnLeague();
|
|
91
|
+
const matchups = await league.scoreboard(matchupPeriod);
|
|
92
|
+
const result = {
|
|
93
|
+
provider,
|
|
94
|
+
matchups: serializeEspnMatchups(matchups),
|
|
95
|
+
};
|
|
96
|
+
if (includeBoxScores) {
|
|
97
|
+
const boxScores = await league.boxScores({
|
|
98
|
+
matchupPeriod,
|
|
99
|
+
scoringPeriod,
|
|
100
|
+
matchupTotal,
|
|
101
|
+
});
|
|
102
|
+
result.boxScores = serializeEspnBoxScores(boxScores);
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
const league = await getYahooLeague();
|
|
107
|
+
return {
|
|
108
|
+
provider,
|
|
109
|
+
matchups: serializeYahooMatchups(await league.scoreboard(week)),
|
|
110
|
+
};
|
|
111
|
+
}));
|
|
112
|
+
server.registerTool('searchPlayers', {
|
|
113
|
+
description: `<use_case>
|
|
114
|
+
Look up player info, stats, or search the league player pool by name.
|
|
115
|
+
Aliases: player lookup, player stats, player news, who is this player, find player by name.
|
|
116
|
+
</use_case>
|
|
117
|
+
<important_notes>
|
|
118
|
+
ESPN: use \`name\` or \`playerId\` (mutually exclusive). Set \`includeNews\` for recent headlines.
|
|
119
|
+
Yahoo: use \`search\` for name lookup in the pool, or \`playerIds\` for detailed stats.
|
|
120
|
+
Returns matching players as structured data (empty array or null when no exact match).
|
|
121
|
+
</important_notes>`,
|
|
122
|
+
inputSchema: z.object({
|
|
123
|
+
provider: providerSchema,
|
|
124
|
+
name: z
|
|
125
|
+
.string()
|
|
126
|
+
.optional()
|
|
127
|
+
.describe('ESPN: player name from the league player map.'),
|
|
128
|
+
playerId: z
|
|
129
|
+
.union([z.number().int(), z.array(z.number().int())])
|
|
130
|
+
.optional()
|
|
131
|
+
.describe('ESPN: player ID or array of IDs.'),
|
|
132
|
+
includeNews: z
|
|
133
|
+
.boolean()
|
|
134
|
+
.optional()
|
|
135
|
+
.describe('ESPN: include recent player news. Default false.'),
|
|
136
|
+
search: z.string().optional().describe('Yahoo: name search string.'),
|
|
137
|
+
playerIds: z
|
|
138
|
+
.array(z.union([z.string(), z.number()]))
|
|
139
|
+
.optional()
|
|
140
|
+
.describe('Yahoo: one or more player IDs for stats lookup.'),
|
|
141
|
+
reqType: z
|
|
142
|
+
.string()
|
|
143
|
+
.optional()
|
|
144
|
+
.describe('Yahoo stats window: season, date, lastweek, lastmonth, average_season. Default date.'),
|
|
145
|
+
date: z.string().optional().describe('Yahoo: date (YYYY-MM-DD) when reqType is date.'),
|
|
146
|
+
start: z.number().int().min(0).optional().describe('Yahoo pool search pagination offset.'),
|
|
147
|
+
count: z
|
|
148
|
+
.number()
|
|
149
|
+
.int()
|
|
150
|
+
.min(1)
|
|
151
|
+
.max(100)
|
|
152
|
+
.optional()
|
|
153
|
+
.describe('Yahoo pool search result count (1–100). Default 25.'),
|
|
154
|
+
status: z
|
|
155
|
+
.string()
|
|
156
|
+
.optional()
|
|
157
|
+
.describe('Yahoo ownership filter: A, FA, W, T, K.'),
|
|
158
|
+
position: z.string().optional().describe('Yahoo roster position filter (e.g. PG, G).'),
|
|
159
|
+
}),
|
|
160
|
+
annotations: readOnly,
|
|
161
|
+
}, async ({ provider, name, playerId, includeNews, search, playerIds, reqType, date, start, count, status, position, }) => runTool(async () => {
|
|
162
|
+
if (provider === 'espn') {
|
|
163
|
+
const league = await getEspnLeague();
|
|
164
|
+
const player = await league.playerInfo({ name, playerId, includeNews });
|
|
165
|
+
return {
|
|
166
|
+
provider,
|
|
167
|
+
players: serializeEspnPlayer(player),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
const league = await getYahooLeague();
|
|
171
|
+
if (playerIds !== undefined && playerIds.length > 0) {
|
|
172
|
+
const statsDoc = await league.playerStats(playerIds, reqType, date);
|
|
173
|
+
return {
|
|
174
|
+
provider,
|
|
175
|
+
players: serializeYahooPlayerStats(statsDoc),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
const players = await league.players({ search, start, count, status, position });
|
|
179
|
+
return {
|
|
180
|
+
provider,
|
|
181
|
+
players: serializeYahooPlayers(players),
|
|
182
|
+
};
|
|
183
|
+
}));
|
|
184
|
+
server.registerTool('findRosterOptions', {
|
|
185
|
+
description: `<use_case>
|
|
186
|
+
Find available players for pickups: free agents, waiver wire, and streaming options.
|
|
187
|
+
Aliases: free agents, waiver wire, available players, who can I pick up, add candidates, FAAB targets.
|
|
188
|
+
</use_case>
|
|
189
|
+
<important_notes>
|
|
190
|
+
ESPN: use \`size\` (1–200, default 50), \`position\` or \`positionId\`, and optional \`week\` for stat window.
|
|
191
|
+
Yahoo: defaults to status FA; use W for waivers. Supports \`sort\`, \`sortType\`, and pagination via \`start\`/\`count\`.
|
|
192
|
+
</important_notes>`,
|
|
193
|
+
inputSchema: z.object({
|
|
194
|
+
provider: providerSchema,
|
|
195
|
+
week: z
|
|
196
|
+
.number()
|
|
197
|
+
.int()
|
|
198
|
+
.optional()
|
|
199
|
+
.describe('ESPN: NBA scoring period for player stats. Defaults to current week.'),
|
|
200
|
+
size: z
|
|
201
|
+
.number()
|
|
202
|
+
.int()
|
|
203
|
+
.min(1)
|
|
204
|
+
.max(200)
|
|
205
|
+
.optional()
|
|
206
|
+
.describe('ESPN: max players to return (1–200). Default 50.'),
|
|
207
|
+
position: z
|
|
208
|
+
.string()
|
|
209
|
+
.optional()
|
|
210
|
+
.describe('Position filter (ESPN: PG/SG/SF/PF/C/G/F/UT; Yahoo: PG/G/etc.).'),
|
|
211
|
+
positionId: z
|
|
212
|
+
.number()
|
|
213
|
+
.int()
|
|
214
|
+
.optional()
|
|
215
|
+
.describe('ESPN lineup slot ID filter (alternative to position).'),
|
|
216
|
+
start: z.number().int().min(0).optional().describe('Yahoo pagination offset.'),
|
|
217
|
+
count: z
|
|
218
|
+
.number()
|
|
219
|
+
.int()
|
|
220
|
+
.min(1)
|
|
221
|
+
.max(100)
|
|
222
|
+
.optional()
|
|
223
|
+
.describe('Yahoo players to return (1–100). Default 25.'),
|
|
224
|
+
status: z
|
|
225
|
+
.string()
|
|
226
|
+
.optional()
|
|
227
|
+
.describe('Yahoo ownership filter. Default FA; use W for waivers.'),
|
|
228
|
+
sort: z.string().optional().describe('Yahoo stat category to sort by.'),
|
|
229
|
+
sortType: z
|
|
230
|
+
.string()
|
|
231
|
+
.optional()
|
|
232
|
+
.describe('Yahoo stats window: season, date, lastweek, lastmonth.'),
|
|
233
|
+
sortSeason: z
|
|
234
|
+
.union([z.string(), z.number()])
|
|
235
|
+
.optional()
|
|
236
|
+
.describe('Yahoo season year used when sorting.'),
|
|
237
|
+
sortDate: z.string().optional().describe('Yahoo date (YYYY-MM-DD) for date-based sorting.'),
|
|
238
|
+
sortWeek: z.number().int().optional().describe('Yahoo week for week-based sorting.'),
|
|
239
|
+
}),
|
|
240
|
+
annotations: readOnly,
|
|
241
|
+
}, async ({ provider, week, size, position, positionId, start, count, status, sort, sortType, sortSeason, sortDate, sortWeek, }) => runTool(async () => {
|
|
242
|
+
if (provider === 'espn') {
|
|
243
|
+
const league = await getEspnLeague();
|
|
244
|
+
const players = await league.freeAgents({ week, size, position, positionId });
|
|
245
|
+
return {
|
|
246
|
+
provider,
|
|
247
|
+
players: serializeEspnPlayers(players),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
const league = await getYahooLeague();
|
|
251
|
+
const players = await league.players({
|
|
252
|
+
start,
|
|
253
|
+
count,
|
|
254
|
+
status: status ?? 'FA',
|
|
255
|
+
position,
|
|
256
|
+
sort,
|
|
257
|
+
sortType,
|
|
258
|
+
sortSeason,
|
|
259
|
+
sortDate,
|
|
260
|
+
sortWeek,
|
|
261
|
+
});
|
|
262
|
+
return {
|
|
263
|
+
provider,
|
|
264
|
+
players: serializeYahooPlayers(players),
|
|
265
|
+
};
|
|
266
|
+
}));
|
|
267
|
+
server.registerTool('getLeagueActivity', {
|
|
268
|
+
description: `<use_case>
|
|
269
|
+
Review recent league moves: adds, drops, trades, and transaction history.
|
|
270
|
+
Aliases: transactions, recent activity, waiver claims, trade history, league feed, who got dropped.
|
|
271
|
+
</use_case>
|
|
272
|
+
<important_notes>
|
|
273
|
+
ESPN supports \`scope\`: recent (activity feed), transactions, or all (both).
|
|
274
|
+
Yahoo returns transactions only. Use \`types\` or \`type\` to filter transaction kinds.
|
|
275
|
+
</important_notes>`,
|
|
276
|
+
inputSchema: z.object({
|
|
277
|
+
provider: providerSchema,
|
|
278
|
+
scope: z
|
|
279
|
+
.enum(['recent', 'transactions', 'all'])
|
|
280
|
+
.optional()
|
|
281
|
+
.describe('ESPN: which feeds to include. Default all. Yahoo ignores this.'),
|
|
282
|
+
size: z
|
|
283
|
+
.number()
|
|
284
|
+
.int()
|
|
285
|
+
.min(1)
|
|
286
|
+
.max(100)
|
|
287
|
+
.optional()
|
|
288
|
+
.describe('ESPN recent activity count (1–100). Default 25.'),
|
|
289
|
+
msgType: z
|
|
290
|
+
.string()
|
|
291
|
+
.optional()
|
|
292
|
+
.describe('ESPN activity filter: FA, WAIVER, TRADED, or DROPPED.'),
|
|
293
|
+
offset: z
|
|
294
|
+
.number()
|
|
295
|
+
.int()
|
|
296
|
+
.min(0)
|
|
297
|
+
.optional()
|
|
298
|
+
.describe('ESPN activity pagination offset. Default 0.'),
|
|
299
|
+
includeMoved: z
|
|
300
|
+
.boolean()
|
|
301
|
+
.optional()
|
|
302
|
+
.describe('ESPN: include lineup slot move events. Default false.'),
|
|
303
|
+
scoringPeriod: z
|
|
304
|
+
.number()
|
|
305
|
+
.int()
|
|
306
|
+
.optional()
|
|
307
|
+
.describe('ESPN transactions: NBA scoring period. Defaults to current.'),
|
|
308
|
+
types: z
|
|
309
|
+
.array(z.string())
|
|
310
|
+
.optional()
|
|
311
|
+
.describe('ESPN transaction types (FREEAGENT, WAIVER, TRADE_ACCEPT) or Yahoo types (add, drop, trade).'),
|
|
312
|
+
type: z.string().optional().describe('Yahoo single transaction type filter.'),
|
|
313
|
+
teamKey: z.string().optional().describe('Yahoo team key to scope transactions.'),
|
|
314
|
+
count: z
|
|
315
|
+
.number()
|
|
316
|
+
.int()
|
|
317
|
+
.min(1)
|
|
318
|
+
.max(100)
|
|
319
|
+
.optional()
|
|
320
|
+
.describe('Yahoo max transactions (1–100).'),
|
|
321
|
+
}),
|
|
322
|
+
annotations: readOnly,
|
|
323
|
+
}, async ({ provider, scope, size, msgType, offset, includeMoved, scoringPeriod, types, type, teamKey, count, }) => runTool(async () => {
|
|
324
|
+
if (provider === 'espn') {
|
|
325
|
+
const league = await getEspnLeague();
|
|
326
|
+
const effectiveScope = scope ?? 'all';
|
|
327
|
+
const result = { provider };
|
|
328
|
+
if (effectiveScope === 'recent' || effectiveScope === 'all') {
|
|
329
|
+
const activity = await league.recentActivity({
|
|
330
|
+
size,
|
|
331
|
+
msgType,
|
|
332
|
+
offset,
|
|
333
|
+
includeMoved,
|
|
334
|
+
});
|
|
335
|
+
result.recentActivity = serializeEspnActivities(activity);
|
|
336
|
+
}
|
|
337
|
+
if (effectiveScope === 'transactions' || effectiveScope === 'all') {
|
|
338
|
+
const transactions = await league.transactions({
|
|
339
|
+
scoringPeriod,
|
|
340
|
+
types: types ? new Set(types) : undefined,
|
|
341
|
+
});
|
|
342
|
+
result.transactions = serializeEspnTransactions(transactions);
|
|
343
|
+
}
|
|
344
|
+
return result;
|
|
345
|
+
}
|
|
346
|
+
const league = await getYahooLeague();
|
|
347
|
+
const transactions = await league.transactions({ type, types, teamKey, count });
|
|
348
|
+
return {
|
|
349
|
+
provider,
|
|
350
|
+
transactions: serializeYahooTransactions(transactions),
|
|
351
|
+
};
|
|
352
|
+
}));
|
|
353
|
+
server.registerTool('getDraftContext', {
|
|
354
|
+
description: `<use_case>
|
|
355
|
+
Review draft results, pick order, and auction bids.
|
|
356
|
+
Aliases: draft results, draft recap, who was drafted, auction values, pick history.
|
|
357
|
+
</use_case>
|
|
358
|
+
<important_notes>
|
|
359
|
+
Works for both ESPN and Yahoo. Returns structured pick data for the configured league season.
|
|
360
|
+
</important_notes>`,
|
|
361
|
+
inputSchema: z.object({
|
|
362
|
+
provider: providerSchema,
|
|
363
|
+
}),
|
|
364
|
+
annotations: readOnly,
|
|
365
|
+
}, async ({ provider }) => runTool(async () => {
|
|
366
|
+
if (provider === 'espn') {
|
|
367
|
+
const league = await getEspnLeague();
|
|
368
|
+
return {
|
|
369
|
+
provider,
|
|
370
|
+
draft: serializeEspnDraft(league.draft),
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
const league = await getYahooLeague();
|
|
374
|
+
const draftDoc = await league.draftResults();
|
|
375
|
+
return {
|
|
376
|
+
provider,
|
|
377
|
+
draft: serializeYahooDraft(draftDoc),
|
|
378
|
+
};
|
|
379
|
+
}));
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fantasy-basketball-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Tree-shakeable fantasy basketball API SDK for ESPN, Yahoo, Fantrax, and more",
|
|
5
5
|
"author": "Yakov Rakhamimov",
|
|
6
6
|
"type": "module",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"lint": "eslint src",
|
|
65
65
|
"format": "prettier --check .",
|
|
66
66
|
"format:write": "prettier --write .",
|
|
67
|
-
"verify": "publint && node scripts/verify-dist.mjs",
|
|
67
|
+
"verify": "publint && node scripts/verify-dist.mjs && node scripts/smoke-mcp.mjs",
|
|
68
68
|
"prepublishOnly": "npm run build && npm run verify"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
package/dist/mcp/tools/espn.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"espn.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/espn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmOzD"}
|
package/dist/mcp/tools/espn.js
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { League } from '../../espn/league.js';
|
|
3
|
-
import { readEspnConfig } from '../config.js';
|
|
4
|
-
import { runTool } from '../results.js';
|
|
5
|
-
import { serializeEspnActivities, serializeEspnBoxScores, serializeEspnDraft, serializeEspnLeague, serializeEspnMatchups, serializeEspnPlayer, serializeEspnPlayers, serializeEspnTeams, serializeEspnTransactions, } from '../serialize.js';
|
|
6
|
-
async function createEspnLeague() {
|
|
7
|
-
const config = readEspnConfig();
|
|
8
|
-
return League.create({
|
|
9
|
-
leagueId: config.leagueId,
|
|
10
|
-
seasonId: config.seasonId,
|
|
11
|
-
espnS2: config.espnS2,
|
|
12
|
-
swid: config.swid,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
export function registerEspnTools(server) {
|
|
16
|
-
server.registerTool('espn-standings', {
|
|
17
|
-
description: 'Get ESPN fantasy basketball league standings',
|
|
18
|
-
inputSchema: z.object({}),
|
|
19
|
-
annotations: { readOnlyHint: true },
|
|
20
|
-
}, async () => runTool(async () => {
|
|
21
|
-
const league = await createEspnLeague();
|
|
22
|
-
return serializeEspnTeams(league.standings());
|
|
23
|
-
}));
|
|
24
|
-
server.registerTool('espn-scoreboard', {
|
|
25
|
-
description: 'Get ESPN fantasy basketball scoreboard for a matchup period',
|
|
26
|
-
inputSchema: z.object({
|
|
27
|
-
matchupPeriod: z
|
|
28
|
-
.number()
|
|
29
|
-
.int()
|
|
30
|
-
.optional()
|
|
31
|
-
.describe("ESPN H2H matchup period (fantasy week). Defaults to the league's current matchup period."),
|
|
32
|
-
}),
|
|
33
|
-
annotations: { readOnlyHint: true },
|
|
34
|
-
}, async ({ matchupPeriod }) => runTool(async () => {
|
|
35
|
-
const league = await createEspnLeague();
|
|
36
|
-
const matchups = await league.scoreboard(matchupPeriod);
|
|
37
|
-
return serializeEspnMatchups(matchups);
|
|
38
|
-
}));
|
|
39
|
-
server.registerTool('espn-free-agents', {
|
|
40
|
-
description: 'List ESPN fantasy basketball free agents and waiver players',
|
|
41
|
-
inputSchema: z.object({
|
|
42
|
-
week: z
|
|
43
|
-
.number()
|
|
44
|
-
.int()
|
|
45
|
-
.optional()
|
|
46
|
-
.describe('NBA scoring period for player stats. Defaults to current week.'),
|
|
47
|
-
size: z
|
|
48
|
-
.number()
|
|
49
|
-
.int()
|
|
50
|
-
.min(1)
|
|
51
|
-
.max(200)
|
|
52
|
-
.optional()
|
|
53
|
-
.describe('Max players to return (1–200). Default 50.'),
|
|
54
|
-
position: z
|
|
55
|
-
.string()
|
|
56
|
-
.optional()
|
|
57
|
-
.describe('Position filter by abbreviation (e.g. PG, SG, SF, PF, C, G, F, UT).'),
|
|
58
|
-
positionId: z
|
|
59
|
-
.number()
|
|
60
|
-
.int()
|
|
61
|
-
.optional()
|
|
62
|
-
.describe('ESPN lineup slot ID filter (alternative to position).'),
|
|
63
|
-
}),
|
|
64
|
-
annotations: { readOnlyHint: true },
|
|
65
|
-
}, async ({ week, size, position, positionId }) => runTool(async () => {
|
|
66
|
-
const league = await createEspnLeague();
|
|
67
|
-
const players = await league.freeAgents({ week, size, position, positionId });
|
|
68
|
-
return serializeEspnPlayers(players);
|
|
69
|
-
}));
|
|
70
|
-
server.registerTool('espn-box-scores', {
|
|
71
|
-
description: 'Get ESPN fantasy basketball box scores',
|
|
72
|
-
inputSchema: z.object({
|
|
73
|
-
matchupPeriod: z
|
|
74
|
-
.number()
|
|
75
|
-
.int()
|
|
76
|
-
.optional()
|
|
77
|
-
.describe('ESPN H2H matchup period. Defaults to current period; pair with scoringPeriod for a specific day/week.'),
|
|
78
|
-
scoringPeriod: z
|
|
79
|
-
.number()
|
|
80
|
-
.int()
|
|
81
|
-
.optional()
|
|
82
|
-
.describe('NBA scoring period within the season. Defaults to current week; used to resolve which matchup period applies.'),
|
|
83
|
-
matchupTotal: z
|
|
84
|
-
.boolean()
|
|
85
|
-
.optional()
|
|
86
|
-
.describe('If true (default), return cumulative matchup-period totals; if false, return stats for the single scoring period only.'),
|
|
87
|
-
}),
|
|
88
|
-
annotations: { readOnlyHint: true },
|
|
89
|
-
}, async ({ matchupPeriod, scoringPeriod, matchupTotal }) => runTool(async () => {
|
|
90
|
-
const league = await createEspnLeague();
|
|
91
|
-
const boxScores = await league.boxScores({ matchupPeriod, scoringPeriod, matchupTotal });
|
|
92
|
-
return serializeEspnBoxScores(boxScores);
|
|
93
|
-
}));
|
|
94
|
-
server.registerTool('espn-recent-activity', {
|
|
95
|
-
description: 'Get recent ESPN fantasy basketball league activity',
|
|
96
|
-
inputSchema: z.object({
|
|
97
|
-
size: z
|
|
98
|
-
.number()
|
|
99
|
-
.int()
|
|
100
|
-
.min(1)
|
|
101
|
-
.max(100)
|
|
102
|
-
.optional()
|
|
103
|
-
.describe('Number of activity entries (1–100). Default 25.'),
|
|
104
|
-
msgType: z
|
|
105
|
-
.string()
|
|
106
|
-
.optional()
|
|
107
|
-
.describe('Filter by activity type: FA, WAIVER, TRADED, or DROPPED.'),
|
|
108
|
-
offset: z
|
|
109
|
-
.number()
|
|
110
|
-
.int()
|
|
111
|
-
.min(0)
|
|
112
|
-
.optional()
|
|
113
|
-
.describe('Pagination offset into the activity feed. Default 0.'),
|
|
114
|
-
includeMoved: z
|
|
115
|
-
.boolean()
|
|
116
|
-
.optional()
|
|
117
|
-
.describe('Include lineup slot move events. Default false.'),
|
|
118
|
-
}),
|
|
119
|
-
annotations: { readOnlyHint: true },
|
|
120
|
-
}, async ({ size, msgType, offset, includeMoved }) => runTool(async () => {
|
|
121
|
-
const league = await createEspnLeague();
|
|
122
|
-
const activity = await league.recentActivity({ size, msgType, offset, includeMoved });
|
|
123
|
-
return serializeEspnActivities(activity);
|
|
124
|
-
}));
|
|
125
|
-
server.registerTool('espn-transactions', {
|
|
126
|
-
description: 'Get ESPN fantasy basketball transactions',
|
|
127
|
-
inputSchema: z.object({
|
|
128
|
-
scoringPeriod: z
|
|
129
|
-
.number()
|
|
130
|
-
.int()
|
|
131
|
-
.optional()
|
|
132
|
-
.describe('NBA scoring period for transactions. Defaults to current period.'),
|
|
133
|
-
types: z
|
|
134
|
-
.array(z.string())
|
|
135
|
-
.optional()
|
|
136
|
-
.describe('Transaction type filters (e.g. FREEAGENT, WAIVER, TRADE_ACCEPT).'),
|
|
137
|
-
}),
|
|
138
|
-
annotations: { readOnlyHint: true },
|
|
139
|
-
}, async ({ scoringPeriod, types }) => runTool(async () => {
|
|
140
|
-
const league = await createEspnLeague();
|
|
141
|
-
const transactions = await league.transactions({
|
|
142
|
-
scoringPeriod,
|
|
143
|
-
types: types ? new Set(types) : undefined,
|
|
144
|
-
});
|
|
145
|
-
return serializeEspnTransactions(transactions);
|
|
146
|
-
}));
|
|
147
|
-
server.registerTool('espn-player-info', {
|
|
148
|
-
description: 'Get ESPN fantasy basketball player info by name or player ID',
|
|
149
|
-
inputSchema: z.object({
|
|
150
|
-
name: z
|
|
151
|
-
.string()
|
|
152
|
-
.optional()
|
|
153
|
-
.describe('Player name as stored in the league player map (mutually exclusive with playerId).'),
|
|
154
|
-
playerId: z
|
|
155
|
-
.union([z.number().int(), z.array(z.number().int())])
|
|
156
|
-
.optional()
|
|
157
|
-
.describe('ESPN player ID, or array of IDs.'),
|
|
158
|
-
includeNews: z
|
|
159
|
-
.boolean()
|
|
160
|
-
.optional()
|
|
161
|
-
.describe('Include recent player news. Default false.'),
|
|
162
|
-
}),
|
|
163
|
-
annotations: { readOnlyHint: true },
|
|
164
|
-
}, async ({ name, playerId, includeNews }) => runTool(async () => {
|
|
165
|
-
const league = await createEspnLeague();
|
|
166
|
-
const player = await league.playerInfo({ name, playerId, includeNews });
|
|
167
|
-
return serializeEspnPlayer(player);
|
|
168
|
-
}));
|
|
169
|
-
server.registerTool('espn-league-info', {
|
|
170
|
-
description: 'Get ESPN fantasy basketball league metadata, teams, and draft results',
|
|
171
|
-
inputSchema: z.object({}),
|
|
172
|
-
annotations: { readOnlyHint: true },
|
|
173
|
-
}, async () => runTool(async () => {
|
|
174
|
-
const league = await createEspnLeague();
|
|
175
|
-
return {
|
|
176
|
-
league: serializeEspnLeague(league),
|
|
177
|
-
teams: serializeEspnTeams(league.teams),
|
|
178
|
-
draft: serializeEspnDraft(league.draft),
|
|
179
|
-
};
|
|
180
|
-
}));
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=espn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"espn.js","sourceRoot":"","sources":["../../../src/mcp/tools/espn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yahoo.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/yahoo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwM1D"}
|
package/dist/mcp/tools/yahoo.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { League } from '../../yahoo/models/league.js';
|
|
3
|
-
import { readYahooConfig } from '../config.js';
|
|
4
|
-
import { runTool } from '../results.js';
|
|
5
|
-
import { serializeYahooMatchups, serializeYahooSettings, serializeYahooTeams, } from '../serialize.js';
|
|
6
|
-
async function createYahooLeague() {
|
|
7
|
-
const config = readYahooConfig();
|
|
8
|
-
return League.create({
|
|
9
|
-
accessToken: config.accessToken,
|
|
10
|
-
leagueKey: config.leagueKey,
|
|
11
|
-
leagueId: config.leagueId,
|
|
12
|
-
season: config.season,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
export function registerYahooTools(server) {
|
|
16
|
-
server.registerTool('yahoo-standings', {
|
|
17
|
-
description: 'Get Yahoo fantasy basketball league standings',
|
|
18
|
-
inputSchema: z.object({}),
|
|
19
|
-
annotations: { readOnlyHint: true },
|
|
20
|
-
}, async () => runTool(async () => {
|
|
21
|
-
const league = await createYahooLeague();
|
|
22
|
-
return serializeYahooTeams(await league.standings());
|
|
23
|
-
}));
|
|
24
|
-
server.registerTool('yahoo-scoreboard', {
|
|
25
|
-
description: 'Get Yahoo fantasy basketball scoreboard for a week',
|
|
26
|
-
inputSchema: z.object({
|
|
27
|
-
week: z
|
|
28
|
-
.number()
|
|
29
|
-
.int()
|
|
30
|
-
.optional()
|
|
31
|
-
.describe('Fantasy week number. Defaults to current week.'),
|
|
32
|
-
}),
|
|
33
|
-
annotations: { readOnlyHint: true },
|
|
34
|
-
}, async ({ week }) => runTool(async () => {
|
|
35
|
-
const league = await createYahooLeague();
|
|
36
|
-
return serializeYahooMatchups(await league.scoreboard(week));
|
|
37
|
-
}));
|
|
38
|
-
server.registerTool('yahoo-teams', {
|
|
39
|
-
description: 'List Yahoo fantasy basketball teams in the league',
|
|
40
|
-
inputSchema: z.object({}),
|
|
41
|
-
annotations: { readOnlyHint: true },
|
|
42
|
-
}, async () => runTool(async () => {
|
|
43
|
-
const league = await createYahooLeague();
|
|
44
|
-
return serializeYahooTeams(await league.teamsList());
|
|
45
|
-
}));
|
|
46
|
-
server.registerTool('yahoo-players', {
|
|
47
|
-
description: 'Search Yahoo fantasy basketball players in the league player pool',
|
|
48
|
-
inputSchema: z.object({
|
|
49
|
-
start: z
|
|
50
|
-
.number()
|
|
51
|
-
.int()
|
|
52
|
-
.min(0)
|
|
53
|
-
.optional()
|
|
54
|
-
.describe('Zero-based pagination offset into the player pool.'),
|
|
55
|
-
count: z
|
|
56
|
-
.number()
|
|
57
|
-
.int()
|
|
58
|
-
.min(1)
|
|
59
|
-
.max(100)
|
|
60
|
-
.optional()
|
|
61
|
-
.describe('Players to return (1–100). Default 25.'),
|
|
62
|
-
status: z
|
|
63
|
-
.string()
|
|
64
|
-
.optional()
|
|
65
|
-
.describe('Ownership filter: A (all), FA, W (waivers), T (taken), K (keepers).'),
|
|
66
|
-
position: z
|
|
67
|
-
.string()
|
|
68
|
-
.optional()
|
|
69
|
-
.describe('Roster position filter (e.g. PG, G).'),
|
|
70
|
-
search: z.string().optional().describe('Name search string.'),
|
|
71
|
-
sort: z.string().optional().describe('Stat category to sort by.'),
|
|
72
|
-
sortType: z
|
|
73
|
-
.string()
|
|
74
|
-
.optional()
|
|
75
|
-
.describe('Stats window: season, date, lastweek, lastmonth.'),
|
|
76
|
-
sortSeason: z
|
|
77
|
-
.union([z.string(), z.number()])
|
|
78
|
-
.optional()
|
|
79
|
-
.describe('Season year used when sorting.'),
|
|
80
|
-
sortDate: z
|
|
81
|
-
.string()
|
|
82
|
-
.optional()
|
|
83
|
-
.describe('Date (YYYY-MM-DD) for date-based sorting.'),
|
|
84
|
-
sortWeek: z
|
|
85
|
-
.number()
|
|
86
|
-
.int()
|
|
87
|
-
.optional()
|
|
88
|
-
.describe('Week number for week-based sorting.'),
|
|
89
|
-
}),
|
|
90
|
-
annotations: { readOnlyHint: true },
|
|
91
|
-
}, async (filters) => runTool(async () => {
|
|
92
|
-
const league = await createYahooLeague();
|
|
93
|
-
return await league.players(filters);
|
|
94
|
-
}));
|
|
95
|
-
server.registerTool('yahoo-transactions', {
|
|
96
|
-
description: 'Get Yahoo fantasy basketball league transactions',
|
|
97
|
-
inputSchema: z.object({
|
|
98
|
-
type: z
|
|
99
|
-
.string()
|
|
100
|
-
.optional()
|
|
101
|
-
.describe('Single transaction type: add, drop, commish, or trade.'),
|
|
102
|
-
types: z
|
|
103
|
-
.array(z.string())
|
|
104
|
-
.optional()
|
|
105
|
-
.describe('Multiple transaction types (comma-separated in the API).'),
|
|
106
|
-
teamKey: z.string().optional().describe('Yahoo team key to scope transactions.'),
|
|
107
|
-
count: z
|
|
108
|
-
.number()
|
|
109
|
-
.int()
|
|
110
|
-
.min(1)
|
|
111
|
-
.max(100)
|
|
112
|
-
.optional()
|
|
113
|
-
.describe('Max transactions to return (1–100).'),
|
|
114
|
-
}),
|
|
115
|
-
annotations: { readOnlyHint: true },
|
|
116
|
-
}, async (filters) => runTool(async () => {
|
|
117
|
-
const league = await createYahooLeague();
|
|
118
|
-
return await league.transactions(filters);
|
|
119
|
-
}));
|
|
120
|
-
server.registerTool('yahoo-draft-results', {
|
|
121
|
-
description: 'Get Yahoo fantasy basketball draft results',
|
|
122
|
-
inputSchema: z.object({}),
|
|
123
|
-
annotations: { readOnlyHint: true },
|
|
124
|
-
}, async () => runTool(async () => {
|
|
125
|
-
const league = await createYahooLeague();
|
|
126
|
-
return await league.draftResults();
|
|
127
|
-
}));
|
|
128
|
-
server.registerTool('yahoo-player-stats', {
|
|
129
|
-
description: 'Get Yahoo fantasy basketball player stats for one or more player IDs',
|
|
130
|
-
inputSchema: z.object({
|
|
131
|
-
playerIds: z
|
|
132
|
-
.array(z.union([z.string(), z.number()]))
|
|
133
|
-
.min(1)
|
|
134
|
-
.describe('One or more Yahoo player IDs.'),
|
|
135
|
-
reqType: z
|
|
136
|
-
.string()
|
|
137
|
-
.optional()
|
|
138
|
-
.describe('Stats window: season, date, lastweek, lastmonth, average_season. Default date.'),
|
|
139
|
-
date: z
|
|
140
|
-
.string()
|
|
141
|
-
.optional()
|
|
142
|
-
.describe('Date (YYYY-MM-DD) when reqType is date.'),
|
|
143
|
-
}),
|
|
144
|
-
annotations: { readOnlyHint: true },
|
|
145
|
-
}, async ({ playerIds, reqType, date }) => runTool(async () => {
|
|
146
|
-
const league = await createYahooLeague();
|
|
147
|
-
return await league.playerStats(playerIds, reqType, date);
|
|
148
|
-
}));
|
|
149
|
-
server.registerTool('yahoo-league-info', {
|
|
150
|
-
description: 'Get Yahoo fantasy basketball league metadata and settings',
|
|
151
|
-
inputSchema: z.object({}),
|
|
152
|
-
annotations: { readOnlyHint: true },
|
|
153
|
-
}, async () => runTool(async () => {
|
|
154
|
-
const league = await createYahooLeague();
|
|
155
|
-
const [metadata, settings] = await Promise.all([
|
|
156
|
-
league.metadata(),
|
|
157
|
-
league.fetchSettings(),
|
|
158
|
-
]);
|
|
159
|
-
return {
|
|
160
|
-
metadata,
|
|
161
|
-
settings: serializeYahooSettings(settings),
|
|
162
|
-
};
|
|
163
|
-
}));
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=yahoo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yahoo.js","sourceRoot":"","sources":["../../../src/mcp/tools/yahoo.ts"],"names":[],"mappings":"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"}
|