Skip to main content
The hosted server at https://api.nebyoulous.space/mcp exposes 45 tools: 21 read-only, 15 that write data, and 9 destructive. The CLI server exposes the same hosted tools and adds 8 local tools that work with files on your machine. Every tool acts as the signed-in user. Identity comes from the token, never from an argument, so a tool can only see and change your own data.
Each tool carries the MCP readOnlyHint and destructiveHint annotations. Hosts such as Claude Code and Cursor use them to ask you before a destructive call runs.

Account

getMe

Read-only. Return the authenticated Nebyoulous user profile (id, email, name, image, username). No arguments.

Integration sets

listIntegrationSets

Read-only. List integration sets for the authenticated Nebyoulous user. No arguments.

getIntegrationSet

Read-only. Fetch a single integration set owned by the authenticated user.

createIntegrationSet

Writes data. Create a new integration set owned by the authenticated user.

updateIntegrationSet

Writes data. Update the title and/or notes on an integration set owned by the authenticated user.

deleteIntegrationSet

Destructive. MCP hosts ask before running it. Delete an integration set owned by the authenticated user. Removes assets and export artifacts from S3.

listIntegrationSetAssets

Read-only. List uploaded assets in an integration set with an inventory summary (by folder, by file type).

deleteIntegrationSetFolder

Destructive. MCP hosts ask before running it. Delete all uploaded integration assets under a folder path within an integration set.

deleteIntegrationAssets

Destructive. MCP hosts ask before running it. Delete specific uploaded assets in one integration set. Each item is an asset id or a relativePath (exactly one), at most 100 items per call. Returns one result per item: deleted, not_found, or forbidden. Another user’s asset is forbidden. A registered frame under a live analysis is forbidden; delete that analysis folder instead.

Uploads and downloads

presignUploadBatch

Writes data. Create presigned upload targets for one or more files. Each item is presigned independently; per-item failures appear inline.

completeUploadBatch

Writes data. Mark one or more presigned uploads as complete. Per-item failures appear inline.

presignDownloadBatch

Read-only. Generate presigned S3 GET URLs for one or more uploaded assets owned by the authenticated user. Per-item failures appear inline. Accepts up to 500 items, the same limit as presignUploadBatch, so a full light set fits in one call.

Gear and rigs

listGearItems

Read-only. List equipment items owned by the authenticated user. Optionally filter by category.

getGearItem

Read-only. Fetch a single equipment item by ID owned by the authenticated user.

createGearItem

Writes data. Create a new equipment item (telescope, camera, mount, filter, etc.) for the authenticated user.

updateGearItem

Writes data. Update an equipment item owned by the authenticated user.

deleteGearItem

Destructive. MCP hosts ask before running it. Archive (soft-delete) an equipment item owned by the authenticated user.

listGearProfiles

Read-only. List rigs (gear profiles) owned by the authenticated user, including each rig’s members. No arguments.

getGearProfile

Read-only. Fetch a rig (gear profile) by ID owned by the authenticated user, including its members.

createGearProfile

Writes data. Create a rig (gear profile) for the authenticated user. Optional members are saved in the same call; if any gear item is missing or not owned, nothing is created.

updateGearProfile

Writes data. Update the name or description of a rig (gear profile) owned by the authenticated user.

setGearProfileMembers

Writes data. Replace every member of a rig (gear profile) owned by the authenticated user. The new member list is applied in one step.

deleteGearProfile

Destructive. MCP hosts ask before running it. Delete a rig (gear profile) owned by the authenticated user, including its members and integration-set links.

listIntegrationSetGearProfiles

Read-only. List rigs (gear profiles) linked to an integration set owned by the authenticated user.

setIntegrationSetGearProfiles

Writes data. Replace the rigs linked to an integration set owned by the authenticated user. Each link may mark one rig as primary.

Stacking

recommendStackConfig

Read-only. Propose a sensible staged stacking config and frame groups for an integration set owned by the authenticated user, derived deterministically from the set’s data (frame paths per role, inferred sensor, prior run reports). Flat-darks in a flat-darks/ folder, or darks whose filename exposure matches the flats, are routed to groups.darkflat instead of groups.dark. The returned config and groups are the same shape startStack accepts — submit them as-is or tweak first. Read-only: nothing is dispatched.

startStack

Writes data. Submit a stacking job for an integration set owned by the authenticated user. Select frames by relativePath per role (light required; dark/flat/bias/darkflat optional). darkflat is flat-darks (darks at the flat exposure): they calibrate the flats and are not mixed into the light-exposure dark. Prefer a staged config ({version,calibrate,register,stack}). Top-level params and referencePath are deprecated: config wins over params, and config.register.referencePath wins over top-level referencePath. Both are optional — the API fills defaults and clamps values; the engine is always Siril. Refine re-stacks are not available here: this tool does not accept sourceAnalysisId or excludedFrames, because no MCP tool returns an analysis id.

listStacks

Read-only. List stack jobs for an integration set owned by the authenticated user, most recent first.

getStackStatus

Read-only. Get a stack job’s status and frame counts. Includes a presigned master-FITS downloadUrl when READY and an errorMessage when FAILED.

cancelStack

Destructive. MCP hosts ask before running it. Cancel an in-progress stack job for an integration set owned by the authenticated user. Returns the updated job status.

deleteStack

Destructive. MCP hosts ask before running it. Delete a terminal stack job and its output artifacts for an integration set owned by the authenticated user. This is permanent.

Frame QA and analysis

startFrameQa

Writes data. Start a frame-QA job for the light frames directly under one folder of an integration set owned by the authenticated user. This writes a new job. It does not delete frames.

getFrameQaResults

