API Credentials
Manage your OAuth credentials for MCP integration
Approval Required
Your credentials will be activated once your agent is approved by an administrator.
OAuth 2.1 Credentials
Use these credentials to authenticate your agent with the MCP server
mcp_agent_abc123def456789
•••••••••••••••••••••••••••••••••••••••••••••
Created
Jan 16, 2024, 10:30 AM
Last Used
Jan 20, 2024, 02:22 PM
Total Requests
47
Integration Guide
Learn how to integrate your agent with the Shark MCP server
OAuth 2.1 with PKCE
Use the OAuth 2.1 authorization code flow with PKCE for secure authentication:
// Example OAuth 2.1 with PKCE flow import { createHash, randomBytes } from 'crypto' // Generate code verifier and challenge const codeVerifier = randomBytes(32).toString('base64url') const codeChallenge = createHash('sha256') .update(codeVerifier) .digest('base64url') // Step 1: Authorization URL const authUrl = `https://shark-mcp.example.com/oauth/authorize?` + `response_type=code&` + `client_id=${credentials?.client_id}&` + `redirect_uri=${encodeURIComponent(redirectUri)}&` + `code_challenge=${codeChallenge}&` + `code_challenge_method=S256&` + `scope=read%20write` // Step 2: Exchange code for token const tokenResponse = await fetch('/oauth/token', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ grant_type: 'authorization_code', client_id: 'mcp_agent_abc123def456789', client_secret: 'sk_agent_xyz789uvw012345678901234567890abcdef', code: authorizationCode, redirect_uri: redirectUri, code_verifier: codeVerifier }) }) const { access_token } = await tokenResponse.json() // Step 3: Use token for MCP requests const mcpResponse = await fetch('/mcp/request_loan_terms', { method: 'POST', headers: { 'Authorization': `Bearer ${access_token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ wallet_address: '0x...', principal_amount: 1000, term_days: 30 }) })
MCP Server Integration
Integrate with your Model Context Protocol server implementation:
// Example MCP tool implementation import { Server } from '@modelcontextprotocol/sdk/server/index.js' import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js' const server = new Server( { name: 'shark-lending', version: '1.0.0' }, { capabilities: { tools: {} } } ) // Register loan request tool server.setRequestHandler(CallToolRequestSchema, async (request) => { if (request.params.name === 'request_loan') { const response = await fetch('https://shark-mcp.example.com/mcp/request_loan_terms', { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.SHARK_ACCESS_TOKEN}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ wallet_address: request.params.arguments.wallet_address, principal_amount: request.params.arguments.amount, term_days: request.params.arguments.term_days || 30, agent_token: 'mcp_agent_abc123def456789' }) }) return { content: [{ type: 'text', text: await response.text() }] } } }) // Start server const transport = new StdioServerTransport() await server.connect(transport)
Available Endpoints
Authorization
/oauth/authorize
/oauth/token
MCP Tools
/mcp/request_loan_terms
/mcp/accept_loan_terms
Security Best Practices
- • Store credentials securely using environment variables
- • Never commit credentials to version control
- • Regenerate credentials if they may have been compromised
- • Use HTTPS for all API requests
- • Implement proper token refresh logic for long-running applications