Endpoint and authentication
The MCP endpoint is /mcp on the configured public site origin. The server uses Streamable HTTP POST. It requires an authenticated identity, a scoped API token and an Autopilot entitlement. GET returns 405.
OAuth discovery and token verification depend on an externally operated issuer configured as MCP_ISSUER_URL; IndieLogs does not run that authorization server. The issuer must publish matching HTTPS authorization, token, dynamic-registration and JWKS endpoints with PKCE S256. Issued JWTs must use RS256, target the exact MCP_RESOURCE_URL audience and provide a verified IndieLogs account mapping in indielogs_user_id, plus the requested scopes. MCP_RESOURCE_URL is required when validating tokens even though protected-resource discovery has a fallback URL. These prerequisites and a working OAuth client must be configured and accepted separately. A scoped IndieLogs API token is the other supported credential path.
Tools
Named tools and generic operation tools are derived from the shared contract allowlist. The table below is rendered from the registered MCP definitions; session-only operations are not exposed. The invoke_operation tool accepts only an operation included in that allowlist.
op_revenue_disclosures- Execute IndieLogs revenue.disclosures operation.
op_reports_generate- Execute IndieLogs reports.generate operation.
op_reports_read- Execute IndieLogs reports.read operation.
op_sponsorships_options- Execute IndieLogs sponsorships.options operation.
op_sponsorships_mine- Execute IndieLogs sponsorships.mine operation.
op_sponsorships_active- Execute IndieLogs sponsorships.active operation.
op_search_public- Execute IndieLogs search.public operation.
op_outputs_list- Execute IndieLogs outputs.list operation.
op_outputs_retry- Execute IndieLogs outputs.retry operation.
op_billing_read- Execute IndieLogs billing.read operation.
op_editions_list- Execute IndieLogs editions.list operation.
op_editions_get- Execute IndieLogs editions.get operation.
op_editions_feed- Execute IndieLogs editions.feed operation.
op_editions_mine- Execute IndieLogs editions.mine operation.
op_chapters_list- Execute IndieLogs chapters.list operation.
op_chapters_mine- Execute IndieLogs chapters.mine operation.
op_feed_list- Execute IndieLogs feed.list operation.
op_profiles_get- Execute IndieLogs profiles.get operation.
op_rankings_list- Execute IndieLogs rankings.list operation.
op_projects_directory- Execute IndieLogs projects.directory operation.
list_projects- List your projects.
op_projects_get- Execute IndieLogs projects.get operation.
op_projects_create- Execute IndieLogs projects.create operation.
op_projects_update- Execute IndieLogs projects.update operation.
op_projects_delete- Execute IndieLogs projects.delete operation.
op_projects_analyze- Execute IndieLogs projects.analyze operation.
recent_updates- Read recent published updates for one project.
op_updates_publish- Execute IndieLogs updates.publish operation.
op_updates_update- Execute IndieLogs updates.update operation.
op_updates_delete- Execute IndieLogs updates.delete operation.
op_updates_cheer- Execute IndieLogs updates.cheer operation.
op_updates_replies_list- Execute IndieLogs updates.replies.list operation.
op_updates_replies_create- Execute IndieLogs updates.replies.create operation.
op_updates_replies_delete- Execute IndieLogs updates.replies.delete operation.
get_desk- Read one page of waiting, queued, or held drafts; use offset to retrieve another page.
draft_update- Create a source-backed draft for review. It never publishes.
op_drafts_get- Execute IndieLogs drafts.get operation.
op_drafts_create- Execute IndieLogs drafts.create operation.
op_drafts_generate- Execute IndieLogs drafts.generate operation.
op_drafts_update- Execute IndieLogs drafts.update operation.
op_drafts_schedule- Execute IndieLogs drafts.schedule operation.
publish_draft- Publish a ready draft, respecting holds.
op_drafts_hold- Execute IndieLogs drafts.hold operation.
op_drafts_hold_all- Execute IndieLogs drafts.hold-all operation.
op_drafts_skip- Execute IndieLogs drafts.skip operation.
op_drafts_rewrite- Execute IndieLogs drafts.rewrite operation.
op_drafts_release- Execute IndieLogs drafts.release operation.
attach_screenshot- Attach a public image or base64 screenshot to a draft.
op_story_publish- Execute IndieLogs story.publish operation.
op_story_split- Execute IndieLogs story.split operation.
op_story_rebuild- Execute IndieLogs story.rebuild operation.
op_story_rebuild_status- Execute IndieLogs story.rebuild-status operation.
op_story_decline- Execute IndieLogs story.decline operation.
op_story_undo- Execute IndieLogs story.undo operation.
op_chapters_update- Execute IndieLogs chapters.update operation.
op_voice_read- Execute IndieLogs voice.read operation.
op_voice_update- Execute IndieLogs voice.update operation.
op_voice_try- Execute IndieLogs voice.try operation.
op_voice_infer- Execute IndieLogs voice.infer operation.
op_voice_suggestions_list- Execute IndieLogs voice.suggestions.list operation.
op_voice_suggestions_decide- Execute IndieLogs voice.suggestions.decide operation.
op_voice_import- Execute IndieLogs voice.import operation.
op_voice_examples_list- Execute IndieLogs voice.examples.list operation.
op_voice_examples_create- Execute IndieLogs voice.examples.create operation.
op_voice_examples_update- Execute IndieLogs voice.examples.update operation.
op_voice_examples_delete- Execute IndieLogs voice.examples.delete operation.
op_notifications_list- Execute IndieLogs notifications.list operation.
op_notifications_read- Execute IndieLogs notifications.read operation.
op_notification_preferences_read- Execute IndieLogs notification-preferences.read operation.
op_notification_preferences_update- Execute IndieLogs notification-preferences.update operation.
op_account_export- Execute IndieLogs account.export operation.
op_settings_read- Execute IndieLogs settings.read operation.
op_settings_update- Execute IndieLogs settings.update operation.
list_tokens- List your agent tokens without secrets.
create_token- Create a scoped revocable token.
revoke_token- Revoke an owned token.
op_follows_list- Execute IndieLogs follows.list operation.
op_follows_create- Execute IndieLogs follows.create operation.
op_follows_delete- Execute IndieLogs follows.delete operation.
op_sources_commits_list- Execute IndieLogs sources.commits.list operation.
op_sources_groups_list- Execute IndieLogs sources.groups.list operation.
op_sources_webhook_status- Execute IndieLogs sources.webhook-status operation.
op_sources_list- Execute IndieLogs sources.list operation.
op_sources_disconnect- Execute IndieLogs sources.disconnect operation.
op_sources_update- Execute IndieLogs sources.update operation.
op_sources_link- Execute IndieLogs sources.link operation.
op_sources_github_configure- Execute IndieLogs sources.github.configure operation.
op_sources_github_repositories- Execute IndieLogs sources.github.repositories operation.
op_sources_github_unlink- Execute IndieLogs sources.github.unlink operation.
op_sources_capture- Execute IndieLogs sources.capture operation.
op_sources_revenue_settings- Execute IndieLogs sources.revenue-settings operation.
op_sources_revenue_status- Execute IndieLogs sources.revenue-status operation.
op_sources_revenue_disconnect- Execute IndieLogs sources.revenue-disconnect operation.
op_sources_revenue_refresh- Execute IndieLogs sources.revenue-refresh operation.
Safety
- draft_update creates a source-backed draft and never publishes it.
- publish_draft is an explicit write and still respects ownership, token scope and draft review gates.
- Do not give an agent a database service key. Use a revocable IndieLogs token with only the scopes it needs.
- MCP is rate limited per token. Provider delivery and production OAuth acceptance require separate verification.
This page describes the checked-in IndieLogs implementation. Provider credentials, feature flags and account entitlements are deployment-specific.