Notion MCP query-data-sources view mode as a Sume job ledger
Notion is phasing out notion-query-database-view for notion-query-data-sources with mode view. Use it to let an agent read a Sume job ledger kept in a database.

The change
Notion's September 29 changelog entry says notion-query-database-view is being phased out and that you should call notion-query-data-sources with mode: "view" instead. If an agent reads a database view of your video jobs, update the call now.
A ledger is a simple pattern: one Notion row per Sume job, holding the job id, the status and the result URL. Your automation writes it; the agent only reads it.
Facts from Notion
Read from the MCP supported tools page and the changelog.
| Item | Value |
|---|---|
| Modes | rows, sql, view |
| limit | Default 50, at most 100 |
| View mode | Available on all plans |
| SQL mode | Unlimited on Business or Enterprise with Notion AI; per-workspace limits otherwise |
| MCP rate limit | 20 search calls and 20 data source query calls per connection per 10 seconds |
| Retry hint | retry_after in the response body (Sep 24) |
Ledger columns
Keep the schema small. A row needs the Sume job_id, a status that mirrors queued, processing, completed, failed or canceled, the media.sume.com URL once the job completes, and the idempotency key you sent. The webhook event is the right writer: Sume posts job.completed, job.failed or job.canceled, and the job_id is the idempotency key for the delivery, so an upsert by job id absorbs retries.
Delivery retries up to 10 times, 30 seconds apart, with 10 seconds allowed per attempt. Verify the signature before you write a row. The scheme is HMAC-SHA256 over the timestamp, a dot and the raw body, with a five minute replay window.
import hashlib, hmac, time
def verify(secret, ts, body, header):
if not secret:
raise ValueError('empty signing secret')
if abs(time.time() - int(ts)) > 300:
return False
mac = hmac.new(secret.encode(), ts.encode() + b'.' + body, hashlib.sha256).hexdigest()
return any(hmac.compare_digest(p.strip(), 'sume-v1=' + mac) for p in header.split(','))Reading it back
Ask the agent to query the data source in view mode for rows where status is failed. At 20 queries per 10 seconds, a loop that polls once a second is fine, but one that fans out per row is not. Read the whole view with a limit of 100 and filter in memory.
The ledger is a record, not the source of truth: /v1/jobs/:id/status is. If a row and the API disagree, trust the API and fix the row. See jobs and results and webhooks.
Sources
Related posts
More in Integrations
- OpenAI Agents SDK 0.23 MCP listing limits and Sume tools
openai-agents-python 0.23 adds configurable MCP listing page limits. What that means for Sume's hosted MCP, where the tool list depends on your OAuth scope.
- OpenAI connector_id deprecation: use server_url for Sume
OpenAI marks connector_id deprecated for models released after Sept 1, 2026. Sume is not a built-in connector: point server_url at https://mcp.sume.com/mcp.
- OpenClaw cron tool allowlists for unattended jobs that call Sume
OpenClaw v2026.8.35 keeps explicit cron tool allowlists. Name the Sume tools a job may call, and pair them with a read-only OAuth grant or a capped key.
- Retool agent can create a REST resource: set it up for Sume
Retool's app builder agent can now create REST API resources from a prompt. Tell it the Sume base URL, one auth header and a free GET /v1/me test.
Written by Sume