@apicity/mcp-server 0.1.0-alpha.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Justin Tanner
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,124 @@
1
+ # @apicity/mcp-server
2
+
3
+ Optional MCP (Model Context Protocol) server that exposes every endpoint from
4
+ the `@apicity/*` provider packages as a tool. One MCP tool per upstream
5
+ endpoint — no new abstractions, no curated subset.
6
+
7
+ The endpoint list is sourced from the monorepo's `scripts/endpoint-docs.tsv`
8
+ (also bundled into `dist/endpoint-docs.tsv` for installed users), so it stays
9
+ in lockstep with the providers.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ npm install @apicity/mcp-server
15
+ # or
16
+ pnpm add @apicity/mcp-server
17
+ # plus whichever providers you want exposed:
18
+ pnpm add @apicity/openai @apicity/anthropic @apicity/xai @apicity/fal
19
+ ```
20
+
21
+ ## Run
22
+
23
+ ```bash
24
+ # Stdio server. Logs to stderr; stdout is reserved for MCP framing.
25
+ OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-... \
26
+ npx apicity-mcp --output-dir ./apicity-out
27
+ ```
28
+
29
+ ### Flags
30
+
31
+ | Flag | Description |
32
+ | --------------------- | ------------------------------------------------------------------ |
33
+ | `--output-dir <path>` | Where binary results and downloaded media URLs land. |
34
+ | `--providers <csv>` | Allow-list of providers (default: every one with its env var set). |
35
+ | `--help` | Print usage. |
36
+
37
+ ### Credentials
38
+
39
+ | Provider | Env var |
40
+ | ------------ | ---------------------- |
41
+ | `openai` | `OPENAI_API_KEY` |
42
+ | `xai` | `XAI_API_KEY` |
43
+ | `anthropic` | `ANTHROPIC_API_KEY` |
44
+ | `fireworks` | `FIREWORKS_API_KEY` |
45
+ | `fal` | `FAL_API_KEY` |
46
+ | `kie` | `KIE_API_KEY` |
47
+ | `kimicoding` | `KIMI_CODING_API_KEY` |
48
+ | `alibaba` | `DASHSCOPE_API_KEY` |
49
+ | `elevenlabs` | `ELEVENLABS_API_KEY` |
50
+ | `x` | `X_ACCESS_TOKEN` |
51
+ | `ig` | `IG_ACCESS_TOKEN` |
52
+ | `free` | _(none — public APIs)_ |
53
+
54
+ Providers without their env var set are silently skipped.
55
+
56
+ ## Tool naming
57
+
58
+ Every tool is named `<provider>_<dotPath_with_underscores>` and corresponds 1-1
59
+ to a row in `scripts/endpoint-docs.tsv`. Examples:
60
+
61
+ - `openai_v1_chat_completions` → `POST https://api.openai.com/v1/chat/completions`
62
+ - `anthropic_v1_messages` → `POST https://api.anthropic.com/v1/messages`
63
+ - `xai_v1_images_generations` → `POST https://api.x.ai/v1/images/generations`
64
+ - `kie_api_v1_jobs_recordInfo` → `GET https://api.kie.ai/api/v1/jobs/recordInfo`
65
+
66
+ The tool description always includes the upstream URL and docs URL.
67
+
68
+ ## Output handling
69
+
70
+ When `--output-dir` is set:
71
+
72
+ - **Binary responses** (`ArrayBuffer` / `Uint8Array`, e.g. `openai_v1_audio_speech`)
73
+ are written to the directory; the tool result is `{ savedTo, bytes }`.
74
+ - **JSON responses with media URLs** (keys `url`, `download_url`, `audio_url`,
75
+ `video_url`, `image_url`, `file_url`, in either snake or camel case) are
76
+ scanned shallowly. Each URL is downloaded and a sibling `*_savedTo` field is
77
+ added next to the original URL. Failures are inlined as
78
+ `*_savedTo: "error: ..."` and don't break the response.
79
+ - Streaming endpoints (anthropic streams, etc.) are buffered into an array.
80
+
81
+ Without `--output-dir`, binary results are summarized as a byte count and URLs
82
+ pass through untouched.
83
+
84
+ ## Programmatic use
85
+
86
+ ```ts
87
+ import { startServer } from "@apicity/mcp-server";
88
+
89
+ await startServer({
90
+ outputDir: "./out",
91
+ enabledProviders: ["openai", "anthropic"],
92
+ });
93
+ ```
94
+
95
+ `buildRegistry()` and `zodToJsonSchema()` are also exported if you want to
96
+ embed the registry into your own MCP server.
97
+
98
+ ## Claude Desktop config
99
+
100
+ ```json
101
+ {
102
+ "mcpServers": {
103
+ "apicity": {
104
+ "command": "npx",
105
+ "args": [
106
+ "-y",
107
+ "@apicity/mcp-server",
108
+ "--output-dir",
109
+ "/Users/me/apicity-out"
110
+ ],
111
+ "env": {
112
+ "OPENAI_API_KEY": "sk-...",
113
+ "ANTHROPIC_API_KEY": "sk-..."
114
+ }
115
+ }
116
+ }
117
+ }
118
+ ```
119
+
120
+ Part of the [apicity](https://github.com/justintanner/apicity) monorepo.
121
+
122
+ ## License
123
+
124
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,345 @@
1
+ provider dotPath method fullUrl docsUrl
2
+ alibaba api.v1.services.aigc.multimodalGeneration.generation POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation https://www.alibabacloud.com/help/en/model-studio/qwen-image-edit
3
+ alibaba api.v1.services.aigc.videoGeneration.videoSynthesis POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis https://help.aliyun.com/zh/model-studio
4
+ alibaba api.v1.tasks GET https://dashscope.aliyuncs.com/api/v1/tasks/{taskId} https://help.aliyun.com/zh/model-studio
5
+ alibaba api.v1.uploads GET https://dashscope.aliyuncs.com/api/v1/uploads https://help.aliyun.com/zh/model-studio
6
+ alibaba compatibleMode.v1.chat.completions POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions https://help.aliyun.com/zh/model-studio
7
+ alibaba compatibleMode.v1.models GET https://dashscope.aliyuncs.com/compatible-mode/v1/models https://help.aliyun.com/zh/model-studio
8
+ anthropic v1.files POST https://api.anthropic.com/v1/files https://docs.anthropic.com/en/api
9
+ anthropic v1.files.content GET https://api.anthropic.com/v1/files/{fileId}/content https://docs.anthropic.com/en/api
10
+ anthropic v1.files.del DELETE https://api.anthropic.com/v1/files/{fileId} https://docs.anthropic.com/en/api
11
+ anthropic v1.files.list GET https://api.anthropic.com/v1/files https://docs.anthropic.com/en/api
12
+ anthropic v1.files.retrieve GET https://api.anthropic.com/v1/files/{fileId} https://docs.anthropic.com/en/api
13
+ anthropic v1.messages POST https://api.anthropic.com/v1/messages https://docs.anthropic.com/en/api
14
+ anthropic v1.messages.batches POST https://api.anthropic.com/v1/messages/batches https://docs.anthropic.com/en/api
15
+ anthropic v1.messages.batches.cancel POST https://api.anthropic.com/v1/messages/batches/{batchId}/cancel https://docs.anthropic.com/en/api
16
+ anthropic v1.messages.batches.del DELETE https://api.anthropic.com/v1/messages/batches/{batchId} https://docs.anthropic.com/en/api
17
+ anthropic v1.messages.batches.list GET https://api.anthropic.com/v1/messages/batches https://docs.anthropic.com/en/api
18
+ anthropic v1.messages.batches.results GET https://api.anthropic.com/v1/messages/batches/{batchId}/results https://docs.anthropic.com/en/api
19
+ anthropic v1.messages.batches.retrieve GET https://api.anthropic.com/v1/messages/batches/{batchId} https://docs.anthropic.com/en/api
20
+ anthropic v1.messages.countTokens POST https://api.anthropic.com/v1/messages/count_tokens https://docs.anthropic.com/en/api
21
+ anthropic v1.models.list GET https://api.anthropic.com/v1/models https://docs.anthropic.com/en/api
22
+ anthropic v1.models.retrieve GET https://api.anthropic.com/v1/models/{modelId} https://docs.anthropic.com/en/api
23
+ anthropic v1.skills.create POST https://api.anthropic.com/v1/skills https://docs.anthropic.com/en/api
24
+ anthropic v1.skills.del DELETE https://api.anthropic.com/v1/skills/{skillId} https://docs.anthropic.com/en/api
25
+ anthropic v1.skills.list GET https://api.anthropic.com/v1/skills https://docs.anthropic.com/en/api
26
+ anthropic v1.skills.retrieve GET https://api.anthropic.com/v1/skills/{skillId} https://docs.anthropic.com/en/api
27
+ anthropic v1.skills.versions.create POST https://api.anthropic.com/v1/skills/{skillId}/versions https://docs.anthropic.com/en/api
28
+ anthropic v1.skills.versions.del DELETE https://api.anthropic.com/v1/skills/{skillId}/versions/{version} https://docs.anthropic.com/en/api
29
+ anthropic v1.skills.versions.list GET https://api.anthropic.com/v1/skills/{skillId}/versions https://docs.anthropic.com/en/api
30
+ elevenlabs v1.soundGeneration POST https://api.elevenlabs.io/v1/sound-generation https://elevenlabs.io/docs/api-reference/text-to-sound-effects/convert
31
+ elevenlabs v1.speechToText POST https://api.elevenlabs.io/v1/speech-to-text https://elevenlabs.io/docs/api-reference/speech-to-text/convert
32
+ fal bytedance.seedance2p0.imageToVideo POST https://api.fal.ai/v1/bytedance/seedance-2.0/image-to-video https://docs.fal.ai
33
+ fal bytedance.seedance2p0.textToVideo POST https://api.fal.ai/v1/bytedance/seedance-2.0/text-to-video https://docs.fal.ai
34
+ fal bytedance.seedance2p0.fast.imageToVideo POST https://api.fal.ai/v1/bytedance/seedance-2.0/fast/image-to-video https://docs.fal.ai
35
+ fal bytedance.seedance2p0.fast.textToVideo POST https://api.fal.ai/v1/bytedance/seedance-2.0/fast/text-to-video https://docs.fal.ai
36
+ fal bytedance.seedream.v5.lite.edit POST https://api.fal.ai/v1/fal-ai/bytedance/seedream/v5/lite/edit https://docs.fal.ai
37
+ fal bytedance.seedream.v5.lite.textToImage POST https://api.fal.ai/v1/fal-ai/bytedance/seedream/v5/lite/text-to-image https://docs.fal.ai
38
+ fal falAi.elevenlabs.speechToText.scribeV2 POST https://api.fal.ai/v1/fal-ai/elevenlabs/speech-to-text/scribe-v2 https://docs.fal.ai
39
+ fal gptImage1p5 POST https://api.fal.ai/v1/fal-ai/gpt-image-1.5 https://docs.fal.ai
40
+ fal gptImage1p5.edit POST https://api.fal.ai/v1/fal-ai/gpt-image-1.5/edit https://docs.fal.ai
41
+ fal klingVideo.v3.pro.imageToVideo POST https://api.fal.ai/v1/fal-ai/kling-video/v3/pro/image-to-video https://docs.fal.ai
42
+ fal klingVideo.v3.pro.textToVideo POST https://api.fal.ai/v1/fal-ai/kling-video/v3/pro/text-to-video https://docs.fal.ai
43
+ fal klingVideo.v3.standard.imageToVideo POST https://api.fal.ai/v1/fal-ai/kling-video/v3/standard/image-to-video https://docs.fal.ai
44
+ fal klingVideo.v3.standard.textToVideo POST https://api.fal.ai/v1/fal-ai/kling-video/v3/standard/text-to-video https://docs.fal.ai
45
+ fal klingVideo.o3p4k.imageToVideo POST https://api.fal.ai/v1/fal-ai/kling-video/o3/4k/image-to-video https://docs.fal.ai
46
+ fal klingVideo.o3p4k.referenceToVideo POST https://api.fal.ai/v1/fal-ai/kling-video/o3/4k/reference-to-video https://docs.fal.ai
47
+ fal klingVideo.o3p4k.textToVideo POST https://api.fal.ai/v1/fal-ai/kling-video/o3/4k/text-to-video https://docs.fal.ai
48
+ fal nanoBanana.edit POST https://api.fal.ai/v1/fal-ai/nano-banana/edit https://docs.fal.ai
49
+ fal nanoBanana.textToImage POST https://api.fal.ai/v1/fal-ai/nano-banana https://docs.fal.ai
50
+ fal nanoBanana2.edit POST https://api.fal.ai/v1/fal-ai/nano-banana-2/edit https://docs.fal.ai
51
+ fal nanoBanana2.textToImage POST https://api.fal.ai/v1/fal-ai/nano-banana-2 https://docs.fal.ai
52
+ fal nanoBananaPro.edit POST https://api.fal.ai/v1/fal-ai/nano-banana-pro/edit https://docs.fal.ai
53
+ fal nanoBananaPro.textToImage POST https://api.fal.ai/v1/fal-ai/nano-banana-pro https://docs.fal.ai
54
+ fal qwenImage POST https://api.fal.ai/v1/fal-ai/qwen-image https://docs.fal.ai
55
+ fal qwenImage.edit POST https://api.fal.ai/v1/fal-ai/qwen-image-edit https://docs.fal.ai
56
+ fal sora2.imageToVideo POST https://api.fal.ai/v1/fal-ai/sora-2/image-to-video https://docs.fal.ai
57
+ fal sora2.textToVideo POST https://api.fal.ai/v1/fal-ai/sora-2/text-to-video https://docs.fal.ai
58
+ fal v1.models GET https://api.fal.ai/v1/models https://docs.fal.ai
59
+ fal v1.models.pricing GET https://api.fal.ai/v1/models/pricing https://docs.fal.ai
60
+ fal v1.models.pricing.estimate GET https://api.fal.ai/v1/models/pricing/estimate https://docs.fal.ai
61
+ fal v1.models.pricing.estimate POST https://api.fal.ai/v1/models/pricing/estimate https://docs.fal.ai
62
+ fal v1.models.requests.payloads DELETE https://api.fal.ai/v1/models/requests/{param}/payloads https://docs.fal.ai
63
+ fal v1.models.requests.payloads GET https://api.fal.ai/v1/models/requests/{param}/payloads https://docs.fal.ai
64
+ fal v1.queue.submit POST https://api.fal.ai/v1/POST https://docs.fal.ai
65
+ fal v1.serverless.files.uploadLocal POST https://api.fal.ai/v1/serverless/files/file/local/{param} https://docs.fal.ai
66
+ fal v1.serverless.files.uploadUrl POST https://api.fal.ai/v1/serverless/files/file/url/{param} https://docs.fal.ai
67
+ fal storage.upload.initiate POST https://rest.fal.ai/storage/upload/initiate https://docs.fal.ai
68
+ fal storage.upload.initiateMultipart POST https://rest.fal.ai/storage/upload/initiate-multipart https://docs.fal.ai
69
+ fal storage.upload.completeMultipart POST https://rest.fal.ai/storage/upload/complete-multipart https://docs.fal.ai
70
+ fal v1.serverless.logs POST https://api.fal.ai/v1/serverless/logs/stream https://docs.fal.ai
71
+ fal v1.workflows GET https://api.fal.ai/v1/workflows https://docs.fal.ai
72
+ fal veo3p1.imageToVideo POST https://api.fal.ai/v1/fal-ai/veo3.1/image-to-video https://docs.fal.ai
73
+ fal veo3p1.textToVideo POST https://api.fal.ai/v1/fal-ai/veo3.1 https://docs.fal.ai
74
+ fal wan.v2p7.edit POST https://api.fal.ai/v1/fal-ai/wan/v2.7/edit https://docs.fal.ai
75
+ fal wan.v2p7.textToVideo POST https://api.fal.ai/v1/fal-ai/wan/v2.7/text-to-video https://docs.fal.ai
76
+ fal wan.v2p7.imageToVideo POST https://api.fal.ai/v1/fal-ai/wan/v2.7/image-to-video https://docs.fal.ai
77
+ fal wan.v2p7.pro.edit POST https://api.fal.ai/v1/fal-ai/wan/v2.7/pro/edit https://docs.fal.ai
78
+ fal wan.v2p7.pro.textToImage POST https://api.fal.ai/v1/fal-ai/wan/v2.7/pro/text-to-image https://docs.fal.ai
79
+ fal wan.v2p7.textToImage POST https://api.fal.ai/v1/fal-ai/wan/v2.7/text-to-image https://docs.fal.ai
80
+ fal hunyuan.v3.instructEdit POST https://api.fal.ai/v1/fal-ai/hunyuan-image/v3/instruct/edit https://docs.fal.ai
81
+ fal xai.grokImagineImage POST https://api.fal.ai/v1/xai/grok-imagine-image https://docs.fal.ai
82
+ fal xai.grokImagineImage.edit POST https://api.fal.ai/v1/xai/grok-imagine-image/edit https://docs.fal.ai
83
+ fal xai.grokImagineVideo.imageToVideo POST https://api.fal.ai/v1/xai/grok-imagine-video/image-to-video https://docs.fal.ai
84
+ fal xai.grokImagineVideo.referenceToVideo POST https://api.fal.ai/v1/xai/grok-imagine-video/reference-to-video https://docs.fal.ai
85
+ fal xai.grokImagineVideo.extendVideo POST https://api.fal.ai/v1/xai/grok-imagine-video/extend-video https://docs.fal.ai
86
+ fal xai.grokImagineVideo.editVideo POST https://api.fal.ai/v1/xai/grok-imagine-video/edit-video https://docs.fal.ai
87
+ fireworks inference.v1.accounts GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId} https://docs.fireworks.ai/api-reference
88
+ fireworks inference.v1.accounts.apiKeys DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/users/{userId}/apiKeys:delete https://docs.fireworks.ai/api-reference
89
+ fireworks inference.v1.accounts.apiKeys.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/users/{userId}/apiKeys https://docs.fireworks.ai/api-reference
90
+ fireworks inference.v1.accounts.apiKeys.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/users/{userId}/apiKeys https://docs.fireworks.ai/api-reference
91
+ fireworks inference.v1.accounts.batchInferenceJobs DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/batchInferenceJobs/{jobId} https://docs.fireworks.ai/api-reference
92
+ fireworks inference.v1.accounts.batchInferenceJobs GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/batchInferenceJobs/{jobId} https://docs.fireworks.ai/api-reference
93
+ fireworks inference.v1.accounts.batchInferenceJobs.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/batchInferenceJobs https://docs.fireworks.ai/api-reference
94
+ fireworks inference.v1.accounts.batchInferenceJobs.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/batchInferenceJobs https://docs.fireworks.ai/api-reference
95
+ fireworks inference.v1.accounts.datasets DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/datasets/{datasetId} https://docs.fireworks.ai/api-reference
96
+ fireworks inference.v1.accounts.datasets GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/datasets/{datasetId} https://docs.fireworks.ai/api-reference
97
+ fireworks inference.v1.accounts.datasets.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/datasets https://docs.fireworks.ai/api-reference
98
+ fireworks inference.v1.accounts.datasets.getDownloadEndpoint GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/datasets/{datasetId}:getDownloadEndpoint https://docs.fireworks.ai/api-reference
99
+ fireworks inference.v1.accounts.datasets.getUploadEndpoint POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/datasets/{datasetId}:getUploadEndpoint https://docs.fireworks.ai/api-reference
100
+ fireworks inference.v1.accounts.datasets.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/datasets https://docs.fireworks.ai/api-reference
101
+ fireworks inference.v1.accounts.datasets.update PATCH https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/datasets/{datasetId} https://docs.fireworks.ai/api-reference
102
+ fireworks inference.v1.accounts.datasets.validateUpload POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/datasets/{datasetId}:validateUpload https://docs.fireworks.ai/api-reference
103
+ fireworks inference.v1.accounts.deployedModels DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployedModels/{deployedModelId} https://docs.fireworks.ai/api-reference
104
+ fireworks inference.v1.accounts.deployedModels GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployedModels/{deployedModelId} https://docs.fireworks.ai/api-reference
105
+ fireworks inference.v1.accounts.deployedModels.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployedModels https://docs.fireworks.ai/api-reference
106
+ fireworks inference.v1.accounts.deployedModels.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployedModels https://docs.fireworks.ai/api-reference
107
+ fireworks inference.v1.accounts.deployedModels.update PATCH https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployedModels/{deployedModelId} https://docs.fireworks.ai/api-reference
108
+ fireworks inference.v1.accounts.deploymentShapes GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deploymentShapes/{shapeId} https://docs.fireworks.ai/api-reference
109
+ fireworks inference.v1.accounts.deploymentShapes.versions GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deploymentShapes/{shapeId}/versions/{versionId} https://docs.fireworks.ai/api-reference
110
+ fireworks inference.v1.accounts.deploymentShapes.versions.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deploymentShapes/{shapeId}/versions https://docs.fireworks.ai/api-reference
111
+ fireworks inference.v1.accounts.deployments DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployments/{deploymentId} https://docs.fireworks.ai/api-reference
112
+ fireworks inference.v1.accounts.deployments GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployments/{deploymentId} https://docs.fireworks.ai/api-reference
113
+ fireworks inference.v1.accounts.deployments.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployments https://docs.fireworks.ai/api-reference
114
+ fireworks inference.v1.accounts.deployments.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployments https://docs.fireworks.ai/api-reference
115
+ fireworks inference.v1.accounts.deployments.scale PATCH https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployments/{deploymentId}:scale https://docs.fireworks.ai/api-reference
116
+ fireworks inference.v1.accounts.deployments.undelete POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployments/{deploymentId}:undelete https://docs.fireworks.ai/api-reference
117
+ fireworks inference.v1.accounts.deployments.update PATCH https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/deployments/{deploymentId} https://docs.fireworks.ai/api-reference
118
+ fireworks inference.v1.accounts.dpoJobs DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/dpoJobs/{jobId} https://docs.fireworks.ai/api-reference
119
+ fireworks inference.v1.accounts.dpoJobs GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/dpoJobs/{jobId} https://docs.fireworks.ai/api-reference
120
+ fireworks inference.v1.accounts.dpoJobs.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/dpoJobs https://docs.fireworks.ai/api-reference
121
+ fireworks inference.v1.accounts.dpoJobs.getMetricsFileEndpoint GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/dpoJobs/{jobId}:getMetricsFileEndpoint https://docs.fireworks.ai/api-reference
122
+ fireworks inference.v1.accounts.dpoJobs.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/dpoJobs https://docs.fireworks.ai/api-reference
123
+ fireworks inference.v1.accounts.dpoJobs.resume POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/dpoJobs/{jobId}:resume https://docs.fireworks.ai/api-reference
124
+ fireworks inference.v1.accounts.evaluationJobs DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluationJobs/{evaluationJobId} https://docs.fireworks.ai/api-reference
125
+ fireworks inference.v1.accounts.evaluationJobs GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluationJobs/{evaluationJobId} https://docs.fireworks.ai/api-reference
126
+ fireworks inference.v1.accounts.evaluationJobs.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluationJobs https://docs.fireworks.ai/api-reference
127
+ fireworks inference.v1.accounts.evaluationJobs.getExecutionLogEndpoint GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluationJobs/{evaluationJobId}:getExecutionLogEndpoint https://docs.fireworks.ai/api-reference
128
+ fireworks inference.v1.accounts.evaluationJobs.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluationJobs https://docs.fireworks.ai/api-reference
129
+ fireworks inference.v1.accounts.evaluators DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluators/{evaluatorId} https://docs.fireworks.ai/api-reference
130
+ fireworks inference.v1.accounts.evaluators GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluators/{evaluatorId} https://docs.fireworks.ai/api-reference
131
+ fireworks inference.v1.accounts.evaluators.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluatorsV2 https://docs.fireworks.ai/api-reference
132
+ fireworks inference.v1.accounts.evaluators.getBuildLogEndpoint GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluators/{evaluatorId}:getBuildLogEndpoint https://docs.fireworks.ai/api-reference
133
+ fireworks inference.v1.accounts.evaluators.getSourceCodeSignedUrl GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluators/{evaluatorId}:getSourceCodeSignedUrl https://docs.fireworks.ai/api-reference
134
+ fireworks inference.v1.accounts.evaluators.getUploadEndpoint POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluators/{evaluatorId}:getUploadEndpoint https://docs.fireworks.ai/api-reference
135
+ fireworks inference.v1.accounts.evaluators.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluators https://docs.fireworks.ai/api-reference
136
+ fireworks inference.v1.accounts.evaluators.update PATCH https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluators/{evaluatorId} https://docs.fireworks.ai/api-reference
137
+ fireworks inference.v1.accounts.evaluators.validateUpload POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/evaluators/{evaluatorId}:validateUpload https://docs.fireworks.ai/api-reference
138
+ fireworks inference.v1.accounts.list GET https://api.fireworks.ai/inference/v1/v1/accounts https://docs.fireworks.ai/api-reference
139
+ fireworks inference.v1.accounts.models DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models/{modelId} https://docs.fireworks.ai/api-reference
140
+ fireworks inference.v1.accounts.models GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models/{modelId} https://docs.fireworks.ai/api-reference
141
+ fireworks inference.v1.accounts.models.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models https://docs.fireworks.ai/api-reference
142
+ fireworks inference.v1.accounts.models.getDownloadEndpoint GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models/{modelId}:getDownloadEndpoint https://docs.fireworks.ai/api-reference
143
+ fireworks inference.v1.accounts.models.getUploadEndpoint POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models/{modelId}:getUploadEndpoint https://docs.fireworks.ai/api-reference
144
+ fireworks inference.v1.accounts.models.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models https://docs.fireworks.ai/api-reference
145
+ fireworks inference.v1.accounts.models.prepare POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models/{modelId}:prepare https://docs.fireworks.ai/api-reference
146
+ fireworks inference.v1.accounts.models.update PATCH https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models/{modelId} https://docs.fireworks.ai/api-reference
147
+ fireworks inference.v1.accounts.models.validateUpload GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/models/{modelId}:validateUpload https://docs.fireworks.ai/api-reference
148
+ fireworks inference.v1.accounts.reinforcementFineTuningJobs DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/reinforcementFineTuningJobs/{jobId} https://docs.fireworks.ai/api-reference
149
+ fireworks inference.v1.accounts.reinforcementFineTuningJobs GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/reinforcementFineTuningJobs/{jobId} https://docs.fireworks.ai/api-reference
150
+ fireworks inference.v1.accounts.reinforcementFineTuningJobs.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/reinforcementFineTuningJobs https://docs.fireworks.ai/api-reference
151
+ fireworks inference.v1.accounts.reinforcementFineTuningJobs.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/reinforcementFineTuningJobs https://docs.fireworks.ai/api-reference
152
+ fireworks inference.v1.accounts.reinforcementFineTuningJobs.resume POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/reinforcementFineTuningJobs/{jobId}:resume https://docs.fireworks.ai/api-reference
153
+ fireworks inference.v1.accounts.rlorTrainerJobs DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/rlorTrainerJobs/{jobId} https://docs.fireworks.ai/api-reference
154
+ fireworks inference.v1.accounts.rlorTrainerJobs GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/rlorTrainerJobs/{jobId} https://docs.fireworks.ai/api-reference
155
+ fireworks inference.v1.accounts.rlorTrainerJobs.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/rlorTrainerJobs https://docs.fireworks.ai/api-reference
156
+ fireworks inference.v1.accounts.rlorTrainerJobs.executeTrainStep POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/rlorTrainerJobs/{jobId}:executeTrainStep https://docs.fireworks.ai/api-reference
157
+ fireworks inference.v1.accounts.rlorTrainerJobs.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/rlorTrainerJobs https://docs.fireworks.ai/api-reference
158
+ fireworks inference.v1.accounts.rlorTrainerJobs.resume POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/rlorTrainerJobs/{jobId}:resume https://docs.fireworks.ai/api-reference
159
+ fireworks inference.v1.accounts.secrets DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/secrets/{secretId} https://docs.fireworks.ai/api-reference
160
+ fireworks inference.v1.accounts.secrets GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/secrets/{secretId} https://docs.fireworks.ai/api-reference
161
+ fireworks inference.v1.accounts.secrets.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/secrets https://docs.fireworks.ai/api-reference
162
+ fireworks inference.v1.accounts.secrets.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/secrets https://docs.fireworks.ai/api-reference
163
+ fireworks inference.v1.accounts.secrets.update PATCH https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/secrets/{secretId} https://docs.fireworks.ai/api-reference
164
+ fireworks inference.v1.accounts.supervisedFineTuningJobs DELETE https://api.fireworks.ai/inference/v1/v1/accounts/{param}/supervisedFineTuningJobs/{param} https://docs.fireworks.ai/api-reference
165
+ fireworks inference.v1.accounts.supervisedFineTuningJobs GET https://api.fireworks.ai/inference/v1/v1/accounts/{param}/supervisedFineTuningJobs/{param} https://docs.fireworks.ai/api-reference
166
+ fireworks inference.v1.accounts.supervisedFineTuningJobs.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/supervisedFineTuningJobs https://docs.fireworks.ai/api-reference
167
+ fireworks inference.v1.accounts.supervisedFineTuningJobs.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/supervisedFineTuningJobs https://docs.fireworks.ai/api-reference
168
+ fireworks inference.v1.accounts.supervisedFineTuningJobs.resume POST https://api.fireworks.ai/inference/v1/v1/accounts/{param}/supervisedFineTuningJobs/{param}:resume https://docs.fireworks.ai/api-reference
169
+ fireworks inference.v1.accounts.users GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/users/{userId} https://docs.fireworks.ai/api-reference
170
+ fireworks inference.v1.accounts.users.create POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/users https://docs.fireworks.ai/api-reference
171
+ fireworks inference.v1.accounts.users.list GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/users https://docs.fireworks.ai/api-reference
172
+ fireworks inference.v1.accounts.users.update PATCH https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/users/{userId} https://docs.fireworks.ai/api-reference
173
+ fireworks inference.v1.accounts.users.update POST https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/users/{userId} https://docs.fireworks.ai/api-reference
174
+ fireworks inference.v1.audio.batch GET https://api.fireworks.ai/inference/v1/v1/accounts/{accountId}/batch_job/{batchId} https://docs.fireworks.ai/api-reference
175
+ fireworks inference.v1.audio.batch.transcriptions POST https://api.fireworks.ai/inference/v1/audio/transcriptions https://docs.fireworks.ai/api-reference
176
+ fireworks inference.v1.audio.batch.translations POST https://api.fireworks.ai/inference/v1/audio/translations https://docs.fireworks.ai/api-reference
177
+ fireworks inference.v1.audio.transcriptions POST https://api.fireworks.ai/inference/v1/audio/transcriptions https://docs.fireworks.ai/api-reference
178
+ fireworks inference.v1.audio.translations POST https://api.fireworks.ai/inference/v1/audio/translations https://docs.fireworks.ai/api-reference
179
+ fireworks inference.v1.chat.completions POST https://api.fireworks.ai/inference/v1/chat/completions https://docs.fireworks.ai/api-reference
180
+ fireworks inference.v1.completions POST https://api.fireworks.ai/inference/v1/completions https://docs.fireworks.ai/api-reference
181
+ fireworks inference.v1.embeddings POST https://api.fireworks.ai/inference/v1/embeddings https://docs.fireworks.ai/api-reference
182
+ fireworks inference.v1.messages POST https://api.fireworks.ai/inference/v1/messages https://docs.fireworks.ai/api-reference
183
+ fireworks inference.v1.rerank POST https://api.fireworks.ai/inference/v1/rerank https://docs.fireworks.ai/api-reference
184
+ fireworks inference.v1.workflows.getResult POST ? https://docs.fireworks.ai/api-reference
185
+ fireworks inference.v1.workflows.kontext POST ? https://docs.fireworks.ai/api-reference
186
+ fireworks inference.v1.workflows.textToImage POST ? https://docs.fireworks.ai/api-reference
187
+ free-media-upload catbox.upload POST https://catbox.moe/user/api.php https://catbox.moe/tools.php
188
+ free-media-upload filebin.upload POST https://filebin.net/{bin}/{filename} https://filebin.net/
189
+ free-media-upload gofile.upload POST https://upload.gofile.io/uploadfile https://gofile.io/api
190
+ free-media-upload litterbox.upload POST https://litterbox.catbox.moe/resources/internals/api.php https://litterbox.catbox.moe/
191
+ free-media-upload tempsh.upload POST https://temp.sh/upload https://temp.sh/
192
+ free-media-upload tflink.upload POST https://tmpfile.link/api/upload https://tmpfile.link/
193
+ free-media-upload tmpfiles.api.v1.upload POST https://tmpfiles.org/api/v1/upload https://tmpfiles.org/
194
+ free-media-upload uguu.upload POST https://uguu.se/upload https://uguu.se/
195
+ kie api.fileBase64Upload POST https://api.kie.ai/api/file-base64-upload https://docs.kie.ai
196
+ kie api.fileStreamUpload POST https://api.kie.ai/api/file-stream-upload https://docs.kie.ai
197
+ kie api.fileUrlUpload POST https://api.kie.ai/api/file-url-upload https://docs.kie.ai
198
+ kie api.v1.chat.credit GET https://api.kie.ai/api/v1/chat/credit https://docs.kie.ai
199
+ kie api.v1.common.downloadUrl POST https://api.kie.ai/api/v1/common/download-url https://docs.kie.ai
200
+ kie api.v1.generate POST https://api.kie.ai/api/v1/generate https://docs.kie.ai
201
+ kie api.v1.generate.addInstrumental POST https://api.kie.ai/api/v1/generate/add-instrumental https://docs.kie.ai/suno-api/add-instrumental
202
+ kie api.v1.generate.addVocals POST https://api.kie.ai/api/v1/generate/add-vocals https://docs.kie.ai/suno-api/add-vocals
203
+ kie api.v1.generate.mashup POST https://api.kie.ai/api/v1/generate/mashup https://docs.kie.ai/suno-api/generate-mashup
204
+ kie api.v1.generate.replaceSection POST https://api.kie.ai/api/v1/generate/replace-section https://docs.kie.ai/suno-api/replace-section
205
+ kie api.v1.generate.sounds POST https://api.kie.ai/api/v1/generate/sounds https://docs.kie.ai/suno-api/generate-sounds
206
+ kie api.v1.jobs.createTask POST https://api.kie.ai/api/v1/jobs/createTask https://docs.kie.ai
207
+ kie api.v1.jobs.recordInfo GET https://api.kie.ai/api/v1/jobs/recordInfo?taskId={taskId} https://docs.kie.ai
208
+ kie api.v1.veo.extend POST https://api.kie.ai/api/v1/veo/extend https://docs.kie.ai
209
+ kie api.v1.veo.generate POST https://api.kie.ai/api/v1/veo/generate https://docs.kie.ai
210
+ kie claude.v1.messages POST https://api.kie.ai/claude/v1/messages https://docs.kie.ai
211
+ kimicoding coding.v1.countTokens POST https://api.kimi.com/coding/v1/tokens/count https://platform.moonshot.ai/docs
212
+ kimicoding coding.v1.embeddings POST https://api.kimi.com/coding/v1/embeddings https://platform.moonshot.ai/docs
213
+ kimicoding coding.v1.messages POST https://api.kimi.com/coding/v1/messages https://platform.moonshot.ai/docs
214
+ kimicoding coding.v1.models GET https://api.kimi.com/coding/v1/models https://platform.moonshot.ai/docs
215
+ openai v1.audio.speech POST https://api.openai.com/v1/audio/speech https://platform.openai.com/docs/api-reference
216
+ openai v1.audio.transcriptions POST https://api.openai.com/v1/audio/transcriptions https://platform.openai.com/docs/api-reference
217
+ openai v1.audio.translations POST https://api.openai.com/v1/audio/translations https://platform.openai.com/docs/api-reference
218
+ openai v1.batches GET https://api.openai.com/v1/batches/{idOrOpts} https://platform.openai.com/docs/api-reference
219
+ openai v1.batches POST https://api.openai.com/v1/batches https://platform.openai.com/docs/api-reference
220
+ openai v1.batches.cancel POST https://api.openai.com/v1/batches/{id}/cancel https://platform.openai.com/docs/api-reference
221
+ openai v1.chat.completions DELETE https://api.openai.com/v1/chat/completions/{id} https://platform.openai.com/docs/api-reference
222
+ openai v1.chat.completions GET https://api.openai.com/v1/chat/completions/{idOrOpts} https://platform.openai.com/docs/api-reference
223
+ openai v1.chat.completions POST https://api.openai.com/v1/chat/completions/{id} https://platform.openai.com/docs/api-reference
224
+ openai v1.chat.completions.messages GET https://api.openai.com/v1/chat/completions/{id}/messages https://platform.openai.com/docs/api-reference
225
+ openai v1.embeddings POST https://api.openai.com/v1/embeddings https://platform.openai.com/docs/api-reference
226
+ openai v1.files DELETE https://api.openai.com/v1/files/{id} https://platform.openai.com/docs/api-reference
227
+ openai v1.files GET https://api.openai.com/v1/files/{idOrOpts} https://platform.openai.com/docs/api-reference
228
+ openai v1.files POST https://api.openai.com/v1/files https://platform.openai.com/docs/api-reference
229
+ openai v1.files.content GET https://api.openai.com/v1/files/{id}/content https://platform.openai.com/docs/api-reference
230
+ openai v1.fineTuning.checkpoints.permissions DELETE https://api.openai.com/v1/fine_tuning/checkpoints/{checkpoint}/permissions/{permissionId} https://platform.openai.com/docs/api-reference
231
+ openai v1.fineTuning.checkpoints.permissions GET https://api.openai.com/v1/fine_tuning/checkpoints/{checkpoint}/permissions https://platform.openai.com/docs/api-reference
232
+ openai v1.fineTuning.checkpoints.permissions POST https://api.openai.com/v1/fine_tuning/checkpoints/{checkpoint}/permissions https://platform.openai.com/docs/api-reference
233
+ openai v1.fineTuning.jobs GET https://api.openai.com/v1/fine_tuning/jobs/{idOrOpts} https://platform.openai.com/docs/api-reference
234
+ openai v1.fineTuning.jobs POST https://api.openai.com/v1/fine_tuning/jobs https://platform.openai.com/docs/api-reference
235
+ openai v1.fineTuning.jobs.cancel POST https://api.openai.com/v1/fine_tuning/jobs/{id}/cancel https://platform.openai.com/docs/api-reference
236
+ openai v1.fineTuning.jobs.checkpoints GET https://api.openai.com/v1/fine_tuning/jobs/{id}/checkpoints https://platform.openai.com/docs/api-reference
237
+ openai v1.fineTuning.jobs.events GET https://api.openai.com/v1/fine_tuning/jobs/{id}/events https://platform.openai.com/docs/api-reference
238
+ openai v1.fineTuning.jobs.pause POST https://api.openai.com/v1/fine_tuning/jobs/{id}/pause https://platform.openai.com/docs/api-reference
239
+ openai v1.fineTuning.jobs.resume POST https://api.openai.com/v1/fine_tuning/jobs/{id}/resume https://platform.openai.com/docs/api-reference
240
+ openai v1.images.edits POST https://api.openai.com/v1/images/edits https://platform.openai.com/docs/api-reference
241
+ openai v1.images.generations POST https://api.openai.com/v1/images/generations https://platform.openai.com/docs/api-reference
242
+ openai v1.images.variations POST https://api.openai.com/v1/images/variations https://platform.openai.com/docs/api-reference
243
+ openai v1.models DELETE https://api.openai.com/v1/models/{id} https://platform.openai.com/docs/api-reference
244
+ openai v1.models GET https://api.openai.com/v1/models/{id} https://platform.openai.com/docs/api-reference
245
+ openai v1.moderations POST https://api.openai.com/v1/moderations https://platform.openai.com/docs/api-reference
246
+ openai v1.responses DELETE https://api.openai.com/v1/responses/{id} https://platform.openai.com/docs/api-reference
247
+ openai v1.responses GET https://api.openai.com/v1/responses/{id} https://platform.openai.com/docs/api-reference
248
+ openai v1.responses POST https://api.openai.com/v1/responses https://platform.openai.com/docs/api-reference
249
+ openai v1.responses.cancel POST https://api.openai.com/v1/responses/{id}/cancel https://platform.openai.com/docs/api-reference
250
+ openai v1.responses.compact POST https://api.openai.com/v1/responses/compact https://platform.openai.com/docs/api-reference
251
+ openai v1.responses.inputItems GET https://api.openai.com/v1/responses/{id}/input_items https://platform.openai.com/docs/api-reference
252
+ openai v1.responses.inputTokens POST https://api.openai.com/v1/responses/input_tokens https://platform.openai.com/docs/api-reference
253
+ xai v1.batches GET https://api.x.ai/v1/batches/{paramsOrIdOrSignal} https://docs.x.ai/docs/api-reference
254
+ xai v1.batches POST https://api.x.ai/v1/batches https://docs.x.ai/docs/api-reference
255
+ xai v1.batches.cancel POST https://api.x.ai/v1/batches/{batchId}:cancel https://docs.x.ai/docs/api-reference
256
+ xai v1.batches.requests GET https://api.x.ai/v1/batches/{batchId}/requests{query} https://docs.x.ai/docs/api-reference
257
+ xai v1.batches.requests POST https://api.x.ai/v1/batches/{batchId}/requests https://docs.x.ai/docs/api-reference
258
+ xai v1.batches.results GET https://api.x.ai/v1/batches/{batchId}/results{query} https://docs.x.ai/docs/api-reference
259
+ xai v1.chat.completions POST https://api.x.ai/v1/chat/completions https://docs.x.ai/docs/api-reference
260
+ xai v1.chat.deferredCompletion GET https://api.x.ai/v1/chat/deferred-completion/{requestId} https://docs.x.ai/docs/api-reference
261
+ xai v1.collections DELETE https://api.x.ai/v1/collections/{collectionId} https://docs.x.ai/docs/api-reference
262
+ xai v1.collections GET https://api.x.ai/v1/collections/{paramsOrIdOrSignal} https://docs.x.ai/docs/api-reference
263
+ xai v1.collections POST https://api.x.ai/v1/collections https://docs.x.ai/docs/api-reference
264
+ xai v1.collections PUT https://api.x.ai/v1/collections/{collectionId} https://docs.x.ai/docs/api-reference
265
+ xai v1.collections.documents DELETE https://api.x.ai/v1/collections/{collectionId}/documents/{fileId} https://docs.x.ai/docs/api-reference
266
+ xai v1.collections.documents GET https://api.x.ai/v1/collections/{collectionId}/documents/{paramsOrFileId} https://docs.x.ai/docs/api-reference
267
+ xai v1.collections.documents PATCH https://api.x.ai/v1/collections/{collectionId}/documents/{fileId} https://docs.x.ai/docs/api-reference
268
+ xai v1.collections.documents POST https://api.x.ai/v1/collections/{collectionId}/documents/{fileId} https://docs.x.ai/docs/api-reference
269
+ xai v1.collections.documents.batchGet GET https://api.x.ai/v1/collections/{collectionId}/documents:batchGet{query} https://docs.x.ai/docs/api-reference
270
+ xai v1.customVoices POST https://api.x.ai/v1/custom-voices https://docs.x.ai/docs/api-reference
271
+ xai v1.documents.search POST https://api.x.ai/v1/documents/search https://docs.x.ai/docs/api-reference
272
+ xai v1.files DELETE https://api.x.ai/v1/files/{fileId} https://docs.x.ai/docs/api-reference
273
+ xai v1.files GET https://api.x.ai/v1/files/{fileIdOrSignal} https://docs.x.ai/docs/api-reference
274
+ xai v1.files POST https://api.x.ai/v1/files https://docs.x.ai/docs/api-reference
275
+ xai v1.imageGenerationModels GET https://api.x.ai/v1/image-generation-models/{modelIdOrSignal} https://docs.x.ai/docs/api-reference
276
+ xai v1.images.edits POST https://api.x.ai/v1/images/edits https://docs.x.ai/docs/api-reference
277
+ xai v1.images.generations POST https://api.x.ai/v1/images/generations https://docs.x.ai/docs/api-reference
278
+ xai v1.languageModels GET https://api.x.ai/v1/language-models/{modelIdOrSignal} https://docs.x.ai/docs/api-reference
279
+ xai v1.models GET https://api.x.ai/v1/models/{modelIdOrSignal} https://docs.x.ai/docs/api-reference
280
+ xai v1.realtime.clientSecrets POST https://api.x.ai/v1/realtime/client_secrets https://docs.x.ai/docs/api-reference
281
+ xai v1.responses DELETE https://api.x.ai/v1/responses/{id} https://docs.x.ai/docs/api-reference
282
+ xai v1.responses GET https://api.x.ai/v1/responses/{id} https://docs.x.ai/docs/api-reference
283
+ xai v1.responses POST https://api.x.ai/v1/responses https://docs.x.ai/docs/api-reference
284
+ xai v1.stt POST https://api.x.ai/v1/stt https://docs.x.ai/docs/api-reference
285
+ xai v1.tokenizeText POST https://api.x.ai/v1/tokenize-text https://docs.x.ai/docs/api-reference
286
+ xai v1.tts POST https://api.x.ai/v1/tts https://docs.x.ai/docs/api-reference
287
+ xai v1.videoGenerationModels GET https://api.x.ai/v1/video-generation-models/{modelIdOrSignal} https://docs.x.ai/docs/api-reference
288
+ xai v1.videos GET https://api.x.ai/v1/videos/{requestId} https://docs.x.ai/docs/api-reference
289
+ xai v1.videos.edits POST https://api.x.ai/v1/videos/edits https://docs.x.ai/docs/api-reference
290
+ xai v1.videos.extensions POST https://api.x.ai/v1/videos/extensions https://docs.x.ai/docs/api-reference
291
+ xai v1.videos.generations POST https://api.x.ai/v1/videos/generations https://docs.x.ai/docs/api-reference
292
+ x v2.media.upload.initialize POST https://api.x.com/2/media/upload/initialize https://docs.x.com/x-api/media/media-upload-initialize
293
+ x v2.media.upload.append POST https://api.x.com/2/media/upload/{id}/append https://docs.x.com/x-api/media/append-media-upload
294
+ x v2.media.upload.finalize POST https://api.x.com/2/media/upload/{id}/finalize https://docs.x.com/x-api/media/finalize-media-upload
295
+ x v2.media.upload GET https://api.x.com/2/media/upload{query} https://docs.x.com/x-api/media/get-media-upload-status
296
+ x v2.tweets POST https://api.x.com/2/tweets https://docs.x.com/x-api/posts/create-post
297
+ meta v25.media POST https://graph.instagram.com/v25.0/{igUserId}/media https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user/media/
298
+ meta v25.container GET https://graph.instagram.com/v25.0/{containerId}{query} https://developers.facebook.com/docs/instagram-platform/reference/ig-container/
299
+ meta v25.mediaPublish POST https://graph.instagram.com/v25.0/{igUserId}/media_publish https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user/media_publish/
300
+ polymarket clob.time GET https://clob.polymarket.com/time https://docs.polymarket.com/api-reference/clob/get-server-time
301
+ polymarket clob.book GET https://clob.polymarket.com/book{query} https://docs.polymarket.com/api-reference/clob/get-order-book
302
+ polymarket clob.price GET https://clob.polymarket.com/price{query} https://docs.polymarket.com/api-reference/clob/get-market-price
303
+ polymarket clob.midpoint GET https://clob.polymarket.com/midpoint{query} https://docs.polymarket.com/api-reference/clob/get-midpoint
304
+ polymarket clob.spread GET https://clob.polymarket.com/spread{query} https://docs.polymarket.com/api-reference/clob/get-spread
305
+ polymarket clob.lastTradePrice GET https://clob.polymarket.com/last-trade-price{query} https://docs.polymarket.com/api-reference/clob/get-last-trade-price
306
+ polymarket clob.tickSize GET https://clob.polymarket.com/tick-size/{tokenId} https://docs.polymarket.com/api-reference/clob/get-tick-size
307
+ polymarket clob.feeRate GET https://clob.polymarket.com/fee-rate/{tokenId} https://docs.polymarket.com/api-reference/clob/get-fee-rate
308
+ polymarket clob.pricesHistory GET https://clob.polymarket.com/prices-history{query} https://docs.polymarket.com/api-reference/clob/get-prices-history
309
+ polymarket clob.markets GET https://clob.polymarket.com/markets/{paramsOrConditionIdOrSignal} https://docs.polymarket.com/api-reference/clob/get-markets
310
+ polymarket clob.samplingMarkets GET https://clob.polymarket.com/sampling-markets{query} https://docs.polymarket.com/api-reference/clob/get-sampling-markets
311
+ polymarket clob.simplifiedMarkets GET https://clob.polymarket.com/simplified-markets{query} https://docs.polymarket.com/api-reference/clob/get-simplified-markets
312
+ polymarket clob.samplingSimplifiedMarkets GET https://clob.polymarket.com/sampling-simplified-markets{query} https://docs.polymarket.com/api-reference/clob/get-sampling-simplified-markets
313
+ polymarket clob.marketsByToken GET https://clob.polymarket.com/markets-by-token/{tokenId} https://docs.polymarket.com/api-reference/clob/get-market-by-token
314
+ polymarket clob.clobMarkets GET https://clob.polymarket.com/clob-markets/{conditionId} https://docs.polymarket.com/api-reference/clob/get-clob-market-info
315
+ polymarket clob.books POST https://clob.polymarket.com/books https://docs.polymarket.com/api-reference/clob/get-order-books
316
+ polymarket clob.prices POST https://clob.polymarket.com/prices https://docs.polymarket.com/api-reference/clob/get-market-prices
317
+ polymarket clob.midpoints POST https://clob.polymarket.com/midpoints https://docs.polymarket.com/api-reference/clob/get-midpoints
318
+ polymarket clob.spreads POST https://clob.polymarket.com/spreads https://docs.polymarket.com/api-reference/clob/get-spreads
319
+ polymarket clob.lastTradesPrices POST https://clob.polymarket.com/last-trades-prices https://docs.polymarket.com/api-reference/clob/get-last-trades-prices
320
+ polymarket clob.batchPricesHistory POST https://clob.polymarket.com/batch-prices-history https://docs.polymarket.com/api-reference/clob/get-batch-prices-history
321
+ polymarket gamma.events GET https://gamma-api.polymarket.com/events/{paramsOrIdOrSignal} https://docs.polymarket.com/api-reference/gamma/get-events
322
+ polymarket gamma.events.keyset GET https://gamma-api.polymarket.com/events/keyset{query} https://docs.polymarket.com/api-reference/gamma/get-events-keyset
323
+ polymarket gamma.events.slug GET https://gamma-api.polymarket.com/events/slug/{slug} https://docs.polymarket.com/api-reference/gamma/get-event-by-slug
324
+ polymarket gamma.events.tags GET https://gamma-api.polymarket.com/events/{id}/tags https://docs.polymarket.com/api-reference/gamma/get-event-tags
325
+ polymarket gamma.markets GET https://gamma-api.polymarket.com/markets/{paramsOrIdOrSignal} https://docs.polymarket.com/api-reference/gamma/get-markets
326
+ polymarket gamma.markets.keyset GET https://gamma-api.polymarket.com/markets/keyset{query} https://docs.polymarket.com/api-reference/gamma/get-markets-keyset
327
+ polymarket gamma.markets.slug GET https://gamma-api.polymarket.com/markets/slug/{slug} https://docs.polymarket.com/api-reference/gamma/get-market-by-slug
328
+ polymarket gamma.markets.tags GET https://gamma-api.polymarket.com/markets/{id}/tags https://docs.polymarket.com/api-reference/gamma/get-market-tags
329
+ polymarket gamma.series GET https://gamma-api.polymarket.com/series/{paramsOrIdOrSignal} https://docs.polymarket.com/api-reference/gamma/get-series
330
+ polymarket gamma.tags GET https://gamma-api.polymarket.com/tags/{paramsOrIdOrSignal} https://docs.polymarket.com/api-reference/gamma/get-tags
331
+ polymarket gamma.tags.slug GET https://gamma-api.polymarket.com/tags/slug/{slug} https://docs.polymarket.com/api-reference/gamma/get-tag-by-slug
332
+ polymarket gamma.tags.relatedTags GET https://gamma-api.polymarket.com/tags/{id}/related-tags https://docs.polymarket.com/api-reference/gamma/get-related-tags-by-id
333
+ polymarket gamma.tags.relatedTags.slug GET https://gamma-api.polymarket.com/tags/slug/{slug}/related-tags https://docs.polymarket.com/api-reference/gamma/get-related-tags-by-slug
334
+ polymarket gamma.comments GET https://gamma-api.polymarket.com/comments/{paramsOrIdOrSignal} https://docs.polymarket.com/api-reference/gamma/get-comments
335
+ polymarket gamma.comments.byUser GET https://gamma-api.polymarket.com/comments/user_address/{address}{query} https://docs.polymarket.com/api-reference/gamma/get-comments-by-user
336
+ polymarket gamma.search GET https://gamma-api.polymarket.com/public-search{query} https://docs.polymarket.com/api-reference/gamma/search
337
+ polymarket gamma.sports GET https://gamma-api.polymarket.com/sports https://docs.polymarket.com/api-reference/gamma/get-sports
338
+ polymarket gamma.sports.marketTypes GET https://gamma-api.polymarket.com/sports/market-types https://docs.polymarket.com/api-reference/gamma/get-sports-market-types
339
+ polymarket data.positions GET https://data-api.polymarket.com/positions{query} https://docs.polymarket.com/api-reference/data/get-positions
340
+ polymarket data.value GET https://data-api.polymarket.com/value{query} https://docs.polymarket.com/api-reference/data/get-positions-value
341
+ polymarket data.holders GET https://data-api.polymarket.com/holders{query} https://docs.polymarket.com/api-reference/data/get-holders
342
+ polymarket data.activity GET https://data-api.polymarket.com/activity{query} https://docs.polymarket.com/api-reference/data/get-activity
343
+ polymarket data.trades GET https://data-api.polymarket.com/trades{query} https://docs.polymarket.com/api-reference/data/get-trades
344
+ polymarket data.oi GET https://data-api.polymarket.com/oi{query} https://docs.polymarket.com/api-reference/data/get-open-interest
345
+ polymarket data.liveVolume GET https://data-api.polymarket.com/live-volume{query} https://docs.polymarket.com/api-reference/data/get-live-volume
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env node
2
+ import { startServer } from "./server.js";
3
+ function parseArgs(argv) {
4
+ const out = { help: false };
5
+ for (let i = 0; i < argv.length; i++) {
6
+ const a = argv[i];
7
+ if (a === "--help" || a === "-h")
8
+ out.help = true;
9
+ else if (a === "--output-dir")
10
+ out.outputDir = argv[++i];
11
+ else if (a.startsWith("--output-dir="))
12
+ out.outputDir = a.slice(13);
13
+ else if (a === "--providers") {
14
+ out.enabledProviders = (argv[++i] ?? "").split(",").filter(Boolean);
15
+ }
16
+ else if (a.startsWith("--providers=")) {
17
+ out.enabledProviders = a.slice(12).split(",").filter(Boolean);
18
+ }
19
+ else {
20
+ console.error(`[apicity-mcp] unknown arg: ${a}`);
21
+ }
22
+ }
23
+ return out;
24
+ }
25
+ function printHelp() {
26
+ console.error([
27
+ "apicity-mcp — MCP server exposing every @apicity provider endpoint as a tool.",
28
+ "",
29
+ "Usage:",
30
+ " apicity-mcp [--output-dir <path>] [--providers <csv>]",
31
+ "",
32
+ "Options:",
33
+ " --output-dir <path> Directory to write binary results and downloaded media URLs.",
34
+ " If omitted, binaries are summarized and URLs are returned as-is.",
35
+ " --providers <csv> Comma-separated provider allow-list (e.g. openai,xai,anthropic).",
36
+ " Defaults to every provider with its env var set.",
37
+ "",
38
+ "Credentials are read from env vars: OPENAI_API_KEY, XAI_API_KEY, ANTHROPIC_API_KEY,",
39
+ "FIREWORKS_API_KEY, FAL_API_KEY, KIE_API_KEY, KIMI_CODING_API_KEY, DASHSCOPE_API_KEY,",
40
+ "ELEVENLABS_API_KEY, X_ACCESS_TOKEN, IG_ACCESS_TOKEN. The 'free-media-upload' provider needs none.",
41
+ ].join("\n"));
42
+ }
43
+ const args = parseArgs(process.argv.slice(2));
44
+ if (args.help) {
45
+ printHelp();
46
+ process.exit(0);
47
+ }
48
+ startServer({
49
+ outputDir: args.outputDir,
50
+ enabledProviders: args.enabledProviders,
51
+ }).catch((err) => {
52
+ console.error("[apicity-mcp] fatal:", err);
53
+ process.exit(1);
54
+ });
55
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ1C,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,GAAG,GAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;aAC7C,IAAI,CAAC,KAAK,cAAc;YAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACpD,IAAI,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;YAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAC/D,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;YAC7B,GAAG,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,KAAK,CACX;QACE,+EAA+E;QAC/E,EAAE;QACF,QAAQ;QACR,yDAAyD;QACzD,EAAE;QACF,UAAU;QACV,sFAAsF;QACtF,0FAA0F;QAC1F,0FAA0F;QAC1F,0EAA0E;QAC1E,EAAE;QACF,qFAAqF;QACrF,sFAAsF;QACtF,mGAAmG;KACpG,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,WAAW,CAAC;IACV,SAAS,EAAE,IAAI,CAAC,SAAS;IACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}