Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 75380b5

Browse files
authored
Merge pull request #2 from OpenToolCalling/add-rfc
Draft 1.0 site
2 parents 443878c + 61523f4 commit 75380b5

27 files changed

+3686
-1141
lines changed

.prettierrc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"printWidth": 80,
3+
"tabWidth": 2,
4+
"useTabs": false,
5+
"semi": true,
6+
"singleQuote": true,
7+
"trailingComma": "es5",
8+
"bracketSpacing": true,
9+
"proseWrap": "preserve"
10+
}

.vscode/extensions.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"recommendations": ["unifiedjs.vscode-mdx", "esbenp.prettier-vscode"]
3+
}

.vscode/settings.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"editor.defaultFormatter": "esbenp.prettier-vscode",
3+
"editor.formatOnSave": true,
4+
"[mdx]": {
5+
"editor.defaultFormatter": "esbenp.prettier-vscode"
6+
},
7+
"editor.wordWrap": "bounded",
8+
"editor.wordWrapColumn": 120
9+
}

next.config.js

Lines changed: 0 additions & 6 deletions
This file was deleted.

next.config.mjs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import nextra from 'nextra';
2+
import { remarkMermaid } from '@theguild/remark-mermaid';
3+
4+
const withNextra = nextra({
5+
theme: 'nextra-theme-docs',
6+
themeConfig: './theme.config.tsx',
7+
mdxOptions: {
8+
remarkPlugins: [remarkMermaid],
9+
},
10+
});
11+
12+
export default withNextra();

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
},
1919
"homepage": "https://github.com/shuding/nextra-docs-template#readme",
2020
"dependencies": {
21+
"@theguild/remark-mermaid": "^0.2.0",
2122
"next": "^13.0.6",
2223
"nextra": "latest",
2324
"nextra-theme-docs": "latest",

pages/_meta.json

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
{
2-
"index": "Introduction",
3-
"contact": {
4-
"title": "Specification ↗",
5-
"type": "page",
6-
"href": "https://github.com/opentoolcalling/specification",
7-
"newWindow": true
8-
}
9-
}
2+
"index": "About Open Tool Calling",
3+
"spec-1.0": {
4+
"title": "Specification (1.0)"
5+
}
6+
}

pages/index.mdx

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,33 @@
1-
# Open Tool Calling
1+
# Introduction
22

3-
Welcome to the Open Tool Calling specification!
3+
The Open Tool Calling (OTC) specification is a comprehensive communication protocol for agents calling tools.
44

5-
## Open Tool Calling Specification
5+
We envision a world in which agents can discover and interact with thousands upon thousands of tools in a seamless, interoperable way.
66

7-
More coming soon!
7+
## What is Open Tool Calling?
8+
9+
Open Tool Calling is a standardized protocol that enables AI agents to discover and interact with external tools in a consistent, reliable way. It establishes a structured communication framework between agents (clients) and tools (functions or services), creating a unified language for tool definitions, requests, and responses.
10+
11+
At its core, OTC provides:
12+
13+
- **A discovery mechanism**: Agents can dynamically discover available tools and their capabilities
14+
- **Standardized schemas**: Clear definitions for tool specifications, input parameters, and output formats
15+
- **Consistent error handling**: Structured approaches for handling validation issues and execution errors
16+
- **Security included**: Built-in support for authentication and authorization
17+
18+
## Why Open Tool Calling Matters
19+
20+
In today's AI ecosystem, extending AI model capabilities through tools like APIs, external services, and code functions is crucial. However, developers often have to build integrations to these tools manually. This is a time-consuming and error-prone process, and the lack of standardization leads to significant challenges:
21+
22+
- **Fragmentation**: Every tool provider implements their own calling conventions
23+
- **Integration complexity**: Developers must learn multiple proprietary formats
24+
- **Inconsistent error handling**: Each system handles failures differently
25+
- **Limited interoperability**: Tools from different sources rarely work together seamlessly
26+
27+
OTC solves these challenges by providing a standardized protocol for agents to discover and interact with tools, built on familiar patterns (REST, JSON) that developers already know.
28+
29+
## Who Can Use Open Tool Calling?
30+
31+
**Agent developers** can leverage OTC to build powerful AI applications without having to build each integration by hand.
32+
33+
**Tool developers** can reach a wide audience by implementing just one interface, thanks to the standardized format of OTC.

pages/spec-1.0/_meta.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"index": "Introduction",
3+
"architecture": "Architecture",
4+
"versioning": "Versioning",
5+
"schemas": {
6+
"title": "Schemas"
7+
},
8+
"protocol": {
9+
"title": "Protocol"
10+
},
11+
"security": {
12+
"title": "Security"
13+
}
14+
}

pages/spec-1.0/architecture.mdx

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Architecture
2+
3+
The Open Tool Calling standard is designed around three foundational communication flows:
4+
5+
1. **Health Check**: A mechanism to verify the availability and readiness of the Tool Server.
6+
2. **Tool Discovery**: A process to enumerate the tools available on the Tool Server, described by the Tool Definition schema.
7+
3. **Tool Call**: A structured request to execute a specific tool with defined input parameters. The client sends a Tool Request to the Tool Server, which executes the tool and returns a Tool Response.
8+
9+
These flows use the following schemas:
10+
11+
1. **Tool Definition**: A schema that specifies how a tool is described. It includes metadata such as the tool's name, unique identifier, and its input/output specifications.
12+
2. **Tool Request**: A schema that details the structure of a tool call. It encompasses the call identifier, execution context, tool metadata, and input parameters.
13+
3. **Tool Response**: A schema that outlines the structure of the response returned from a tool call. It provides details on execution status, duration, and the actual output (or errors) of the tool call.
14+
15+
These components ensure consistent communication between clients and tools, regardless of the implementation details of each tool.
16+
17+
```mermaid
18+
sequenceDiagram
19+
participant C as Client
20+
participant S as Tool Server
21+
participant T as Tool
22+
23+
%% Health Check
24+
Note left of C: Health Check
25+
C->>S: Request health check
26+
S->>C: Health check response
27+
28+
%% Tool Discovery
29+
Note left of C: Tool Discovery
30+
C->>S: Request tool list
31+
S->>C: List of ToolDefinitions
32+
33+
%% Tool Call
34+
Note left of C: Tool Call
35+
Note right of C: Resolve requirements<br>(e.g. authorization), if necessary
36+
C->>S: Send CallToolRequest
37+
38+
S->>T: Run tool (function)
39+
T->>S: Capture tool output or error
40+
S->>C: Return CallToolResponse
41+
```

0 commit comments

Comments
 (0)