ctlsurf · OpenAPI Overlay 1.0.0
ctlsurf API - API Evangelist enhancements
84 actions
84 updates
update
extends
../openapi/_original/ctlsurf-com-openapi.yml
Derived by API Evangelist
Built from the contracts ctlsurf publishes. ctlsurf did not publish this file.
What the actions change
x-mcp-toolsx-mcp-server
Targets 84 · first 16 shown; the file carries all of them
$.info
$.paths['/api/cards/{card_id}/attachments'].post
$.paths['/api/cards/{card_id}/events'].post
$.paths['/api/cards/{card_id}/links'].post
$.paths['/api/datastore/{block_id}/rows'].post
$.paths['/api/folders/{folder_id}/archive'].post
$.paths['/api/folders/groups/archive'].post
$.paths['/api/dashboards/{dashboard_id}/backfill'].post
$.paths['/api/files/confirm-upload'].post
$.paths['/api/blocks/page/{page_id}'].post
$.paths['/api/dashboards/{dashboard_id}/cards'].post
$.paths['/api/graphs'].post
$.paths['/api/datastore/{block_id}/ingest-url'].post
$.paths['/api/pages'].post
$.paths['/api/dashboards/{dashboard_id}/pins'].post
$.paths['/api/skills'].post
OpenAPI Overlay
overlay: 1.0.0
info:
title: ctlsurf API - API Evangelist enhancements
version: 1.0.0
extends: ../openapi/_original/ctlsurf-com-openapi.yml
x-provenance:
generated: '2026-11-04'
method: derived
source: mcp/ctlsurf-com-tool-crosswalk.yml
actions:
- target: $.info
update:
x-mcp-server:
endpoint: https://app.ctlsurf.com/api/mcp
transport: streamable-http
auth: Bearer cpk_ API key
server_card: https://app.ctlsurf.com/.well-known/mcp/server-card.json
tool_reference: https://ctlsurf.com/api/docs/tools
- target: $.paths['/api/cards/{card_id}/attachments'].post
update:
x-mcp-tools:
- attach_to_card
- target: $.paths['/api/cards/{card_id}/events'].post
update:
x-mcp-tools:
- comment_on_card
- target: $.paths['/api/cards/{card_id}/links'].post
update:
x-mcp-tools:
- link_card
- target: $.paths['/api/datastore/{block_id}/rows'].post
update:
x-mcp-tools:
- add_row
- target: $.paths['/api/folders/{folder_id}/archive'].post
update:
x-mcp-tools:
- archive_folder
- target: $.paths['/api/folders/groups/archive'].post
update:
x-mcp-tools:
- archive_group
- target: $.paths['/api/dashboards/{dashboard_id}/backfill'].post
update:
x-mcp-tools:
- backfill_dashboard
- target: $.paths['/api/files/confirm-upload'].post
update:
x-mcp-tools:
- confirm_upload
- target: $.paths['/api/blocks/page/{page_id}'].post
update:
x-mcp-tools:
- create_block
- create_datastore
- target: $.paths['/api/dashboards/{dashboard_id}/cards'].post
update:
x-mcp-tools:
- create_card
- target: $.paths['/api/graphs'].post
update:
x-mcp-tools:
- create_graph
- target: $.paths['/api/datastore/{block_id}/ingest-url'].post
update:
x-mcp-tools:
- get_datastore_ingest_url
- target: $.paths['/api/pages'].post
update:
x-mcp-tools:
- create_page
- target: $.paths['/api/dashboards/{dashboard_id}/pins'].post
update:
x-mcp-tools:
- pin_block_to_dashboard
- target: $.paths['/api/skills'].post
update:
x-mcp-tools:
- create_skill
- target: $.paths['/api/tasks/page/{page_id}'].post
update:
x-mcp-tools:
- add_ctlsurf_task_item
- target: $.paths['/api/dashboards/{dashboard_id}/summary'].get
update:
x-mcp-tools:
- get_dashboard_summary
- target: $.paths['/api/blocks/{block_id}'].delete
update:
x-mcp-tools:
- delete_block
- target: $.paths['/api/folders/{folder_id}'].delete
update:
x-mcp-tools:
- delete_folder
- target: $.paths['/api/pages/{page_id}'].delete
update:
x-mcp-tools:
- delete_page
- target: $.paths['/api/dashboards/pins/{pin_id}'].delete
update:
x-mcp-tools:
- unpin_dashboard_block
- target: $.paths['/api/datastore/{block_id}/rows/{row_id}'].delete
update:
x-mcp-tools:
- delete_row
- target: $.paths['/api/datastore/{block_id}/rows/delete'].post
update:
x-mcp-tools:
- delete_rows
- target: $.paths['/api/skills/{skill_id}'].delete
update:
x-mcp-tools:
- delete_skill
- target: $.paths['/api/files/{file_id}/download'].get
update:
x-mcp-tools:
- get_image_url
- target: $.paths['/api/folders/find-by-path'].post
update:
x-mcp-tools:
- find_folder_by_path
- target: $.paths['/api/skills/{skill_id}/fork'].post
update:
x-mcp-tools:
- fork_skill
- target: $.paths['/api/links/backlinks/{page_id}'].get
update:
x-mcp-tools:
- get_backlinks
- target: $.paths['/api/blocks/{block_id}/history'].get
update:
x-mcp-tools:
- get_block_history
- target: $.paths['/api/blocks/{block_id}/slice'].get
update:
x-mcp-tools:
- get_block_slice
- target: $.paths['/api/cards/{card_id}'].get
update:
x-mcp-tools:
- get_card
- target: $.paths['/api/files/{file_id}/content'].get
update:
x-mcp-tools:
- get_image
- target: $.paths['/api/files/{file_id}/text'].get
update:
x-mcp-tools:
- get_file_text
- target: $.paths['/api/folders/{folder_id}'].get
update:
x-mcp-tools:
- get_folder
- target: $.paths['/api/graphs/{graph_id}'].get
update:
x-mcp-tools:
- get_graph
- target: $.paths['/api/links/outlinks/{page_id}'].get
update:
x-mcp-tools:
- get_outlinks
- target: $.paths['/api/pages/{page_id}'].get
update:
x-mcp-tools:
- get_page
- target: $.paths['/api/pages/tree'].get
update:
x-mcp-tools:
- get_page_tree
- target: $.paths['/api/projects/{root_id}/organization'].get
update:
x-mcp-tools:
- get_project_organization
- target: $.paths['/api/skills/{skill_id}'].get
update:
x-mcp-tools:
- get_skill
- target: $.paths['/api/skills/shared-with-me'].get
update:
x-mcp-tools:
- get_skills_shared_with_me
- target: $.paths['/api/cards/{card_id}/attachments'].get
update:
x-mcp-tools:
- list_card_files
- target: $.paths['/api/blocks/page/{page_id}/summary'].get
update:
x-mcp-tools:
- list_blocks_meta
- target: $.paths['/api/blocks/page/{page_id}'].get
update:
x-mcp-tools:
- list_blocks
- target: $.paths['/api/dashboards/{dashboard_id}/cards'].get
update:
x-mcp-tools:
- list_cards
- target: $.paths['/api/dashboards'].get
update:
x-mcp-tools:
- list_dashboards
- target: $.paths['/api/folders'].get
update:
x-mcp-tools:
- list_folders
- target: $.paths['/api/graphs'].get
update:
x-mcp-tools:
- list_graphs
- target: $.paths['/api/skills/my'].get
update:
x-mcp-tools:
- get_my_skills
- target: $.paths['/api/files/page/{page_id}'].get
update:
x-mcp-tools:
- list_page_files
- target: $.paths['/api/pages'].get
update:
x-mcp-tools:
- list_pages
- target: $.paths['/api/dashboards/{dashboard_id}/pins'].get
update:
x-mcp-tools:
- list_dashboard_pins
- target: $.paths['/api/skills/{skill_id}/shares'].get
update:
x-mcp-tools:
- list_skill_shares
- target: $.paths['/api/tasks'].get
update:
x-mcp-tools:
- get_pending_agent_tasks
- target: $.paths['/api/pages/trash'].get
update:
x-mcp-tools:
- list_trash
- target: $.paths['/api/cards/{card_id}/move'].post
update:
x-mcp-tools:
- move_card
- target: $.paths['/api/pages/{page_id}/permanent'].delete
update:
x-mcp-tools:
- permanent_delete_page
- target: $.paths['/api/dashboards/{dashboard_id}/blocks'].get
update:
x-mcp-tools:
- find_dashboard_blocks
- target: $.paths['/api/datastore/{block_id}/rows'].get
update:
x-mcp-tools:
- query_rows
- target: $.paths['/api/files/request-upload'].post
update:
x-mcp-tools:
- get_upload_url
- target: $.paths['/api/blocks/{block_id}/restore/{version_number}'].post
update:
x-mcp-tools:
- restore_block_version
- target: $.paths['/api/folders/{folder_id}/restore'].post
update:
x-mcp-tools:
- restore_folder
- target: $.paths['/api/folders/groups/restore'].post
update:
x-mcp-tools:
- restore_group
- target: $.paths['/api/pages/{page_id}/restore'].post
update:
x-mcp-tools:
- restore_page
- target: $.paths['/api/skills/{skill_id}/shares/{share_id}'].delete
update:
x-mcp-tools:
- revoke_skill_share
- target: $.paths['/api/blocks/search'].get
update:
x-mcp-tools:
- search_blocks
- target: $.paths['/api/folders/search'].get
update:
x-mcp-tools:
- search_folder
- target: $.paths['/api/pages/search'].get
update:
x-mcp-tools:
- search_pages
- target: $.paths['/api/skills/search'].get
update:
x-mcp-tools:
- search_skills
- target: $.paths['/api/skills/{skill_id}/shares'].post
update:
x-mcp-tools:
- share_skill
- target: $.paths['/api/cards/{card_id}/attachments/snapshot'].post
update:
x-mcp-tools:
- snapshot_card_document
- target: $.paths['/api/blocks/{block_id}'].put
update:
x-mcp-tools:
- add_checklist_item
- update_block
- update_checklist_item
- target: $.paths['/api/cards/{card_id}'].patch
update:
x-mcp-tools:
- update_card
- target: $.paths['/api/folders/{folder_id}'].put
update:
x-mcp-tools:
- update_folder
- target: $.paths['/api/graphs/{graph_id}'].put
update:
x-mcp-tools:
- add_graph_edge
- add_graph_node
- delete_graph_edge
- delete_graph_node
- update_graph
- update_graph_node
- target: $.paths['/api/pages/{page_id}'].put
update:
x-mcp-tools:
- update_page
- update_page_summary
- target: $.paths['/api/datastore/{block_id}/rows/{row_id}'].put
update:
x-mcp-tools:
- update_row
- target: $.paths['/api/datastore/{block_id}/rows'].patch
update:
x-mcp-tools:
- update_rows
- target: $.paths['/api/datastore/{block_id}/schema'].put
update:
x-mcp-tools:
- add_column
- delete_column
- target: $.paths['/api/skills/{skill_id}'].put
update:
x-mcp-tools:
- update_skill
- target: $.paths['/api/skills/{skill_id}/shares/{share_id}'].put
update:
x-mcp-tools:
- update_skill_share
- target: $.paths['/api/tasks/{block_id}/{task_id}'].patch
update:
x-mcp-tools:
- update_ctlsurf_task_item
- target: $.paths['/api/dashboards/{dashboard_id}/virtual-tickets/{block_id}/{item_id}'].patch
update:
x-mcp-tools:
- update_dashboard_ticket
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/ctlsurf-com-openapi-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.