Outrank

Integrates

Writer questions for scheduled articles, through Outrank's MCP server, which you host.

What a member can do

With Outrank connected, a member can list the keywords scheduled for one product, read one keyword's writer questions, and submit answers to those questions. Which of these it has is what the server you host offers and what the task names.

Name each Outrank tool a task needs, such as keywords_list, keywords_get, and keywords_update, rather than all of Outrank: a tool the task does not name is refused.

keywords_update replaces the keyword's whole question list. Sending one answer deletes the rest. A careful bridge re-reads the keyword first and refuses the write unless the ids are the complete current set, the wording is unchanged, and every answer is text of at most 1000 characters. That refusal comes back as the tool's own result, so the run can carry on.

Who connects it

Outrank's CLI ships outrank-mcp, and that server speaks MCP over standard input and output only. To connect Outrank you run it yourself, behind an HTTPS address that Zero Human OS calls with a token of your choosing. Your Outrank API key stays on your server; Zero Human OS only ever holds your bearer token.

Pin the bridge to one product. A call that names another product is refused, and a keyword that belongs to another product is not shown.

Connect Outrank on the task that writes, not on a member, team, role or the enterprise. A connection on any of those also reaches the chat of every member it covers, where the catalogue is one approval away from a write the task's skill never made. A task's own connection never reaches chat.

What waits for you

Nothing written to Outrank waits for you unless the task declares a gate on keywords_update. To see each answer before it is saved, gate that tool: the run waits with the questions it would send, and nothing is written until you approve it on Gates.

{ "tool": "keywords_update", "owner": "ceo", "approval": "specific" }

See Gates and tool scopes.

Setup

Run Outrank's MCP server

  1. Run the outrank-mcp bin of outrank-cli, with the keywords toolset. It needs your Outrank API key. Do not pass a profile that would ignore that key.
  2. Put a bridge in front of it that serves MCP's Streamable HTTP transport, at an HTTPS address, and refuses any request whose Authorization header is not Bearer <your token>. Choose a long random token.
  3. Offer only keywords_list, keywords_get, and keywords_update. What the bridge does not offer, no task can call. Before keywords_update, re-read the keyword and refuse a body that is not the complete current question list.

Connect it

  1. In the portal, on Tools, choose Add tool. Layer: Task, and Bind on: the task that writes.
  2. Kind: MCP. Tool type: outrank.
  3. MCP server URL: your bridge's address.
  4. Auth: Bearer token / PAT, and your bearer token.
  5. On the task, name keywords_list, keywords_get, and keywords_update. Declare a gate on keywords_update when a person should see each answer first.
  6. Check it. Run the task. The run page shows the keyword list, and an update that is not the complete question set comes back refused, with the keyword unchanged in Outrank.

Troubleshooting

What you see Why What to do
tool_not_bound:outrank No Outrank connection reaches this run Bind it on this task, or at a layer the run reaches
The run's log says tool.not_offered for an Outrank tool Your bridge did not answer when the run started, or offers no tool by that name Check the bridge is reachable, and that it offers the tool by that name
Calls fail with an auth error The bearer token in the binding is not the one your bridge expects Edit the binding and paste the token again
A call is refused because of the product The call names a product other than the one the bridge is pinned to Name that product, or point the bridge at the product this task writes
An update is refused and the keyword is unchanged The body is not the complete current question list, the wording changed, or an answer is over 1000 characters Re-read the keyword and send every question, wording unchanged, with each answer as text