{"surface":"publisher","title":"Publisher MCP","description":"Create article requests, check progress, collect offer links, and review your earnings.","endpoint":"https:\/\/lp.thriftler.com\/mcp\/portal","transport":"streamable-http","authentication":{"type":"bearer","instructions":"Create a publisher token in Account Settings > API Access in the publisher portal. New portal tokens include both read and submit permissions.","abilities":{"network:read":"Connect, discover forms, check submissions, and read your offers, links, conversions, statements, and earnings.","network:submit":"Submit individual or batch form requests. Also requires network:read."}},"tools":[{"name":"get_form","title":"Get Form Tool","description":"Get a published request form, its required fields, defaults, choices, conditions, and instructions. Use these definitions for submit_form or submit_form_batch; form IDs and fields are discovered, not hardcoded.","inputSchema":{"properties":{"form_id":{"description":"Form ID from list_forms.","type":"integer"}},"type":"object","required":["form_id"]},"annotations":{"readOnlyHint":true}},{"name":"get_offer","title":"Get Offer Tool","description":"Get one of your approved hosted offers in full detail (payout terms, tracking link, variations, guidelines).","inputSchema":{"properties":{"hosted_offer_id":{"description":"The hosted offer to fetch.","type":"integer"}},"type":"object","required":["hosted_offer_id"]},"annotations":{}},{"name":"get_submission","title":"Get Submission Tool","description":"Check your request status: queued, running, waiting for review, paused, completed, or failed. Completed requests include approved offers and tracking_url values. Respect poll_after_seconds (30 while unfinished). Article generation can take several minutes; a pending request is not a reason to resubmit.","inputSchema":{"properties":{"submission_id":{"description":"Your submission ID from a single or batch request.","type":"integer"}},"type":"object","required":["submission_id"]},"annotations":{"readOnlyHint":true}},{"name":"get_submission_batch","title":"Get Submission Batch Tool","description":"Check one of your batches. Returns aggregate counts and every item with its reference, submission ID, status, and completed offer tracking links. Completed links are available while other items are still running. Respect poll_after_seconds and stop polling when finished is true; completed_with_errors means some items failed.","inputSchema":{"properties":{"batch_id":{"description":"Batch UUID returned by submit_form_batch.","type":"string"}},"type":"object","required":["batch_id"]},"annotations":{"readOnlyHint":true}},{"name":"get_tracking_link","title":"Get Tracking Link Tool","description":"Get the tracking link(s) for one of your approved offers: the base link and, optionally, one variation link.","inputSchema":{"properties":{"hosted_offer_id":{"description":"The approved hosted offer.","type":"integer"},"variation_key":{"description":"Optional variation key to get a single variation link instead of the full list.","type":"string"}},"type":"object","required":["hosted_offer_id"]},"annotations":{}},{"name":"list_conversions","title":"List Conversions Tool","description":"List your conversions in a date window (payout, status, sub ids). Held conversions show as pending.","inputSchema":{"properties":{"from":{"description":"Start date (Y-m-d), UTC.","type":"string"},"to":{"description":"End date (Y-m-d), inclusive, UTC.","type":"string"},"status":{"description":"Optional: pending, approved, rejected, or reversed.","type":"string"},"page":{"description":"Page number (default 1).","type":"integer"},"page_size":{"description":"Rows per page (default 500, max 500).","type":"integer"}},"type":"object","required":["from","to"]},"annotations":{}},{"name":"list_forms","title":"List Forms Tool","description":"Discover request forms available to your publisher account, including article requests. Returns field definitions, documentation, and batch limits. Read the form before submitting.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},{"name":"list_offers","title":"List Offers Tool","description":"List your approved hosted offers with payout terms and tracking links.","inputSchema":{"properties":{"page":{"description":"Page number (default 1).","type":"integer"},"page_size":{"description":"Rows per page (default 100, max 100).","type":"integer"}},"type":"object"},"annotations":{}},{"name":"list_statements","title":"List Statements Tool","description":"List your statements, or pass statement_id to get one statement with its line items.","inputSchema":{"properties":{"statement_id":{"description":"Optional: fetch one statement with its line items instead of the list.","type":"integer"}},"type":"object"},"annotations":{}},{"name":"list_submissions","title":"List Submissions Tool","description":"List your recent form requests (including portal, REST, and MCP submissions), newest first, with status, batch IDs, and approved offer links. Recover request handles after reconnecting. Pass next_before_id as before_id to fetch the next page.","inputSchema":{"properties":{"form_id":{"description":"Optional form filter.","type":"integer"},"before_id":{"description":"Cursor from the preceding response next_before_id.","type":"integer"},"limit":{"description":"Page size, default 25, maximum 100.","minimum":1,"maximum":100,"type":"integer"}},"type":"object"},"annotations":{"readOnlyHint":true}},{"name":"my_stats","title":"My Stats Tool","description":"Your clicks, approved conversions + payout for a date window, plus month-to-date earnings.","inputSchema":{"properties":{"from":{"description":"Start date (Y-m-d), UTC.","type":"string"},"to":{"description":"End date (Y-m-d), inclusive, UTC.","type":"string"}},"type":"object","required":["from","to"]},"annotations":{}},{"name":"submit_form","title":"Submit Form Tool","description":"Submit one published request form. Requires network:submit and starts real work (article generation and offer creation for an article form). Returns immediately with a submission ID; poll get_submission for status and approved tracking links. Reuse the same idempotency_key and inputs on retries; use a new key only for a new request.","inputSchema":{"properties":{"form_id":{"description":"Form ID from list_forms.","type":"integer"},"inputs":{"description":"Declared field values from get_form.","type":"object"},"idempotency_key":{"description":"Unique request key, at most 128 characters. Keep unchanged on retries.","type":"string"}},"type":"object","required":["form_id","inputs","idempotency_key"]},"annotations":{"idempotentHint":true}},{"name":"submit_form_batch","title":"Submit Form Batch Tool","description":"Submit up to 10 requests to one published form. Requires network:submit; starts real work. Each item has a unique reference and inputs. The entire batch is validated and accepted atomically, subject to the shared 10 requests per publisher\/form\/hour limit. Returns a durable batch_id and submission IDs; poll get_submission_batch for per-item progress and completed offer links. Keep the same idempotency_key and items on retries.","inputSchema":{"properties":{"form_id":{"description":"Form ID from list_forms. All items use this form.","type":"integer"},"items":{"minItems":1,"maxItems":10,"items":{"properties":{"reference":{"description":"Your unique item label, at most 100 characters.","type":"string"},"inputs":{"description":"Declared field values from get_form.","type":"object"}},"type":"object","required":["reference","inputs"]},"type":"array"},"idempotency_key":{"description":"Unique batch request key, at most 128 characters. Keep unchanged on retries.","type":"string"}},"type":"object","required":["form_id","items","idempotency_key"]},"annotations":{"idempotentHint":true}}]}