# SCiMMA Rubin Crossmatch Service > Read-only JSON API over the Rubin alert objects this service has ingested and their positional crossmatches against gaia_dr3 (Gaia DR3), des_y6_gold (DES Y6 Gold), delve_dr3_gold (DELVE DR3 Gold), skymapper_dr4 (SkyMapper DR4) within 1.0 arcsec. Look up objects by diaObjectId, sky position, or TNS name; count before fetching; every response carries the provenance a methods section needs. Service version 0.16.2; contract version 1.0.0. Every fact here is read from the live configuration of the running service. - Crossmatch: For each object and each catalog, the crossmatch keeps only the nearest catalog source within the crossmatch radius, so an object has at most one coincident source per catalog; other sources inside the radius are not reported. A coincident source is not a host association. - Units and frames: Rubin object positions (ra, dec, and searched positions) are ICRS right ascension and declination in degrees; radii and separations are in arcsec. A coincident source position is the catalog's own, in degrees, read from its coordinate columns (gaia_dr3: ra, dec; des_y6_gold: RA, DEC; delve_dr3_gold: RA, DEC; skymapper_dr4: raj2000, dej2000), in the frame and epoch the catalog publishes: the crossmatch compares positions as stored, with no proper motion applied and no epoch propagation. gaia_dr3 positions are at the reference epoch in the ref_epoch payload column (J2016.0 for Gaia DR3). skymapper_dr4 coordinate columns carry a J2000 suffix (raj2000, dej2000) and are published under those names; see the SkyMapper DR4 documentation for their epoch. - Reliability cuts (minimum LSST reliability per broker): antares: 0.6 (enforced by broker, declared, as of 2026-10-05); lasair: 0.6 (enforced by broker, declared, as of 2026-10-05); pittgoogle: 0.6 (enforced by service, service_setting). A broker-enforced value is declared by the maintainer, not observed by this service. - Not in this service: "Not in this service" (status not_in_service, or no_rubin_object for a position) is not evidence that the object failed a reliability cut or does not exist in Rubin: reliability filtering happens before an alert is stored (at the broker, or at ingest for the cut this service enforces; see reliability_cuts), and the service holds only alerts its brokers delivered. - Coincidence: A coincident source is a catalog source within the crossmatch radius of the object position; it is not a host association. The host galaxy of an offset supernova is generally not a coincident source, so the absence of a coincident source is not evidence of a hostless transient. - Paging: A cursor pins the object set of a paged walk, not the objects' state: an object's status and coincident sources can advance between pages as crossmatching proceeds. as_of bounds ingest time, it is not a snapshot: ingest time is set before an ingest commits, so an object whose ingest commits during the walk can still appear on a later page if its ingest time is at or before as_of. - Limits per request: 1000 IDs; 200 positions and TNS names together; radius at most 60.0 arcsec; 100 objects per position and 2000 per request; a 5.0 s budget. Over a maximum is a 400 naming the parameter. - Workflow: read the describe endpoint for catalogs, what catalog_source_id means per catalog, and filterable fields with units; send a lookup with response=count to size a question, then fetch with detail=full for raw catalog values. Each response's provenance block (service_version, crossmatch_radius_arcsec, catalogs with releases, reliability_cuts) is the methods sentence. - Errors are JSON with a fixed snake_case code and retryable; a malformed batch entry fails only that entry. ## Docs - [OpenAPI 3.1 document](https://crossmatch.scimma.org/openapi.json): every operation, parameter, response field, status value, and error code, with units (x-unit). - [API reference in Markdown](https://crossmatch.scimma.org/api-docs.md): the same reference as text, including every code and its meaning. - [API reference in HTML](https://crossmatch.scimma.org/api-docs): the same reference for people. ## Discovery - [GET /openapi.json](https://crossmatch.scimma.org/openapi.json): `get_openapi` -- This OpenAPI document. - [GET /api/status](https://crossmatch.scimma.org/api/status): `service_status` -- Service availability, version, and TNS-resolution availability. - [GET /api/describe](https://crossmatch.scimma.org/api/describe): `describe_service` -- Catalogs, vocabulary, and per-request limits. ## Connect from a chat assistant Ask Claude.ai or ChatGPT about Rubin transients by TNS name, diaObjectId, or sky position and get this service's answer in the chat, without writing code. The assistant calls three read-only tools on this service's MCP endpoint, which answer from the same lookups as the API. A lookup takes up to 100 identifiers and a position search at most a 60 arcsec radius; an answer summarizes at most 20 objects, and a larger result comes back as the first part plus a ready-to-run API request for the full set. - [Connector URL](https://crossmatch.scimma.org/mcp): https://crossmatch.scimma.org/mcp (MCP over HTTP POST, no authentication). Tools: `lookup_rubin_transients`, `search_rubin_transients_near_position`, `describe_crossmatch_service`. - Custom connectors need a paid plan: Claude.ai Pro, Max, Team or Enterprise, or ChatGPT Plus, Pro, Business, Enterprise or Education (on the web). - Claude.ai: In Settings, under Connectors, choose Add custom connector. Paste the connector URL, give it a name, and leave authentication empty; none is needed. Start a new conversation; the connector and its tools are available there. - ChatGPT: In Settings, under Security and login (or Apps & Connectors), turn on Developer mode. Add a new app or connector with the connector URL and No Authentication. Start a new conversation in Developer mode and select the connector so its tools are available. - In a ChatGPT workspace, an admin must first allow Developer mode and custom MCP connectors. Menu labels in both apps change from time to time; look for Connectors or Developer mode in Settings. ## Endpoints - [GET /api/objects/{diaObjectId}](https://crossmatch.scimma.org/api/objects/{diaObjectId}): `get_object` -- Look up one Rubin object by diaObjectId. - [POST /api/lookup](https://crossmatch.scimma.org/api/lookup): `lookup_objects` -- Look up a list of tagged inputs in one request. - [GET /api/cone](https://crossmatch.scimma.org/api/cone): `cone_search` -- Search one position for every Rubin object within a radius. - [GET /api/tns/{name}](https://crossmatch.scimma.org/api/tns/{name}): `resolve_tns` -- Look up a TNS name as a position search around it. - [GET /api/recent-crossmatches](https://crossmatch.scimma.org/api/recent-crossmatches): `recent_crossmatches` -- Crossmatches for objects with alerts in a time window. ## Optional - [Catalogs](https://crossmatch.scimma.org/catalogs): published columns per catalog. - [Brokers and filtering](https://crossmatch.scimma.org/brokers): where alerts come from and the reliability filter. - [Consuming matches](https://crossmatch.scimma.org/consuming): subscribing to the Hopskotch match stream.