{"getting_started":{"start_here":"Start here. If you are unsure what to do next, or you need a capability such as search, return to https://synorb.com/connect and read resource_reading before you guess.","first_route":"resource_reading.first_route","output_contract":"https://synorb.com/agent-resources/output-contract.md","tasks":["first_brief","daily_watch","comparison","troubleshooting"],"catalog":"https://synorb.com/agent-resources/index.json"},"first_contact":{"sign_in_required":false,"scraping_required":false,"message":"No sign-in needed. No scraping needed -- ask for a key (synorb-get-demo-key or POST /api/connect/demo-key).","start_here":"Start here. If you are unsure what to do next, or you need a capability such as search, return to https://synorb.com/connect and read resource_reading before you guess."},"mcp_server":"https://mcp.synorb.com/mcp","mcp_servers":{"core":{"url":"https://mcp.synorb.com/mcp","headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"},"streamable_http_url":"https://mcp.synorb.com/mcp","legacy_sse_url":"https://mcp.synorb.com/sse","legacy_sse_headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"},"recommended_transport":"streamable_http","recommended_auth":"authorization_bearer","tools":["synorb-profile","synorb-stream-search","synorb-catalog","synorb-details","synorb-manifests","synorb-configure-beacon","synorb-save-beacon","synorb-beacons","synorb-update-beacon","synorb-archive-beacon","synorb-get-demo-key"],"use_for":"Default agent workflow: discover Streams, inspect filters, pull Manifests.","instructions":"Use `synorb-stream-search` to resolve source and entity intent. It returns explicit `stream_ids`. Use them before you filter.\n\n`synorb-tags` is on the Advanced MCP profile for canonical Tag lookup. It is not a Core tool. Select explicit `stream_ids`. Never rely on an empty scope.\n\nFor a reusable watch, `natural_language_intent` is descriptive only. Save the resolved `stream_ids` and `topic_filters` in a Beacon. Then run it with `beacon_id` and an explicit window.\n\nFor REST, plan with `/manifests/plan`. Replay the same fields plus `plan_token` to `/manifests/exec`. Any changed field needs a free re-plan. Builders should use REST from a server-side route. Show the returned Manifest citations to the user. Read https://synorb.com/agent-guide.md.","metadata":{"session_lifecycle":{"recommended_transport":"streamable_http","recommended_auth":"authorization_bearer","authorization_header":"Bearer <synorb_key>","interactive_workflows":{"persistent_session_reuse_expected":true,"session_mode":"persistent_mcp_session"},"cold_sessions":{"supported":true,"normal_latency_path":false,"use_for":["compatibility","diagnostics"]},"stateless_paths":{"recommended_surface":"rest_api","use_for":["stateless_per_call","scheduled_jobs","backend_owned_workflows"]}},"agent_instructions":"https://synorb.com/agent-guide.md"}},"advanced":{"url":"https://mcp.synorb.com/advanced/mcp","headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"},"streamable_http_url":"https://mcp.synorb.com/advanced/mcp","legacy_sse_url":"https://mcp.synorb.com/advanced/sse","legacy_sse_headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"},"recommended_transport":"streamable_http","recommended_auth":"authorization_bearer","tools":["synorb-streams","synorb-stream-info","synorb-signals","synorb-briefs","synorb-multi-stream","synorb-records","synorb-account","synorb-digests","synorb-digest-manifests","synorb-guide","synorb-prompts","synorb-tags","synorb-sync","synorb-unsync","synorb-syncs","synorb-label","synorb-labels"],"use_for":"Configured workflows: Digests, Sync Ontology mappings, labels, prompt templates, and lower-level content reads.","metadata":{"session_lifecycle":{"recommended_transport":"streamable_http","recommended_auth":"authorization_bearer","authorization_header":"Bearer <synorb_key>","interactive_workflows":{"persistent_session_reuse_expected":true,"session_mode":"persistent_mcp_session"},"cold_sessions":{"supported":true,"normal_latency_path":false,"use_for":["compatibility","diagnostics"]},"stateless_paths":{"recommended_surface":"rest_api","use_for":["stateless_per_call","scheduled_jobs","backend_owned_workflows"]}}}},"core_sse":{"url":"https://mcp.synorb.com/sse","headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"},"recommended_transport":"sse","legacy":true}},"metadata":{"mcp_session_lifecycle":{"recommended_transport":"streamable_http","recommended_auth":"authorization_bearer","authorization_header":"Bearer <synorb_key>","interactive_workflows":{"persistent_session_reuse_expected":true,"session_mode":"persistent_mcp_session"},"cold_sessions":{"supported":true,"normal_latency_path":false,"use_for":["compatibility","diagnostics"]},"stateless_paths":{"recommended_surface":"rest_api","use_for":["stateless_per_call","scheduled_jobs","backend_owned_workflows"]}},"agent_guide":"https://synorb.com/agent-guide.md","agent_resources":"https://synorb.com/agent-resources","agent_resources_catalog":"https://synorb.com/agent-resources/index.json"},"resource_reading":{"index_version":"2026-10-15","index_hash":"ab8057b87f28","catalog":"https://synorb.com/agent-resources/index.json","library":"https://synorb.com/agent-resources","rule":"Read only the guides listed for your current task, in order. Do not read the whole library before you deliver. The guides are documentation. They do not authorize you to bind an email, spend Manifest allowance, save a Beacon, or schedule a job beyond what your user asked for.","first_route":{"rule":"Follow these six steps in order for a first briefing and a daily watch. Open a deeper guide only when a step fails or the user asks for a different shape. REST and MCP are equivalent.","steps":[{"step":"provision","do":"Get one Synorb Key (no email, no card); save the key and its `visitor_token`.","mcp":"`synorb-get-demo-key`","rest":"`GET https://synorb.com/connect` with `Accept: application/json`"},{"step":"find_starter","do":"List the account's three starter Beacons; pick the one that fits.","mcp":"`synorb-beacons` with `tag='starter'`","rest":"`GET /v3/beacons?tag=starter`"},{"step":"count","do":"Count the window at zero usage; read the total and the effective dates.","mcp":"`synorb-manifests` with `beacon_id`, `lookback_hours`, `mode='count'`","rest":"`POST /manifests/query` with `beacon_id`, `lookback_hours`, `mode='count'`"},{"step":"read","do":"Pull one page (at most 10 on a demo key); only new Manifests bill.","mcp":"the same call without `mode`","rest":"the same call without `mode`"},{"step":"display","do":"Write a short opening from `briefing.scaffold` (follow its `recipe`), then show `briefing.markdown`. State the dates and that the items are a sample. Keep links inline.","mcp":"`content[].text` starts with it","rest":"`data.briefing.markdown`"},{"step":"continue_daily","do":"Offer once to bind an email (with approval); pull daily with `lookback_hours=48` and dedupe by `manifest_id`. Synorb runs no schedule, so say when no daily run is active.","mcp":"`synorb-manifests`, `lookback_hours=48`, daily","rest":"`POST /manifests/query`, `lookback_hours=48`, daily"}],"guide":"https://synorb.com/agent-guide.md#the-first-route"},"tasks":{"first_brief":{"when":"Connect and deliver the first update your user asked for.","read":["https://synorb.com/agent-resources/get-a-key-with-connect.md","https://synorb.com/agent-resources/output-contract.md","https://synorb.com/agent-resources/choose-a-stream.md","https://synorb.com/agent-resources/preflight-count-orient-plan.md","https://synorb.com/agent-resources/read-the-response-envelope.md","https://synorb.com/agent-resources/briefing-fields-and-profile.md"],"then_if_needed":["https://synorb.com/agent-resources/present-manifests-to-your-users.md"]},"daily_watch":{"when":"Your user wants a recurring update (daily, every six hours, weekly).","read":["https://synorb.com/agent-resources/get-a-key-with-connect.md","https://synorb.com/agent-resources/output-contract.md","https://synorb.com/agent-resources/choose-a-stream.md","https://synorb.com/agent-resources/preflight-count-orient-plan.md","https://synorb.com/agent-resources/read-the-response-envelope.md","https://synorb.com/agent-resources/briefing-fields-and-profile.md","https://synorb.com/agent-resources/freshness-and-available-through.md","https://synorb.com/agent-resources/schedule-six-hour-and-daily-pulls.md"],"then_if_needed":["https://synorb.com/agent-resources/present-manifests-to-your-users.md"]},"comparison":{"when":"Your user wants a comparison, table or chart across Manifests.","read":["https://synorb.com/agent-resources/get-a-key-with-connect.md","https://synorb.com/agent-resources/output-contract.md","https://synorb.com/agent-resources/choose-a-stream.md","https://synorb.com/agent-resources/preflight-count-orient-plan.md","https://synorb.com/agent-resources/read-the-response-envelope.md","https://synorb.com/agent-resources/briefing-fields-and-profile.md","https://synorb.com/agent-resources/charts-tables-and-infographics.md"],"then_if_needed":["https://synorb.com/agent-resources/present-manifests-to-your-users.md"]},"troubleshooting":{"when":"A pull returned nothing, was refused, or looks incomplete.","read":["https://synorb.com/agent-resources/get-a-key-with-connect.md","https://synorb.com/agent-resources/output-contract.md","https://synorb.com/agent-resources/choose-a-stream.md","https://synorb.com/agent-resources/preflight-count-orient-plan.md","https://synorb.com/agent-resources/read-the-response-envelope.md","https://synorb.com/agent-resources/troubleshoot-empty-windows-and-missing-manifests.md"],"then_if_needed":["https://synorb.com/agent-resources/present-manifests-to-your-users.md"]}},"workflows":{"when":"Optional second step. Read the one that matches your user's work, after your first delivery.","read":["https://synorb.com/agent-resources/research-workflow-vc.md","https://synorb.com/agent-resources/research-workflow-technology-professionals.md","https://synorb.com/agent-resources/research-workflow-ai-founders.md","https://synorb.com/agent-resources/research-workflow-research-teams.md"]},"daily_continuation":{"ready_only_when_all":["A valid Synorb Key the host has retained, with its expires_at checked. A demo key expires 72 hours after it is minted; running past that needs the user-authorized retained-account path (email binding keeps the same key on Starter).","A schedule or job identifier persisted in the host's own scheduler.","A saved Beacon (beacon_id) that the job runs.","The effective window each run requests: an overlapping lookback, such as days=2 for a daily job.","The time of the last successful run.","Durable dedupe state keyed by manifest_id, stored as a string.","Retries for 429 rate_limited and transient 5xx only.","A failure alert that reaches your user or their operator."],"not_established_by":["connecting","saving a Beacon","delivering one brief"],"synorb_runs_schedules":false,"synorb_pushes_results":false,"if_host_cannot_persist_a_job":"Tell your user plainly: no daily schedule is active.","guide":"https://synorb.com/agent-resources/schedule-six-hour-and-daily-pulls.md"}},"onboarding":{"self_serve":true,"sales_contact_required":false,"self_serve_key_generation":{"available":true,"endpoint":"https://synorb.com/connect","method":"GET","credential":"Synorb Key","human_contact_required":false},"free_tier":{"available":true,"name":"Starter","duration":"free_forever_after_email_binding","manifest_limit":100},"free_demo":{"endpoint":"https://synorb.com/connect","email_required":false,"card_required":false,"duration_hours":72,"manifest_limit":25,"agent_alternatives":{"mcp_tool":"synorb-get-demo-key","rest_endpoint":{"method":"POST","path":"/api/connect/demo-key"}}},"before_first_pull":{"read":"https://synorb.com/agents/personal-agent-onboarding.txt","applies_to":"any agent connecting through /connect, not only named personal-assistant products","why":"Read the first paragraphs of after_connecting.instructions in this response."},"playbook_url":"https://synorb.com/agents/personal-agent-onboarding.txt","lanes":[{"lane":"stated_goal","when":"The user has told you what they follow, track or care about.","first_action":"Propose one or two Beacons named for that goal and preview them with a zero-usage plan; save only after the user says yes."},{"lane":"inferred_context","when":"You have memory or working context about the user but no explicit request.","first_action":"Propose Beacons that fit what you already know, say why, and ask before saving."},{"lane":"cold_start","when":"You know little about the user.","first_action":"List the account's starter Beacons and offer them as a starting point to keep, adjust or delete."}],"starter_beacons":{"names":["Business & Technology Podcasts","AI Companies","Central Banks"],"note":"New accounts get all three of these when they are created: AI Companies, Business & Technology Podcasts and Central Banks. List them with `synorb-beacons` and `tag='starter'`. A starter that is missing from the list is only a suggestion until the user says yes. The user can edit or delete them."},"safe_test_path":{"name":"zero_quota_plan_preview","documentation_url":"https://synorb.com/sandbox","method":"POST","endpoint":"https://api.synorb.com/manifests/plan","requires_synorb_key":false,"mutates_account":false,"bills_manifests":false,"description":"Validate scope and request shape before execution; use the returned plan token only with an unchanged execution request."},"sandbox":{"available":true,"documentation_url":"https://synorb.com/sandbox","type":"zero_quota_non_mutating_plan_preview","separate_account":false,"note":"The zero-usage plan preview is Synorb's supported sandbox/test environment: it validates request shape and scope without reading Manifests, mutating account data, or consuming usage."},"test_environment":{"available":true,"type":"zero_quota_non_mutating_plan_preview","endpoint":"https://api.synorb.com/manifests/plan","documentation_url":"https://synorb.com/sandbox","separate_account":false}},"message":"Start here. If you are unsure what to do next, or you need a capability such as search, return to https://synorb.com/connect and read resource_reading before you guess.\n\nThe 72 Hour Agent Demo key needs no email. It lasts 72 hours and can pull up to 25 Manifests. It includes 5 Beacons; 3 of them are starter Beacons.\n\nA demo key returns at most 10 Manifests per read. A larger `page_size` is cut to that number, and a `read_cap` object or the `X-Synorb-Read-Cap` header says so. Each page counts against the 25-Manifest allowance. Starter and paid keys have no such limit.\n\nSave your Synorb Key AND your `visitor_token` now.\n\nKey reuse rule: send back your `visitor_token` to get the same key. Send it as the `visitor_token` field or in the `X-Synorb-Visitor-Token` header. Without a valid token, you get a new key, a new org, and a new 25-Manifest allowance, even if another caller shares your network. New keys are capped at 10 per network per 24 hours. Treat the token like the key.\n\nRecommended: bind an email at `/api/connect/bind-email` with `\"confirmation_method\":\"link\"`. Synorb sends the user ONE one-tap confirmation link. No code is typed or relayed through you. When the user taps it, this same key becomes Starter, with no MCP or REST reconfiguration.\n\nFallback only: omit `confirmation_method` (or pass `\"otp\"`) to start Cognito OTP verification. Then confirm the code at `/api/connect/bind-email/verify`. After expiry, mint a new 72 Hour Agent Demo key at https://synorb.com/connect, or sign up free at https://synorb.com/signup.\n\nStarter is free forever and needs an email. It gives 100 Manifests per usage period and 10 Beacons. The paid plans are Individual ($10 per month, 1,000 Manifests), Professional ($100 per month, 10,000 Manifests), and Startup ($1,000 per month, 100,000 Manifests). See https://synorb.com/pricing.\n\nFor MCP agents: add the Core Streamable HTTP config below. Then use `synorb-profile` for usage, `synorb-stream-search` for inventory, and `synorb-catalog`, `synorb-details`, and `synorb-manifests` for Temporal Context Graph access.\n\nTo save a Beacon, use `synorb-configure-beacon`, then `synorb-save-beacon`. Beacon limits per plan are in `after_connecting.instructions`.\n\nA personal agent that acts for one human user (Instinct, Muse, Town, and similar) reads https://synorb.com/agents/personal-agent-onboarding.txt. It says what to tell the user, in order, before any pull.\n\nFor REST agents and coding agents that build user experiences: send `Authorization: Bearer <synorb_key>` from a server-side route to https://api.synorb.com. Keep the returned source citations in the rendered result. Read https://synorb.com/agent-guide.md for recipes, usage, and failure contracts.\n\nFor how to use Synorb well, read the Agent Resources library at https://synorb.com/agent-resources. Its guides are tested. Start with `resource_reading` in this response.","docs":"https://synorb.com/docs#mcp","config":{"mcpServers":{"synorb":{"url":"https://mcp.synorb.com/mcp","headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"}}}},"advanced_config":{"mcpServers":{"synorb-advanced":{"url":"https://mcp.synorb.com/advanced/mcp","headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"}}}},"legacy_sse_config":{"mcpServers":{"synorb":{"url":"https://mcp.synorb.com/sse","headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"}}}},"after_connecting":{"instructions":"This key is real and already minted. An explicit request to connect and pull covers the first requested pull under the product policy of Synorb. Do not add another Synorb confirmation gate. Follow the safety and permission rules of your host assistant.\n\nBefore you pull, read https://synorb.com/agents/personal-agent-onboarding.txt. Then tell the user what Synorb is. Report the current live Stream count. Read it; do not guess. Report the actual `expires_at` of this key. Report the separate 72-hour expiry and 25-Manifest allowance of the demo.\n\nEmail binding is optional and the offer is made once, after the first briefing. If the user wants the same key to continue past the demo expiry, offer email verification for free Starter. Starter gives 100 Manifests per usage period with no expiry, on the same key with the same Beacons and usage history. Bind only after the user says yes. Each delivery carries an `account_notice` with the current state; it disappears once an email is bound. Do not repeat the offer after the user decides, and keep the account note separate from the briefing.\n\nUse the pre-saved starter Beacons first. They are already in this account. List them with `synorb-beacons` and the filter `starter`. Then pull one with an explicit lookback.\n\nA Beacon pull returns up to 10 Manifests. A Manifest that this account already received bills 0 when you pull it again. Only a new Manifest uses allowance. The demo key has 25 Manifests. Starter has 100 per usage period.\n\nCount the new Manifests per pull before you decide how often to pull. Starter is free, and a daily pull of new items can use it up. When the remaining allowance will not cover the coverage the user wants, say so plainly and offer a paid plan. Read the remaining allowance in the usage line. Do not guess it.\n\nA request for recurring updates on an existing named starter authorizes use of that saved scope. It also authorizes a host poll, when the host supports scheduling and allows it. Persist the job and report its state. If scheduling is not supported, say that no daily run is active. Ask before you save any extra Beacon scope that the user did not request.\n\nOnce MCP tools are active, treat Synorb as a Temporal Context Graph. Use `synorb-stream-search(query=...)` for Stream, source, or podcast inventory questions. Use `synorb-catalog(query=...)` to find candidate Streams by topic, company, domain, or media need. Use `synorb-details(stream_ids=[...])` to inspect filters and source channels. Then use `synorb-manifests(stream_ids=[...], filters...)` to pull Manifests with source metadata, Signal, and Brief.\n\nWhen the user asks to save or reuse a tracking query, use `synorb-configure-beacon`. Then use `synorb-save-beacon` to create a Beacon and return `beacon_id`.\n\nEvery plan can save Beacons, up to a limit: 72 Hour Agent Demo 5, Starter 10, Individual 25, Professional 50, Startup 100. Enterprise has no limit. At the limit, a save returns `beacon_limit_exceeded`. Archive a Beacon or change plan. Do not retry a save at the limit.\n\nBefore you save, improve the metadata. Write a short name, a plain-English description, and 1-5 lowercase labels (the `tags` field). Keep the Stream, source, topic, and entity scope the same as in the proposal.\n\nWhen the user asks to change a saved Beacon, read it with `synorb-beacons(beacon_id=...)`. Then call `synorb-update-beacon` with the `expected_revision` that you read. The default `dry_run` returns a diff and writes nothing. Show the diff to the user. Set `dry_run=false` only after the user says yes.\n\nWhen the user asks to archive or clean up a saved Beacon, use `synorb-beacons` to list candidates. Ask which stale Beacon to archive. Then use `synorb-archive-beacon` with `beacon_id`. Archive stays available on every plan, so a customer can clean up existing Beacons.\n\nFor an exact source or form request, pass `source_channel_names` or `source_channel_ids` directly. Fail closed. Do not use adjacent sources. Use `diagnostics.retry_guidance` to relax filters, add Streams, or broaden domains. Use `synorb-profile` or REST `/account` for plan and usage context.\n\nThese tools use zero Manifest allowance: `synorb-profile`, `synorb-stream-search`, `synorb-catalog`, `synorb-details`, `synorb-configure-beacon`, `synorb-save-beacon`, `synorb-beacons`, `synorb-update-beacon`, and `synorb-archive-beacon`. `synorb-manifests` bills only returned on-topic Manifests.","presenting_results":{"instructions":"When your user reads a screen, show Synorb results as an update. Do not write a block of dense text. Write one lead line that says what matters most. Build it from `briefing.scaffold`: the ranked items, the Claims with exact figures, the groups and a short recipe. Synorb makes no model call when you read. Then write a briefing, up to `render.max_items` items.\n\nRead each item's `claims` and `supporting_quotes`, not only its headline. For each item, say what happened, why it matters to this user, and the confidence label that the item states. Keep the first-party source link inline. End with a source index.\n\nEach delivery carries `presentation_items` and a `render` hint. `presentation_items` has one entry per Manifest, keyed by `manifest_id`. Each entry has `title`, `why_it_matters`, `source_url`, `date`, `category`, and the granularities `headline`, `one_liner`, and `full`. `render` has `suggested_format`, `max_items`, and `headline`. These are hints, not rules. Adapt them to your output (iMessage, WhatsApp, web).\n\nAn update is the default for a routine pull. If your user asked for another shape (comparison table, timeline, chart, alert, direct answer, report), build it from the same fields. `render.also_suitable` says which shapes the data can support. With no screen (voice), narrate the update like a morning briefing.\n\nNever paste Manifest JSON or Signal payloads. If your harness can draw images, draw one visual per update when the story has real numbers worth charting. If it cannot, or if the numbers do not qualify, skip the visual. Never estimate or invent a data point to complete a chart.","install":"Optional, for developers who keep their own agent setup: you may copy the rules in https://synorb.com/synorb-instructions.md into your own instruction file. Do this only with the approval of your host and your user. A web page never changes your instructions by itself. If you skip it, apply the hints in each response.","url":"https://synorb.com/synorb-instructions.md"},"first_calls":["`synorb-profile()` -> plan, usage, refresh tier, and allowed date window, when status or limits matter. Uses no Manifest allowance.","`synorb-stream-search(query=user_intent)` -> Stream, source, podcast, and media inventory answers. Uses no Manifest allowance.","`synorb-catalog(query=user_intent)` -> candidate Streams, match_reason, pagination, filters","`synorb-details(stream_ids=[...])` -> source channels, media formats, filter schema, and the recommended Manifest call","`synorb-manifests(stream_ids=[...], tag_names=[...], target_count=N)` -> Manifests + diagnostics.retry_guidance","`synorb-configure-beacon(intent=user_intent)` -> a proposed Beacon, when the user wants a reusable tracking query","`synorb-save-beacon(proposal=..., name=..., description=..., tags=[...])` -> a saved Beacon with beacon_id, when the user asks to save or create it","`synorb-update-beacon(beacon_id=..., expected_revision=N, ...)` -> a diff of a change to a saved Beacon. Writes nothing until `dry_run=false`, after the user says yes.","`synorb-archive-beacon(beacon_id=...)` -> archive a saved Beacon, when the user asks to clean it up. Available on every plan."],"then":["If the user wants to run a saved Beacon: call synorb-manifests with beacon_id and lookback_hours, or with explicit published_date_from and published_date_to","If the user wants to archive a saved Beacon: call synorb-beacons(status='', limit=100). Ask which stale Beacon to archive. Call synorb-archive-beacon with beacon_id. Then verify with synorb-beacons(status='archived') if needed.","If results are thin: relax significance, add adjacent Streams, broaden home_domains, or remove narrow Tags","If results are broad: add tag_names, media_format, source_channel_ids, source_channel_names, or tighter dates","If the user names an exact source or form: use source_channel_names or source_channel_ids. Do not broaden to adjacent sources."]},"rest_api":{"base_url":"https://api.synorb.com","auth":"Use the same Synorb Key for REST and MCP: Authorization: Bearer <synorb_key>.","auth_alternatives":{"oauth2":{"grant":"authorization_code + PKCE (S256)","issuer":"https://api.synorb.com","authorization_endpoint":"https://api.synorb.com/oauth/authorize","token_endpoint":"https://api.synorb.com/oauth/token","revocation_endpoint":"https://api.synorb.com/oauth/revoke","dynamic_client_registration":true,"use_when":"the client wants short-lived, scoped, revocable tokens instead of a long-lived Synorb Key","docs":"https://synorb.com/auth.md"}},"quickstart":["POST /streams/search {\"query\": \"<company, topic or ticker>\"} → pick a stream_id (GET /streams has no text filter; it only pages the full list)","GET /streams/{stream_id} → title, filters, source_channels, freshness_state, manifests_last7d","GET /streams/{stream_id}/manifests → source metadata + Signal + Brief; Record on Startup and Enterprise"],"after_connecting":["GET /account → data.subscription.plan_display_name, data.usage.manifests_limit, data.usage.manifests_remaining","GET /streams → data.pagination.total_count is the number of Streams","Greet the user: 'Connected to Synorb! {total_count} Streams, {data.usage.manifests_remaining} Manifests remaining.'"],"docs":"https://synorb.com/agents.md","openapi":"https://synorb.com/openapi.json","swagger":"https://synorb.com/swagger","pagination":{"manifests_query":{"method":"GET","follow":"GET data.pagination.next or prev verbatim with the same Authorization header","scope":"held server-side by a short-lived opaque cursor; never reconstruct the request body","expiry":"repeat the original POST /manifests/query when the cursor expires"},"manifests_exec":{"method":"POST","follow":"re-plan changed page fields and execute with a fresh plan_token because execution can bill"}},"metadata":{"recommended_for":["stateless_per_call","scheduled_jobs","backend_owned_workflows"],"mcp_session_relationship":"Use REST API for stateless per-call, scheduled, or backend-owned workflows."}},"tools":{"synorb-profile":"Profile. Check plan, usage, content access, and date-window context. Uses no Manifest allowance.","synorb-stream-search":"Primary. Inventory search for Stream, source, and podcast availability, with ranked matches and counts that name their scope. Uses no Manifest allowance.","synorb-catalog":"Primary. Find Streams from user intent, domain, media type, or source scope. Uses no Manifest allowance.","synorb-details":"Primary. Inspect selected Streams, filters, source channels, and volume. Uses no Manifest allowance.","synorb-manifests":"Primary. Pull on-topic Manifests across Streams, saved Beacons, or exact source channels, with diagnostics. Supports `tag_logic` for co-mentions.","synorb-configure-beacon":"Primary. Draft a reusable Beacon from a tracking or query intent. Uses no Manifest allowance.","synorb-save-beacon":"Primary. Save a Beacon to the account after you improve its name, description, and labels (the `tags` field). Returns `beacon_id`. Uses no Manifest allowance.","synorb-beacons":"Primary. List saved Beacons and their reusable `beacon_id` handles. Pass `beacon_id` to read one Beacon's full settings and revision. Uses no Manifest allowance.","synorb-update-beacon":"Primary. Change a saved Beacon after the user agrees: name, description, labels (the `tags` field), date window, status, scope, topic filters, or `manifest_config_patch`. Pass the `expected_revision` that you read. The default `dry_run` returns a before/after diff and writes nothing. Uses no Manifest allowance.","synorb-archive-beacon":"Primary. Archive a saved Beacon by `beacon_id`, for a cleanup that the user asked for or an approved evaluation cleanup. Available on every plan, so a customer who downgrades from Enterprise can clean up existing Beacons. Uses no Manifest allowance.","synorb-get-demo-key":"Keyless. Get a free 72-hour demo Synorb Key with no email, form, or browser step. Use it if you arrive with no key at all."},"advanced_tools":{"synorb-streams":"Advanced catalog alias for explicit Stream browsing.","synorb-stream-info":"Advanced alias for the detail of one Stream.","synorb-signals":"Advanced. Pull structured Claims from one Stream.","synorb-briefs":"Advanced. Pull structured narratives from one Stream.","synorb-multi-stream":"Advanced. Legacy search across several Streams. Prefer `synorb-manifests` for primary pulls.","synorb-records":"Advanced. Pull full content objects (Startup and Enterprise).","synorb-account":"Advanced compatibility alias for plan and usage. Prefer `synorb-profile` on Core.","synorb-digests":"List Digests.","synorb-digest-manifests":"Pull Manifests from a Digest.","synorb-guide":"Agent guide for the primary workflow and the advanced tools.","synorb-prompts":"Pre-built workflow prompts that use the primary loop.","synorb-tags":"Search the Tag catalog with fuzzy matching.","synorb-sync":"Create or update a sync.","synorb-unsync":"Remove a sync.","synorb-syncs":"List the active syncs of your organization.","synorb-label":"Create a custom label for organizing syncs.","synorb-labels":"List all custom label definitions."},"ontology_tools":{"synorb-tags":"Search the Tag catalog with fuzzy matching.","synorb-sync":"Create or update a sync.","synorb-unsync":"Remove a sync.","synorb-syncs":"List the active syncs of your organization.","synorb-label":"Create a custom label for organizing syncs.","synorb-labels":"List all custom label definitions."},"stream_types":{"source_channel":"A watched source, such as a blog, filing source, data release, notice, research page, podcast, or social source.","stream":"A focused delivery view over the Temporal Context Graph: an organization, person, dataset, topic, saved query, or set of sources.","manifest":"The delivery object that agents receive: source metadata, lineage, ontology Tags, Signal, Brief, and a Record where the plan includes it."},"domains":["arts-culture-entertainment","economics-business-work","engineering-technology","everyday-life-practical-knowledge","health-medicine","language-literature","life-environment","people-biography-history","physical-sciences-mathematics","places-geography","society-law-government","universe-earth"],"upgrade":"https://synorb.com/pricing","credentials":{"synorb_key":"df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129","connector_url":"https://mcp.synorb.com/mcp","core_connector_url":"https://mcp.synorb.com/mcp","advanced_connector_url":"https://mcp.synorb.com/advanced/mcp","legacy_connector_url":"https://mcp.synorb.com/sse","core_sse_connector_url":"https://mcp.synorb.com/sse","advanced_sse_connector_url":"https://mcp.synorb.com/advanced/sse","headers":{"Authorization":"Bearer df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129"}},"synorb_key":"df2e3e7f2278957b52390349666fd6d6dd59c17940d1339efdbf4d4edcf5d129","expires_at":"2026-10-19T08:05:09.555688+00:00","bind_state":"unbound","visitor_token":"synorb_visitor_eyJrZXlfaWQiOiJkNTE0NDNhZC01NDRmLTRkNWMtOTI3Ny01MzYwOWJhNTVkYmIiLCJub25jZSI6IjQ3Mzk0ZTljMzhmZDk3YTciLCJvcmdfaWQiOjE3OTIxMzc5MDk1NDcyNTMyLCJ2IjoxfQ.f93102e4bf3955d6c3929e8b79b38400c11b47f4ec430df762898c2eb1aab2e5","key_reused":false,"key_reuse_rule":"Key reuse rule: send back your `visitor_token` to get the same key. Send it as the `visitor_token` field or in the `X-Synorb-Visitor-Token` header. Without a valid token, you get a new key, a new org, and a new 25-Manifest allowance, even if another caller shares your network. New keys are capped at 10 per network per 24 hours. Treat the token like the key.","account_ladder":{"current_plan":"72 Hour Agent Demo","manifest_limit":25,"expires_at":"2026-10-19T08:05:09.555688+00:00","description":"No email required. This key grants 25 Manifests for 72 hours, then expires.","starter":{"plan":"Starter","price":"free_forever","manifests_per_month":100,"description":"Email required. Free forever with 100 Manifests per usage period.","bind_email_link":{"method":"POST","endpoint":"/api/connect/bind-email","auth":"Authorization: Bearer <synorb_key>","body":{"email":"you@example.com","name":"Optional name","confirmation_method":"link"},"recommended":true,"description":"Recommended default for agents. Synorb emails the user ONE one-tap confirmation link -- no code is ever typed or relayed back through the agent. Tapping it activates Starter directly at GET /api/connect/bind-email/confirm, carrying the signed token from that email."},"bind_email":{"method":"POST","endpoint":"/api/connect/bind-email","auth":"Authorization: Bearer <synorb_key>","body":{"email":"you@example.com","name":"Optional name"},"verification_endpoint":"/api/connect/bind-email/verify","verification":"Fallback when a one-tap link is not usable. Cognito emails an OTP. Starter activates only after the user types the code back at verification_endpoint. Prefer bind_email_link above when your host can send confirmation_method=\"link\"."},"signup_url":"https://synorb.com/signup","pricing_url":"https://synorb.com/pricing","same_synorb_key":true},"paid_streams":[{"plan":"Individual","price":"$10/month","manifests_per_month":1000},{"plan":"Professional","price":"$100/month","manifests_per_month":10000},{"plan":"Startup","price":"$1,000/month","manifests_per_month":100000}],"pricing_url":"https://synorb.com/pricing"}}