Read-only. Read the newest frame-QA run for one folder of an integration set owned by the authenticated user, or a jobId when one is given. When no run exists, job is null. When the run is not READY, metricsAvailable is false and frames is empty. When READY, returns counts, the thresholds that were used, and one page of rejected or failed frames (default 20, max 50). Pass offset=nextOffset for the next page. This does not delete or exclude frames.

getFrameAnalysisMetrics

Read-only. Read Siril registration metrics for one analyze job on an integration set owned by the authenticated user. When the job is not READY, metricsAvailable is false and frames is empty. When READY, returns one page of frames (default 20, max 50) with fwhm, wfwhm, roundness, background, nbstars, quality, and included. Pass offset=nextOffset for the next page.

Posts and comments

listPosts

Read-only. List all posts (drafts and published) owned by the authenticated user. No arguments.

getPost

Read-only. Fetch a single post by ID owned by the authenticated user.

createPost

Writes data. Create a new draft post. Optionally link integration sets by ID. Returns the created draft. Catalog object types and post targetType are different enums. Map a catalog type to a post targetType as: galaxy → GALAXY, nebula → NEBULA, open_cluster → STAR_CLUSTER, globular_cluster → STAR_CLUSTER, planetary_nebula → PLANETARY_NEBULA, dark_nebula → NEBULA, galaxy_cluster → OTHER, supernova_remnant → NEBULA, double_star → OTHER, other → OTHER.

updatePost

Writes data. Update a draft post’s fields, linked integration sets, or publish it. Set publish: true to publish. Catalog object types and post targetType are different enums. Map a catalog type to a post targetType as: galaxy → GALAXY, nebula → NEBULA, open_cluster → STAR_CLUSTER, globular_cluster → STAR_CLUSTER, planetary_nebula → PLANETARY_NEBULA, dark_nebula → NEBULA, galaxy_cluster → OTHER, supernova_remnant → NEBULA, double_star → OTHER, other → OTHER.

deletePost

Destructive. MCP hosts ask before running it. Delete a post and its associated final images. This is permanent.

getPostImagePreview

Read-only. Fetch a post’s thumbnail or full final image and return it as an inline image for Claude to render. Use kind=‘thumbnail’ (default) for fast previews; kind=‘full’ for the full final image (capped at 5 MB).

getPostImageViewUrl

Read-only. Return a presigned URL for a post’s thumbnail or full final image so clients can render it inline (e.g. markdown ![title](url)). Use kind=‘thumbnail’ (default) for fast previews; kind=‘full’ for the full final image. URL expires in 1 hour.

addPostComment

Writes data. Add a whole-post comment (annotation thread without a region anchor) to a published post.

listPostComments

Read-only. List all top-level comments on a published post.

deletePostComment

Destructive. MCP hosts ask before running it. Delete a comment (annotation thread) on a published post. Only the comment author or post owner can delete.

Catalog

queryDSOCatalog

Read-only. Search the Deep Sky Object catalog by name, catalog designation, object type, constellation, or magnitude. Catalog ids such as M31, NGC 224, IC 1318, and C14 resolve to that object. Each result includes cross-designations so a Messier number can be confirmed. Useful for target planning and linking posts to known objects. Catalog object types and post targetType are different enums. Map a catalog type to a post targetType as: galaxy → GALAXY, nebula → NEBULA, open_cluster → STAR_CLUSTER, globular_cluster → STAR_CLUSTER, planetary_nebula → PLANETARY_NEBULA, dark_nebula → NEBULA, galaxy_cluster → OTHER, supernova_remnant → NEBULA, double_star → OTHER, other → OTHER.

Local tools (CLI server only)

nebyoulous mcp:serve runs these in the CLI process, so they can read your disks. They are not on the hosted server.

listVolumes

Read-only. List likely camera or removable-media sources mounted on the host. Returns mount path, label, capacity, and camera-media signals. No arguments.

listLocalDestinationAssets

Read-only. Walk a local destination folder and return relativePath + sizeBytes entries suitable for planSync existingAssets. Missing destinations return an empty list.

scanFolder

Read-only. Walk a folder and summarise files by extension, folder signals (DCIM/LIGHT/DARK/BIAS/FLAT), mtime range, and a sample of FITS primary-HDU headers.

peekFitsHeader

Read-only. Read the FITS primary-HDU header for a file and return well-known keywords (IMAGETYP, OBJECT, EXPTIME, FILTER, DATE-OBS, INSTRUME) plus the raw value cards. Returns null if the file is not a parseable FITS file.

classifyFrameType

Read-only. Classify a file as LIGHT, DARK, BIAS, or FLAT. Prefers the FITS IMAGETYP value; falls back to filename/folder heuristics. Returns null if no signal is confident.

planSync

Read-only. Walk a source folder, classify candidate files, and partition them into (a) uploads to perform and (b) skipped files with reasons (dedupe against server + local manifest, frame-type filter, size cap).

executeSync

Destructive. MCP hosts ask before running it. Drive the upload pipeline for a planned set of files: presign in batches, PUT to S3 with capped concurrency, complete batches, and record manifest entries. Returns per-file outcomes; partial failures are reported, not thrown.

executeLocalSync

Destructive. MCP hosts ask before running it. Copy a planned set of files from their source paths into a local destination folder via atomic temp+rename. Files land directly under destPath using each upload’s relativePath; subdirectories are created as needed. Returns per-file outcomes; partial failures are reported, not thrown. Runs entirely offline — no auth, no API or MCP calls. When sourcePath is provided, records successes in the local sync manifest for that source/destination pair.

Deprecated aliases

These snake_case names still work for older prompts and configs. Use the camelCase tool instead.