Update to SPACEXPLORATION
Snapshot Oct 29, 2026 · 12:06 UTC · version 1.2.7
Collection source: downloaded plugin package.
Payment or plan references changed
Skill instructions — Now says: Asked what listing costs, how long a listing stays up, or another question about SPACEXPLORATION itself? Call `get_faq`, answer from it, and link the entry's...
Observed in published text. Live prices and checkout terms have not been verified by this change.
Up to 10 plugins free · no card required.
All fields and original values.
Skill instructions
Oct 24, 2026 · 13:44 UTC
- `pricing`: `sale_price` for a sale, or `lease_rate` plus `lease_rate_period` for a lease. Set `price_on_request: true` when no price is published. 7. **`publish_listing`** starts an asynchronous pipeline that enriches the listing an...
Oct 29, 2026 · 12:06 UTC
Asked what listing costs, how long a listing stays up, or another question about SPACEXPLORATION itself? Call `get_faq`, answer from it, and link the entry's `url`. - `pricing`: `sale_price` for a sale. For a lease, `lease_rate_period...
Compare saved observations
Download comparison JSONSKILL.md text changes
− removed · + added
--- before +++ after @@ -14,6 +14,8 @@ When a tool reports one of these as missing, pass the message on, including the link it contains, and stop. These checks are completed on spacexploration.com, not through tools. +Asked what listing costs, how long a listing stays up, or another question about SPACEXPLORATION itself? Call `get_faq`, answer from it, and link the entry's `url`. + ## Honesty comes first A listing is a public, broker-attributed record. **Enter only what the user or their document states.** Leave a field empty when the source is silent; don't estimate, round, or infer. When publishing, SPACEXPLORATION fills computed facts such as flood zone, demographics, public records, and market data from authoritative sources. A guessed value in a broker-stated field is worse than a blank. When something is ambiguous, such as price per square foot versus a total price, ask. @@ -25,13 +27,14 @@ 1. **`geocode_address`** turns the property's address into the coordinates, county, and `place_id` that `create_listing` requires. Use its output as-is; don't geocode some other way. 2. **`create_listing`** takes the geocoded fields plus `property_type` (a value from the `get_registry` property_type attribute) and `listing_type` (`sale` or `lease`). Include `apn` when the document gives a parcel number. Pass an `idempotency_key` (a UUID) so a retry can't create a duplicate. It returns a draft with its `hashid`. 3. **`update_listing`** sets the core groups. Send each group whole, not just the field that changed: - - `pricing`: `sale_price` for a sale, or `lease_rate` plus `lease_rate_period` for a lease. Set `price_on_request: true` when no price is published. + - `pricing`: `sale_price` for a sale. For a lease, `lease_rate_period` is the basis every rate is quoted in, such as `per_sqft_year`. Set `price_on_request: true` when no price is published. + - `spaces` (leases only): a lease is priced per suite. Publishing needs at least one available suite with its `available_sqft` and a `lease_rate` or `price_on_request: true`. Send the whole list, because a suite left out is removed. To change suites, start from the `spaces` that `get_listing` returns and keep each suite's `id`. A whole building leased as one is a single suite; for it, you can set `lease_rate` and `available_sqft` in `pricing` instead of sending `spaces`. - `marketing`: `headline`, `summary`, `highlights` (an array of short strings). Draw these from the source's own wording. - `parcel`: `lot_size` is **integer square feet**. Convert acres × 43,560 and set `lot_size_unit` to the unit the source used. 4. **`set_listing_attributes`** sets the detailed fields: a map from registry `field` to value, e.g. `{"attr_industrial_clear_height": 32, "attr_industrial_dock_doors": 4}`. Only fields `get_registry` marks `"writable": true` are accepted. Send `null` to clear a field. 5. **Photos.** `attach_listing_photo` takes one public `https` image URL per call. The server fetches the image and runs content moderation on it. A photo whose `moderation_status` is `rejected` or `escalated` stays hidden and blocks publishing until it is removed with `delete_attachment` or replaced. For a local file, `sign_attachment_upload` returns a presigned URL to `PUT` the bytes to, then `confirm_attachment_upload` finalizes it. This path only works where you can make HTTP requests yourself, such as a coding agent with shell access. 6. **Review with the user.** Call `get_listing`, summarize what will go public, and get explicit approval before publishing. -7. **`publish_listing`** starts an asynchronous pipeline that enriches the listing and then makes it public. If the listing isn't ready, the tool returns a checklist of what is missing; resolve those items and try again. +7. **`publish_listing`** starts an asynchronous pipeline that enriches the listing and then makes it public. If the listing isn't ready, the tool returns a checklist of what is missing; resolve those items and try again. When it starts, it also returns `suggestions`: fixes that don't block publishing but improve the listing, such as a flyer used as the cover photo, a placeholder address, or an unusual cap rate. Pass each one on to the user, and offer to make the fix once the listing is live. 8. **`get_publish_status`** with the `hashid` reports progress. Poll it until `state` is `completed` or `failed`. On `failed`, report the reason it gives. Once published, `get_listing` returns the listing's public `url`; give it to the user. ## Manage existing listings
Full technical diff · 1 changed fields
changed /skill_md_contents
"---\nname: author-listing\ndescription: Create, update, and publish a commercial real estate listing on SPACEXPLORATION from a flyer, offering memorandum, or details the user provides. Use when a broker or owner wants to list a property for sale or lease, turn a flyer or OM into a listing, add photos, edit or publish a listing they own, check publish progress, or take a listing off the market. Requires a SPACEXPLORATION account.\n---\n\n# Author a listing on SPACEXPLORATION\n\nThe user's explicit instructions take precedence over this skill. When the user has already asked for a specific action, such as publishing or withdrawing a specific listing, carry it out without asking again.\n\nAuthoring tools act on the user's own account. The first one to run asks the user to sign in through the browser. The account also needs:\n\n- **A verified email address and a completed onboarding** to create or edit listings.\n- **A verified phone number** to publish.\n\nWhen a tool reports one of these as missing, pass the message on, including the link it contains, and stop. These checks are completed on spacexploration.com, not through tools.\n\n## Honesty comes first\n\nA listing is a public, broker-attributed record. **Enter only what the user or their document states.** Leave a field empty when the source is silent; don't estimate, round, or infer. When publishing, SPACEXPLORATION fills computed facts such as flood zone, demographics, public records, and market data from authoritative sources. A guessed value in a broker-stated field is worse than a blank. When something is ambiguous, such as price per square foot versus a total price, ask.\n\n## Flow\n\nEvery step after creation uses the listing's `hashid`.\n\n1. **`geocode_address`** turns the property's address into the coordinates, county, and `place_id` that `create_listing` requires. Use its output as-is; don't geocode some other way.\n2. **`create_listing`** takes the geocoded fields plus `property_type` (a value from the `get_registry` property_type attribute) and `listing_type` (`sale` or `lease`). Include `apn` when the document gives a parcel number. Pass an `idempotency_key` (a UUID) so a retry can't create a duplicate. It returns a draft with its `hashid`.\n3. **`update_listing`** sets the core groups. Send each group whole, not just the field that changed:\n - `pricing`: `sale_price` for a sale, or `lease_rate` plus `lease_rate_period` for a lease. Set `price_on_request: true` when no price is published.\n - `marketing`: `headline`, `summary`, `highlights` (an array of short strings). Draw these from the source's own wording.\n - `parcel`: `lot_size` is **integer square feet**. Convert acres × 43,560 and set `lot_size_unit` to the unit the source used.\n4. **`set_listing_attributes`** sets the detailed fields: a map from registry `field` to value, e.g. `{\"attr_industrial_clear_height\": 32, \"attr_industrial_dock_doors\": 4}`. Only fields `get_registry` marks `\"writable\": true` are accepted. Send `null` to clear a field.\n5. **Photos.** `attach_listing_photo` takes one public `https` image URL per call. The server fetches the image and runs content moderation on it. A photo whose `moderation_status` is `rejected` or `escalated` stays hidden and blocks publishing until it is removed with `delete_attachment` or replaced. For a local file, `sign_attachment_upload` returns a presigned URL to `PUT` the bytes to, then `confirm_attachment_upload` finalizes it. This path only works where you can make HTTP requests yourself, such as a coding agent with shell access.\n6. **Review with the user.** Call `get_listing`, summarize what will go public, and get explicit approval before publishing.\n7. **`publish_listing`** starts an asynchronous pipeline that enriches the listing and then makes it public. If the listing isn't ready, the tool returns a checklist of what is missing; resolve those items and try again.\n8. **`get_publish_status`** with the `hashid` reports progress. Poll it until `state` is `completed` or `failed`. On `failed`, report the reason it gives. Once published, `get_listing` returns the listing's public `url`; give it to the user.\n\n## Manage existing listings\n\n- `list_my_listings` returns the user's listings, optionally filtered by `status` (`draft`, `active`, `sold`, `leased`, `withdrawn`, …).\n- `withdraw_listing` removes a listing from public search **permanently**: a withdrawn listing can't be reactivated, and relisting means creating a new listing. Explain this and get the user's confirmation before calling it.\n""---\nname: author-listing\ndescription: Create, update, and publish a commercial real estate listing on SPACEXPLORATION from a flyer, offering memorandum, or details the user provides. Use when a broker or owner wants to list a property for sale or lease, turn a flyer or OM into a listing, add photos, edit or publish a listing they own, check publish progress, or take a listing off the market. Requires a SPACEXPLORATION account.\n---\n\n# Author a listing on SPACEXPLORATION\n\nThe user's explicit instructions take precedence over this skill. When the user has already asked for a specific action, such as publishing or withdrawing a specific listing, carry it out without asking again.\n\nAuthoring tools act on the user's own account. The first one to run asks the user to sign in through the browser. The account also needs:\n\n- **A verified email address and a completed onboarding** to create or edit listings.\n- **A verified phone number** to publish.\n\nWhen a tool reports one of these as missing, pass the message on, including the link it contains, and stop. These checks are completed on spacexploration.com, not through tools.\n\nAsked what listing costs, how long a listing stays up, or another question about SPACEXPLORATION itself? Call `get_faq`, answer from it, and link the entry's `url`.\n\n## Honesty comes first\n\nA listing is a public, broker-attributed record. **Enter only what the user or their document states.** Leave a field empty when the source is silent; don't estimate, round, or infer. When publishing, SPACEXPLORATION fills computed facts such as flood zone, demographics, public records, and market data from authoritative sources. A guessed value in a broker-stated field is worse than a blank. When something is ambiguous, such as price per square foot versus a total price, ask.\n\n## Flow\n\nEvery step after creation uses the listing's `hashid`.\n\n1. **`geocode_address`** turns the property's address into the coordinates, county, and `place_id` that `create_listing` requires. Use its output as-is; don't geocode some other way.\n2. **`create_listing`** takes the geocoded fields plus `property_type` (a value from the `get_registry` property_type attribute) and `listing_type` (`sale` or `lease`). Include `apn` when the document gives a parcel number. Pass an `idempotency_key` (a UUID) so a retry can't create a duplicate. It returns a draft with its `hashid`.\n3. **`update_listing`** sets the core groups. Send each group whole, not just the field that changed:\n - `pricing`: `sale_price` for a sale. For a lease, `lease_rate_period` is the basis every rate is quoted in, such as `per_sqft_year`. Set `price_on_request: true` when no price is published.\n - `spaces` (leases only): a lease is priced per suite. Publishing needs at least one available suite with its `available_sqft` and a `lease_rate` or `price_on_request: true`. Send the whole list, because a suite left out is removed. To change suites, start from the `spaces` that `get_listing` returns and keep each suite's `id`. A whole building leased as one is a single suite; for it, you can set `lease_rate` and `available_sqft` in `pricing` instead of sending `spaces`.\n - `marketing`: `headline`, `summary`, `highlights` (an array of short strings). Draw these from the source's own wording.\n - `parcel`: `lot_size` is **integer square feet**. Convert acres × 43,560 and set `lot_size_unit` to the unit the source used.\n4. **`set_listing_attributes`** sets the detailed fields: a map from registry `field` to value, e.g. `{\"attr_industrial_clear_height\": 32, \"attr_industrial_dock_doors\": 4}`. Only fields `get_registry` marks `\"writable\": true` are accepted. Send `null` to clear a field.\n5. **Photos.** `attach_listing_photo` takes one public `https` image URL per call. The server fetches the image and runs content moderation on it. A photo whose `moderation_status` is `rejected` or `escalated` stays hidden and blocks publishing until it is removed with `delete_attachment` or replaced. For a local file, `sign_attachment_upload` returns a presigned URL to `PUT` the bytes to, then `confirm_attachment_upload` finalizes it. This path only works where you can make HTTP requests yourself, such as a coding agent with shell access.\n6. **Review with the user.** Call `get_listing`, summarize what will go public, and get explicit approval before publishing.\n7. **`publish_listing`** starts an asynchronous pipeline that enriches the listing and then makes it public. If the listing isn't ready, the tool returns a checklist of what is missing; resolve those items and try again. When it starts, it also returns `suggestions`: fixes that don't block publishing but improve the listing, such as a flyer used as the cover photo, a placeholder address, or an unusual cap rate. Pass each one on to the user, and offer to make the fix once the listing is live.\n8. **`get_publish_status`** with the `hashid` reports progress. Poll it until `state` is `completed` or `failed`. On `failed`, report the reason it gives. Once published, `get_listing` returns the listing's public `url`; give it to the user.\n\n## Manage existing listings\n\n- `list_my_listings` returns the user's listings, optionally filtered by `status` (`draft`, `active`, `sold`, `leased`, `withdrawn`, …).\n- `withdraw_listing` removes a listing from public search **permanently**: a withdrawn listing can't be reactivated, and relisting means creating a new listing. Explain this and get the user's confirmation before calling it.\n"Full snapshot data
{
"description": "Create, update, and publish a commercial real estate listing on SPACEXPLORATION from a flyer, offering memorandum, or details the user provides. Use when a broker or owner wants to list a property for sale or lease, turn a flyer or OM into a listing, add photos, edit or publish a listing they own, check publish progress, or take a listing off the market. Requires a SPACEXPLORATION account.",
"included_files": [],
"name": "author-listing",
"skill_md_contents": "---\nname: author-listing\ndescription: Create, update, and publish a commercial real estate listing on SPACEXPLORATION from a flyer, offering memorandum, or details the user provides. Use when a broker or owner wants to list a property for sale or lease, turn a flyer or OM into a listing, add photos, edit or publish a listing they own, check publish progress, or take a listing off the market. Requires a SPACEXPLORATION account.\n---\n\n# Author a listing on SPACEXPLORATION\n\nThe user's explicit instructions take precedence over this skill. When the user has already asked for a specific action, such as publishing or withdrawing a specific listing, carry it out without asking again.\n\nAuthoring tools act on the user's own account. The first one to run asks the user to sign in through the browser. The account also needs:\n\n- **A verified email address and a completed onboarding** to create or edit listings.\n- **A verified phone number** to publish.\n\nWhen a tool reports one of these as missing, pass the message on, including the link it contains, and stop. These checks are completed on spacexploration.com, not through tools.\n\nAsked what listing costs, how long a listing stays up, or another question about SPACEXPLORATION itself? Call `get_faq`, answer from it, and link the entry's `url`.\n\n## Honesty comes first\n\nA listing is a public, broker-attributed record. **Enter only what the user or their document states.** Leave a field empty when the source is silent; don't estimate, round, or infer. When publishing, SPACEXPLORATION fills computed facts such as flood zone, demographics, public records, and market data from authoritative sources. A guessed value in a broker-stated field is worse than a blank. When something is ambiguous, such as price per square foot versus a total price, ask.\n\n## Flow\n\nEvery step after creation uses the listing's `hashid`.\n\n1. **`geocode_address`** turns the property's address into the coordinates, county, and `place_id` that `create_listing` requires. Use its output as-is; don't geocode some other way.\n2. **`create_listing`** takes the geocoded fields plus `property_type` (a value from the `get_registry` property_type attribute) and `listing_type` (`sale` or `lease`). Include `apn` when the document gives a parcel number. Pass an `idempotency_key` (a UUID) so a retry can't create a duplicate. It returns a draft with its `hashid`.\n3. **`update_listing`** sets the core groups. Send each group whole, not just the field that changed:\n - `pricing`: `sale_price` for a sale. For a lease, `lease_rate_period` is the basis every rate is quoted in, such as `per_sqft_year`. Set `price_on_request: true` when no price is published.\n - `spaces` (leases only): a lease is priced per suite. Publishing needs at least one available suite with its `available_sqft` and a `lease_rate` or `price_on_request: true`. Send the whole list, because a suite left out is removed. To change suites, start from the `spaces` that `get_listing` returns and keep each suite's `id`. A whole building leased as one is a single suite; for it, you can set `lease_rate` and `available_sqft` in `pricing` instead of sending `spaces`.\n - `marketing`: `headline`, `summary`, `highlights` (an array of short strings). Draw these from the source's own wording.\n - `parcel`: `lot_size` is **integer square feet**. Convert acres × 43,560 and set `lot_size_unit` to the unit the source used.\n4. **`set_listing_attributes`** sets the detailed fields: a map from registry `field` to value, e.g. `{\"attr_industrial_clear_height\": 32, \"attr_industrial_dock_doors\": 4}`. Only fields `get_registry` marks `\"writable\": true` are accepted. Send `null` to clear a field.\n5. **Photos.** `attach_listing_photo` takes one public `https` image URL per call. The server fetches the image and runs content moderation on it. A photo whose `moderation_status` is `rejected` or `escalated` stays hidden and blocks publishing until it is removed with `delete_attachment` or replaced. For a local file, `sign_attachment_upload` returns a presigned URL to `PUT` the bytes to, then `confirm_attachment_upload` finalizes it. This path only works where you can make HTTP requests yourself, such as a coding agent with shell access.\n6. **Review with the user.** Call `get_listing`, summarize what will go public, and get explicit approval before publishing.\n7. **`publish_listing`** starts an asynchronous pipeline that enriches the listing and then makes it public. If the listing isn't ready, the tool returns a checklist of what is missing; resolve those items and try again. When it starts, it also returns `suggestions`: fixes that don't block publishing but improve the listing, such as a flyer used as the cover photo, a placeholder address, or an unusual cap rate. Pass each one on to the user, and offer to make the fix once the listing is live.\n8. **`get_publish_status`** with the `hashid` reports progress. Poll it until `state` is `completed` or `failed`. On `failed`, report the reason it gives. Once published, `get_listing` returns the listing's public `url`; give it to the user.\n\n## Manage existing listings\n\n- `list_my_listings` returns the user's listings, optionally filtered by `status` (`draft`, `active`, `sold`, `leased`, `withdrawn`, …).\n- `withdraw_listing` removes a listing from public search **permanently**: a withdrawn listing can't be reactivated, and relisting means creating a new listing. Explain this and get the user's confirmation before calling it.\n"
}SHA-256 of public snapshot: 62dd0f49db1c15d5c88e728959adb4f5ed7b5427bd641978998d40f2e0854b79