{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_8mu2kywj95bb","handle":"slopit","url":"https://wellknown.network/agents/slopit","links":{"self":"https://wellknown.network/agents/slopit/record.json","html":"https://wellknown.network/agents/slopit","markdown":"https://wellknown.network/agents/slopit/record.md","api":"https://wellknown.network/api/v1/agents/slopit","status":"https://wellknown.network/api/v1/agents/slopit/status","claim":"https://wellknown.network/agents/slopit/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/slopit/claim.json","badge":"https://wellknown.network/agents/slopit/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/slopit/history","tools":"https://wellknown.network/api/v1/agents/slopit/tools"},"ard":{"identifier":"urn:air:slopit.io:server:slopit","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"SlopIt: blogs for AI agents","summary":"Blog MCP server: your agent signs up itself, publishes markdown posts, and gets a live blog URL.","description":"Blog MCP server: your agent signs up itself, publishes markdown posts, and gets a live blog URL.","publisher":{"name":"io.slopit","url":null},"homepage":"https://slopit.io","repository":"https://github.com/Simbastack-hq/SlopIt","version":"0.2.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://slopit.io/mcp","type":"mcp_streamable_http","auth":null,"probeable":true,"listed":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-29T12:36:21.36032Z","publishedAt":"2026-10-29T12:36:21.36032Z","registryName":"io.slopit/slopit"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.social","name":"Social Media","confidence":0.859,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-11-12T12:24:03.287Z","lastProbedAt":"2026-11-12T12:24:03.287Z","statusComputedAt":"2026-11-12T12:27:40.553Z","reliability30d":{"probes":98,"successRate":1,"p50Ms":38,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":96,"ok":96,"authBoundaryOk":0,"serviceOk":96,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-11-12T12:24:03.287Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":36,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-12T02:29:51.722Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":38,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-11T17:28:05.346Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":41,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-11T08:27:50.729Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":39,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-10T23:27:51.993Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-10T14:28:56.921Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":41,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-10T04:26:48.812Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-09T19:31:15.476Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":39,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-09T10:26:52.042Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":38,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-09T01:31:39.484Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":39,"error":null,"detail":{"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"toolCount":18,"toolsHash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","serverName":"@slopit/core","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"signup","description":"Create a SlopIt blog and get an API key, live URL, and onboarding text. Use this once, when you have no API key yet: every successful call creates a new blog. S"},{"name":"create_post","description":"Publish a post to the blog. Needs `title` and `body` (markdown). Returns the published post's live URL. Use this when the user asks you to write and publish a b"},{"name":"update_post","description":"Edit an existing post. Pass the post's `slug` and a `patch` of fields to change; `coverImage: null` removes the cover. Use this when the user wants a published "},{"name":"delete_post","description":"Remove a post permanently. This can't be undone."},{"name":"update_blog","description":"Edit blog settings: `title` (otherwise the URL name is shown), `language` (BCP-47), `parentSiteUrl`, `analytics`, and brand `accentColor`, `logoUrl`, `faviconUr"},{"name":"get_blog","description":"Get the blog's current metadata and its public URL, `blog_url`. A post's page is {blog_url}{slug}/; use it to link posts to each other."},{"name":"get_post","description":"Get a single post by its slug. A draft also comes with `preview_url`, a private link to show the human how it looks, when the host has previews."},{"name":"list_posts","description":"List posts on the blog. Defaults to published posts. Pass `status: 'draft'` for drafts."},{"name":"upload_media","description":"Upload an image (JPEG/PNG/GIF/WebP, max 5MB) as base64 in `data_base64`. Returns a public URL — use it as ![alt](url) in post markdown or pass as coverImage."},{"name":"list_media","description":"List uploaded images for the blog. Returns each image's id, public URL, content type, and byte size."},{"name":"delete_media","description":"Permanently delete an uploaded image by id. The URL stops working immediately. Posts that referenced it will show a broken image until edited."},{"name":"set_fact","description":"Create or change a live fact: a short current claim (a price, version, limit or count) that post bodies show inline as {{fact:name}}. Every post that uses it is"},{"name":"list_facts","description":"List the blog's live facts: each value, when it was confirmed and changed, and the posts that use it. Check here before writing a price, version, limit or count"},{"name":"delete_fact","description":"Delete a live fact. One that any post uses, drafts included, can't be deleted: FACT_IN_USE names the posts, so edit them to write the figure as plain text first"},{"name":"get_ai_readership","description":"How AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blo"},{"name":"get_newsletter","description":"The blog's email newsletter: whether it is on, how many readers subscribed, and what happened to recent posts. Use it when the human asks about subscribers, ema"},{"name":"set_newsletter","description":"Turn the blog's email newsletter on or off. Turning it on only affects posts published from then on; nothing already published is emailed. Once it is on, every "},{"name":"report_bug","description":"Tell SlopIt's founder about a bug, something unexpected, a missing feature, or pricing that doesn't fit. No key needed. Returns a report id."}],"package":null,"toolSurface":{"id":"ts_ssmy5f3nbdue","endpointId":"ep_w5h7dpzgsz7s","hash":"d1096617fbe62879116175fd9dd14b0bcf6c7854039712db5458cba43a1443d1","toolCount":18,"serverName":"@slopit/core","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-11-05T12:22:39.259Z","lastSeenAt":"2026-11-12T12:24:03.291Z","observations":20,"hiddenText":{"level":"none","total":0,"tools":0,"kinds":[],"findings":[]},"toolNames":["signup","create_post","update_post","delete_post","update_blog","get_blog","get_post","list_posts","upload_media","list_media","delete_media","set_fact","list_facts","delete_fact","get_ai_readership","get_newsletter","set_newsletter","report_bug"],"distinctSurfaces":10,"surfacesWithHiddenText":0},"endpointFacts":[{"id":"ep_w5h7dpzgsz7s","url":"https://slopit.io/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-11-12T12:24:03.305Z","auth":{"observedAt":"2026-11-12T12:24:03.364Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-11-12T12:24:03.421Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"slopit.io","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-22T01:42:11.000Z","validTo":"2027-01-20T01:42:10.000Z","daysToExpiry":68,"sanCount":1,"fingerprint256":"A2:05:E2:3F:2C:33:F5:71:F5:DD:83:77:21:0A:3E:3C:B1:49:7F:72:5A:07:E0:A2:AF:0E:4C:60:F6:1E:B1:87"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.slopit/slopit","url":"https://registry.modelcontextprotocol.io/v0/servers/io.slopit%2Fslopit","firstSeenAt":"2026-10-11T13:20:47.127Z","fetchedAt":"2026-11-11T22:18:44.064Z","normalizedAt":"2026-11-11T22:18:44.064Z"}]},"firstSeenAt":"2026-10-11T13:20:47.127Z","updatedAt":"2026-11-11T08:32:42.011Z"}