MCP Server

nowyourlink public Spotlights

io.github.ArneFfm/nowyourlink
Marketing & Advertising Public & reachable MCP 2026-07-28

What this MCP does

Provides read-only access to settled public advertising Spotlights and synthetic sandbox job status.

create_sandbox_job
Create sandbox job
Start a synthetic asynchronous sandbox job that exercises the Idempotency-Key and 202-then-poll pattern of the write API without touching real auctions, ads or money. Poll it with get_sandbox_job.
Idempotent
Input schema
{'type': 'object', 'required': ['idempotencyKey'], 'properties': {'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x7e]+$', 'maxLength': 255, 'minLength': 1, 'description': 'Client-chosen key; the same key always returns the same jobId.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['sandbox', 'jobId', 'status', 'statusUrl'], 'properties': {'jobId': {'type': 'string', 'pattern': '^sbx_[0-9a-f]{16}$'}, 'result': {'type': 'object', 'required': ['sandbox', 'data'], 'properties': {'data': {'type': 'object', 'required': ['day', 'headline', 'description', 'advertiser', 'canonicalUrl', 'contentType'], 'properties': {'day': {'type': 'string', 'format': 'date', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Settled auction date in UTC, YYYY-MM-DD.'}, 'headline': {'type': 'string'}, 'advertiser': {'type': 'string'}, 'contentType': {'enum': ['paid_advertisement', 'house_advertisement'], 'type': 'string'}, 'description': {'type': 'string'}, 'canonicalUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'sandbox': {'const': True}}}, 'status': {'enum': ['queued', 'completed'], 'type': 'string'}, 'sandbox': {'const': True}, 'statusUrl': {'type': 'string', 'format': 'uri'}}}, {'type': 'object', 'required': ['type', 'title', 'status', 'detail'], 'properties': {'docs': {'type': 'string', 'format': 'uri'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'detail': {'type': 'string'}, 'status': {'type': 'integer'}}}]}
get_current_spotlight
Get current Spotlight
Read the currently displayed settled public Spotlight, including labeled house advertisements. Does not bid or pay.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'includeHouseAds': {'type': 'boolean', 'default': True, 'description': 'When false, a current house advertisement is reported as unavailable instead of returned.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['data'], 'properties': {'data': {'type': 'object', 'required': ['day', 'headline', 'description', 'advertiser', 'canonicalUrl', 'contentType'], 'properties': {'day': {'type': 'string', 'format': 'date', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Settled auction date in UTC, YYYY-MM-DD.'}, 'headline': {'type': 'string'}, 'advertiser': {'type': 'string'}, 'contentType': {'enum': ['paid_advertisement', 'house_advertisement'], 'type': 'string'}, 'description': {'type': 'string'}, 'canonicalUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}}}, {'type': 'object', 'required': ['type', 'title', 'status', 'detail'], 'properties': {'docs': {'type': 'string', 'format': 'uri'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'detail': {'type': 'string'}, 'status': {'type': 'integer'}}}]}
get_sandbox_job
Get sandbox job
Read the status and synthetic result of a sandbox job created with create_sandbox_job. Every well-formed jobId resolves as completed, so a result is not proof that the key was created.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string', 'pattern': '^sbx_[0-9a-f]{16}$', 'description': 'jobId returned by create_sandbox_job.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['sandbox', 'jobId', 'status', 'statusUrl'], 'properties': {'jobId': {'type': 'string', 'pattern': '^sbx_[0-9a-f]{16}$'}, 'result': {'type': 'object', 'required': ['sandbox', 'data'], 'properties': {'data': {'type': 'object', 'required': ['day', 'headline', 'description', 'advertiser', 'canonicalUrl', 'contentType'], 'properties': {'day': {'type': 'string', 'format': 'date', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Settled auction date in UTC, YYYY-MM-DD.'}, 'headline': {'type': 'string'}, 'advertiser': {'type': 'string'}, 'contentType': {'enum': ['paid_advertisement', 'house_advertisement'], 'type': 'string'}, 'description': {'type': 'string'}, 'canonicalUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'sandbox': {'const': True}}}, 'status': {'enum': ['queued', 'completed'], 'type': 'string'}, 'sandbox': {'const': True}, 'statusUrl': {'type': 'string', 'format': 'uri'}}}, {'type': 'object', 'required': ['type', 'title', 'status', 'detail'], 'properties': {'docs': {'type': 'string', 'format': 'uri'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'detail': {'type': 'string'}, 'status': {'type': 'integer'}}}]}
get_spotlight
Get Spotlight by date
Read one settled public Spotlight by date, including labeled house advertisements. Removed or missing days are unavailable.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['day'], 'properties': {'day': {'type': 'string', 'format': 'date', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Settled auction date in UTC, YYYY-MM-DD.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['data'], 'properties': {'data': {'type': 'object', 'required': ['day', 'headline', 'description', 'advertiser', 'canonicalUrl', 'contentType'], 'properties': {'day': {'type': 'string', 'format': 'date', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Settled auction date in UTC, YYYY-MM-DD.'}, 'headline': {'type': 'string'}, 'advertiser': {'type': 'string'}, 'contentType': {'enum': ['paid_advertisement', 'house_advertisement'], 'type': 'string'}, 'description': {'type': 'string'}, 'canonicalUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}}}, {'type': 'object', 'required': ['type', 'title', 'status', 'detail'], 'properties': {'docs': {'type': 'string', 'format': 'uri'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'detail': {'type': 'string'}, 'status': {'type': 'integer'}}}]}
list_spotlights
List Spotlights
Browse settled public Spotlights, newest first, including labeled house advertisements. Removed ads are excluded.
Read only Idempotent
Input schema
{'not': {'required': ['cursor', 'offset']}, 'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'cursor': {'type': 'string', 'format': 'date', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Exclusive older-date cursor from nextCursor; cannot be combined with offset.'}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['data', 'nextOffset', 'nextCursor'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'headline', 'description', 'advertiser', 'canonicalUrl', 'contentType'], 'properties': {'day': {'type': 'string', 'format': 'date', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Settled auction date in UTC, YYYY-MM-DD.'}, 'headline': {'type': 'string'}, 'advertiser': {'type': 'string'}, 'contentType': {'enum': ['paid_advertisement', 'house_advertisement'], 'type': 'string'}, 'description': {'type': 'string'}, 'canonicalUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}}, 'nextCursor': {'anyOf': [{'type': 'string', 'format': 'date', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Settled auction date in UTC, YYYY-MM-DD.'}, {'type': 'null'}]}, 'nextOffset': {'type': ['integer', 'null']}}}, {'type': 'object', 'required': ['type', 'title', 'status', 'detail'], 'properties': {'docs': {'type': 'string', 'format': 'uri'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'detail': {'type': 'string'}, 'status': {'type': 'integer'}}}]}
Changed
get_sandbox_job
Sept. 29, 2026, 2:51 a.m.
Changed
create_sandbox_job
Sept. 29, 2026, 2:51 a.m.
Changed
get_spotlight
Sept. 29, 2026, 2:51 a.m.
Changed
list_spotlights
Sept. 29, 2026, 2:51 a.m.
Changed
get_current_spotlight
Sept. 29, 2026, 2:51 a.m.
Added
get_sandbox_job
Sept. 19, 2026, 2:41 a.m.
Added
create_sandbox_job
Sept. 19, 2026, 2:41 a.m.
Added
get_spotlight
Sept. 17, 2026, 12:40 p.m.
Added
list_spotlights
Sept. 17, 2026, 12:40 p.m.
Added
get_current_spotlight
Sept. 17, 2026, 12:40 p.m.