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 ). 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.